[Device Support Request] Neuhaus Lightning Remote

I don't know if there are already supported devices from this company, but this is the one I have: https://www.reuter.com/de-at/paul-neuhaus-q-remote-fuer-q-leuchten-b-38-h-151-t-15-cm-schwarz-a737280.php
Signature:
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0810",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x1000"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0300",
        "0x1000"
      ]
    }
  },
  "manufacturer": "Neuhaus Lighting Group",
  "model": "NLG-remote",
  "class": "zigpy.device.Device"
}

Pairing works without problems, but no entity shows up.
I think it's weird, because as far as I understand, the device uses standard clusters.
@MattWestb another exotic device from me like you wanted 😄

The link is not working but i was finding some picture of it :-)))
Its one 100% light controller remote (more exact COLOR_SCENE_CONTROLLER = 0x0810).
You shall only getting battery sensor then its only sending commands to its light group.
Do you having one manual or instruction for the function its having ???

Weird, when I open the link it's working.
I don't even have the battery sensor:

I found a PDF of the manual online, there are the functions, its in German and English: https://www.paul-neuhaus.de/paulneuhaus/download/product/sku/E0040044/file/074038-IM-E0040044-01.pdf/

I have founding it its CSA (X-Zigbee alliance) certificated as one ZB3 controller https://csa-iot.org/csa_product/radio-remote-control-rgbcct-e0040044/.
Now to the bad things that you dont like hearing !!
Paul Neuhaus have building Zigbee Light Link networks that is using touch link for commissioning.
This is also one part of Zigbee 3 (IKEAs GW is ZLL and the upcoming is Zigbee 3 and can doing touch link and normal commission of devices).
Zigbee light can being added with classical joining to one trust center (TC) that is doing the administration / gate keeper (that we is using in ZHA and other open system) or distributed security then one controller is used for "giving" addresses and groups to routers and other controllers with touch link. IKEA can one controller paring with one or more lights (max 10) and all is in the same "private" network and have the same group and is living there own life.
Edit: You have joining it with ZHA in normal mode then you have getting the device description from it.
The question is is its sending light commands to one or more groups that you can getting as events in HA ??
You can also trying doing one reconfigure from the device card and waking the device up so its can reviving the commands and looking if its binding the OnOff and Light Level cluster to the coordinator.
If having one IKEA (or Philips HUE) GW is one more advanced controller that is called Zigbee Control Bridge and is giving addresses and and groups to controllers and that is all in the same network but the controllers must being joined with touch link.
ZLL routers can being added without touch link then there is not forming the network its only joining / getting addresses and groups from the controller.
IKEA, Philips and OSRAM device can also joining networks with classical commissioning (with trust center) and being used in our networks.
If you is not finding one way ´getting the device joining with classical joining you cant using it in ZHA or other open system only with one ZLL compatible GW or stand alone and controlling devices directly.
How did you paring it with ZHA ??
I cant fining that in the instruction only touch link joining is in the instruction.
Zigbee router devices shall also being able joining trust center network and i think its the same with controllers but om not 110% sure if is moderate and how its can being configured in one TC network is up to the manufacture.

@MattWestb How do I know ZLL is supported by my GW?
But doesn't the device expose cluster other than TouchLink Cluster?
I don't know much about this topic, sorry.
The pairing is on page 36:

On-Button gives this event:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0006",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "on",
        "args": [],
        "params": {}
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:27:10.809206+00:00",
    "context": {
        "id": "146ae05054523a7367d58ce65836749f",
        "parent_id": null,
        "user_id": null
    }
}

Off-Button:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0006",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "off",
        "args": [],
        "params": {}
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:27:50.025850+00:00",
    "context": {
        "id": "c1bafbf0f9fb4c617eb833691ec156b8",
        "parent_id": null,
        "user_id": null
    }
}

Brightness up:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0008",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "step",
        "args": [
            0,
            25,
            1
        ],
        "params": {
            "step_mode": 0,
            "step_size": 25,
            "transition_time": 1,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:28:16.936525+00:00",
    "context": {
        "id": "f52fb4498b8765bf2d050bee64de9ba6",
        "parent_id": null,
        "user_id": null
    }
}

Brightness down:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0008",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "step",
        "args": [
            1,
            25,
            1
        ],
        "params": {
            "step_mode": 1,
            "step_size": 25,
            "transition_time": 1,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:28:44.568345+00:00",
    "context": {
        "id": "64269d16fd7a951186b3fca807a0ccab",
        "parent_id": null,
        "user_id": null
    }
}

Basically every commend except for the channel buttons throw a ZHA event BUT there are some commands I don't understand.
Left bottom button:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            1
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 1,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:06.837235+00:00",
    "context": {
        "id": "2291f3f16cac41e67854f7f21013304c",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:31:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            1
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 1,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:06.742424+00:00",
    "context": {
        "id": "08ae58629619bf1e7f2387fa2d8cc21c",
        "parent_id": null,
        "user_id": null
    }
}

Right bottom button:
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            2
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:37.646234+00:00",
    "context": {
        "id": "8930dd6b68581d188f7684445c1116b8",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:31:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            2
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:37.638526+00:00",
    "context": {
        "id": "1cdeadfae1a373119324fe028c68ce26",
        "parent_id": null,
        "user_id": null
    }
}

P-Button:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            21851,
            254,
            0
        ],
        "params": {
            "enhanced_hue": 21851,
            "saturation": 254,
            "transition_time": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:32:45.920670+00:00",
    "context": {
        "id": "2f57307aff932d23bc98541c35265221",
        "parent_id": null,
        "user_id": null
    }
}

"W"-Button:
Ereignis 3 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "move_to_color_temp",
        "args": [
            368,
            2
        ],
        "params": {
            "color_temp_mireds": 368,
            "transition_time": 2,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.402991+00:00",
    "context": {
        "id": "39ad69bc899b6306cd98525e974aff7e",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "move_to_color_temp",
        "args": [
            368,
            2
        ],
        "params": {
            "color_temp_mireds": 368,
            "transition_time": 2,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.395324+00:00",
    "context": {
        "id": "d2a56fc43c0f144b87dc785d60ebac9e",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 1 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.372046+00:00",
    "context": {
        "id": "72892b2ebd4101ded6d521cd44adb474",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.362969+00:00",
    "context": {
        "id": "d243d93a97f278875b3ad500475ba128",
        "parent_id": null,
        "user_id": null
    }
}

Color-Picker:
Ereignis 3 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            40448,
            254,
            5
        ],
        "params": {
            "enhanced_hue": 40448,
            "saturation": 254,
            "transition_time": 5,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.798853+00:00",
    "context": {
        "id": "622e0e0c7362caad3ad2e405b5aa8797",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            40448,
            254,
            5
        ],
        "params": {
            "enhanced_hue": 40448,
            "saturation": 254,
            "transition_time": 5,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.790179+00:00",
    "context": {
        "id": "08f809dca2a73b8f2a0e0bfe1c4471f7",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 1 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.628907+00:00",
    "context": {
        "id": "b5e3bcfd9885050b58d5e9e4d982d0a4",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.617606+00:00",
    "context": {
        "id": "224f0e301c20e61d628f3665b9e6fb66",
        "parent_id": null,
        "user_id": null
    }
}

Touch link commissioning is being made with very low power and need having the controller around some cm from the target.
All in the manual is touch link commissioning.
Early Zigbee (pre Zigbee 3) was ZLL for light and Zigbee HA for other home automation.
Zogbee 3 is having both profiles from ZLL and Zigbee HA.
As i can see the controller is working OK as one Zogbee 3 controller then its sending "normal" light commands.
Also the color cnd color temperature looks very OK.
The interesting thing is the groups:
        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }

I think its allocating  3 groups and i think you can changing with groups the commands is being sent with the button.
Is the remote using the same groups then being resettled or is it reusing or using the same groups every times or making new random ones ?
(Old IKEA ZLL controllers is using random groups that ZHA is reading then paring the device and you can see them in the log).
I think the battery not being reported is one config problem or firmware is making it wrong.
One very interesting device but not for my Geldbörse ;-)

Ops !!
look if ZHA have reading and adding the new groups in ZHA groups and if yes adding light  to them and testing.

One very interesting device but not for my Geldbörse ;-)

I wouldn't buy them new either, but you can get them really cheap: https://www.willhaben.at/iad/kaufen-und-verkaufen/d/zigbee-funk-fernbedienung-558110293 I got it for 13€.

look if ZHA have reading and adding the new groups in ZHA groups and if yes adding light to them and testing.

Group didn't get added to ZHA.

Is the remote using the same groups then being resettled or is it reusing or using the same groups every times or making new random ones ?

This group command is weird, it only gets send when I press to bottom left and right botton, but I don't know the use for them.
And I tried changing group but always sends the same value as above.

25€ is not expensive this days !!
Then you is getting one group number try making one ZHA group with the same number and adding some lights in it (more then one then ZHA is adding the coordinator in it on the next start).
The remote is very likely working in one other way being added to one trust center network so the instruction can being wrong for the group part. The good thing is its sending  real light commands and not tuya DPs or Xiaomi attributes !!
How did you getting it in paring mode for adding it  in ZHA ? ? ? ?
If you cant see the the groups in ZHA then sniffing then wireshark is showing it if its broadcast commands or unicast to the coordinator (0x0000) then sending on/off and dim up and down.

You can also trying binding the remote to one Zigbee group from device cluster panel and testing also trying binding it to the coordinator and see is you is getting battery and LQI (its little strange you is getting commands received but no LQI).

How did you getting it in paring mode for adding it in ZHA ? ? ? ?

I just did what his page said: https://github.com/zigpy/zha-device-handlers/issues/1514#issuecomment-1104283179

If you cant see the the groups in ZHA then sniffing then wireshark is showing it if its broadcast commands or unicast to the coordinator (0x0000) then sending on/off and dim up and down.

I will try that the next few days, currently I'm pretty busy with exams.
But since we can detect zha events, shouldn't it be possible to expose them?

I just bought this remote from eBay:

It is also reported NLG-remote.

Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=0, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 49246,
      "device_type": "0x0810",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0300",
        "0x1000"
      ],
      "out_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0300",
        "0x1000"
      ]
    },
    "2": {
      "profile_id": 49246,
      "device_type": "0x03f2",
      "in_clusters": [
        "0x1000"
      ],
      "out_clusters": [
        "0x1000"
      ]
    }
  },
  "manufacturer": "Neuhaus Lighting Group ",
  "model": "NLG-remote ",
  "class": "zigpy.device.Device"
}

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.1.7",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.7",
    "docker": true,
    "arch": "armv7l",
    "timezone": "Europe/Berlin",
    "os_name": "Linux",
    "os_version": "5.15.76-v7",
    "supervisor": "2023.01.1",
    "host_os": "Home Assistant OS 9.4",
    "docker_version": "20.10.19",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.29.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "zha_toolkit": {
      "version": "v0.8.29",
      "requirements": [
        "packaging>=20.8",
        "pytz"
      ]
    },
    "bosch": {
      "version": "0.20.2",
      "requirements": [
        "bosch-thermostat-client==0.20.0"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "requirements": [
      "bellows==0.34.6",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.90",
      "zigpy-deconz==0.19.2",
      "zigpy==0.53.0",
      "zigpy-xbee==0.16.2",
      "zigpy-zigate==0.10.3",
      "zigpy-znp==0.9.2"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "dependencies": [
      "file_upload"
    ],
    "after_dependencies": [
      "onboarding",
      "usb",
      "zeroconf"
    ],
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 46070,
    "manufacturer": "Neuhaus Lighting Group ",
    "model": "NLG-remote ",
    "name": "Neuhaus Lighting Group  NLG-remote ",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "manufacturer_code": 4151,
    "power_source": "Battery or Unknown",
    "lqi": 255,
    "rssi": -55,
    "last_seen": "2023-01-26T23:40:06",
    "available": true,
    "device_type": "EndDevice",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=0, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": 49246,
          "device_type": "0x0810",
          "in_clusters": [
            "0x0000",
            "0x0003",
            "0x0004",
            "0x0005",
            "0x0006",
            "0x0008",
            "0x0300",
            "0x1000"
          ],
          "out_clusters": [
            "0x0000",
            "0x0003",
            "0x0004",
            "0x0005",
            "0x0006",
            "0x0008",
            "0x0300",
            "0x1000"
          ]
        },
        "2": {
          "profile_id": 49246,
          "device_type": "0x03f2",
          "in_clusters": [
            "0x1000"
          ],
          "out_clusters": [
            "0x1000"
          ]
        }
      }
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.neuhaus_lighting_group_nlg_remote_identify",
        "name": "Neuhaus Lighting Group  NLG-remote "
      },
      {
        "entity_id": "switch.neuhaus_lighting_group_nlg_remote_switch",
        "name": "Neuhaus Lighting Group  NLG-remote "
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "COLOR_SCENE_CONTROLLER"
      },
      {
        "name": "undefined_0x03f2"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "04032e91106b36d34ed28e30d308e309",
    "area_id": null,
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "COLOR_SCENE_CONTROLLER",
          "id": 2064
        },
        "profile_id": 49246,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "Neuhaus Lighting Group "
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "NLG-remote "
              }
            },
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {
              "0x0000": {
                "attribute_name": "on_off",
                "value": 1
              }
            },
            "unsupported_attributes": {}
          },
          "0x0008": {
            "endpoint_attribute": "level",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0300": {
            "endpoint_attribute": "light_color",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0008": {
            "endpoint_attribute": "level",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0300": {
            "endpoint_attribute": "light_color",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      },
      "2": {
        "device_type": {
          "name": "undefined_0x03f2",
          "id": 1010
        },
        "profile_id": 49246,
        "in_clusters": {
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

ZHA Toolkit scan device information
{
  "ieee": "00:15:8d:00:02:43:8f:01",
  "nwk": "0xb3f6",
  "model": "NLG-remote ",
  "manufacturer": "Neuhaus Lighting Group ",
  "manufacturer_id": "0x4151",
  "endpoints": [
    {
      "id": 1,
      "device_type": "0x0810",
      "profile": "0xc05e",
      "in_clusters": {
        "0x0000": {
          "cluster_id": "0x0000",
          "title": "Basic",
          "name": "basic",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0003": {
          "cluster_id": "0x0003",
          "title": "Identify",
          "name": "identify",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0004": {
          "cluster_id": "0x0004",
          "title": "Groups",
          "name": "groups",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0005": {
          "cluster_id": "0x0005",
          "title": "Scenes",
          "name": "scenes",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0006": {
          "cluster_id": "0x0006",
          "title": "On/Off",
          "name": "on_off",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0008": {
          "cluster_id": "0x0008",
          "title": "Level control",
          "name": "level",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0300": {
          "cluster_id": "0x0300",
          "title": "Color Control",
          "name": "light_color",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x1000": {
          "cluster_id": "0x1000",
          "title": "LightLink",
          "name": "lightlink",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        }
      },
      "out_clusters": {
        "0x0000": {
          "cluster_id": "0x0000",
          "title": "Basic",
          "name": "basic",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0003": {
          "cluster_id": "0x0003",
          "title": "Identify",
          "name": "identify",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0004": {
          "cluster_id": "0x0004",
          "title": "Groups",
          "name": "groups",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0005": {
          "cluster_id": "0x0005",
          "title": "Scenes",
          "name": "scenes",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0006": {
          "cluster_id": "0x0006",
          "title": "On/Off",
          "name": "on_off",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0008": {
          "cluster_id": "0x0008",
          "title": "Level control",
          "name": "level",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0300": {
          "cluster_id": "0x0300",
          "title": "Color Control",
          "name": "light_color",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        },
        "0x1000": {
          "cluster_id": "0x1000",
          "title": "LightLink",
          "name": "lightlink",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        }
      }
    },
    {
      "id": 2,
      "device_type": "0x03f2",
      "profile": "0xc05e",
      "in_clusters": {
        "0x1000": {
          "cluster_id": "0x1000",
          "title": "LightLink",
          "name": "lightlink",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        }
      },
      "out_clusters": {
        "0x1000": {
          "cluster_id": "0x1000",
          "title": "LightLink",
          "name": "lightlink",
          "attributes": {},
          "commands_received": {},
          "commands_generated": {}
        }
      }
    }
  ]
}

I will try to get everything work.
By doing some research I found some information in the zigbee-herdsman-converters repo: https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices/paul_neuhaus.js It might be helpful


Move to @indieweb org?

Could this repo get moved to the @indieweb org?
That would allow me to turn on auto deploys on Heroku, so that the site is always using the latest greatest.

done.

Thanks!


Powershell Support

So far there is Linux and Unix support, there is windows support but not for Powershell. Any plans on supporting powershell in the future?

please mommy support powershell~

+1
Having a mother figure on PowerShell could make Windows just a tad more bearable

i don't want to add explicit powershell support because that would mean i would have to write an entire new script, since powershell cannot run posix (.sh) scripts. i don't use windows myself and have never used powershell scripts, so that would be extremely hard to develop and test.
however, if you have (1) linux subsystem or (2) cygwin or (3) git for windows installed, you can just run the posix script inside there. if you have sh or bash on your path, you can even run sh mommy.sh inside powershell, so using mommy through those external programs in powershell should be feasible. i'll see if i can find a way to get that all linked up together, and will add that to the readme :-)

I think the git one would be the most preferable for most.

i've added instructions on how to use mommy in powershell through either wsl or through git bash. let me know if they work for you and if they're clear enough :-)

function prompt {"$(& sh mommy -1 -s $([int][bool]::Parse(!$?)))> " }

Somehow this works for me and not what you mentioned in the readme. Given that I have sh.exe and mommy in PATH

I don't need the function if I use Oh-My-Posh.
Leaving this Oh-My-Posh theme block in case anybody needs it.
{
      "type": "rprompt",
      "segments": [
        {
          "type": "command",
          "style": "diamond",
          "foreground": "#ffffff",
          "background": "#00897b",
          "leading_diamond": "\ue0b2",
          "trailing_diamond": "\ue0b4",
          "properties": {
            "shell": "bash",
            "command": "mommy"
          }
        }
      ]
    }

function prompt {"$(& sh mommy -1 -s $([int][bool]::Parse(!$?)))> " }

Somehow this works for me and not what you mentioned in the readme. Given that I have sh.exe and mommy in PATH

interesting! thanks for reporting that. i found two mistakes in my code: i wrapped only the mommy executable into quotes instead of the entire command (up to and including the Parse(!$?) part) (but as you showed, i can also omit the -c and let the command be split), and i used backwards slashes in the path to mommy. i'll fix that in a jiffy. can you confirm that the following works correctly in powershell (correcting the paths as needed, of course):
function prompt { "$(& "C:\Program Files\Git\bin\sh.exe" "C:/Users/username/mommy" -1 -s $([int][bool]::Parse(!$?)))> " }

it works for me, but having someone else confirm it would be nice :-)
as for the oh-my-posh config, thank you for that! i hadn't really looked into it myself, i just knew it existed. do you mind if i include that in the readme? either way i'll add you to the acknowledgements (unless you don't want that) :D

I'm using quotes like you mentioned. But it still doesn't work with manual paths on my end.

I don't need the function if I use Oh-My-Posh. Leaving this Oh-My-Posh theme block in case anybody needs it.
{
      "type": "rprompt",
      "segments": [
        {
          "type": "command",
          "style": "diamond",
          "foreground": "#ffffff",
          "background": "#00897b",
          "leading_diamond": "\ue0b2",
          "trailing_diamond": "\ue0b4",
          "properties": {
            "shell": "bash",
            "command": "mommy"
          }
        }
      ]
}

Can't get this function in my oh-my-posh, but maybe it's because I'm missing something obvious? I have git bash and sh in my path and I threw mommy in there, too. Debug gives me a rendering error 80 with CONFIG ERROR when I try to apply this. Sure it's something silly.
Sorry to reopen, but this was the only discussion here related to oh-my-posh and I didn't think it warranted a new topic (as I'm only referencing a minor part of this one)

@ziasquinn i don't know much about oh-my-posh, but it seems like that is an error specific to your oh-my-posh configuration. perhaps a typo? i read somewhere that running oh-my-posh debug will show you the exact error message. perhaps that will help?


Investigate using FixedVec

Vec from rust's std lib uses the heap, which is not great for embedded devices. FixedVec (or something similar) might be a good alternative.

avoiding external dependencies in the first version as described in #4. closing for now.


Introduced ResourceAdapterLifecycleListener

This should allow to register pre and post-callbacks when a ResourceAdapter starts and stops.

Fixes #103

@vondacho can you give this PR a try and see if that works for you?

@vondacho I've updated the PR, can you give it another try please?


Create lovelace-sun-card.js

To align with hacs requirements and stop failing validations

Is it required to commit the build, rather than uploading as a Release asset?
Thanks for the PR, I want to wait for the decision in #11

For having the HACS custom repository badge we just need the directory structure on the right format, which basically means having the file /dist/lovelace-sun-card.js in the repo (among other things that I believe are all set).
In order to publish at HACS default directory (HACS store?) you need also to pass the HACS Actions validation with the latest  merge. You will be requested to share the link for that validation instance.

@EdwardTfn and @ThomDietrich, let's wait for #4 before merging this. We don't need to keep the JavaScript file in the repository; it's only necessary for the release. GitHub Actions can add it to the release automatically, so that's the best option. This eliminates the need for manual updates and commits. #34 implements this, and I'll make it operational shortly.

I'm totally fine with waiting... 😉

Obsolete - resolved through other PRs.


Performance issues caused by DefaultShapeFactory in connection with strongly typed shapes

Hi there,
i have some complex shapes and i render these shape like
@Display.MyShape(typeof(MyShape), new MyShape {Name = "Foo", Value = "Bar", ...})
DefaultShapeFactory.Create() is handling these calls like:
public IShape Create(string shapeType, INamedEnumerable<object> parameters, Func<dynamic> createShape) {
    ...

    // *1
    // typeof(MyShape) is processed ...
    IEnumerable<object> positional = parameters.Positional.ToList();
    var baseType = positional.FirstOrDefault() as Type;

    if (baseType == null) {
        ...
    }
    else {
        // *2
        // ...and a shape of type baseType will be created
        positional = positional.Skip(1);
        creatingContext.Create = () => Activator.CreateInstance(baseType);
    }

    ...

    // *3
    // view model parameter (second parameter of Display() call) is processed whereas ...
    var initializer = positional.SingleOrDefault();
    if (initializer != null) {
        foreach (var prop in initializer.GetType().GetProperties()) {
            createdContext.Shape[prop.Name] = prop.GetValue(initializer, null); // ... properties are assigned to the shape dynamically
        }
    }

    ...

    return createdContext.Shape;
}

The issue here is that *3 adds dynamic properties to the newly created shape. This approach doesn't consider the fact that the newly created shape (type MyShape) already has properties defined (Name, Value) as reported in issue #5514. Sadly no one bothered to write an answer to this issue. Therefore i created a base shape class that overrides TrySetIndex() to update the defined properties along with the dynamic properties but this needs the use of reflection which now causes a performance issue the complex the shapes will be.
Now, my idea is to somehow tell the DefaultShapeFactory to not create a new shape and instead use the passed one, therefore i changed *2 to
positional = positional.Skip(1);

dynamic lInitializerShape = positional.SingleOrDefault(); // get initializer shape from parameter 2 of Display() ...
if (lInitializerShape != null)
{
  // note:
  //  we need to clear alternates here because when using the same initializer shape twice like ...
  //
  //  @Display.MyShapeHeaderBefore(Model.Header.GetType(), Model.Header) *1
  //  @Display.MyShapeHeader(Model.Header.GetType(), Model.Header) *2
  //
  //  ... it might be possible that *1 results in an alternate being added to the initializer
  //  shape (e.g. via IShapeTableProvider) whereas *2 would then render the alternate instead of the normal shape
  ShapeMetadata lShapeMetadata = lInitializerShape.Metadata;
  if (lShapeMetadata != null)
    lShapeMetadata.Alternates.Clear();

  creatingContext.Create = () => lInitializerShape; // return initializer shape directly on create call instead of creating a new instance ...

  positional = positional.Skip(1); // ... and thus we are able to skip updating the copy (which is very costly on complex shape scenarios), see *3
}
else
  creatingContext.Create = () => Activator.CreateInstance(baseType);

This solves issue #5514 and also avoids the need for the TrySetIndex() approach.
Is this a valid approach? I have no issues yet with the solution above, modules are working like before, shapes working like before, alternates working like before.
So lonG

I like this solution. Going to test it on my machine.
Seems like a nice way to pass back the viewModel without creating another instance. Also avoids modifying the Activator.CreateInstance() call like I mentioned in #5514 .

Okay I've created an override with the changes proposed by @ViRuSTriNiTy and it works well so far.
If anyone is interested, you can c/p and test it for yourself: https://gist.github.com/Xceno/f79a3def10b4a5100538ef9fa34138a5
The only problems I see with this approach, is that it could potentially break modules that for some reason do this:
shapeFactory.Parts_MyPart(typeof(MyPart), new UnrelatedViewModelWithExtraProps())
Here we enhance the MyPart shape with additional properties from another model.
Since we've kept this part, we're now able to pass in 3 nameless params in total and the UnrelatedViewModelWithExtraProps should be moved to the third place.
Another approach would be to ensure that the type of the initializerShape and the baseType are equal and otherwise proceed as normal.

@Xceno

The only problems I see with this approach, is that it could potentially break modules that for some reason do this:
shapeFactory.Parts_MyPart(typeof(MyPart), new UnrelatedViewModelWithExtraProps())
Here we enhance the MyPart shape with additional properties from another model.

Nice finding, i didn't even think about this case.

Another approach would be to ensure that the type of the initializerShape and the baseType are equal and otherwise proceed as normal.

This sound like the best approach providing a nice fallback. No existing code needs to be changed with this.

Sounds great! I'm currently working on some sites with O2, gonna take a look.
If we agree on the "fallback approach" I can provide a PR for it, or do you guys have any further concerns / edge cases that should be checked first?

Another case, when using
@Display.MyShape(typeof(MyShape), new {Html = "MyShapeHtml"})
(taken from issue #5514)
the lines
dynamic lInitializerShape = positional.SingleOrDefault(); // get initializer shape from parameter 2
if (lInitializerShape != null)
{

needs to be changed to
var lInitializerShape = positional.SingleOrDefault() as IShape; // get initializer shape from parameter 2
if (lInitializerShape != null)
{

otherwise
ShapeMetadata lShapeMetadata = lInitializerShape.Metadata;

will crash as the anonymous object obviously doesnt have a Metadata property.

I've updated my gist, it includes your fix and the check for the baseType I've mentioned above. I'm actively using it in one of our projects right now and I haven't experienced any issues so far.
To summarize, these are our core changes:

IEnumerable<object> positional = parameters.Positional.ToList();
var baseType = positional.FirstOrDefault() as Type;

if ( baseType == null )
{
	// default to common base class
	creatingContext.Create = createShape ?? ( () => new Shape() );
}
else
{
	// consume the first argument
	positional = positional.Skip(1);
	var initializerShapeObject = positional.SingleOrDefault();
	// We need to make sure that the initializerShape is of the same type as the specified baseType.
	// This should prevent any issues when someone passes in another type as the second, unnamed parameter like this:
	// shapeFactory.Parts_MyPart(typeof(MyPart), new UnrelatedViewModelWithExtraProps())
	// If this scenario occurs, we skip the whole init process and proceed as normal.
	var initializerHasCorrectType = initializerShapeObject != null && initializerShapeObject.GetType() == baseType;
	if ( initializerHasCorrectType )
	{
		dynamic initializerShape = initializerShapeObject as IShape; // The cast preserves the Metadata property.
		// note:
		//  we need to clear alternates here because when using the same initializer shape twice like ...
		//
		//  @Display.MyShapeHeaderBefore(Model.Header.GetType(), Model.Header) *1
		//  @Display.MyShapeHeader(Model.Header.GetType(), Model.Header) *2
		//
		//  ... it might be possible that *1 results in an alternate being added to the initializer
		//  shape (e.g. via IShapeTableProvider) whereas *2 would then render the alternate instead of the normal shape
		ShapeMetadata initShapeMetadata = initializerShape.Metadata;
		if ( initShapeMetadata != null )
			initShapeMetadata.Alternates.Clear();
		creatingContext.Create = () => initializerShape; // return initializer shape directly on create call instead of creating a new instance ...
		positional = positional.Skip(1); // ... and thus we are able to skip updating the copy (which is very costly on complex shape scenarios), see *3
	}
	else
	{
		creatingContext.Create = () => Activator.CreateInstance(baseType);
	}
}

Would you guys give it a try too?


libpq build failed

Package: libpq:x64-windows
Vcpkg version: 0.0.96-2017-11-03-aec7d6d60628602fa153633f7e7e92fe66af0655

Didn't reproduce
Can you please update vcpkg to latest master, re-run vcpkg-bootstrap.bat and try vcpkg install libpq:x64-windows again?

after reinstall windows, it's ok....

I met the same problem now...


[NT-1084] Pledge View Improvements

📲 What
Draft placeholder for this feature branch.
🤔 Why
Some background context on why the change is needed.
🛠 How
More in-depth discussion of the change or implementation.
👀 See
Trello, screenshots, external resources?

Before 🐛
After 🦋

♿ Accessibility

[ ] Tap targets use minimum of 44x44 pts dimensions
[ ] Works with VoiceOver
[ ] Supports Dynamic Type

🏎 Performance

[ ] Optimized Blended Layers (screenshots)

✅ Acceptance criteria

[ ] Steps to test this feature
[ ] Environment to test on
[ ] Issues to look out for

⏰ TODO

[ ] Got planned refactors to come
[ ] Will add more tests
[ ] Need feedback on a design

          1 Warning

:warning:
Big PR

  Generated by :no_entry_sign: Danger


Why its navigating different pages it should  Navigating to /home/users/userDetails?user_id=62 .Please help me this error

QR: incoming init path /home/users/userDetails?user_id=62
QR: Finding Match for /home/users/userDetails?user_id=62 under root
QR: adding Route: Key: 1, Full Path: /home to the navigator with Key: -1
Observer: Navigating to /home
QR: adding Route: Key: 3, Full Path: /home/users to the navigator with Key: 10
Observer: Navigating to /home/users
Observer: Navigating to /home/users/userDetails?user_id=62

Could you please add some example code to reproduce the problem? I can't figure it out from the log.

actually the problem is the first page contains list of page that name is "users" and other page is "userdetails" So when i want to see specific user details so i click on a item of list its navigate to userdetails page but when i see console which i mentioned above finding path is fine why its not navigate directly  Navigating to /home/users/userDetails?user_id=62. ?
instead of this if first navigation home then users page then navigate userdetails page due to this mulitple api calls So how can i resolve this?


Composer.json + _blank for username

Hi! Thanks for your work.
I added a way to install the module via composer, and a target blank for the username link.

 I like the idea of the target blank, but why the composer.json file? I haven't been tuned into D8 stuff lately, so I don't know the reason for having it.
Please separate these into distinct issues and I can merge the _blank one in. Thanks!


Google api is returning a next page token incorrectly

I discovered an issue with an album of mine with exactly 60 photos. For some reason after the last page of 10 photos, it returned an additional nextPageToken, which causes the following request to return an empty object and the process crashed on line 98 of sourceNodes.js.
I don't know why the google api returned an incorrect nextPageToken, but this could be circumvented easily be checking for an empty result before executing line 97.
Adding one more photo to my album resolved this for now, and I have not done any testing to try and reproduce the issue again, but it may be worthwhile to just add the check in there so this doesn't happen in the future.

https://github.com/cedricdelpoux/gatsby-source-google-photos/pull/31

Thanks! Published in 3.0.1 version


(Python) CDKTF Provider

Are there any plans to develop a CDK provider package for Python? CDK offers a lot more flexibility, so this is something that would be instantly adopted by our team at least.

We don't have plans to develop it for now, but we will take a look into how much effort it could be and if there is a user base for that. Thanks!

@nbaju1, have you tried this approach of using providers in CDKTF?
I've never used it myself, it looks a bit too good to be true, TBH.

@nbaju1, have you tried this approach of using providers in CDKTF? I've never used it myself, it looks a bit too good to be true, TBH.

That...worked! Seemingly at least. Will do some more testing, but that approach seems to create files similar to the ones installed with the cdkt provider packages in pypi.org.
Thanks for the tip!


Add explicit notes to APIs that are not required to be present in CDI Lite

Yup, this is just to [slightly] improve usability of the API source code.


CAMEL-5583 - Add ning-compress as data format

Brilliant this is the way to do it. You are welcome to add it to the docs at
http://camel.apache.org/data-format.html
And a reference to it at the 2.17 release notes
http://camel.apache.org/camel-2170-release.html

Oh I forgot to tell you should add it to the jaxb.index file in the camel-core too.

That is required so its included in the spring / blueprint schema files for the xml dsl.

eg this file
https://github.com/apache/camel/blob/master/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
As I have merged this, do you mind creating a new PR for the jaxb.index file commit


Q: Help me to write a config.

Hello.
I have 7 prodaction servers and i need to deploy on them at once from one git repo.
And also i have i dev server in wich i want to deploy my dev branch.
how should my "connection" array looks like for this situation?
thx.

Looking at documentation this is not possible. The servers array in the connection configuration is processed either sequentially (one after another) or in parallel. The parallel execution however doesn't guarantee that at same moment in time same deploy action is done on every server.
If you're using load balancer, then following might work for you:

removing servers (ones, that need to be updated) from load balancer
doing a deploy
putting servers back to load balancer

I've reported similar issue myself (see #644) and after looking at code decided to use Ansible instead with it's rolling deploy model.

The https://docs.ansible.com/ansible/deploy_helper_module.html might help if you go that way.


cups: fix build on darwin

Description of changes
#235373
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Uh, weird CI errors.
@ofBorg build cups

ofBorg + local machine confirm builds on both *-darwin.


Support specifying the complete mirror URL

When using a mirror, ruby-build requires the package is located at $RUBY_BUILD_MIRROR_URL/<SHA2>, which is not a generic case.
Here list all mirror sites of ruby source, and most of them provide the tarball with name format like http://host/pub/ruby/2.7/2.7.1.tar.bz2. To benefit from more mirror sites, and also keep compatibility, I propose adding another variable (which can be named as RUBY_BUILD_MIRROR_PACKAGE_URL) to specify the complete mirror URL. So a user can use it like this:
# I use `asdf` to manage versions, which depends on `ruby-build`.
$ RUBY_BUILD_MIRROR_PACKAGE_URL=https://cache.ruby-china.com/pub/ruby/2.7/ruby-2.7.1.tar.bz2 asdf install ruby 2.7.1

Fix #1032. As this comment said, the download speed in China is too slow when installing a new version from official ruby CDN, so at least this feature will be especially useful for users living in China.

Fwiw, node-build had this same limitation and we solved it by adding a new env var "NODE-BUILD-MIRROR-CMD" which defines a user-provided command that will generate a mirror url when given the package name and checksum.
https://github.com/nodenv/node-build/blob/3c0318da0dd975420653d1cf8e14578a8709bd3b/bin/node-build#L473
This allows users full control over how mirror urls are constructed. It may be a feature worth up streaming into ruby-build.

@jasonkarns I considered the *_MIRROR_CMD mechanism you mentioned in #1032. I agree *_MIRROR_CMD will be the best way to allows users full control over how mirror urls are constructed. But I have two concerns:

Less straightforward than a simple variable that just specifies the final url. To use *_MIRROR_CMD, it needs either we export a function, or we write a simple script to print the final url.
I'm a bit worried that some kinds of user mistakes may lead to bad things. Because it just executes whatever a user feeds.

So I think a simple variable is enough to satisfy all the cases.
Anyway, if you or other members prefer *_MIRROR_CMD way, I also vote for it.

Less straightforward than a simple variable that just specifies the final url. To use *_MIRROR_CMD, it needs either we export a function, or we write a simple script to print the final url.

Yep, I agree it's not super simple. The downside with a variable containing the full URL is that users would need to construct that URL for each ruby they install. The _CMD approach allows a one-time setup that works for future ruby installs as well. I'd say the using a full URL env var would be easy, but not necessarily "simple".
It's also worth noting that the _CMD approach and the "full URL" approach are not mutually exclusive. We could support both so users have a choice for whichever suits their needs. I'd like some other maintainers to weigh in before proceeding with a PR.

users would need to construct that URL for each ruby they install. The _CMD approach allows a one-time setup that works for future ruby installs as well.

Totally agree.

It's also worth noting that the _CMD approach and the "full URL" approach are not mutually exclusive. We could support both so users have a choice for whichever suits their needs. I'd like some other maintainers to weigh in before proceeding with a PR.

Thanks. Waiting for your and other maintainers' further feedbacks.

@hsbt Sorry to ping you. Can you help to make progress on this issue? Really want to have another strategy to specify the mirror.
@jasonkarns I found another fix for this similar issue in python-build, which was merged several days ago. It uses PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM to "skip" the checksum.

@uzxmx Sorry, too late response. I knew the situation of Ruby in China. I believe this option helps Ruby users in China.


Flakey e2e test

FAIL  src/e2e/autocomplete.test.ts (18.068 s)
  ● Browser - autocomplete and signature help tests › does not insert brackets for import completion

    Evaluation failed: Error: Unable to find role="option"

Further failures:

https://app.circleci.com/pipelines/github/microbit-foundation/python-editor-next/1452/workflows/e23e2922-a7ec-436f-a541-323ce3d1f561/jobs/1520

I can't get this to happen locally. I've tried with dev and prod builds. I'm trying running it in a loop now.
All the failures from CI are the same, as are the screenshots which show no autocomplete options on screen.
The error occurs finding the option to click on. We should be waiting 5 seconds which seems plenty.
We do await the typing and all text can be seen in the screenshot. We could try typing with a delay in case unrealistically fast typing fails to trigger the autocomplete. We could also review the code responsible for triggering autocomplete to see if there are any non-obvious conditions.
There's a minor bug in that we don't await the click, but that's after the point of failure and we do await the effect of the click.

OK, so I can make it happen, just not very easily!
Test Suites: 1 failed, 1 total
Tests:       3 failed, 97 passed, 100 total
Snapshots:   0 total
Time:        340.845 s
Ran all test suites matching /e2e\/autocomplete/i.

Adding a short delay to the typing to make it more realistic meant I ran 200 iterations without failure with an insignificant difference in overall time. Not a very satisfactory fix but perhaps more practical at this point then delving into exactly how it's triggered in CM.


Unable to import VirtualDesktop into Automation Account via the portal

I have created a new Automation Account (via the Portal) and have select Modules -> Browse Gallery and searched for VirtualDesktop
I selected Virtual Desktop module version 1.1.0 and clicked Import
After a minute of importing, the following error appears. Any suggestions for what I can do? I'm sure this worked a few weeks ago:

Error importing the module VirtualDesktop. Import failed with the following error: Orchestrator.Shared.AsyncModuleImport.ModuleImportException: An error occurred during module validation. When importing the module to an internal PowerShell session, it was not able to be loaded by PowerShell. There is likely an issue with the contents of the module that results in PowerShell's not being able to load it. Please verify that the module imports successfully in a local PowerShell session, correct any issues, and then try importing again.

I would suggest opening a support request for the Azure Automation service, and someone will be able to help you.


Disable 70-test_quic_multistream.t when building with PUT threads.

The test recipe includes a TEST_skip when OpenSSL is built with PUT_MODEL based on design assumptions for QUIC and incompatibility with PUT wrapper methods. This fix also reverts b9e084f139 that added OP_SLEEP to force a yield.
Fixes: #24442
Fixes: #24431
Checklist

[X] documentation is added or updated
[X] tests are added or updated

Any chance this could get merged to 3.3.1?

@nhorman @paulidale please reconfirm

Ack approval holds

This pull request is ready to merge


Platforms are now collidable. Camera stuff is commented out

Great moves Ethan, proud of you! Keep it up!

Great moves Ethan, proud of you! Keep it up!

Thanks Michelle 💁🏻♂


A value of type 'ImageData?' can't be assigned to a variable of type 'List?'. Try changing the type of the variable, or casting the right-hand type to 'List?'

How can I fix this error?

Pretty that's because of a dependency mismatch. I fixed this on my fork of this repo.
tflite_flutter_helper:
  git:
    url: https://github.com/VisualPT/tflite_flutter_helper.git
    ref: 627abb6f41e2fa4949ccf64226009c06e7021308


At large values of the camera position, the render starts to slow down noticeably

Current bug behaviour
Animation slows down, when position camera Vector2(345451171 ,0);
Expected behaviour
The camera position should not affect the animation
Steps to reproduce
SpriteAnimationComponent spTest = SpriteAnimationComponent();
spTest.animation = SpriteAnimation.fromFrameData(
    Flame.images.fromCache('airship.png'),
    SpriteAnimationData.sequenced(
      textureSize: Vector2(32, 32),
      amount: 1,
      stepTime: 0.1,
    ));
spTest.position = Vector2(345451171 ,0);
spTest.anchor = Anchor.center;

camera.followComponent(spTest);

Flutter doctor output
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.5.0, on Microsoft Windows [Version 10.0.19043.1348], locale ru-RU)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Android Studio (version 4.2)
[√] VS Code, 64-bit edition (version 1.62.3)
[√] Connected device (2 available)
More environment information

More information

Is the fps dropping, or only the animation slowing down? Does the game lag too?

only render.

Which platforms does this happen on, all?

Web

I suspect there's some numerical instability in how the transform matrix is applied to the canvas.

I guessed, it is possible to somehow limit the border of the camera, so that other consumers would not conduct research in search of a problem place

I guessed, it is possible to somehow limit the border of the camera, so that other consumers would not conduct research in search of a problem place

Yes, you can set worldBounds on the Camera, see here:
https://examples.flame-engine.org/#/Camera %26 Viewport_Follow Component
And the code:
https://github.com/flame-engine/flame/blob/main/examples/lib/stories/camera_and_viewport/follow_component_example.dart#L40
If you are not following a component you can set camera.worldBounds directly instead.

I know that. You probably misunderstood. I spent 4 hours localizing the place where the render fell. If I knew in advance that large values can cause problems, I would not use the camera, but implement my own grid. Protect your users from a known problem area. At least put a warning that the camera does not work well with large values.

I know that. You probably misunderstood. I spent 4 hours localizing the place where the render fell. If I knew in advance that large values can cause problems, I would not use the camera, but implement my own grid. Protect your users from a known problem area. At least put a warning that the camera does not work well with large values.

Since this will behave differently on different platforms it is not something we should restrict in code, but a note about it in the docs would indeed be good. PRs are very welcome.

Yes, the warning is enough.


As the shop admin, I want to be able to add a new 'Group' to assign users to something other than the default groups

Resolves https://github.com/reactioncommerce/kinetic/issues/65
Testing Instructions:

Start the app and log in with a valid account
Navigate to Settings/Users & Permissions/Groups

Agree with you, I've added loading state


Add data splitting and train models

Add data splitting and train models
In this PR, the regression model module is added where the data is split and models are trained per nuclear speckle stain feature.

@MikeLippincott This PR is ready for re-review! Thank you for the first round of comments!

@MikeLippincott Thank you for the review! I will be merging now!


developed and added index.html

I have developed my latest index.html feature for our release of ver 1.2 for this sprint.
Please kindly review my changes and update the source code to master branch.

closing the req.


cloud_to_cloud:go:ruby_server:timeout_on_sleeping_server

https://sponge.corp.google.com/target?id=c9798eec-1a8a-4b36-8100-f196678ffad1&target=github/grpc&searchFor=&show=ALL&sortBy=STATUS
Failure
FATAL: 2018/01/22 21:22:17 &{0xc42009be60}.Send(_) = EOF
exit status 1

Closing this because no PR has referenced this issue since it was opened, and this hasn't failed on master in the last 10 days.


CASMTRIAGE-3253: Bump CSI version to 1.17.1

Summary and Scope

Fixes #CASMTRIAGE-3253

Issue Type

Bugfix Pull Request

Renames the uai_macvlan_bridge reservation in the uai_macvlan subnet to uai_nmn_blackhole.   uai_macvlan_bridge is no longer being used.  We are repurposing that reservation to be used as the gw for the NMNLB route in UAIs.  This will block access to the NMNLB from the UAI.
While in the same same section of code, I also made the allocation of IPs to the uai_macvlan reservations consistent.  This solves the issue with running CSI multiple times and ending up with different IPs for these reservations.
Testing
Built CSI locally and ran the csi config init with seed files from hela.   Checked the generated sls_input_file.json and customizations.yaml.

Newer images are already in main.


*: document v3.2 default snapshot-count value change

Fix https://github.com/coreos/etcd/issues/9425.
Please check out our upgrade guides and changelogs.
We will start documenting all possible breaking changes in those docs.
/cc @shyamjvs @jpbetz

Thanks for documenting this.
LGTM


Audit Circle Meeting 6 - 9th June - Agenda & Notes

https://quality-assurance-dao.gitbook.io/audit-circle/project-management/meetings

Draft Agenda
Final Release of funds will depend on completion of report
Raise at Audit Circle meeting 6
$ 4233
Will be divided amongst

Audit Circle members who participated in deliverables
Treasury Guild who admin the funds.


fix(cdk): refine PostgreSQL access rules in ElizaFleetStack for improved security

fix(cdk): refine PostgreSQL access rules in ElizaFleetStack for improved security

Updated the inbound rule for the RDS security group to conditionally allow PostgreSQL access based on the deployment mode (private or public).
Enhanced security by restricting access to the ECS security group in private mode, while still allowing broader access in public mode for debugging purposes.

#19  👈 (View in Graphite)
main-lachie

This stack of pull requests is managed by Graphite. Learn more about stacking.

Merge activity

Dec 28, 8:26 AM EST: A user merged this pull request with Graphite.


typescript: fix build [phab:D1380]

Created by evmar at 2017-02-25 00:52:14:
The previous two TypeScript changes conflicted with each other.
Resolve the conflict.

evmar wrote at 2017-02-26 23:48:48:
run clang-format

fromberger accepted this revision at 2017-02-27 17:05:53

fromberger closed via commit b557059f70386a836d008b1706f65f5d1bf928bb at 2017-02-27 17:06:21


Documentation still references CatchBoundary

Describe the bug
The documentation still references CatchBoundary as an method to handle errors. CatchBoundary is a Remix v1 feature. Remix v2 uses the ErrorBoundary for both 400 and 500 errors. Can the documentation be updated?
Your Example Website or App
Docs
Steps to Reproduce the Bug or Issue
Read Error section of docs.
Expected behavior
ErrorBoundary is the correct method in Remix v2.
Screenshots or Videos
No response
Platform

OS: [e.g. macOS, Windows, Linux]
Browser: [e.g. Chrome, Safari, Firefox]
Version: [e.g. 91.1]

Additional context
No response

I re-wrote docs and there's no reference to CatchBoundary anymore


Refactor/wallet generic signer

add a generic signer provider for creating a software or a hardware signer
make account key chain generic to allow using it with and without a VRF keychain
add an implementation for the trezor signer
copy auto generated trezor client to communicate with a connected trezor device
add new hardware-wallet option when creating and opening a wallet in the CLI and RPC wallet commands

Some additional thoughts:

I don't think you ever check the device for Capability_Mintlayer. If so, we'll be getting bug reports like "nothing works", only to find out later that the user didn't install our firmware.
It's better to show to the user the name of the device that is being used, to avoid confusion (the label field of message Features).
It may even make sense to store the device name in the wallet file itself, so that when there is a mismatch, we could tell the user what device must be used with this wallet file.
(But since the label can be changed any time, we'll probably have to update it every time after we successfully connect to the proper device).
We should probably also store the device_id in the wallet file, so that when we detect public keys mismatch, we can tell the user whether the device itself is wrong or the entered passphrase.
The tricky thing is that device_id is not hardcoded in the device and instead is randomly generated on device setup. So if the user resets the device and restores the same seed phrase, the id will be different. So we'll still have to check the keys first and then if the device_id doesn't match, tell the user that the device seems to be different.


Using the library

I just wanted to let you know that I just added support for Branca in https://github.com/pascalgn/yaml-crypt
Fernet seems a bit unmaintained currently, so thanks for Branca! 👍

Awesome! Let me know if you have any problems. I am mostly using the Python and PHP implementations myself.

Sure, will raise an issue if I see any problems. So far everything is fine, the API is even a bit nicer than Fernet :)


Can't resize multiple elements sometimes

I don't yet know stable steps to reproduce the issue, but sometimes we can't grab the handle especially "se". It less happens to "nw". Interestingly, browser refresh solves the issue. Maybe, it's related with other issues.

This is probably the same behavior that @enzoferey  reported in https://github.com/excalidraw/excalidraw/pull/1193#issuecomment-609387186.

Well, it's not only with multiple elements, but it happens with just one element.

Finally, I was able to reproduce the issue successfully. It was nothing to do with multiple elements or resizing.

https://github.com/excalidraw/excalidraw/issues/1311#issuecomment-610866537 This can be different one.

Steps:

create circle
select it via drag-select

It's probably related with multiple element selection logic. I think there exists an invisible text element or something.

Maybe related to my change of handling text elements during edit. I'll look into it later.

I got the reason. It's a deleted element.
in renderScene.ts, selectedElements doesn't include deleted elements,
but in App.tsx, selectedElements includes deleted elements.
I confirmed that by filtering out elements that isDeleted, the issue is resolved.
Not quite sure which part to fix in App.tsx. Can you take it over?

Yep. Let's wait for https://github.com/excalidraw/excalidraw/pull/1068 first. I'm wrapping it up as we speak.


lint has many error

I'm confused, I pulled the code from the master branch, no changes, is it an environment problem? I'm not sure, I want to confirm your opinion
...
d 6   indent-legacy
  94:1   error  Expected indentation of 12 spaces but found 6  indent
  94:7   error  Expected indentation of 8 spaces but found 6   indent-legacy
  96:1   error  Expected indentation of 12 spaces but found 6  indent
  96:7   error  Expected indentation of 8 spaces but found 6   indent-legacy
  97:1   error  Expected indentation of 12 spaces but found 6  indent
  97:7   error  Expected indentation of 8 spaces but found 6   indent-legacy
  98:1   error  Expected indentation of 8 spaces but found 4   indent
  98:8   error  Missing semicolon                              semi
  99:1   error  Expected indentation of 4 spaces but found 2   indent

✖ 2591 problems (2591 errors, 0 warnings)
  2172 errors and 0 warnings potentially fixable with the `--fix` option.

env:
➜  impress git:(master) ✗ node -v
v18.12.0
➜  impress git:(master) ✗ npm -v
8.19.2
➜  impress git:(master) ✗

What command are you calling?

What command are you calling?

npm run new-lint

If I run lint, I get the following feedback，Maybe I switch to some correct node version instead
➜  impress git:(master) ✗ npm run lint

<EMAIL_ADDRESS>lint
npm exec -- jshint src test/.js && npm exec -- jscs src test/.js

(node:93841) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use node --trace-warnings ... to show where the warning was created)

The code is currently formatted according to the (older) eslint configuration, so npm run lint should not yield any errors, even in the latest versions of node.js. It is called as well in npm run all.
The new-lint command appears to be a result of #722. Three years ago, @mohe2015 updated some of impress.js' dependencies. As part of this, they started to migrate over to jshint, but it was not yet taken into the code base. Quote:

Upgrading the linter causes lots of linting errors. I suggest you simply revert to the old linting for now, then send a separate PR that upgrades to eslint + makes all the fixes too.

Time to revive this idea? :)

jscs is replaced by eslint so I think that could definitely be removed. I don't know how useful jshint is.
In that PR I just updated the most important parts and definitely think somebody could bring this up to date again/further and make it pass the eslint checker. I'm not using impress.js currently so I don't intend to work on that.
You probably will need to decide on a code-style and then fix all the warnings and errors.

Thank you for the update and background information, @mohe2015! I'll wait for @henrikingo to review my other PRs first and will probably look into updating the dependencies as well as a second step.

If I remember correctly, eslint should supersede both jscs and jshint.
Apparently there isn't a ticket to switch to eslint, but as you can guess from the new-lint command, it was certainly the plan.
A general upgrade of dependencies is of course also overdue.
I would like to see both of those tasks worked on in their own issues. I will close this issue as it is technically not a bug, but did give rise to a good discussion,so thanks @tolerance-go for asking the question!


http and https failed to connect to SM instance spun up from AMI.

Please make sure that you have checked the boxes:

[x] Review the Quickstart guide
[x] Search for both open and closed issues regarding the problem you are experiencing
[x] For permissions issues (Access Denied and credential related errors), please refer to the requisite docs before submitting an issue:
AWS, GCP, OpenStack, GitHub

Description of issue:
<Http and https failed to connect to SM instance that spun up from ubuntu AMI. Verified both port 80 and 443 are opened, FQDN is point to the new DNS that was created in the config.py, sudo service nginx and supervisor are both running, able to SSH into the instance. Any idea what else I could be missing here?? Everything works fine until the instance was made into AMI.>

Verified both port 80 and 443 are opened -- Both on the instance and security groups attached to the instance?
Do you have an ELB set up? What happens when you curl from the localhost on that instance? Do the Security Monkey logs reveal anything?

@Leectan and I did some debug on Gitter. Curls on/to http://localhost returned with conn refused too. Verified no iptables or ufw. Also verified that nginx was listening on 443. We moved the nginx ssl port from 443 to 8443 and a localhost curl returned. Its weird...almost like some host firewall is blocking.

This issue is still being debugging, close for now. Will update once debug successful.

This issue is still being debugged, close for now. Will update once debug successful.


Is there any way to configure multi-threading for all operations (v17.03.1)?

I would like to benchmark my code and compare the results with and without multi-threading, but the only way I can seem to do this is by manually launching the kernels used by each Function and run them as _krn.run(krn.window())_ (I wonder if this is the correct way of running the kernel on a single thread). Is there an easier way to disable multi-threading for all operations without having to change the code so much?
Thanks

You can call Scheduler::get().set_num_threads( num_threads ); at the beginning of your program like we do in benchmarking suite

Thank you, but Scheduler doesn't seem to be available for v17.03.1. Anyway, as a work around, I used taskset to assign the desired CPU cores to the program before executing the tests.


double free or corruption (out) error occurs at end of the control code after model has finished

See this result
https://www.cpdn.org/result.php?resultid=22250486
and the error message:
Zipping up the final file: /var/lib/boinc-client/projects/climateprediction.net/oifs_43r3_bl_a054_2016092300_15_949_12166578_0_r1730349614_14.zip
Uploading the final file: upload_file_14.zip
Uploading trickle at timestep: 1295100
double free or corruption (out)
</stderr_txt>

Someone on forums checked their syslog file which had an entry that oifs_43r3_model.exe was killed. No further information unfortunately.

Found a task that has a double free corruption error, the task (same one for some reason), then restarts but the slot_path variable contains garbage: https://www.cpdn.org/cpdnboinc/result.php?resultid=22293899
Because the garbage filled slot_path will be non-null terminated, then any sprintf in the code will overwrite its input string.
All the uses of sprintf should be modified to snprintf, or changed to use C++ strings.

Code replacing sprintf with snprintf now implemented, with a write to cerr if a potential overrun is detected. Code branch now merged with cpdn:main.
I believe this should resolve outstanding double free errors. If any more are found, open a new issue and link to this one.

Double free corruption at final trickle
Despite identifying and rectifying various memory leaks and potential buffer overruns, tasks are still failing with 'double free or corruption(out)' and 'free (top)' errors, as reported at the very top of this issue.
The latest batches with the 'bl' OpenIFS variant, show one failed task https://www.cpdn.org/result.php?resultid=22307571 which has the double free error after the model has completed and the final trickle is being sent:
Zipping up the final file: /var/lib/boinc-client/projects/climateprediction.net/oifs_43r3_bl_a0gz_2016092300_15_991_12207398_0_r169464428_14.zip
Uploading the final file: upload_file_14.zip
Uploading trickle at timestep: 1295100
double free or corruption (out)

The code that follows the 'uploading trickle at timestep..' is in process_trickle:
boinc_send_trickle_up((char*) "orig",(char*) trickle);
The problem here is that this function is declared as:
boinc_send_trickle_up(char*,char*);
but the control code is casting a const string into a pointer. According to the C++ standard results of this are undefined.
The solution is to rewrite to:
std::string variety("orig");
boinc_send_trickle_up(variety.data(), trickle);

Note, use .data() here not .str() as fn expects a char* not const char*.

Address Sanitizer also found an issue with the RapidXML code. See pull request in CPDN:openifs repo for full description.

Close this now due to length. Any further similar issues should be new ones and refer to this.


Connecting via ssh key fails with password blank

I cannot seem to pass the authentication via keys when I leave the password blank. The keys are correct, which was tested on another client.

Do the private key have a passphrase? If yes, you should put the SSH passphrase in password field.

@ColdGrub1384 No, no passphrase.

How did you generated the SSH keys? So I can try to reproduce the issue.

As the keys work on other SSH clients, that may be an issue of libssh2.

@ColdGrub1384 I generated the keys using ssh-keygen command on my Mac.

Ok. I think I finally found the issue. I have to update libssh2 to a version that supports new OpenSSH keys format. https://github.com/libssh2/libssh2/issues/68

Thanks for your effort!

I just fixed it! The problem was that macOS was generating SSH keys in a "new" format unsupported by the library I was using, but I just had to update it. I will release an update today.

The issue is now fixed on the App Store version. Thank you for reporting.


YAML Configuration: Test Fails When Whitelisted Requests Trigger WAF Rule ID Alerts

Could you please explain how to configure YAML so that if none of the alert rules are satisfied, we can collect certain whitelisted requests. These whitelisted requests should not match any alerts. After configuring the YAML test file, if any WAF rule ID alerts are triggered, it should be considered a test failure, indicating that the rules need to be optimized.
rule_id: 932140
tests:
  - test_id: 1
    desc: for %
    stages:
      - input:
          dest_addr: <IP_ADDRESS>
          headers:
            Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
            Host: localhost
            User-Agent: "OWASP CRS test agent"
          method: GET
          port: 80
          uri: "/get?foo=for%20%25variable%20in%20%28set%29%20do%20command"
          version: HTTP/1.0
        output:
          log:
            expect_ids: [932140]

no rule_id expect_ids，just test case id

I don't understand your question. Could you maybe try to explain specifically, which actions you want to perform and which information you need? What do you mean by "collect certain whitelisted requests"? How would you want to collect those? Where would they be "whitelisted"?

We will organize historical false positive alerts into whitelisted requests (legitimate requests) based on our normal business traffic, sampling records, and other methods. We will have a large set of whitelist sample data, such as .http format files or Burp logs, etc. We can batch convert these into the FTW test file format, but FTW doesn't seem to support writing a rule file for false positive testing (i.e., recording a false positive whenever any rule triggers an alert).

I see, interesting. If I'm not mistaken, you could work around that using no_match_regex (adapt the regex to match your log format):
rule_id: 932140
tests:
  - test_id: 1
    desc: for %
    stages:
      - input:
          dest_addr: <IP_ADDRESS>
          headers:
            Accept: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
            Host: localhost
            User-Agent: "OWASP CRS test agent"
          method: GET
          port: 80
          uri: "/get?foo=for%20%25variable%20in%20%28set%29%20do%20command"
          version: HTTP/1.0
        output:
          log:
            no_match_regex: 'id: "\d+"'

The test will then fail when a request triggers any rule.

I didn't think of directly using id: "\d+" to match any rule alert, I'll give it a try, thanks!

There is still one issue: it is possible to test whether there was a false positive, but in practice, it is not possible to know which rule caused the false positive (in this scenario, the ID written in the test case is actually the unique ID of the test case, and it is not possible to predict in advance the rule ID to be tested. We may collect generic false positive test cases).

True. Well, it looks like you might need a dedicated mode for getting what you want. It shouldn't be hard to do. Would this cover your needs?

new flag --report-triggered-rules
no need to specify anything for output
summary at the end of the run of triggered rules for each test

@xu-xiang I've created a PR with what I think should solve your problem (#432). The PR adds reporting of triggered rules by test (and test stage) to the JSON output (--output json). You'll have to manually filter by failed tests if you need that, but the JSON should now contain everything you need. Could you give it a try and let me know what you think?


Update Index Data Type from Variant to Integer for Excel.WorkSheet.CustomProperties.Item(Index) method

The CustomProperties collection was not implemented with the CustomProperty.Name indexed.  Entering the name (e.g. as String) of a property throws an error. The documentation is currently inaccurate in stating that you can enter the property name.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

VBA/Excel-VBA/articles/customproperties-item-property-excel.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

VBA/Excel-VBA/articles/customproperties-item-property-excel.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@jmhdev Hi, thanks so much for your comments and help improving our docs. We really appreciate it! However, I'm not sure this change is correct. I checked with a couple devs who told me that custom properties can be accessed by name. There does seem to be confusion around the name, though, and I did notice a bug report on Stack Overflow. Before I merge yoour PR, please note that in Excel Workbooks (and throughout Office) the expression is CustomDocumentProperties or DocumentProperties, perhaps try that instead?

Hi @lindalu-MSFT
I am aware that DocumentProperties/CustomDocumentProperties can be accessed by name.  However, CustomProperties collection objects for worksheets Worksheets cannot.
Take the following example VBA:
Sub SetProp()

Dim sh As Worksheet

Set sh = ThisWorkbook.Worksheets(1)

sh.CustomProperties.Add "Prop1", 1

Debug.Print sh.CustomProperties.Item("Prop1").value

End Sub

You will receive a Type Mismatch error:

And debugging points to the line trying to access the custom prop via the name:

However, if you change "Prop1" to the index number 1, no error is throw:

I do believe this change is correct.  CustomDocumentProperties (for a workbook) are indexed by name and number, but the CustomProperties collection on worksheet objects does not have a name-based index.  Please try the example code yourself and see if you are registering the same issue.
In short:

Workbook-Level custom properties can be accessed by name and index no.

Worksheet-Level custom properties can only be accessed by index no.

Per your comment about the stackoverflow bug report, I agree that this is a bug.  I am guessing fixing a VBA implementation is not exactly high on Microsoft's list of things to do with respect to Excel (nor should it be). So, I thought it best to change the docs to reflect reality, even if the reality is that this is
I was writing a small program that would make use of custom sheet properties.  I was hoping to use the name rather than the index to access the custom props(makes the code more readable), but I will have to make due.
Thanks for taking the time to review this.  You folks do some awesome work.


python311Packages.dbt-bigquery: 1.7.7 -> 1.7.8

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python311Packages.dbt-bigquery is: Plugin enabling dbt to operate on a BigQuery database
meta.homepage for python311Packages.dbt-bigquery is: https://github.com/dbt-labs/dbt-bigquery
meta.changelog for python311Packages.dbt-bigquery is: https://github.com/dbt-labs/dbt-bigquery/blob/1.7.8/CHANGELOG.md
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.7.8 with grep in /nix/store/y70my77dl8m4hqjfl0b6ln3j5ka1jvzw-python3.11-dbt-bigquery-1.7.8
found 1.7.8 in filename of file in /nix/store/y70my77dl8m4hqjfl0b6ln3j5ka1jvzw-python3.11-dbt-bigquery-1.7.8

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)

3 package rebuild(s)

First fifty rebuilds by attrpath

python311Packages.dbt-bigquery
python312Packages.dbt-bigquery

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/y70my77dl8m4hqjfl0b6ln3j5ka1jvzw-python3.11-dbt-bigquery-1.7.8 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python311Packages.dbt-bigquery https://github.com/r-ryantm/nixpkgs/archive/d1525013e27f3b1475ab29afa56668009103370b.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/d1525013e27f3b1475ab29afa56668009103370b#python311Packages.dbt-bigquery

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/y70my77dl8m4hqjfl0b6ln3j5ka1jvzw-python3.11-dbt-bigquery-1.7.8
ls -la /nix/store/y70my77dl8m4hqjfl0b6ln3j5ka1jvzw-python3.11-dbt-bigquery-1.7.8/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

4 packages built:

python311Packages.dbt-bigquery
python311Packages.dbt-bigquery.dist
python312Packages.dbt-bigquery
python312Packages.dbt-bigquery.dist

Maintainer pings
cc @tjni for testing.

Result of nixpkgs-review pr 309320 run on x86_64-linux 1

4 packages built:

python311Packages.dbt-bigquery
python311Packages.dbt-bigquery.dist
python312Packages.dbt-bigquery
python312Packages.dbt-bigquery.dist


the face landmark training script

Dear Sir,
Thank you for your amazing code, I wonder whether these is a training script for the face landmark, Are you planning to upload this script?
Thank you for your reply.

Sorry for the late reply. I just added the face script.

thank you for your reply.
Another a simple question, how can I gather the the data related to your face.json file?

Dear Sir,
I am learning your code. Is this required to be loaded? Can you share it?  CU-Net-master/data/face_bbox.py
def _compute_mean(self):
meanstd_file = 'dataset/face.pth.tar'

Hi @1700117HLT,
I find that normalizing the input images may not be necessary. The results do not show much difference.

Hi @spark123456789,
The face data are from the 300W dataset.

Dear Sir,
I am learning your code face alignment,but I run the cu-net-face-prev-version,the error about
preds = Evaluation.final_preds(output, center, scale, [64, 64]),  I find the Evaluation.py is def final_preds(output, center, scale, res, rot):   How should I define rot or can you share the new code face alignment with me ?

Dear Sir,
the error about  File "cu-net-face-prev-version.py", line 124, in main
visualizer, num_classes, flip_index)
File "cu-net-face-prev-version.py", line 265, in validate
preds = Evaluation.final_preds(output, center, scale, [64, 64])
TypeError: final_preds() takes exactly 5 arguments (4 given)
In the paper, rot is plus or minus 30 degrees,in  Evaluation.final_preds, rot is  0? I try rot=numpy.zeros(12), but there are still many errors, then try to remove rot in final_preds(output, final_preds.py) Center, scale, res, rot), but still reported  error, can you help me?

I have solved the previous question by consulting my classmates, thank you for your early reply.


Broken link in a flutter introduction docs

Describe the bug
A link to Get Started Flutter Development page is broken
To Reproduce
Steps to reproduce the behavior:
Go to https://docs.atsign.com/sdk/flutter/introduction/
Try to open Get Started Flutter Development link
Expected behavior
I should see the get started page

Can it be marked as a hacktobefest one?

I want to take this issue, can you assign it to me?

is it fixed? if not can you assign to me?


⚠ Bofrost.be has degraded performance

In e28f4b5, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1553 ms

Resolved: Bofrost.be performance has improved in 1c334c9.