No unique IDs generated after upgrade to v0.0.8

After upgrade to v0.0.8 I faced with the issue. No possibility to edit light items via web and assign it to some areas becouse there is no unique ids for all generated items.

Do you see anything special in the logs when it's loading the integration?
Can you post your config please?

I have the same problems with the unique ID's.
I'm running v0.0.9 and Home Assistant 2022.9.7 on a Raspberry PI 4.
Also the defaults don't work for any device type.
Configuration:
light:

platform: artnet_led
host: <IP_ADDRESS>
max_fps: 25                           # Max 40 per second
refresh_every: 0                      # Resend values if no fades are running every x seconds, 0 disables automatic refresh
universes:                            # Support for multiple universes
0:                                  # Nr of Universe (see configuration of your Art-Net Node)
output_correction: quadratic      # optional: output correction for the whole universe, will be used as default if nothing is set for the channel
devices:
- channel: 1
name: Tuin Lampen Schutting
type: binary
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_level: 0
- channel: 2
name: Tuin Lampen Terras
type: binary
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_level: 255
- channel: 3
name: Tuin LEDstrip aan/uit
type: binary
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_level: 255
- channel: 4
name: Tuin LEDstrip Helderheid
type: binary
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_level: 255
- channel: 5
name: Tuin LEDstrip kleur
type: rgb
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_rgb: [0,0,255]
- channel: 8
name: Tuin LEDstrip Built-in effect
type: dimmer
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
- channel: 9
name: Tuin LEDstrip Snelheid
type: dimmer
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
- channel: 10
name: Tuin LEDstrip Groepen
type: dimmer
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
- channel: 11
name: Tuin LEDstrip lengte van achtergrond of zwarte vlek
type: dimmer
- channel: 12
name: Tuin LEDstrip achtergrond kleur
type: rgb
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_rgb: [0,0,255]
- channel: 15
name: Tuin LEDstrip Flash
type: binary
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
- channel: 16
name: Tuin LEDstrip Pixels
type: dimmer
channel_size: 8bit            # width of the channel sent to DMX device, default "8bit", "16bit", "24bit" and "32bit" available.
#default_level: 138

Logs:
2022-10-05 11:16:30.183 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration artnet_led which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-10-05 11:16:39.280 INFO (MainThread) [custom_components.artnet_led.light] PyArtNet: pyartnet == 0.8.3
2022-10-05 11:16:39.281 INFO (MainThread) [custom_components.artnet_led.light] Version : 2021.07.10
2022-10-05 11:16:39.325 INFO (MainThread) [homeassistant.components.light] Setting up light.artnet_led
2022-10-05 11:16:39.438 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('platform', 'artnet_led'),
2022-10-05 11:16:39.438 INFO (MainThread) [custom_components.artnet_led.light] ('host', '<IP_ADDRESS>'),
2022-10-05 11:16:39.438 INFO (MainThread) [custom_components.artnet_led.light] ('max_fps', 25),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('refresh_every', 0),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('universes',
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([(0,
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('output_correction', 'quadratic'),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('devices',
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] [OrderedDict([('channel', 1),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin Lampen '
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] 'Schutting'),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'binary'),
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.439 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 2),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin Lampen Terras'),
2022-10-05 11:16:39.440 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'binary'),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 3),
2022-10-05 11:16:39.441 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] 'aan/uit'),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'binary'),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.442 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 4),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] 'Helderheid'),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'binary'),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.443 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 5),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip kleur'),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'rgb'),
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.444 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 8),
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.445 INFO (MainThread) [custom_components.artnet_led.light] 'Built-in effect'),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'dimmer'),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.446 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 9),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] 'Snelheid'),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'dimmer'),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.447 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 10),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] 'Groepen'),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'dimmer'),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.448 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 11),
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip lengte '
2022-10-05 11:16:39.449 INFO (MainThread) [custom_components.artnet_led.light] 'van achtergrond of '
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] 'zwarte vlek'),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'dimmer'),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup', None),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] '8bit')]),
2022-10-05 11:16:39.450 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 12),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] 'achtergrond kleur'),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'rgb'),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.451 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 15),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip Flash'),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'binary'),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.452 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] None)]),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] OrderedDict([('channel', 16),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('name',
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] 'Tuin LEDstrip '
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] 'Pixels'),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('type', 'dimmer'),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('channel_size',
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] '8bit'),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('output_correction',
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] None),
2022-10-05 11:16:39.453 INFO (MainThread) [custom_components.artnet_led.light] ('transition', 0.0),
2022-10-05 11:16:39.454 INFO (MainThread) [custom_components.artnet_led.light] ('min_temp', '2700K'),
2022-10-05 11:16:39.454 INFO (MainThread) [custom_components.artnet_led.light] ('value', 0),
2022-10-05 11:16:39.454 INFO (MainThread) [custom_components.artnet_led.light] ('max_temp', '6500K'),
2022-10-05 11:16:39.454 INFO (MainThread) [custom_components.artnet_led.light] ('channel_setup',
2022-10-05 11:16:39.455 INFO (MainThread) [custom_components.artnet_led.light] None)])])]))])),
2022-10-05 11:16:39.455 INFO (MainThread) [custom_components.artnet_led.light] ('port', 6454)])
2022-10-05 11:16:40.872 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_lampen_schutting
2022-10-05 11:16:40.873 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_lampen_terras
2022-10-05 11:16:40.874 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_aan_uit
2022-10-05 11:16:40.875 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_helderheid
2022-10-05 11:16:40.878 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_kleur
2022-10-05 11:16:40.879 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_built_in_effect
2022-10-05 11:16:40.881 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_snelheid
2022-10-05 11:16:40.882 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_groepen
2022-10-05 11:16:40.883 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_lengte_van_achtergrond_of_zwarte_vlek
2022-10-05 11:16:40.884 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_achtergrond_kleur
2022-10-05 11:16:40.885 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_flash
2022-10-05 11:16:40.886 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new light.artnet_led entity: light.tuin_ledstrip_pixels
2022-10-05 11:16:41.046 DEBUG (MainThread) [custom_components.artnet_led.light] Added binary light to hass. Try restoring state.
2022-10-05 11:16:41.048 DEBUG (MainThread) [custom_components.artnet_led.light] Added binary light to hass. Try restoring state.
2022-10-05 11:16:41.049 DEBUG (MainThread) [custom_components.artnet_led.light] Added binary light to hass. Try restoring state.
2022-10-05 11:16:41.050 DEBUG (MainThread) [custom_components.artnet_led.light] Added binary light to hass. Try restoring state.
2022-10-05 11:16:41.051 DEBUG (MainThread) [custom_components.artnet_led.light] Added rgb to hass. Try restoring state.
2022-10-05 11:16:41.052 DEBUG (MainThread) [custom_components.artnet_led.light] Added dimmer to hass. Try restoring state.
2022-10-05 11:16:41.053 DEBUG (MainThread) [custom_components.artnet_led.light] Added dimmer to hass. Try restoring state.
2022-10-05 11:16:41.053 DEBUG (MainThread) [custom_components.artnet_led.light] Added dimmer to hass. Try restoring state.
2022-10-05 11:16:41.054 DEBUG (MainThread) [custom_components.artnet_led.light] Added dimmer to hass. Try restoring state.
2022-10-05 11:16:41.055 DEBUG (MainThread) [custom_components.artnet_led.light] Added rgb to hass. Try restoring state.
2022-10-05 11:16:41.056 DEBUG (MainThread) [custom_components.artnet_led.light] Added binary light to hass. Try restoring state.
2022-10-05 11:16:41.057 DEBUG (MainThread) [custom_components.artnet_led.light] Added dimmer to hass. Try restoring state.

@Breina
Can you have a look into this?

Yep, sorry to keep you waiting. Am busy irl atm.
I can reproduce it, not yet fixed.

Yeah, no problem. Just didn't know if you read it.

It's working now. Thanks!
The only thing that isn't working is the default_level.
I will start a new issue for that.

I haven't updated in a while now but I was checking the code. I think unique IDs are based on IP now? I think that is somewhat annoying because this way, you can't switch to another IP running software like Artnetominator to check sent values. Furthermore,  using IP is discouraged here: https://developers.home-assistant.io/docs/entity_registry_index/ Please consider removing the host from the unique id.

Yes, realized this as well. Needed some way to differentiate separate controllers and didn't want to use indexes.
Working in the background on a more complete implementation of ArtNet, that will poll for controllers and thus use a MAC address instead of this (ArtNetPoll and ArtNetPollReply packets).
For now, I'm going to avoid changing it too much, but your comment is definitely on-point! Thanks for staying in the loop with the code! :)


Headless version for server-side usage (no DOM, no map)

What do you think about a special build to produce a library which can be used completely without browser?
I store tracks in a MongoDB database (with geo-index). It would be handy if I can use the same objects (LatLng, LatLngBounds, ...) in my server-side logic with Node.js, e.g. calculating distances, bounds, ...
I haven't tried it, because I've no idea how many dependencies exist between the source code files. But after the first screening I identified some files which look like they could run server-side too (at least with small modifications):

core/Class
core/Util (without window.*)
geo/**
geometry/* (maybe useful for SVG rendering or the like)
GeoJSON (depends on many other classes, but would be nice to be independent of DOM stuff)

Of course I could clone the repo and change a lot of things and create a server-side library. But if the maintainers of Leaflet believe that this could be valuable for more users (not just me), this could probably done in the main repo.
What do you think?

I think now it makes sense to implement Leaflet support for the server-side nodejs execution. I think the leaflet-headless library will run into compatibility issues and will have to constantly play catch-up.
Mapbox is moving from Mapnik-based to WebGL client-side styling, so if we want to support older browsers without WebGL, as well as the static images (e.g. show a map as a png image until user clicks on it to switches to dynamic map), we would need to render identical maps both client side and server side. We could keep using Mapnik on the server, but that would mean maintaining CartoCSS and WebGL styles in sync, which might not match in features.
I am thinking of implementing this functionality for Kartotherian

I've created https://github.com/hgoebl/Leaflet.POJSO for my own requirements, but it lacks all kind of rendering completely. Maybe a full Leaflet running in PhantomJS would be an alternative for you, @nyurik

@nyurik FYI Mapbox will also launch fallback image tiles generated from GL styles on the server.

@mourner thanks, that's good to know, do you know which lib will used? Yet, I assume that it will only render the base gl tiles, and I need to render a static image that is identical to the client-side view generated by Leaflet -- with all the extra layers and pin clusterings and layouts, etc.  This way clicking that image and switching to dynamic map (client leaflet) would look the same.
@hgoebl thanks, rendering is what I am looking for. PhantomJS might be an option, but feel a bit heavy.


Update consumer to 4.2.16

Updates au.com.dius.pact:consumer from 4.2.15 to 4.2.16.
Changelog
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "au.com.dius.pact", artifactId = "consumer" } ]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #131.


Only one month is shown when numberOfMonths/numberOfColumns is set to 2

Describe the bug
The calendar displays 1 month even though we have 2 months in the config
We had it working as expected a week ago and now we can only see one month being displayed
We didn't do any change since more than a week.
We use litepicker from the CDN:
<script src="https://cdn.jsdelivr.net/npm/litepicker/dist/js/main.js"></script>
To Reproduce
Codesandbox
Expected behavior
It should display two months
jsfiddle.net / codepen.io / etc
Codesandbox
Additional context

I see 2 months.
If you are talking about displaying on mobile, then add to config:
mobileFriendly: false
see #102

I see 2 months.

That's weird:

If you are talking about displaying on mobile, then add to config:
mobileFriendly: false

no I'm talking about desktop which was working up until today :(

@mrassili It probably isn't a good idea to be using the non-versioned CDN link in production.

Since this package is not available via NuGet (only npm) we have some projects that cannot use the package as a reference per-say. So in that case, I have downloaded a copy of the version and then just reference that JS file locally.
Another way to do this is to use the versioned CDN link:

thank you @scott-fisher-iii version 1.4.7 is working alright
but still there's a bug introduced in 1.5.0 I guess

@wakirin Perhaps the versioned link should also be added to the help doc?

I will add a link to https://www.jsdelivr.com/features#npm in readme.
@scott-fisher-iii
the problem is reproduced by your side https://codesandbox.io/s/litepicker-repro-3n2wv ?

@mrassili
how many months is displayed here https://codepen.io/wakirin/pen/rNxWwep ?

I see the problem (only 1 month showing instead of 2) with @mrassili 's codeandsandbox.io link, but not the codepen.io link that @wakirin just shared.

@mrassili
how many months is displayed here https://codepen.io/wakirin/pen/rNxWwep ?

two

The one @wakirin shared on codepen uses 1.5.1 version which works, I think the bug is on 1.5.0

Yeah, I noticed the CDN link is still 1.5.0
https://cdn.jsdelivr.net/npm/litepicker/dist/js/main.js
You can specify 1.5.1 though with:
<EMAIL_ADDRESS>

okay that explains it. thanks!


Suggestions to improve documentation

Add a link to the releases page, so people don't have to go and look for it
Add a section about flashing with esptool

The following diff is my suggested change to the wiki (which seems to be non-trivial to get put into a proper pull request):
diff --git a/Installing-the-Firmware.md b/Installing-the-Firmware.md
index ba67b7b..3e94c95 100644
--- a/Installing-the-Firmware.md
+++ b/Installing-the-Firmware.md
@@ -1,6 +1,6 @@
 There are three (actually 4 but the fourth method uses the command line) methods you can use to upload the initial firmware to your device.  Two of them are a bit technical but not insurmountable.  If you develop software on ESP devices then you probably already have the Arduino IDE v1.8 software installed on your computer.  If you do not then choose either the ESP32 flash download tool method or the ESPHome web method as they are fairly straight forward.  I didn't ask him to try, but I think that even the hairy cave dude from the Geico commercials can get this done.

-The initial firmware onboarding can be performed using a single file without having to recompile the software using the `SomfyController.onboard.esp32.bin` file for the release.  Download this file to your computer somewhere.  The file is located on this repository under releases on the right side of the main page.  Please note that if you flash this file to your device it will erase your shade configuration so if this is not a new install perform the [update procedure](https://github.com/rstrouse/ESPSomfy-RTS/wiki/Updating-ESPSomfy-RTS) instead of this onboarding procedure.
+The initial firmware onboarding can be performed using a single file without having to recompile the software using the `SomfyController.onboard.esp32.bin` file [from the release](https://github.com/rstrouse/ESPSomfy-RTS/releases).  Download this file to your computer somewhere.  The file is located on this repository under releases on the right side of the main page.  Please note that if you flash this file to your device it will erase your shade configuration so if this is not a new install perform the [update procedure](https://github.com/rstrouse/ESPSomfy-RTS/wiki/Updating-ESPSomfy-RTS) instead of this onboarding procedure.

 ![image](https://user-images.githubusercontent.com/47839015/221660466-ab827cf1-4bfe-4e4d-8b5a-5b1245544a53.png)

@@ -41,6 +41,25 @@ Once the flash process is complete disconnect any jumpers you have installed to

 You are now free to upload firmware using the included web interface.

+# Using esptool.py
+
+Install the Python esptool via pip:
+
+```bash
+pip install --user esptool
+```
+
+And then use the following commnads to flash the image to the ESP32:
+
+```bash
+# Check if everything works by checking the ID of the ESP32
+esptool.py --port /dev/ttyUSB0 flash_id
+# Erase whatever is on there
+esptool.py --port /dev/ttyUSB0 erase_flash
+# Write the SomfyController image
+esptool.py --port /dev/ttyUSB0 write_flash 0x0 ~/path/to/SomfyController.onboard.esp32.bin
+```
+
 # Using Arduiono IDE v1.8
 I developed this using the painfully awful Arduino IDE v1.8.  I originally installed v2.0 then found out you cannot upload the file data to it.  Download  v1.8 (legacy) and save yourself several hours of searching through forums for functions that are not supported on 2.0 even several years after its release.  If you are using VS Code then you are on your own since I don't have any experience with it.  The good news is that you only need this during the initial install and all follow on work for the module is user friendly.

Done,  I also added some text about how to determine which usb port is currently used.


CIS Benchmark: No content shown in profile detail page

Steps to reproduce

Install CIS Benchmark cluster tool helm chart
Cluster --> Tools --> install CIS Benchmark --> refresh
Navigate to resource menu CIS Benchmark --> Profiles --> click on a scan

Actual behavior
No content renders on page. No errors or warnings in log.
Expected behavior
Content is rendered in page

From Epic:

I've added QA backlog task to explore the chart install automation effort as I didn't find a CIS covered in the current code
https://github.com/rancher/qa-tasks/issues/1547

Same here, there's no linked comment or PR confirming this has been fixed. @rak-phillip , @rak-phillip  can you update?

@richard-cox yes, this is resolved by #11916. Each of the issues were tagged with the Fixes keyword and they look to be appropriately linked to the PR.

Closing again following comments 🙏


add face model & new task

By @martinjaggi from FeAI
add one more task for face detection (similar to the lung ultrasound one, can start with the same UI parts)
i will share the TF.js model&weights, and preprocessing example code separately

Meant for privately.


Request: Java generics could be highlighted?

Describe the issue

Java generics are not being highlighted
Which language seems to have the issue?

Java
Are you using highlight or highlightAuto?
highlight
Sample Code to Reproduce

class Foo {
    void bar() {
        Foo<Bar> buzz;
    }
}

Expected behavior

Showing the diamond operator
Additional context

How could we be certain those aren't greater then and less than comparison operators?

How could we be certain those aren't greater then and less than comparison operators?
The problem is not that it's not highlighted, but rather that they are not shown at all. The diamond operator alone (e.g. in new ArrayList<>()) is displayed.

Looks fine to me?

Ping.

turns out it was an issue with my JS code... this is awkward, lol


Index table for objects with single key/value pair

Having an index table for an object with a single key/value pair doesn't really make sense. In fact, this unit test from the java-velocypack implementation suggests that this superfluous index table can be omitted: https://github.com/arangodb/java-velocypack/blob/543f24419300fb12be6cc1b676089c924c0bd6f8/src/test/java/com/arangodb/velocypack/VPackSliceTest.java#L953-L960
However, when I try to create a document with the content {0x0B, 7, 1, 65, 97, 40, 42} via VelocyStream I get the following error: VPackError error: given buffer length is unequal to actual length of Slice in buffer.
What is the position on index tables for objects with only a single entry? I couldn't find anything in the documentation that mentions that an index table is optional in this case, but then the java implementation seems to be off.

@mpoeter: when using an object of type 0x0b, it has to have an index table.
Precisely, all objects of types 0x0b to 0x12 must have index tables.
In case no index table should be used, there is object type 0x14.

The validation of objects of type 0x0b will fail because the validator expects an index table at the end, but there is none.

Got it! But then the unittest in java-velocypack seems to be wrong, or at least misleading:
// {"a":"b"}
final VPackSlice slice = new VPackSlice(
    new byte[] { 0x0b, 0x07, 0x01, 0x41, 0x61, 0x41, 0x62 });

This object is lacking an index table, but apparently the size (7) has been adapted accordingly. Not sure if the VPackSlice implementation is supposed to validate the data and recognize this. @hkernbach
FWIW: I am not actually using java-velocypack. I am working on an Elixir implementation and simply used the java-velocypack unittests as reference.

No, VPackSlice will not do any sort of validation. Validation will only be done on demand.
There is an extra VPackValidator class that can be used for validation.
I will ask my colleagues that maintain the java-velocypack part to look into this.
Thanks!

I updated the cited java test with this vpack: 0x0b, 0x08, 0x01, 0x41, 0x61, 0x41, 0x62, 0x03
https://github.com/arangodb/java-velocypack/commit/8fb5b25c6d18ef6904b8ef4d86f158680bf64866#diff-3db9e85532818437b3aed9c4484108bb


High memory

I found that using the encryptSecretStorageJSON method consumes very high memory. Basically around 250M. Basically around 250M, why do you have such a high memory, thanks!
let account = Account.randomMnemonic()
_ = account?.encryptSecretStorageJSON(password, callback: { (json) in       })

After encrypting is the memory not being released?
The scrypt algorithm is intentionally memory intensive. By using memory-hard algorithms the cost of brute-forcing a password become computationally infeasable. Targeting memory makes the algorithm expensive to parallelze, since memory bandwidth is usually already maxed out in any given device (since it is always the bottleneck) and random memory access does not scale well with respect to ASICs.
I will do some memory analysis to make sure there aren’t other issues, but as long as after key derivation the memory is either released or can be re-allocated, I don’t believe this is an issue.


[Commands] Add LinuxMainGenerator

This adds a new option "--generate-linuxmain" to 'swift test' to
generate test entries that can be used for XCTest on Linux.  Since only
macOS supports automatic test discovery, this option will only work on
macOS. Using it on Linux will result in a "null" generation.
rdar://problem/37259907 Use macOS's test disovery to generate LinuxMain.swift

@swift-ci please smoke test

@swift-ci please smoke test


Transfer the materialize repo to the materialize organization

Isn't this the best solution?  :)


Add compatibility for Lets Do Meadow

Is it possible to add compatibility with https://www.curseforge.com/minecraft/mc-mods/lets-do-meadow
It adds a few milkable animals that dont seem to follow the milk rules.

Have you tried adding the mobs to this mod's respective entity type tags via datapack? I can't add pre-emptive compat to Let's Do Meadow, as the mod makes certain vanilla mobs milkable. If I add sheep/goats to the tag beforehand, they'll be milkable even when the mod isn't installed--it's the same reason I removed compat for Milk All the Mobs by Serilum. (There might be a way to not have that happen on my own end, but I don't feel like figuring out what technically isn't broken.) Try adding them to the tags via datapack, and then lmk if it still isn't working 👍


Add Proxy Support

We use an on-prem Artifactory Enterprise instance, so a lot of our VSTS builds/releases execute on VSTS agents running on-prem (within our corporate network) as well.
Several of the tasks in this extension attempt to download the CLI if it does not already exist, which is done by the downloadCli function in task-utils lib, here specifically. However, the download attempts fail on our private/on-prem VSTS agent because that request does not utilize the HTTP Proxy environment variables (which are correctly set on all our build servers) like most VSTS tasks do. Many VSTS tasks use the request lib to make http requests which honors those environment variables, but I do not believe the request-promise-lite lib being used by the task-lib does.
I know we can work around this (temporarily) by manually downloading the CLI and adding it to the workspace directory (for each agent, for each build server), but this isn't a viable long term approach.
Please consider adding Proxy support so that the CLI can be downloaded on-demand from private/on-premise VSTS agents as well.

I'd be willing to send a PR with an attempt at this if there's any interest. I'm the one that ends up having to manually keep putting the CLI in our agent directories so I have plenty of motivation :)

@calebcartwright,
Thanks for reporting this issue.
request is a very heavy module in disk space. We replaced it with request-promise-lite in order to reduce the size of a task in disk.
However, we will investigate this issue thoroughly in order to find a solution for the next release. We'll keep you updated.

thanks @yahavi . I totally understand the desire to use something other than request for size considerations (which I believe is a big reason why other HTTP libs like got have become so popular).
For what it's worth though, it's much more important for us that the Artifactory tasks work/be able to download the CLI than it has having a reduced Task package size on disk. In other words I'd happily take the extra ~4MB that request in exchange for the Artifactory tasks being able to work within our corporate network.

@calebcartwright,
We fix it by requiring the 'proxy-support' npm module. This module sets the NodeJs' http and https globalAgent according to http_proxy and https_proxy environment variables.
This is the line that resolves the issue: https://github.com/jfrog/artifactory-vsts-extension/commit/8dc0e8aa7f6a9f35a526b1fad9ca3bae3644a1ee#diff-cf8c93fdca4ad48be0a2e283f2b81929R7
The fix will be included in the next patch version.
We'll appreciate your feedback for that.

Awesome! Thanks for the quick turn around. Will be happy to check it out once the new version drops

@calebcartwright,
Artifactory VSTS extension v1.2.1 is released.

@calebcartwright,
Lets make sure that the problem occurs while downloading the cli.
Where in the task log do you see the error? Do you see Finished downloading jfrog cli.?
On more question - Are you using http or https proxy?
Thanks!

The error definitely occurs while attempting to download the CLI. We do not see the finished downloading message, the only task output is:
Failed while attempting to download JFrog CLI from https://api.bintray.com/....

Connection failed: tunneling socket could not be established, cause=tunneling socket could not be established, statusCode=503

and the _jfrog directory tree under the Agent work directory has no jfrog cli executables. Proxy server is http

@calebcartwright,
Artifactory VSTS extension v1.2.2 is released. On this version we use the vsts-task-tool-lib to use JFrog CLI as a tool. It does support HTTP proxy with the HTTP_PROXY environment variable.
Appreciate you feedback for that!


General Readme clarification improvements and a new automatic installation (without flakes) section

354c000 relevant to #2
Currently a draft PR because you might want to tweak the language i use, and i have not tested if the automatic installation section works yet. I may also add a full example for the automatic installation section because it is more in the form of instructions instead of a working config section (since you cant just copy that code and stuff works), but i would like your input on that.

I might also consider the comments inside the automatic installation without flakes section a little too long, maybe i should move them outside of the code as information, and change the code to more of an example but describe the variants in rev the user can use.

Looks good to me and works on my machine, merging.


Fix the inaccurate rate limit when the node time is different in the multi-node scenario

We deployed 10 gateway nodes in production, and the rate limit tokens was inaccurate during the recent stress test.
Through tcp packet capture and reading lua script, it is found that when redis receives an old time command, it will fill the token unexpectedly, which often occurs in our production environment.
Under multiple gateway nodes , the time of all nodes cannot be guaranteed to be consistent, and the redis connection line cannot be guaranteed to be smooth. I think the refresh token time of script should be based on redis time.
refer issue #2412

Cherry-picked to 3.0.x and merged forward to main via ad22f981256108605c9ad7615b14620b35dde310. Thanks for your contribution!


SLO metrics not available on OpenShift

These metrics are essential for analyzing the performance of Keycloak. They used to work in a nightly release, now they stopped working for an unknown reason since ~July 5 (maybe after upgrading to Quarkus 3.2)

Created an upstream issue: https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/8927
Seems to work without TLS, but not with TLS. While this worked with nightly releases some time ago, it didn't work with 21.1.2 and 22.0.0.
Will investigate further, and see if we can use the standard Micrometer/Quarkus way of gathering these metrics.

After a hint from upstream, found out that metrics work for HTTP/1.1, but not for HTTP/2 - possibly as the instrumentation needs to be different for the two.
Adding a workaround that the server only uses HTTP/1.1.
Explanation for the observed behavior: Gatling is configured by default to use HTTP/1.1 only, so we have seen SLO metrics when using Gatling, but not when using a browser (which uses HTTP/2 be default).

It is also working always on minikube, as that is using a reencrypt route, which apparently doesn't use HTTP/2


DOM-16779: Make sure we pin ranchhand release too

We pinned the "terraform" release of ranchhand, but not the actual ranchhand binary itself.

Turbomerging

:+1:


⚠ SceneTime has degraded performance

In 965c341, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 3287 ms

Resolved: SceneTime performance has improved in cb34770 after 6 minutes.


Script module click-left execution differs from command execution via sh -c

Describe the issue
The Wiki entry for script modules states that click-left will be executed using "/usr/bin/env sh -c [command]".
In my custom script I use a specific command (that kills the application redshift when it runs or starts it if it is not running) that works without problems when running it from the command line:
$ /usr/bin/env sh -c "pgrep redshift > /dev/null && pkill redshift || redshift 2>&1 /dev/null &"
alternatingly kills and starts redshift on each execution.
Using the same command in a custom polybar script module with click-left however does not work the same, it does kill redshift when left-clicking but it does not start it again on the next left-click.
Expected behavior:
redshift should be started on left-clicking the custom module in case it does not run, and be killed in case it does run.
Actual behavior:
When redshift is running, a left-click correctly kills the process (indicated via label "off"). However when redshift is not running, a left-click does not start it again (which would be indicated both by a screen color change and by a label display like "6500K"), the label stays "off". Note that the label does change when I manually start redshift again.
Was it working before?
I did not use polybar before, so I am not sure whether this was at any time working before.
To Reproduce
A minimal but complete config with which the problem occurs:
[bar/example]
modules-center = redshift-temp
[module/redshift-temp]
type = custom/script
exec = pgrep redshift > /dev/null && redshift -p 2> /dev/null | grep temp | cut -d ":" -f2 || echo " off"
interval = 3
click-left = pgrep redshift > /dev/null && pkill redshift || redshift 2>&1 /dev/null &

It may help to install the ~100kb package redshift (adjusts the color of your screen), e.g. with sudo apt install redshift, to understand the issue.
Polybar Log
No output appears (besides the expected "Termination signal received, shutting down..." when I manually close polybar).
Environment:

WM: i3 with i3-gaps
Distro: Debian buster
Output of polybar -vvv:

polybar 3.4.1-dev

Features: +alsa +curl +i3 +mpd +network(wireless-tools) +pulseaudio +xkeyboard

X extensions: +randr (+monitors) +composite +xkb +xrm +xcursor

Build type: None
Compiler: /usr/bin/g++
Compiler flags: -g -O2 -fdebug-prefix-map=/tmp/tmp.ww3wZM3ZKt/polybar=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wpedantic
Linker flags: -Wl,-z,relro

The click command is not executed at all because it produces output (see this known issue).
This was probably unintentional on your part because you explicitly redirect the output, however you are missing a redirect before the last /dev/null:
pgrep redshift > /dev/null && pkill redshift || redshift 2>&1 > /dev/null &
                                                              ^

Thank you for your answer, that was indeed unintentional. I assumed that because running the command worked there was no problem with it. Besides missing the >, I also redirected stderr to stdout too early. Like this it works as expected:
...
exec = pgrep redshift > /dev/null && pkill redshift || redshift > /dev/null 2>&1 &
...


aya: Use OwnedFd in FdLink.

I had to add a few into_raw_fd() to avoid ballooning up this PR with changes to MapData or to ProgramData (because the syscall to BPF_OBJ_GET now returns an OwnedFd) Those are more involved so they should each be their own PR.
As far as I could tell there weren't any leaked file descriptors being fixed by this, this is just future proofing.

This change is

@nrxus apologies for the conflict. Let's rebase and get this landed.

I took care of the conflict.


Some options not implemented in MocketSocket

Describe the bug
When using mocked sockets in some conditions, certain socket properties are not properly implemented.

In AF_INET6 scenarios (IPv6 connection), address can be a tuple of four elements (see https://docs.python.org/3/library/socket.html#socket-families ), but the current implementation only takes tuples with 2 arguments. For example socket.connect((host, port, 0, 0)) should not throw an error.
The socket type argument of getaddrinfo() is called type ( https://docs.python.org/3/library/socket.html#socket.getaddrinfo ) and not socktype as implemented here: https://github.com/mindflayer/python-mocket/blob/bce7cde62177bb23008ff57c84faaca1294b645d/mocket/mocket.py#L458

Have you considered trying GitHub actions?

Have you considered trying GitHub actions?

Yes, that would be the alternative.

Yes, that would be the alternative.

Hi @fvigo, were you thinking to propose a PR related to this issue? Otherwise I'll have a look at it in the near future.

Hi @mindflayer , sorry for the delayed response. I found a solution that allowed me to continue without requiring a change to mocket.
For IPV6 support, I think should be considered an enhancement, but the issues described here might create problems with the socket API.
They should be both easy fixes: allow MocketSocket.connect() to support tuples of 4 elements, and  rename socktype to type in getaddrinfo. However, I'd recommend for you to take a look at those as, especially the latter, might maybe break some compatibility.


again Mojo::Reactor::EV

When I try perform 'again' with Mojo::Reactor::EV backend and timer that not exist it cause server error:
[Fri Mar 20 10:35:06 2015] [error] Can't call method "again" on an undefined value at /usr/local/share/perl/5.14.2/Mojo/Reactor/EV.pm line 12.
If I do the same with Poll backend it causes only warning.
I think usage of wrong timer value shouldn't cause server error. Or there should be method to check if timer exists

I think this feature request needs an actual use case, so far it sounds to me like it would only hide timing bugs.

Something like this would seem reasonable, since it could be used for testing as well, but we still need a good use case.

Since no use case has been presented, i've decided to go the opposite direction and make both reactors fail consistently. Hopefully this can prevent a few bugs in the future.

OK, it's reasonable, thanks.
P.S. Sorry for late answer. Actually, this issue was connected to this thread: https://groups.google.com/forum/#!topic/mojolicious/tWZmcc-mfoM


upgrade source-map-resolve to 0.6.0

source-map-resolve  0.50 uses two deprecated libs urix and resolve-url. so nstalling snapdragon via npm complains about the deprecated warning.

see also here: #24

/cc @jonschlinkert @danez @doowb @EdwardBetts

Fixed in 0.12.1


Fix problem launching the second video on mp4 format. Issue: #1466

Hello again.
We manage to set logic in FilePlayer in order to reproduce multiple videos and audios in Array passed to url prop.
We tested it with mp4 files.
We found kind of unclear what maps of source tags in the end of the file is for. It was returning source with src as undefined when multiple before.
Feel free to correct or suggest any further consideration.
It passed lint and tests

Custom playlist functionality is outside of the scope of this library. URL arrays in FilePlayer.js are used for multiple sources (eg different formats) of the same video.


Questionable indenting of structs inside simple expressions

v0.8 output:
fn test1() {
    Ok(Foo {
           x: 1_000_000,
           y: 2_000_000,
       })
}

fn test2() {
    let x = Some(Foo {
                     x: 1_000_000,
                     y: 2_000_000,
                 });
}

v0.7.1 feels much more natural to me:
fn test1() {
    Ok(Foo {
        x: 1_000_000,
        y: 2_000_000,
    })
}

fn test2() {
    let x = Some(Foo {
        x: 1_000_000,
        y: 2_000_000,
    });
}

I'm not sure what would be the ideal rule, but I think this is a starting point: if a certain logical line fits in a single physical line except for the last function/method call's last argument's block, expand just that final argument, aligning its block to the whole line (rather than to the argument).
For example:
fn demo() {
    let w = foo().bar().and_then(|x| {
        // ...
    });
}

v0.7.1 agrees with my proposed rule, but v0.8 wants to indent this block all the way to the |x|.

This is intentional (though I agree imperfect) - the old behaviour was an odd mix of block and visual indenting, the new behaviour is a clean visual indent inside a block indent. I intend to change to pure block indent soon which will give something like the 0.7 behaviour for these examples.


vivado: update for SC 0.10

Changes verified locally by running examples/blinky/run_vivado.sh.

Thanks for the feedback, I refactored compile.tcl to use OpenROAD's pattern (which still uses a common entry point and switches on task name). Not sure if you have an opinion on that vs having each task have its own script entry point (which then sources a common pre/post script).

I think it would be cleaner to have each task associate their own script and then source a common startup script.

Sounds good, done. It does end up adding some boilerplate to grab the refdir of each script.


Support setting apt allow_downgrade: false

Description
Support setting allow_downgrade: false in apt to disable passing --allow-downgrades.
This could be used to prevent Chef from inadvertently downgrading a manually upgrade package.
Related Issue
https://github.com/chef/chef/issues/13788
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Chore (non-breaking change that does not add functionality or fix an issue)

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have run the pre-merge tests locally and they pass.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[x] All commits have been signed-off for the Developer Certificate of Origin.

Hey - are you looking for a review @mdkent ? If so, remove this from draft and we'll review it. Otherwise, next week we'll close it.


Installing the sample driver causes an error - invalid parameter for service or function

The error on the device:
Windows cannot initialize the device driver for this hardware. (Code 37)

An invalid parameter was passed to a service or function.

There is this event:
Device ROOT\SAMPLE\0000 had a problem starting.

Driver Name: oem24.inf
Class Guid: {78a1c341-4539-11d3-b88d-00c04fad5171}
Service: ECHO_2
Lower Filters:
Upper Filters:
Problem: 0x25
Problem Status: 0xC000000D

System:
-Windows 10 VM
-DriverCertificate has been installed on the machine
-Did all the steps - including driver signing.

This is due to using W10. If you want to use W10 right now, the patch described in https://github.com/microsoft/windows-drivers-rs/issues/42#issuecomment-1905274389 is required until https://github.com/microsoft/windows-drivers-rs/issues/82 lands.
Closing this as dupe. Tracking this issues in https://github.com/microsoft/windows-drivers-rs/issues/42


Kenwheeler

see https://github.com/cleverage/slick/pull/2 (Backstroke automatic PR)
-> v1.9, conflicts solved

Wrong repo...


Auto-generate HA Config

Do you have any plans to automatically generate a config file (or set of includes) based on the information about the devices and their capabilities for the smart apps?
I rebuilt the functionality of your bridge in Node Red to learn it (and run the bridge on a Pi), and figured I would create a flow to automatically update the HA config file and optionally restart HA when new devices are found. Here's my ugly mustache template to give an idea of what I've hacked together so far:
{{#payload.capabilities.Switch}}
{{^payload.capabilities.SwitchLevel}}
switch {{payload.id}}-switch:
{{/payload.capabilities.SwitchLevel}}
{{#payload.capabilities.SwitchLevel}}
light {{payload.id}}-light:
{{/payload.capabilities.SwitchLevel}}
  platform: mqtt
  name: {{parts.key}}
  state_topic: "{{preface}}/{{parts.key}}/switch/{{state_suffix}}"
  command_topic: "{{preface}}/{{parts.key}}/switch/{{command_suffix}}"
  payload_on: "on"
  payload_off: "off"
{{#payload.capabilities.SwitchLevel}}
  brightness_state_topic: "{{preface}}/{{parts.key}}/level/{{state_suffix}}"
  brightness_command_topic: "{{preface}}/{{parts.key}}/level/{{command_suffix}}"
  brightness_scale: 99
{{/payload.capabilities.SwitchLevel}}
  optimistic: false
  qos: 0
  retain: true
{{/payload.capabilities.Switch}}

{{#payload.capabilities.MotionSensor}}
binary_sensor {{payload.id}}-motion:
  platform: mqtt
  name: {{parts.key}}
  state_topic: "{{preface}}/{{parts.key}}/motion/{{state_suffix}}"
  payload_on: "active"
  payload_off: "inactive"
  sensor_class: motion
  qos: 0
{{/payload.capabilities.MotionSensor}}

Very cool, would love to see this.

OOooh, that would be quite cool.  I'm in favor of this.  I don't have any plans to add it personally, but I can see it certainly helping users out quite a bit.

I was thinking about something similar, but where the handler on Smartthings side would publish a list of all enabled devices to a single topic along with their configs, and then on the Hass side you just specify that discovery topic and it can then find everything else from there.  Not sure which approach would be better.

I can paste my node-red flow here, but I haven't modified the code for this app. I ended up changing the SmartApp to have subscribe push a block of device info. That's what I'm using in the Node-RED flow and calling in the template (checking for capabilities of the device to build the all the device blocks.)


Entity search window for admin / mapping

This is for entities that are already mapped rather than for spawning. Should be able to search via prototype / component / tag probably.
Could maybe also function as a way to bulk vv stuff in a future pr.

maybe build into SQDL as a "FIND" command

FIND id WHERE name='Sloth'
FIND id WHERE actor IN components
FIND name WHERE actor IN components
FIND name, id WHERE actor IN components

(WHERE x IN components is probably important enough to be consolidated into say, WITH x)

so there sort of is through the toolshed visualize command.
For instance

entities with Ghost vizualize
show all the ghosts present and gives a ui to tp to them or vv them.

You can do similar command with arbitrary prototype / component / tag


Using both channels, hx711 is wired two sensors.

Hello, Does the library make it possible to use both channels on same pins, changing the channels alternately ? For instance Can I create two different objects with same inputs except the channel input as it follows:
Hx711 hx1(data,clock,..channel='A');
Hx711 hx2(data,clock...channel='B');
Something like this.. ?

Hi,
The HX711 is only capable of reading from one channel at a time. To be able to read from a different channel, the HX711 needs its configuration to be changed on the chip.
It would be best to create a single HX711 object and use the setConfig method to change between channels.
Also keep in mind that Channel A can use a gain of 128 or 64. Channel B can only use 32.

Thank you so much

Hello, I tried with common CLK pin and different data pins. This type of configuration works well on rp3. The issue can be closed, your library fit best for my application. Thanks again..


du: move help strings to markdown file

#4368
du --help outputs the following.
$ ./target/debug/coreutils du --help
Estimate file space usage

Usage: ./target/debug/coreutils du [OPTION]... [FILE]...
./target/debug/coreutils du [OPTION]... --files0-from=F

Options:
      --help                 Print help information.
  -a, --all                  write counts for all files, not just directories
      --apparent-size        print apparent sizes, rather than disk usage although the apparent size is usually smaller, it may be larger due to holes in
                             ('sparse') files, internal fragmentation, indirect blocks, and the like
  -B, --block-size <SIZE>    scale sizes by SIZE before printing them. E.g., '-BM' prints sizes in units of 1,048,576 bytes. See SIZE format below.
  -b, --bytes                equivalent to '--apparent-size --block-size=1'
  -c, --total                produce a grand total
  -d, --max-depth <N>        print the total for a directory (or file, with --all) only if it is N or fewer levels below the command line argument;  --max-depth=0
                             is the same as --summarize
  -h, --human-readable       print sizes in human readable format (e.g., 1K 234M 2G)
      --inodes               list inode usage information instead of block usage like --block-size=1K
  -k                         like --block-size=1K
  -l, --count-links          count sizes many times if hard linked
  -L, --dereference          dereference all symbolic links
  -m                         like --block-size=1M
  -0, --null                 end each output line with 0 byte rather than newline
  -S, --separate-dirs        do not include size of subdirectories
  -s, --summarize            display only a total for each argument
      --si                   like -h, but use powers of 1000 not 1024
  -x, --one-file-system      skip directories on different file systems
  -t, --threshold <SIZE>     exclude entries smaller than SIZE if positive, or entries greater than SIZE if negative
  -v, --verbose              verbose mode (option not present in GNU/Coreutils)
      --exclude <PATTERN>    exclude files that match PATTERN
  -X, --exclude-from <FILE>  exclude files that match any pattern in FILE
      --time[=<WORD>...]     show time of the last modification of any file in the directory, or any of its subdirectories. If WORD is given, show time as WORD
                             instead of modification time: atime, access, use, ctime, status, birth or creation [possible values: atime, access, use, ctime,
                             status, birth, creation]
      --time-style <STYLE>   show times using style STYLE: full-iso, long-iso, iso, +FORMAT FORMAT is interpreted like 'date'
  -V, --version              Print version information

Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE is an integer and optional unit (example: 10M is 10*1024*1024).
Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB,... (powers
of 1000).

PATTERN allows some advanced exclusions. For example, the following syntaxes
are supported:
? will match only one character
* will match zero or more characters
{a,b} will match a or b

Maybe this PR is ready to be merged.

Maybe this PR is ready to be merged.

It was not :P


merge upstream "unknown version" changes

Captures changes from https://github.com/johnmichel/Library-Detector-for-Chrome/pull/93
null jQuery WPT: https://www.webpagetest.org/custom_metrics.php?test=170407_TK_3Z0J&run=1&cached=0
multi-lib WPT: https://www.webpagetest.org/custom_metrics.php?test=170407_3V_3WKB&run=1&cached=0

Just pulling changes from the library detector repo. Merging.

Updated custom_metrics/ on HA server and pushed changes down to the WPT agents. This should give us unknown version coverage for the 4/15 run.

👍

One thing I forgot to do in https://github.com/johnmichel/Library-Detector-for-Chrome/pull/93 is increment the version. HA pulls down the version in manifest.json and associates that with the build of libraries.js.
Maybe we need a more robust process, like referencing the last commit ID of libraries.js.

Yeah, seems reasonable.


[bug] error when injecting

when i try to inject the cheat i get this error, i can use the cheat but when i try to use some features like player list the game crashes, also i cant use the ESP although i have a compatible version (no-steam 3266)

The game updated and the cheat is no longer up to date with the newest HL25 update.


Jenkins-build-collector not fetching build details for a given Job

Hi All,
I have configured the Jenkins-build-collector successfully and the collector is working fine. In the configure build widget, i am able to see list of Job's name. But when i select one of the job from that list and save it. The collector is not extracting build related details for the job configured. And when i check the log i see the following error.
2016-03-08 11:55:06,293 ERROR c.c.d.collector.DefaultHudsonClient - Malformed url for loading build detailsno protocol: jenkins.com/job/myjobname/98/. URL =jenkins.com/job/myjobname/98/
Thanks & Regards
Manjunath

Can you paste the properties file here? Remove sensitive info.

One more thing to check... Go to your Jenkins -> Manage Jenkins -> Configure Jenkins page.
Scroll down to Jenkins location section. Make sure you have the right URL of jenkins in there with http:// or https://. Example:

Hi,
Really sorry for the late reply. Now it is working fine. The mistake was in Manage Jenkins -> Configure Jenkins , there was no protocol defined in jenkins Url. Once i made the changes, it is working fine. Thanks for the help.. Sorry once again for the late replay.
Regards
Manjunath.V


Update first-web-api.md

@andreapace  thanks for the PR.
Be sure to check out your name as a contributor about the 3rd of next month on the What's new page


UI: Better looking ToggleButton rotation in TreeViewItem

Behavior

Before

After

Cause
The center point of the original SVG image is to the upper left, but in order not to modify the original design of Material Design, only the RenderTransformOrigin is modified.

Great PR thanks ☺


Transparent geometry support

I did some tests with transparent meshes and it was unclear to me, which of the different renderer supports transparent meshes. I have transparency in the vertex colors of my meshes, which I pass as "vertex.color" using FLOAT4. None of the renderers seems to use that alpha.
I tested adding a OSPMaterial and added a "d" value of 0.5. This causes the mesh to get transparent in OBJ renderer, but not in the rest of the renderers (AO/SciVis/VolumeRayCaster).
Did I miss something or is this just not implemented?

Each renderer has its own view on handling material and geometric properties, one of which being transparency. The OBJ renderer (depricated, will eventually be removed) does support transparency, but it is known that the AO and VolumeRayCaster renderers do not support it. The AO renderer will not support transparency in favor of simplicity: it is intentionally a small renderer to support a very short shading phase and for demonstration of how to implement a renderer. Surface rendering support in the VolumeRayCaster was added a while ago because we did not yet have a renderer which did both volumes and surfaces together, where the focus was rendering opaque geometry inside of a volume (a common situation in visualization applications).
The new SciVis renderer will support transparency, which could be viewed as either a "bug" or "not yet implemented feature". We will call out that feature explicitly in release notes when it is implemented.
Also, FWIW, we are always open to merge requests. :)

Ok, I am looking forward to this SciVis feature! I think it would also make
a lot of sense in the VolumeRayCaster. At least we often want to show
transparent meshes in a volume, currently we use Depthpeeling and a
multipass Glsl ray caster in OpenGL. Would be great if this was also
supported on the CPU.
On Thursday, 24 March 2016, Jefferson Amstutz<EMAIL_ADDRESS>wrote:

Each renderer has its own view on handling material and geometric
properties, one of which being transparency. The OBJ renderer (depricated,
will eventually be removed) does support transparency, but it is known that
the AO and VolumeRayCaster renderers do not support it. The AO renderer
will not support transparency in favor of simplicity: it is intentionally a
small renderer to support a very short shading phase and for demonstration
of how to implement a renderer. Surface rendering support in the
VolumeRayCaster was added a while ago because we did not yet have a
renderer which did both volumes and surfaces together, where the focus was
rendering opaque geometry inside of a volume (a common situation in
visualization applications).
The new SciVis renderer will support transparency, which could be viewed
as either a "bug" or "not yet implemented feature". We will call out that
feature explicitly in release notes when it is implemented.
Also, FWIW, we are always open to merge requests. :)
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/ospray/OSPRay/issues/50#issuecomment-200876437

I updated to 0.10 today and tried it by setting "d" on the material to 0.2 for my meshes.
The first hit surface gets rendered (with correct alpha applied), but I don't see any geometry shining through / behind it.
(Using scivis renderer, "triangles" geometry, with shadows on/off).
Are there any other parameters/options I need to enable first?

Currently in the SciVis renderer:

No material:  info.d = dg.color.w;
With material: info.d = mat->d * get1f(mat->map_d, dg.st, 1.f);

Do you intentionally ignore the color.w when using materials?
In my scenario I have a triangle mesh with varying alpha values per vertex.  This works fine without material, but with a material (in order to have proper Phong shading) there is only a constant opacity for the whole mesh.


QTs: display aggregate values

As an admin I want to see aggregate statistics about the QTs in progress.

Ticket to aggregate the values: https://github.com/jac-uk/digital-platform/issues/346
We should show these values (number of candidates in the QT, number who have started, number who have finished) on the QT page whilst the QT is in progress.
These are individually clickable and take you to the pages in #762

These will be displayed on the dashboard page. See #765


Google app Engine

#@Google app Engine

#what is Google App Engine?

Google App Engine (GAE) is a platform-as-a-service product that provides web app developers and enterprises with access to Google's scalable hosting and tier 1 internet service.

[x] GAE requires that applications be written in Java or Python, store data in Google Bigtable and use the Google query language. Noncompliant applications require modification to use GAE.

[x] GAE provides more infrastructure than other scalable hosting services, such as Amazon Elastic Compute Cloud (EC2). GAE also eliminates some system administration and development tasks to make writing scalable applications easier.

[x] Google provides GAE free up to a certain amount of use for the following resources:

processor (CPU)
storage
application programming interface (API) calls
concurrent requests
Users exceeding the per-day or per-minute rates can pay for more of these resources.
google-cloud-eclipse-master.zip
google-cloud-eclipse-690dbcb6ed81a7a21da6ef247d7b3c4548bae5ee.zip

#How is GAE used?

GAE is a fully managed, serverless platform that is used to host, build and deploy web applications. Users can create a GAE account, set up a software development kit and write application source code. They can then use GAE to test and deploy the code in the cloud.

#One way to use GAE is building scalable mobile application back ends that adapt to workloads as needed. Application testing is another way to use GAE. Users can route traffic to different application versions to A/B test them and see which version performs better under various workloads.

Serverless platforms like Google App Engine are inherently scalable and allow for quick software deployments. See 10 common uses.
What are GAE's key features?
Key features of GAE include the following:
API selection. GAE has several built-in APIs, including the following five:
Blobstore for serving large data objects;
GAE Cloud Storage for storing data objects;
Page Speed Service for automatically speeding up webpage load times;
URL Fetch Service to issue HTTP requests and receive responses for efficiency and scaling; and
Memcache for a fully managed in-memory data store.
Managed infrastructure. Google manages the back-end infrastructure for users. This approach makes GAE a serverless platform and simplifies API management.
Several programming languages. GAE supports a number of languages, including GO, PHP, Java, Python, NodeJS, .NET and Ruby. It also supports custom runtimes.
Support for legacy runtimes. GAE supports legacy runtimes, which are versions of programming languages no longer maintained. Examples include Python 2.7, Java 8 and Go 1.11.
Application diagnostics. GAE lets users record data and run diagnostics on applications to gauge performance.
Security features. GAE enables users to define access policies with the GAE firewall and managed Secure Sockets Layer/Transport Layer Security certificates for free.
Traffic splitting. GAE lets users route requests to different application versions.
Versioning. Applications in Google App Engine function as a set of microservices that refer back to the main source code. Every time code is deployed to a service with the corresponding GAE configuration files, a version of that service is created.

#Google App Engine benefits and challenges
GAE extends the benefits of cloud computing to application development, but it also has drawbacks.

#Benefits of GAE
Ease of setup and use. GAE is fully managed, so users can write code without considering IT operations and back-end infrastructure. The built-in APIs enable users to build different types of applications. Access to application logs also facilitates debugging and monitoring in production.
Pay-per-use pricing. GAE's billing scheme only charges users daily for the resources they use. Users can monitor their resource usage and bills on a dashboard.
Scalability. Google App Engine automatically scales as workloads fluctuate, adding and removing application instances or application resources as needed.
Security. GAE supports the ability to specify a range of acceptable Internet Protocol (IP) addresses. Users can allowlist specific networks and services and blocklist specific IP addresses.
GAE challenges
Lack of control. Although a managed infrastructure has advantages, if a problem occurs in the back-end infrastructure, the user is dependent on Google to fix it.
Performance limits. CPU-intensive operations are slow and expensive to perform using GAE. This is because one physical server may be serving several separate, unrelated app engine users at once who need to share the CPU.
Limited access. Developers have limited, read-only access to the GAE filesystem.
Java limits. Java apps cannot create new threads and can only use a subset of the Java runtime environment standard edition classes.
#Examples of Google App Engine
One example of an application created in GAE is an Android messaging app that stores user log data. The app can store user messages and write event logs to the Firebase Realtime Database and use it to automatically synchronize data across devices.
Java servers in the GAE flexible environment connect to Firebase and receive notifications from it. Together, these components create a back-end streaming service to collect messaging log data.
GAE can be used in many different application contexts. Additional sample application code in GitHub includes the following:
a Python application that uses Blobstore;
a program that uses MySQL connections from GAE to Google Cloud Platform SQL; and
code that shows how to set up unit tests in GAE.
GAE lets users structure applications as microservices. Learn the difference between service-oriented architecture and microservices and the benefits of each.
Google Cloud Service Health.pdf


SpatialConvolution multithread fix

Use the same instance of iSize to fix https://github.com/soumith/cudnn.torch/issues/155

After fixing this for SpatialConvolution, I went ahead and made the the same changes to other modules. Are there any tests that I can run to make sure this did not break anything?


WIP List Work Item Types

Fixes #129 List WorkItemTypes
Currently this is nothing more than a few cleanups and copy+paste+adjust of the List code for workitems. So far I have just tested the plain listing of work item types without any query:
$ curl -s http://localhost:8080/api/workitemtypes | json_pp

yields:
[
   {
      "version" : 0,
      "name" : "system.issue",
      "parentPath" : "",
      "fields" : {
         "system.owner" : {
            "required" : true,
            "type" : {
               "kind" : "user"
            }
         },
         "system.state" : {
            "type" : {
               "kind" : "string"
            },
            "required" : true
         }
      }
   }
]

This is the model definition of a work item type:
// WorkItemType represents a work item type as it is stored in the db
type WorkItemType struct {
	// the unique name of this work item type.
	Name string `gorm:"primary_key"`
	// Version for optimistic concurrency control
	Version int
	// the id's of the parents, separated with some separator
	ParentPath string
	// definitions of the fields this work item type supports
	Fields FieldDefinitions `sql:"type:jsonb"`
}

This change is

@tsmaeder Do you think the parentPath shall be included in the default view of work item types? At first I've added just the parentPath attribute and included it in the default View() of the media types. When it did not show up at first I had to make the parentPath a required attribute (see dcc60f5). Only then it shows up.

@kwk making it required changes the type from *string to string when generated with goa. Which would render an empty attribute as empty string, as oppose to 'missing' if the pointer is nil (e.g. missing parent path).

@aslakknutsen thanks for the explanation. I guess then there's no need to make it a required attribute, right?

@kwk Agree. A Root would probably not have a parent.

Reviewed 2 of 6 files at r1, 1 of 1 files at r2.
Review status: 3 of 6 files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

workitemtype.go, line 49 [r2] (raw file):

// List runs the list action
func (c *WorkitemtypeController) List(ctx *app.ListWorkitemtypeContext) error {
	exp, err := query.Parse(ctx.Filter)

Not sure how much sense this makes right now.  What would we query for?

design/media_types.go, line 97 [r2] (raw file):

		Attribute("name")
		Attribute("fields")
		Attribute("parentPath")

I would not currently add the parent path to the work item type, just because I don't see a use case for it yet. If we decide to add it, it would seem natural to me that a root type had the parent path "/". The attribute would be required.

models/workitemtype_repository.go, line 108 [r2] (raw file):

// List returns work item types selected by the given criteria.Expression, starting with start (zero-based) and returning at most "limit" item types
func (r *GormWorkItemTypeRepository) List(ctx context.Context, criteria criteria.Expression, start *int, limit *int) ([]*app.WorkItemType, error) {
	where, parameters, err := Compile(criteria)

The compiler is really only written for expressions on work items right now. While it may work for other things, we would probably have specific compilers for different entities (with code reuse, of course).

Comments from Reviewable

Reviewed 3 of 6 files at r1.
Review status: all files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

Comments from Reviewable

Review status: all files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

workitemtype.go, line 49 [r2] (raw file):
Previously, tsmaeder (Thomas Mäder) wrote…
> Not sure how much sense this makes right now.  What would we query for?

We could query for name.

models/workitemtype_repository.go, line 108 [r2] (raw file):
Previously, tsmaeder (Thomas Mäder) wrote…
> The compiler is really only written for expressions on work items right now. While it may work for other things, we would probably have specific compilers for different entities (with code reuse, of course).

Okay, I've disabled this for now. As I've said the comment on this PR it was mainly copy and paste for now.

Comments from Reviewable

Review status: 1 of 25 files reviewed at latest revision, 2 unresolved discussions, some commit checks failed.

workitemtype.go, line 49 [r2] (raw file):
Previously, kwk (Konrad Kleine) wrote…
> We could query for name.

But the name is the unique id as it stands. That would be covered by /workitemtype/, no?

Comments from Reviewable

Review status: 1 of 25 files reviewed at latest revision, 2 unresolved discussions, some commit checks failed.

workitemtype.go, line 49 [r2] (raw file):
Previously, tsmaeder (Thomas Mäder) wrote…
> But the name is the unique id as it stands. That would be covered by /workitemtype/, no?

Yes. `Name` has the appropriate gorm attribute (https://github.com/almighty/almighty-core/pull/150/files#diff-644ea6da83e5134ea7623bfef6287786R6)
type WorkItemType struct {
    // the unique name of this work item type.
    Name string `gorm:"primary_key"`
     //...
}

Comments from Reviewable

Closed in favor of #149 where the commits from this PR are integrated


ASS101 - Stair decomposition

Code found on my local machine that could serve as a best-practice
Changed to draft due to being not properly tested yet

I'm not immediately falling in love with the rule code ASS101, but maybe I'm being too conservative.

I expect @Ghesselink naming convention script to flag it. And not because it's conservative too...but because the feature title, i.e. ASS101, is inconsistent with the file name, i.e. IBP001 😄

I changed it too IPB (Industry Best Practice) for the same reason 😛


Drag & Drop plugin

Currently the core runs runs plugins sequentially and then everything is done almost instantly. However we should be waiting for the drag&drop event to happen and for some function to return before the core proceeds with uploads and results.

Yes, all the runs must be converted to async you mean?

Yes, that is the short version of what I meant :) I’m trying to wrap my head around how it should be done: should all plugins return a promise (and then Promise.all(pluginPromiseArray).then(done)) or should this be event based.

I was thinking of async.series for that - but also because I dont know promises that well.
I think events might not be needed, but could be added as extra if we change our minds / plugins turn out to need tighter cooperation
Sent from mobile, pardon the brevity.

On 25 nov. 2015, at 08:33, Artur Paikin<EMAIL_ADDRESS>wrote:
Yes, that is the short version of what I meant :) I’m trying to wrap my head around how it should be done: should all plugins return a promise (and then Promise.all(pluginPromiseArray).then(done)) or should this be event based.
—
Reply to this email directly or view it on GitHub.

So how do we envision this working?

The core is run, it calls multiple plugins.
They all run in parallel: Dropbox awaits input, Instagram awaits input, Drag & Drop awaits input.
When one of them finally gets the input, what should it do? Call some method from the core and pass the input (files, urls) to it or like it does now — just return the input to the core (but if I’m correct, right now it can only return once, and then if another input happens the core does not care anymore).
Then what happens? The core should wait for some action from the user like “ok, done selecting files here, upload now” or start uploading immediately, once it’s got some input and when the new comes — upload again. This could probably be a setting.

I think core will call:
methods = [];

methods.push async.value(42) // <-- this is a dummy so we can run waterfall

// forEach plugins:
  // save all the plugin.run functions in one big array
  methods.push plugin.run.bind(plugin, opts, callback)

// run the collected run methods after eachother. each last output files, being the input files for the next
// the moment the last plugin finished (or as soon as any plugin passes `err`) we finish with `allPluginsDone`.

async.waterfall methods, this.allPluginsDone

upon run, the plugin will save the callback in its own this._doneCallback for later use. We don't call it just yet - meaning the waterfall is 'paused'
Whenever the current plugin completes (user interaction may be required, upload may need to finish, whatever), we call the saved this._doneCallback(err, files). This lets the next plugin in the waterfall continue, using the our files as input.

Ok, but doesn’t this mean that Dropbox won’t be able to accept input before something happened in Drag & Drop?

I guess it does, and I guess that's a problem too..

Would this flow make sense:

waterfall for types
parallel inside types

?

I think it may be helpful to write out some use cases for how a user may interact with the client to get a better idea of how the plugins can work.  Here is a little diagram of a use case I'm thinking over right now:

Consider the situation where the user has multiple inputs where they could possibly add a file from Dropbox, for instance.  How are we going to keep track of each input?

As long as they are objects, holding urls, blobs, or pointers to blobs - we should be able to keep them in an array in core between types right?

Two settings — wait for some event before uploading or upload right away on every input:
if (waitForUserToClickUpload) {
  core.on('readyForUpload', function() {
    core.upload(allFilesWeCollected);
  });
} else {
  core.upload(allFilesWeCollected);
}

My understanding that waterfall won’t work here and we need to be able for plugins to run independently in parallel, and call each other or core when they need to and then continue running. More like: upload plugin registers itself in core and says that it can handle uploads. So then we wait for input in Dropbox or Drag&Drop plugin and call core.upload, which knows what plugin to use for that.
@kvz, yes, makes sense, but could we start by just letting anarchy rule maybe? Might be easier to prototype.

Not sure, I think it makes sense if select plugins can run in parallel, but once they are all done, I think it also makes sense if they pass their collection onto the next type - modify. Once all the modifications are done - pass all to upload. Simplified view.
If anything/everything happens at the same time without clear orchestration/order - i'm a bit worried that the user will have to do a lot of back & forth context switching when some event says there needs to be modifcation / and the next says lets have the user pick a file / etc.

@kvz, yeah thats what i was curious about, whether the core or each plugin would hold reference to selected urls/blobs.

But when will “all done” happen?
In my mind it works like this:

Plugins run all the time, waiting for input. Input received --> calls core.processInput(input)
Core then takes that input and iterates over “modification plugins array”, launches waterfall.
Then with modified results iterates over “upload plugins array”.

Maybe that is actually what you are proposing :)

But when will “all done” happen?

This is handled by the async waterfall & parallel. In essence, when all plugins have called their stored _. _doneCallback() (plugins decide when that is), then async knows everything is done. And we can give control back to the user, or navigate away to some page.

If there's no more mindbending feedback - I would propose fleshing it out with a waterfall of parallels (or the Promise equivalent) - and get some hands on experience. We can add events as if we really-really-really need them (?)

@kvz will you take a look, please? Turns out, not that easy — running parallel tasks in waterfall. Failed to achieve this in a sane way with bare promises, switched to async — still not there yet.

im still a little confused about the concept of the plugins running in parallel/waterfall.  which part of the flow does that pertain to?  if you wouldnt mind walking me through the app and plugin flow, i think itd clear it up for me

will you take a look, please

In a waterfall, all method signatures must be equal. So all will be passed a file. Since the first step in the chain doesn't have that, but is still part of the chain, async provides a dummy helper: async.value([]). This could/should be the first item in the waterfall. So that it calls the next method with an empty files argument.
Not sure if adding that fixes all the problems, also not sure what problems you ran into exactly? not in a position to run tests at this moment but we can take a stab later tomorrow.

if you wouldn't mind walking me through the app and plugin flow

We're thinking about when to call what plugin to install it. I think it makes sense that there is an order of steps as you said Harry: e.g. select - > modify -> upload (and maybe more). These correspond to plugin types. It seems that we first want to 'wait' on select to complete. But any plugin that is of type selecter needs to be activated in this step (hence parallel). When all selection is completed, we move to modify, passing all the resulting files onto it (hence waterfall). This happens again when all (or nothing) is modified, passing their resulting files onto upload.

The selection plugins can just be initialized via DragDropPlugin.connect('#target'), which will also set up event listeners to add files inside an array within the dragdrop plugin, perhaps?  The selector plugins will all use an event based system until something like uppy.submit() is called, so they can operate in parallel.
I think we may want to have a discussion to better define the modify/upload steps of the process.  For example, modifcation/uploading is straight forward with local files/webcam/drag drop since the file just needs to be sent via a POST to the server, but with third party integrations, the server is going to need to fetch the file from the third party API via a GET request.  How are we going to modify files in that situation?
We could possibly require the user to fetch the file, then post it to the server, but that doesn't sound convenient for large files.

In short: I'd like to keep the surface where people/core imperatively interacts with plugins as small as possible.
I'd like plugins to not interact with other plugins directly.
Also I'd like to confine plugins to their 'stage'. I think having the waterfall with a step per stage helps.
We can still sprinkle events on top if this if needed. But I'd like to avoid that being the main means of passing files around to avoid a Wild West and provide some structure.
Sent from mobile, pardon the brevity.

On 27 nov. 2015, at 01:04, Harry Hedger<EMAIL_ADDRESS>wrote:
The selection plugins can just be initialized via DragDropPlugin.connect('#target'), which will also set up event listeners to add files inside an array within the dragdrop plugin, perhaps? The selector plugins will all use an event based system until something like uppy.submit() is called, so they can operate in parallel.
I think we may want to have a discussion to better define the modify/upload steps of the process. For example, modifcation/uploading is straight forward with local files/webcam/drag drop since the file just needs to be sent via a POST to the server, but with third party integrations, the server is going to need to fetch the file from the third party API via a GET request. How are we going to modify files in that situation?
We could possibly require the user to fetch the file, then post it to the server, but that doesn't sound convenient for large files.
—
Reply to this email directly or view it on GitHub.

Very nice!


Update Version of egui and in cargo.toml

Hi there,
I noticed the current version of egui in the Cargo.toml file is out of date. The current version of egui is 0.22.0.
Can you please update to the latest versions to take advantage of the latest features and bug fixes?

I think egui-miniquad needs to be updated first

Done in https://github.com/optozorax/egui-macroquad/pull/39, but egui-miniquad must be updated first :(
Or @caspark should publish their fork on crates.io, then there will be new version.


ci: notify slack on scan failures

PR Checklist

[ ] Unit Tests have been added for new changes
[ ] API tests have been updated if applicable
[ ] All commented code has been removed
[ ] If you've added a dependency, you've ensured license is compatible with Apache 2.0 and clearly outlined the added dependency.

What are you changing?
Notifies the provided slack channel on internal scan failures
Anything the reviewer should know when reviewing this PR?
If the there are associated PRs in other repositories, please link them here (i.e. open-amt-cloud-toolkit/repo#365 )

Codecov Report

Merging #426 (beab9ee) into main (5db2b6c) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #426   +/-   ##
=======================================
  Coverage   24.94%   24.94%
=======================================
  Files          69       69
  Lines        3757     3757
  Branches      804      804
=======================================
  Hits          937      937
  Misses       2435     2435
  Partials      385      385

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5db2b6c...beab9ee. Read the comment docs.