Devices cannot be added to 1.25.1-1.

Description of problem:
Devices became unresponsive so I removed them. I would get errors indicating the state could not be determined. This happened 3 times in 1 week, each time I removed all of the devices and re-added them. Now I have a new, re-installed Z2M and I cannot add devices at all. When I turn on pairing, I don't get any logs that the devices have not connected. I am attempting to add Sonoff S31 Lites.
Zigbee2mqtt add-on version (if edge, please report commit hash):
1.25.1-1

Your entire configuration from the frontend (with sensitive fields redacted):
devices:
  - devices.yaml
groups:
  - groups.yaml
homeassistant: true
frontend:
  port: 8099
mqtt:
  base_topic: zigbee2mqtt
  user: addons
  password:
  server: mqtt://core-mosquitto:1883
  keepalive: 30
  reject_unauthorized: true
  version: 4
advanced:
  log_level: warn
  log_syslog:
    app_name: Zigbee2MQTT
    eol: /n
    host: localhost
    localhost: localhost
    path: /dev/log
    pid: process.pid
    port: 123
    protocol: tcp4
    type: '5424'
  channel: 25
  network_key:
permit_join: true
serial:
  port: >-
    /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2441585-if00
  adapter: deconz

Running platform (details from Suypervisor > System)
// Example
Home Assistant Core 2022.5.5
Home Assistant Supervisor 2022.05.3
Home Assistant OS 8.1
Kernel version 5.15.32-v8
Agent version 1.2.1

Your logs from Home Assistant Supervisor
debug 2022-05-26 23:51:24: Loaded state from file /config/zigbee2mqtt/state.json
info  2022-05-26 23:51:24: Logging to console and directory: '/config/zigbee2mqtt/log/2022-05-26.23-51-22' filename: log.txt
debug 2022-05-26 23:51:24: Removing old log directory '/config/zigbee2mqtt/log/2022-05-26.22-07-45'
info  2022-05-26 23:51:24: Starting Zigbee2MQTT version 1.25.1 (commit #unknown)
info  2022-05-26 23:51:24: Starting zigbee-herdsman (0.14.27)
debug 2022-05-26 23:51:24: Using zigbee-herdsman with settings: '{"adapter":{"concurrent":null,"delay":null,"disableLED":false},"backupPath":"/config/zigbee2mqtt/coordinator_backup.json","databaseBackupPath":"/config/zigbee2mqtt/database.db.backup","databasePath":"/config/zigbee2mqtt/database.db","network":{"channelList":[25],"extendedPanID":[221,221,221,221,221,221,221,221],"networkKey":"HIDDEN","panID":6754},"serialPort":{"adapter":"deconz","path":"/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2441585-if00"}}'
info  2022-05-26 23:51:25: zigbee-herdsman started (resumed)
info  2022-05-26 23:51:25: Coordinator firmware version: '{"meta":{"maintrel":0,"majorrel":38,"minorrel":120,"product":0,"revision":"0x26780700","transportrev":0},"type":"ConBee2/RaspBee2"}'
debug 2022-05-26 23:51:25: Zigbee network parameters: {"channel":25,"extendedPanID":"0xdddddddddddddddd","panID":6754}
info  2022-05-26 23:51:25: Currently 0 devices are joined:
warn  2022-05-26 23:51:25: `permit_join` set to  `true` in configuration.yaml.
warn  2022-05-26 23:51:25: Allowing new devices to join.
warn  2022-05-26 23:51:25: Set `permit_join` to `false` once you joined all devices.
info  2022-05-26 23:51:25: Zigbee: allowing new devices to join.
info  2022-05-26 23:51:25: Connecting to MQTT server at mqtt://core-mosquitto:1883
debug 2022-05-26 23:51:25: Using MQTT keepalive: 30
debug 2022-05-26 23:51:25: Using MQTT login with username: addons
info  2022-05-26 23:51:25: Connected to MQTT server
info  2022-05-26 23:51:25: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/bridge/info' with data '{"commit":"unknown","config":{"advanced":{"adapter_concurrent":null,"adapter_delay":null,"availability_blacklist":[],"availability_blocklist":[],"availability_passlist":[],"availability_whitelist":[],"cache_state":true,"cache_state_persistent":true,"cache_state_send_on_startup":true,"channel":25,"elapsed":false,"ext_pan_id":[221,221,221,221,221,221,221,221],"last_seen":"disable","legacy_api":true,"legacy_availability_payload":true,"log_directory":"/config/zigbee2mqtt/log/%TIMESTAMP%","log_file":"log.txt","log_level":"debug","log_output":["console","file"],"log_rotation":true,"log_symlink_current":false,"log_syslog":{"app_name":"Zigbee2MQTT","eol":"/n","host":"localhost","localhost":"localhost","path":"/dev/log","pid":"process.pid","port":123,"protocol":"tcp4","type":"5424"},"output":"json","pan_id":6754,"report":false,"soft_reset_timeout":0,"timestamp_format":"YYYY-MM-DD HH:mm:ss"},"blocklist":[],"device_options":{},"devices":{},"external_converters":[],"frontend":{"host":"<IP_ADDRESS>","port":8099},"groups":{},"homeassistant":{"discovery_topic":"homeassistant","legacy_entity_attributes":true,"legacy_triggers":true,"status_topic":"hass/status"},"map_options":{"graphviz":{"colors":{"fill":{"coordinator":"#e04e5d","enddevice":"#fff8ce","router":"#4ea3e0"},"font":{"coordinator":"#ffffff","enddevice":"#000000","router":"#ffffff"},"line":{"active":"#009900","inactive":"#994444"}}}},"mqtt":{"base_topic":"zigbee2mqtt","force_disable_retain":false,"include_device_information":false,"keepalive":30,"reject_unauthorized":true,"server":"mqtt://core-mosquitto:1883","user":"addons","version":4},"ota":{"disable_automatic_update_check":false,"update_check_interval":1440},"passlist":[],"permit_join":true,"serial":{"adapter":"deconz","disable_led":false,"port":"/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2441585-if00"}},"config_schema":{"definitions":{"device":{"properties":{"debounce":{"description":"Debounces messages of this device","title":"Debounce","type":"number"},"debounce_ignore":{"description":"Protects unique payload values of specified payload properties from overriding within debounce time","examples":["action"],"items":{"type":"string"},"title":"Ignore debounce","type":"array"},"filtered_attributes":{"description":"Filter attributes from publish payload.","examples":["temperature","battery","action"],"items":{"type":"string"},"title":"Filtered publish attributes","type":"array"},"filtered_optimistic":{"description":"Filter attributes from optimistic publish payload when calling /set. (This has no effect if optimistic is set to false).","examples":["color_mode","color_temp","color"],"items":{"type":"string"},"title":"Filtered optimistic attributes","type":"array"},"friendly_name":{"description":"Used in the MQTT topic of a device. By default this is the device ID","readOnly":true,"title":"Friendly name","type":"string"},"homeassistant":{"properties":{"name":{"description":"Name of the device in Home Assistant","title":"Home Assistant name","type":"string"}},"title":"Home Assistant","type":"object"},"icon":{"description":"The user-defined device icon for the frontend. It can be a link to an image (not a path to a file) or base64 encoded data URL like: image/svg+xml;base64,PHN2ZyB3aW....R0aD","title":"Icon","type":"string"},"optimistic":{"default":true,"description":"Publish optimistic state after set","title":"Optimistic","type":"boolean"},"qos":{"description":"QoS level for MQTT messages of this device","title":"QoS","type":"number"},"retain":{"description":"Retain MQTT messages of this device","title":"Retain","type":"boolean"},"retention":{"description":"Sets the MQTT Message Expiry in seconds, Make sure to set mqtt.version to 5","title":"Retention","type":"number"}},"required":["friendly_name"],"type":"object"},"group":{"properties":{"devices":{"items":{"type":"string"},"type":"array"},"filtered_attributes":{"items":{"type":"string"},"type":"array"},"friendly_name":{"type":"string"},"optimistic":{"type":"boolean"},"qos":{"type":"number"},"retain":{"type":"boolean"}},"required":["friendly_name"],"type":"object"}},"properties":{"advanced":{"properties":{"adapter_concurrent":{"description":"Adapter concurrency (e.g. 2 for CC2531 or 16 for CC26X2R1) (default: null, uses recommended value)","requiresRestart":true,"title":"Adapter concurrency","type":["number","null"]},"adapter_delay":{"description":"Adapter delay","requiresRestart":true,"title":"Adapter delay","type":["number","null"]},"cache_state":{"default":true,"description":"MQTT message payload will contain all attributes, not only changed ones. Has to be true when integrating via Home Assistant","title":"Cache state","type":"boolean"},"cache_state_persistent":{"default":true,"description":"Persist cached state, only used when cache_state: true","title":"Persist cache state","type":"boolean"},"cache_state_send_on_startup":{"default":true,"description":"Send cached state on startup, only used when cache_state: true","title":"Send cached state on startup","type":"boolean"},"channel":{"default":11,"description":"Zigbee channel, changing requires repairing all devices! (Note: use a ZLL channel: 11, 15, 20, or 25 to avoid Problems)","examples":[15,20,25],"maximum":26,"minimum":11,"requiresRestart":true,"title":"ZigBee channel","type":"number"},"elapsed":{"default":false,"description":"Add an elapsed attribute to MQTT messages, contains milliseconds since the previous msg","title":"Elapsed","type":"boolean"},"ext_pan_id":{"description":"Zigbee extended pan ID, changing requires repairing all devices!","items":{"type":"number"},"requiresRestart":true,"title":"Ext Pan ID","type":"array"},"last_seen":{"default":"disable","description":"Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message","enum":["disable","ISO_8601","ISO_8601_local","epoch"],"title":"Last seen","type":"string"},"legacy_api":{"default":true,"description":"Disables the legacy api (false = disable)","requiresRestart":true,"title":"Legacy API","type":"boolean"},"legacy_availability_payload":{"default":true,"description":"Payload to be used for device availabilty and bridge/state topics. true = text, false = JSON","requiresRestart":true,"title":"Legacy availability payload","type":"boolean"},"log_directory":{"description":"Location of log directory","examples":["data/log/%TIMESTAMP%"],"requiresRestart":true,"title":"Log directory","type":"string"},"log_file":{"default":"log.txt","description":"Log file name, can also contain timestamp","examples":["zigbee2mqtt_%TIMESTAMP%.log"],"requiresRestart":true,"title":"Log file","type":"string"},"log_level":{"default":"info","description":"Logging level","enum":["info","warn","error","debug"],"title":"Log level","type":"string"},"log_output":{"description":"Output location of the log, leave empty to suppress logging","items":{"enum":["console","file","syslog"],"type":"string"},"requiresRestart":true,"title":"Log output","type":"array"},"log_rotation":{"default":true,"description":"Log rotation","requiresRestart":true,"title":"Log rotation","type":"boolean"},"log_symlink_current":{"default":false,"description":"Create symlink to current logs in the log directory","requiresRestart":true,"title":"Log symlink current","type":"boolean"},"log_syslog":{"properties":{"app_name":{"default":"Zigbee2MQTT","description":"The name of the application (Default: Zigbee2MQTT).","title":"Localhost","type":"string"},"eol":{"default":"/n","description":"The end of line character to be added to the end of the message (Default: Message without modifications).","title":"eol","type":"string"},"host":{"default":"localhost","description":"The host running syslogd, defaults to localhost.","title":"Host","type":"string"},"localhost":{"default":"localhost","description":"Host to indicate that log messages are coming from (Default: localhost).","title":"Localhost","type":"string"},"path":{"default":"/dev/log","description":"The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).","examples":["/var/run/syslog"],"title":"Path","type":"string"},"pid":{"default":"process.pid","description":"PID of the process that log messages are coming from (Default process.pid).","title":"PID","type":"string"},"port":{"default":123,"description":"The port on the host that syslog is running on, defaults to syslogd's default port.","title":"Port","type":"number"},"protocol":{"default":"tcp4","description":"The network protocol to log over (e.g. tcp4, udp4, tls4, unix, unix-connect, etc).","examples":["udp4","tls4","unix","unix-connect"],"title":"Protocol","type":"string"},"type":{"default":"5424","description":"The type of the syslog protocol to use (Default: BSD, also valid: 5424).","title":"Type","type":"string"}},"title":"syslog","type":"object"},"network_key":{"description":"Network encryption key, changing requires repairing all devices!","oneOf":[{"title":"Network key(string)","type":"string"},{"items":{"type":"number"},"title":"Network key(array)","type":"array"}],"requiresRestart":true,"title":"Network key"},"output":{"description":"Examples when 'state' of a device is published json: topic: 'zigbee2mqtt/my_bulb' payload '{\"state\": \"ON\"}' attribute: topic 'zigbee2mqtt/my_bulb/state' payload 'ON' attribute_and_json: both json and attribute (see above)","enum":["attribute_and_json","attribute","json"],"title":"MQTT output type","type":"string"},"pan_id":{"description":"ZigBee pan ID, changing requires repairing all devices!","oneOf":[{"title":"Pan ID (string)","type":"string"},{"title":"Pan ID (number)","type":"number"}],"requiresRestart":true,"title":"Pan ID"},"timestamp_format":{"description":"Log timestamp format","examples":["YYYY-MM-DD HH:mm:ss"],"requiresRestart":true,"title":"Timestamp format","type":"string"},"transmit_power":{"description":"Transmit power of adapter, only available for Z-Stack (CC253*/CC2652/CC1352) adapters, CC2652 = 5dbm, CC1352 max is = 20dbm (5dbm default)","requiresRestart":true,"title":"Transmit power","type":["number","null"]}},"title":"Advanced","type":"object"},"availability":{"description":"Checks whether devices are online/offline","oneOf":[{"title":"Availability (simple)","type":"boolean"},{"properties":{"active":{"description":"Options for active devices (routers/mains powered)","properties":{"timeout":{"default":10,"description":"Time after which an active device will be marked as offline in minutes","requiresRestart":true,"title":"Timeout","type":"number"}},"requiresRestart":true,"title":"Active","type":"object"},"passive":{"description":"Options for passive devices (mostly battery powered)","properties":{"timeout":{"default":1500,"description":"Time after which an passive device will be marked as offline in minutes","requiresRestart":true,"title":"Timeout","type":"number"}},"requiresRestart":true,"title":"Passive","type":"object"}},"title":"Availability (advanced)","type":"object"}],"requiresRestart":true,"title":"Availability"},"ban":{"items":{"type":"string"},"readOnly":true,"requiresRestart":true,"title":"Ban (deprecated, use blocklist)","type":"array"},"blocklist":{"description":"Block devices from the network (by ieeeAddr)","items":{"type":"string"},"requiresRestart":true,"title":"Blocklist","type":"array"},"device_options":{"title":"Options that are applied to all devices","type":"object"},"devices":{"patternProperties":{"^.*$":{"$ref":"#/definitions/device"}},"propertyNames":{"pattern":"^0x[\\d\\w]{16}$"},"type":"object"},"external_converters":{"description":"You can define external converters to e.g. add support for a DiY device","examples":["DIYRuZ_FreePad.js"],"items":{"type":"string"},"requiresRestart":true,"title":"External converters","type":"array"},"frontend":{"oneOf":[{"title":"Frontend (simple)","type":"boolean"},{"properties":{"auth_token":{"description":"Enables authentication, disabled by default","requiresRestart":true,"title":"Auth token","type":["string","null"]},"host":{"default":"<IP_ADDRESS>","description":"Frontend binding host","requiresRestart":true,"title":"Bind host","type":"string"},"port":{"default":8080,"description":"Frontend binding port","requiresRestart":true,"title":"Port","type":"number"},"url":{"description":"URL on which the frontend can be reached, currently only used for the Home Assistant device configuration page","requiresRestart":true,"title":"URL","type":["string","null"]}},"title":"Frontend (advanced)","type":"object"}],"requiresRestart":true,"title":"Frontend"},"groups":{"patternProperties":{"^.*$":{"$ref":"#/definitions/group"}},"propertyNames":{"pattern":"^[\\w].*$"},"type":"object"},"homeassistant":{"default":false,"description":"Home Assistant integration (MQTT discovery)","oneOf":[{"title":"Home Assistant (simple)","type":"boolean"},{"properties":{"discovery_topic":{"description":"Home Assistant discovery topic","examples":["homeassistant"],"requiresRestart":true,"title":"Homeassistant discovery topic","type":"string"},"legacy_entity_attributes":{"default":true,"description":"Home Assistant legacy entity attributes, when enabled Zigbee2MQTT will add state attributes to each entity, additional to the separate entities and devices it already creates","title":"Home Assistant legacy entity attributes","type":"boolean"},"legacy_triggers":{"default":true,"description":"Home Assistant legacy triggers, when enabled Zigbee2mqt will send an empty 'action' or 'click' after one has been send. A 'sensor_action' and 'sensor_click' will be discoverd","title":"Home Assistant legacy triggers","type":"boolean"},"status_topic":{"description":"Home Assistant status topic","examples":["homeassistant/status"],"requiresRestart":true,"title":"Home Assistant status topic","type":"string"}},"title":"Home Assistant (advanced)","type":"object"}],"requiresRestart":true,"title":"Home Assistant integration"},"map_options":{"properties":{"graphviz":{"properties":{"colors":{"properties":{"fill":{"properties":{"coordinator":{"type":"string"},"enddevice":{"type":"string"},"router":{"type":"string"}},"type":"object"},"font":{"properties":{"coordinator":{"type":"string"},"enddevice":{"type":"string"},"router":{"type":"string"}},"type":"object"},"line":{"properties":{"active":{"type":"string"},"inactive":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"}},"title":"Networkmap","type":"object"},"mqtt":{"properties":{"base_topic":{"default":"zigbee2mqtt","description":"MQTT base topic for Zigbee2MQTT MQTT messages","examples":["zigbee2mqtt"],"requiresRestart":true,"title":"Base topic","type":"string"},"ca":{"description":"Absolute path to SSL/TLS certificate of CA used to sign server and client certificates","examples":["/etc/ssl/mqtt-ca.crt"],"requiresRestart":true,"title":"Certificate authority","type":"string"},"cert":{"description":"Absolute path to SSL/TLS certificate for client-authentication","examples":["/etc/ssl/mqtt-client.crt"],"requiresRestart":true,"title":"SSL/TLS certificate","type":"string"},"client_id":{"description":"MQTT client ID","examples":["MY_CLIENT_ID"],"requiresRestart":true,"title":"Client ID","type":"string"},"force_disable_retain":{"default":false,"description":"Disable retain for all send messages. ONLY enable if you MQTT broker doesn't support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform). Enabling will break the Home Assistant integration","requiresRestart":true,"title":"Force disable retain","type":"boolean"},"include_device_information":{"default":false,"description":"Include device information to mqtt messages","title":"Include device information","type":"boolean"},"keepalive":{"default":60,"description":"MQTT keepalive in second","requiresRestart":true,"title":"Keepalive","type":"number"},"key":{"description":"Absolute path to SSL/TLS key for client-authentication","examples":["/etc/ssl/mqtt-client.key"],"requiresRestart":true,"title":"SSL/TLS key","type":"string"},"password":{"description":"MQTT server authentication password","examples":["ILOVEPELMENI"],"requiresRestart":true,"title":"Password","type":"string"},"reject_unauthorized":{"default":true,"description":"Disable self-signed SSL certificate","requiresRestart":true,"title":"Reject unauthorized","type":"boolean"},"server":{"description":"MQTT server URL (use mqtts:// for SSL/TLS connection)","examples":["mqtt://localhost:1883"],"requiresRestart":true,"title":"MQTT server","type":"string"},"user":{"description":"MQTT server authentication user","examples":["johnnysilverhand"],"requiresRestart":true,"title":"User","type":"string"},"version":{"default":4,"description":"MQTT protocol version","examples":[5],"requiresRestart":true,"title":"Version","type":["number","null"]}},"required":["server"],"title":"MQTT","type":"object"},"ota":{"properties":{"disable_automatic_update_check":{"default":false,"description":"Zigbee devices may request a firmware update, and do so frequently, causing Zigbee2MQTT to reach out to third party servers. If you disable these device initiated checks, you can still initiate a firmware update check manually.","title":"Disable automatic update check","type":"boolean"},"ikea_ota_use_test_url":{"default":false,"description":"Use IKEA TRADFRI OTA test server, see OTA updates documentation","requiresRestart":true,"title":"IKEA TRADFRI OTA use test url","type":"boolean"},"update_check_interval":{"default":1440,"description":"Your device may request a check for a new firmware update. This value determines how frequently third party servers may actually be contacted to look for firmware updates. The value is set in minutes, and the default is 1 day.","title":"Update check interval","type":"number"},"zigbee_ota_override_index_location":{"description":"Location of override OTA index file","examples":["index.json"],"requiresRestart":true,"title":"OTA index override file name","type":"string"}},"title":"OTA updates","type":"object"},"passlist":{"description":"Allow only certain devices to join the network (by ieeeAddr). Note that all devices not on the passlist will be removed from the network!","items":{"type":"string"},"requiresRestart":true,"title":"Passlist","type":"array"},"permit_join":{"default":false,"description":"Allow new devices to join (re-applied at restart)","title":"Permit join","type":"boolean"},"serial":{"properties":{"adapter":{"default":"auto","description":"Adapter type, not needed unless you are experiencing problems","enum":["deconz","zstack","zigate","ezsp","auto"],"requiresRestart":true,"title":"Adapter","type":["string"]},"baudrate":{"description":"Baud rate speed for serial port, this can be anything firmware support but default is 115200 for Z-Stack and EZSP, 38400 for Deconz, however note that some EZSP firmware need 57600","examples":[38400,57600,115200],"requiresRestart":true,"title":"Baudrate","type":"number"},"disable_led":{"default":false,"description":"Disable LED of the adapter if supported","requiresRestart":true,"title":"Disable led","type":"boolean"},"port":{"description":"Location of the adapter. To autodetect the port, set null","examples":["/dev/ttyACM0"],"requiresRestart":true,"title":"Port","type":["string","null"]},"rtscts":{"description":"RTS / CTS Hardware Flow Control for serial port","requiresRestart":true,"title":"RTS / CTS","type":"boolean"}},"title":"Serial","type":"object"},"whitelist":{"items":{"type":"string"},"readOnly":true,"requiresRestart":true,"title":"Whitelist (deprecated, use passlist)","type":"array"}},"required":["mqtt"],"type":"object"},"coordinator":{"ieee_address":"0x00212effff075da0","meta":{"maintrel":0,"majorrel":38,"minorrel":120,"product":0,"revision":"0x26780700","transportrev":0},"type":"ConBee2/RaspBee2"},"log_level":"debug","network":{"channel":25,"extended_pan_id":"0xdddddddddddddddd","pan_id":6754},"permit_join":true,"restart_required":false,"version":"1.25.1"}'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/bridge/devices' with data '[{"definition":null,"endpoints":{"1":{"bindings":[],"clusters":{"input":["genBasic","genTime","genOta"],"output":["genPowerCfg","genPollCtrl","ssIasZone"]},"configured_reportings":[],"scenes":[]},"242":{"bindings":[],"clusters":{"input":[],"output":["greenPower"]},"configured_reportings":[],"scenes":[]}},"friendly_name":"Coordinator","ieee_address":"0x00212effff075da0","interview_completed":true,"interviewing":false,"network_address":0,"supported":false,"type":"Coordinator"}]'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/bridge/groups' with data '[]'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/bridge/extensions' with data '[]'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/bridge/config' with data '{"commit":"unknown","coordinator":{"meta":{"maintrel":0,"majorrel":38,"minorrel":120,"product":0,"revision":"0x26780700","transportrev":0},"type":"ConBee2/RaspBee2"},"log_level":"warn","network":{"channel":25,"extendedPanID":"0xdddddddddddddddd","panID":6754},"permit_join":true,"version":"1.25.1"}'
debug 2022-05-26 23:51:25: Received MQTT message on 'zigbee2mqtt/1/availability' with data 'online'
info  2022-05-26 23:51:25: Started frontend on port <IP_ADDRESS>:8099
info  2022-05-26 23:51:25: MQTT publish: topic 'zigbee2mqtt/bridge/config', payload '{"commit":"unknown","coordinator":{"meta":{"maintrel":0,"majorrel":38,"minorrel":120,"product":0,"revision":"0x26780700","transportrev":0},"type":"ConBee2/RaspBee2"},"log_level":"debug","network":{"channel":25,"extendedPanID":"0xdddddddddddddddd","panID":6754},"permit_join":true,"version":"1.25.1"}'
info  2022-05-26 23:51:25: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online'

I got to the bottom of this. I had my channel defined as 25, which was apparently not supported or just didn't work. When I changed my channel to 20, everything connected immediately. I'm not sure why everything became responsive earlier, but that's a different problem.


README.md Support section link issue

Hey @jrg94, I noticed there's a link to "Use The Renegade Coder Shop" in the Support section of the README.md file:

When clicking the link it takes you to the home page of https://therenegadecoder.com, and on the home page is a button with a link to the "shop" again, but none of these links actually go to a store.

Yeah, that's my bad. I just removed the store from the website, and I haven't gone through the process of cleaning those sorts of things up.

I just removed the link from the README and I updated the links on the homepage. I have to go through and polish up the 5 Ways to Support The Renegade Coder article.

I figured it was a simple mistake, glad to hear it's been mostly resolved 😅

Yup! I was going through a phase of simplifying the site and decided it didn't make sense for me to maintain a store anymore. I ended up removing the store, but there were some dead links floating around.
I think everything is resolved now. 🙏

Looks like I perhaps missed the biggest shop link on the homepage. Whoops!


Va Beach - Add candidates to database

Mayor

George Furman III
Richard W. "RK" Kowalewitch
W. D. "Will" Sessoms, Jr.
A. M. "Don" Weeks

City Council - At Large

Dane U. Blythe
Courtney L. LaLonde
Rosemary A. Wilson
Pam D. Witham

City Council - Centerville

Robert M. "Bobby" Dyer

City Council - Kempsville

Jessica P. Abbott
Amelia N. Ross-Hammond

Since I took the survey in production this must be done.


CLI updates to latest tag (pioneer-3)

Updated the cli commands in the tutorial to reflect the current pioneer build + F&F testnet.
Added a tag\pioneer-# to indicate that the numbered versions are to be used.
Exercise-2.md:

Added tag pioneer-3 (up from 2)
Moved the testnet-magic notification further up to centralize it for all commands.
Added full build-raw command to better align with the sign and submit commands. (this could be reversed but then the sign and submit should also be abbreviated and users should check the instruction in the tx.md tutorial.)

Has been implemented by another PR by now.


Roll Flutter Engine from 1376288f5c2a to da3ad0776b01 (1 revision)

https://github.com/flutter/engine/compare/1376288f5c2a...da3ad0776b01
2024-09-17<EMAIL_ADDRESS>Roll Skia from 0409718f34c6 to be871a37a154 (1 revision) (flutter/engine#55250)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC aaclarke@google.com,rmistry<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


Band | Major FF issues with the grid named areas

Firefox (latest) is showing some pretty serious jankiness on the band layout:

I think this is related to the grid named areas and the sass not using autoprefixer.

Major Jank, sir! Reporting for duty, sir!

Can be fixed by removing grid name areas from custom properties and just encoding them.


it need to change Windows 10 RS3 -> Windows 10 1709

please use version name not codename. Because of this, I had to spend 30 minutes finding meaning.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 86847b80-8f8e-9493-86ff-5dfd6412b48f
Version Independent ID: 2ce02bc3-24a1-8c9f-c787-34ab90e9f31d
Content: Microsoft Edge Supported Operating Systems
Content Source: edgeenterprise/microsoft-edge-supported-operating-systems.md
Product: microsoft-edge
GitHub Login: @srugh
Microsoft Alias: srugh

@Nian-Kim Hello - Thanks for your feedback!  The documentation has been updated and now reads "Windows 10 SAC 1709"


ASP.NET Core Identity as a service

Add a layer to ASP.NET Core Identity that exposes identity as a service.
This service should provide an opinionated and turn-key identity solution that enables customers to easily migrate to Azure AD B2C. The service should support flows for Web Apps and Web APIs as supported today by Azure AD B2C. Apps interact with the service using standardized protocols (OpenID Connect, OAuth 2.0, JSON Web Tokens) while abstracting the user from protocol details. Client token acquisition will be supported through the Microsoft Authentication Library (MSAL). The goal is to provide a consistent identity offering for in-app, on premise, and cloud scenarios.
Benefits of exposing ASP.NET Core Identity as a service:

The actual app code is much simpler and decoupled from its identity concerns
Support for established authentication standards and patterns simplifies security concerns and builds trust
The identity service can live in a separate process
Reuse user identities across multiple apps
Support for issuing JWT tokens for Web API security
Enable apps to easily migrate to use Azure AD B2C
Consistent client library story (MSAL) for acquiring tokens
Consistent identity story across in-app, on premise, and cloud scenarios

Out of scope:

Support for all OpenID Connect and OAuth 2.0 flows is not a goal. Supported flows will be limited to those supported by Azure AD B2C
Other features not supported by Azure AD B2C are out of scope as they would impede migration

When the title here says "service", do you mean an HTTP-based API on ASP.NET Identity, or is this issue just a general feature list for the already developed Azure on-prem STS as mentioned here: https://twitter.com/PinpointTownes/status/857772475400290306 and several times on the ASP.NET Community standup?
If it's an HTTP-based API on ASP.NET Identity, then I think this is a great feature! So many apps need decoupling from the in-memory only programming model of ASP.NET Identity.
If it's the on-prem STS, then in the past I've heard this positioned as "a STS where your client app can just change a URL and use any STS you want", but these two things:

Client token acquisition will be supported through the Microsoft Authentication Library (MSAL).
Other features not supported by Azure AD B2C are out of scope as they would impede migration

will make it product specific, and thus the client application code is also then tied to the Microsoft STS product(s). If this is publicized as the goal (and also the constraint), then fine. But if it's positioned as compatible with any other OIDC token service, then it will be misleading.
If the client apps (I guess in the templates) use client libraries that were OIDC RP certified (https://openid.net/certification/#RPs), then you'd have a more believable story for compatibility.
So can we get official clarification on some of these questions? I think it would help the community in evaluating their options.

This is only about adding limited OpenID Connect support to ASP.NET Core Identity that aligns with Azure AD B2C, not adding a broader HTTP API over all of ASP.NET Core Identity. Client apps use the standard OpenID Connect and OAuth 2.0 flows for interacting with ASP.NET Core Identity.

So in short, this "service" is a package that implements OIDC and uses ASP.NET Identity internally to manage the identities, and this OIDC server will behave exactly as Azure B2C?
Is that a fair one-liner summary?

Yup, the goal here is to build an aligned identity story across in-app, on premise and cloud scenarios. We want to make it easy to migrate from ASP.NET Core Identity to using Azure AD B2C as a cloud identity service. That said, Azure AD B2C itself produces OIDC compliant messages and we will too, so you can just as easily decide to use any OIDC provider you want (like IdentityServer4, or OpenIdDict).

That said, Azure AD B2C itself produces OIDC compliant messages and we will too, so you can just as easily decide to use any OIDC provider you want (like IdentityServer4, or OpenIdDict).

While technically correct (and this also includes any other OIDC implementation), each has their own programming model, assumptions, and features. So just because they all do OIDC, it doesn't mean they all do the same thing or provide the same features for you or your security architecture.

Yup, the goal here is to build an aligned identity story across in-app, on premise and cloud scenarios. We want to make it easy to migrate from ASP.NET Core Identity to using Azure AD B2C as a cloud identity service.

So yes, thanks -- I think this clarification is helpful so people can make an informed decision.

Personally, the main concern I have is that the project names you've chosen are way too generic for what appears to be basically a limited "B2C emulator" (credits go to @leastprivilege for the name!) or an "on-premise B2C server". Why not adding the Azure(AD) moniker in the packages name if that's really what it is?

Another (cool) option to consider would be to decouple the OIDC handling part from the abstractions/core components (like the token primitives or the applications/tokens stores), that wouldn't be tied to any OIDC implementation and could be reused and plugged into existing stacks like IdSrv or ASOS.

Yeah, we've considered putting B2C in the name to make this clearer, but then folks might think you're actually using B2C, when you're not using B2C at all.
We've definitely open to refactoring things so that they are more generally usable. Can you share more details on what factoring you'd like to see?

Then call it B2C on-prem, or non-cloud B2C, or non-cloud Azure on-prem B2C or some such. If you give it a generic name, we'd not want people getting confused about what they were really getting. As we know, confusion on this platform is already at an all time high.

We're open to this. We just need to come up with a name that signals alignment with B2C, but not usage of B2C. Will discuss more after BUILD is over.

B2C Emulator - isn't that what it is?

Refactoring doesnt make sense to me. We certainly wouldn't use it - and you are not building a framework.
In spirit this is a closed source product. I mean - it needs to mirror the exact feature set of a closed source product. So why even open sourcing it?

In spirit this is a closed source product. I mean - it needs to mirror the exact feature set of a closed source product. So why even open sourcing it?

There is still value in making the code open source. By making the code open source you can read the code, debug it, build it yourself, incorporate it in your own projects, contribute bug fixes, fill in feature gaps, etc. Not all open source projects will have or need to have an open ended community driven scope. Some projects may have a fixed scope, even a scope tied to a particular business strategy or commercial product, and that should be ok.

The actual app code is much simpler and decoupled from its identity concerns

when you say much simpler you meant this?

That's the identity code, which certainly isn't simple, but I was referring to the actual app code. The app code for most of our templates consists of a single HomeController with Index, About and Contact views. If you enable authentication today then a good chunk of the identity code gets intermingled with your app dwarfing the actual app logic. By separating out the app code into an area and wrapping it in a standard service interface your app and the identity code are decoupled to the point that you can delete the entire identity folder and replace it with an out of process identity provider of your choice.
We plan to simplify the identity code as well. All the code in the Extensions folders we plan to move into framework packages. We want to revisit how email confirmation and two factor auth get setup to make it simpler and purely additive (no more dummy IEmailSender and ISmsSender interfaces). We are also looking at ways to package the controllers and views so they don't have to live in the template.

@danroth27 thanks for the reply and eager to see the improvements coming. Btw, speaking of "We are also looking at ways to package the controllers and views so they don't have to live in the template." This is something that would be useful for a lot of scenarios! Whatever option you enable or recommend that we developers can use is very welcome. I was waiting for something to do exactly that for a looong looong time already.

We might do something targeted for the identity controllers and views (still under discussion), but if you're looking for a more general purpose solution you should check out the sweet modules framework the Orchard folks built on top of ASP.NET Core for Orchard Core: https://channel9.msdn.com/Shows/On-NET/Sbastien-Ros-Modular-ASPNET-apps

the sweet modules framework the Orchard folks built on top of ASP.NET Core for Orchard Core: https://channel9.msdn.com/Shows/On-NET/Sbastien-Ros-Modular-ASPNET-apps

There's even a built-in OpenID Connect module designed by @jersiovic (that uses OpenIddict under the hood) :trollface:
@danroth27 any idea when the IdentityService repo will go public?

All the code for this feature will show up here in the Identity repo. We should have the first PR in place this week.
@javiercn @Eilon

@danroth27 I played with the new VS templates and it looks like there's now no way to create a Web API/APP using Identity (aka "individual authentication") without the B2C emulator, which is of course a real PITA.
Is there a plan to fix that?

What issues specifically are you running into? We want the app decoupled from its identity concerns by default so that you can easily swap to a different identity provider.

We might do something targeted for the identity controllers and views (still under discussion)

please don't and keep the discussion going.
With all the respect to Orchad and what they have implemented which indeed looks awesome. The need to reference two different packages, inject services, have a middleware running to get the concept of modules on an application may be fine but not to package a library with controller(s) and view(s). (As clearly is your scenario and many others).
I strongly believe this is something missing from asp.net framework, and I would love to see First Class Citizen support for this, the fact that you need this also kinda proves my beliefs.

What issues specifically are you running into? We want the app decoupled from its identity concerns by default so that you can easily swap to a different identity provider.

That's also what I want. I don't want to have an embedded B2C emulator when I have actually no plan to use OIDC at all in my Identity-based app. There should be a new option the individual authentication dropbox offering you to create a "local B2C server".

@PinpointTownes We only plan to offer two options for authentication with individual user accounts: in-app or cloud. Having a third option would leave the user with a confusing choice. The use of OIDC for the in-app case has the benefit of allowing the user to easily swap out their identity provider and it is largely transparent to the user.

@Bartmax Whatever we do for identity for the controllers and views we will make sure it's something that anyone can do.

We only plan to offer two options for authentication with individual user accounts: in-app or cloud

In-app means the same as we have today in VS2017, right? Or if this only means you only allow the B2C emulator, then what about those projects that want to build their own STS using ASP.NET Identity?

The use of OIDC for the in-app case has the benefit of allowing the user to easily swap out their identity provider and it is largely transparent to the user.

Meh. It makes absolutely no sense to use a local OIDC server when you know you don't want to use a remote identity provider. What I want is a template similar to the existing Identity template (in VS 2017).

In-app means the same as we have today in VS2017, right?

Nope. When you select individual authentication with in app users store, the B2C emulator is automatically added and you have no way to avoid that.

Nope. When you select individual authentication with in app users store, the B2C emulator is automatically added and you have no way to avoid that.

Well, then, that's wrong. This is like saying you'd force the MVC template to only ran in Azure App Fabric.

This is like saying you'd force the MVC template to only run in Azure App Fabric.

Not at all! The only thing the app is tied to is a OpenID Connect (and a limited amount of OIDC at that). There is nothing in the template that is tied to B2C or any other Azure specific service. This means that you can easily switch to any OpenID Connect provider (like IdentityServer4 or OpenIdIDict). This setup allows for more choice, not less.

But where's the ASP.NET Identity starter code? I guess I'm confused, and admittedly I have not installed any of the preview stuff yet.

This means that you can easily switch to any OpenID Connect provider (like IdentityServer4 or OpenIdIDict).

There are many cases when you don't want to use an OIDC provider - local or remote. Embedding the B2C emulator, IdSrv, OpenIddict, ASOS or any other OIDC provider makes no sense when all you want is a simple application with cookies authentication and a local users database.

@brockallen All we are doing here is adding a layer to ASP.NET Core Identity that wraps it in OIDC (specifically the flows that Azure AD B2C supports). We then put all the ASP.NET Core Identity code in an area in the template and the app interacts with it through OIDC. If you later decide that you want to use a different identity provider (Azure AD B2C, IdentityServer4, OpenIdDict, etc) you simply delete the entire area folder and configure the app's OIDC options to point at the identity provider of your choice. You can see this in action at the tail end of the Intro to ASP.NET Core 2.0 session at BUILD.
@PinpointTownes  To be fair though, using ASP.NET Core Identity was never really simple. The AccountController alone is over 400 lines of code. And that code and the database setup is all still there, virtually unchanged. The addition of the OIDC endpoints was purely additive. We've tried to make the fact that you have a mini OIDC provider in-app as transparent as possible to the user. For many users it should be an implementation detail that we now do a standardized OIDC dance to setup the app cookie, instead of an app specific form post. If you think it's still causing unnecessary friction someplace let us know and we can try to address it.

To be fair though, using ASP.NET Core Identity was never really simple. The AccountController alone is over 400 lines of code. And that code and the database setup is all still there, virtually unchanged.

So your solution to that is to add much more code in the templates - @Bartmax's screenshot is eloquent - making the authentication flow way more complex for people who only need local authentication and don't want to use OIDC? Come on, you can't be serious.

If you later decide that you want to use a different identity provider (Azure AD B2C, IdentityServer4, OpenIdDict, etc) you simply delete the entire area folder and configure the app's OIDC options to point at the identity provider of your choice.

I do understand why you're doing that from a business perspective, but forcing people to use your stuff by including it in the base templates without offering a way to opt in/out is unacceptable. What's next? Bloating all the templates with stuff promoting all the Azure services?
To be clear, I have no problem seeing stuff that help you sell more Azure services in the templates, but they must be opt-in. One should be able to create a new app with the minimum stuff needed, instead of having to remove everything manually.

If you later decide that you want to use a different identity provider (Azure AD B2C, IdentityServer4, OpenIdDict, etc) you simply delete the entire area folder and configure the app's OIDC options to point at the identity provider of your choice.

Not really. Getting rid of the B2C emulator artifacts is way more annoying:

You have to move the models/views/view models/controllers from the IdentityService area folder to the root project.
You have to manually remove the area folder.
You have to remove the related extensions in the Extensions folder.
You have to merge the two AccountController.
You have to rename and update the DbContext to avoid inheriting from IdentityServiceDbContext.
You have to manually add the Identity services in the main Startup or copy them from the IdentityService hosting startup file.
... and I'm probably missing other steps.

Just wanted to reinforce what I believe @PinpointTownes is asking at several points (please correct me if I am wrong):
A1. Scenario: I have already built my own system comprising IdentityServer / Openiddict. I use ASP.Net Identity exposed via my own UI / Web API. Or, I use it directly within my application.
A2. Desire: I want to treat ASP.Net Identity as a component I can wrap with whatever interface, and persist in whatever storage medium I desire (I don't use SQL, I use DocumentDB). Or, not use it at all.
A3. Requirement: It needs to be completely standalone, opt-in only, and not be tied to a service interface that must mirror a closed source product. It must be able to used in conjunction with data persisted in a jurisdiction of my choosing for compliance purposes. It must be extendable by the community.
Essentially, if Identity is no longer customisable / extendable with a fair probability that future releases are not going to break it, I cannot put my valuable user data into it, and I will create my own / use a truly open source alternative.

At this point in time the appeal of ASP.NET Core is that it is open source, cross-platform and friendly to startups and small application developers. Azure AD B2C on the other hand is not open source, has a tremendously slow release cycle, lacks many features (some of the more important ones are on private preview now, announced at build) and is incredibly expensive.
I'm sorry, but when you compare Azure AD B2C to something like say AWS Cognito, it is pretty clear that one of them is not targeted at the main market of ASP.NET Core. I understand, that this feature will allow anyone to go in and replace B2C with something else, and that's fine, but seeing as to how B2C is not a real viable option for so many at the moment, as stated before it should be an opt in.
Either an opt in, or AD B2C needs to become a compelling service that can justify its pricing with top notch features.

This is not about which OIDC provider is chosen on the templates, pretty sure everyone agree that having B2C as default with a simple "replace point" it's perfect.
The point here is about when you don't want OIDC at all. That's why you have Windows Auth, cookies is just as good as any other option and every option is aimed to solve different scenarios. Current templates lacks the ability to have a cookies provider which is a very most common approach in MVC application.

@Bartmax

This is not about which OIDC provider is chosen on the templates, pretty sure everyone agree that having B2C as default with a simple "replace point" it's perfect.

Personally I wouldn't want that at all... I wouldn't want the default to be for an expensive paid service.
Keep the current options and add another for Azure B2C.

+1  for @brockallen continuing Membership Reboot.
We need options, choice of membership. Identity Server and OpenIddict are far more attractive than very expensive Azure B2C. It is just not commercially viable for many people.

@PericlesSouza We completely agree! This feature adds OpenID Connect support ASP.NET Core Identity in a way that aligns with Azure AD B2C, but it doesn't use or rely on or use Azure AD B2C at all. By using OpenID Connect you can then easily update your app to use any identity provider you want, including IdentityServer or OpenIdDict. You have complete control over which identity provider you use.

But, essentially as long as the actual Identity implementation retains the current level of extensibility and is self-contained without other dependencies / tied to the needs of a closed sourced SAAS interface, then I personally would be happy. I'll just create my own template and use that.

Yup, no extensibility was removed by adding this feature and no dependency was introduced on Azure. We are simply adding OIDC support in a way that makes it easily to migrate to our Azure identity services or any OpenID Connect provider that you want. For folks that don't want OIDC support at all you can still use ASP.NET Core Identity to do forms based cookie authentication like you always have been able to do.

For folks that don't want OIDC support at all you can still use ASP.NET Core Identity to do forms based cookie authentication like you always have been able to do.

Not without having to manually remove your "identity service" thingy from the default templates. And it's a total PITA: https://github.com/aspnet/Identity/issues/1187#issuecomment-301136216

We want to make the OIDC support as transparent as possible to the point where, for most users, it should be an implementation detail. We can also improve the template so that removing the OIDC stuff is more painless for folks that want that (ex. we're already in the process of removing of all the code in the temporary Extensions folders).

We want to make the OIDC support as transparent as possible.

It really sounds like you're trying to force people to use your OIDC server (otherwise you'd accept offering a default template without any OIDC stuff, just like in VS2015/2017).

It really sounds like you're trying to force people to use your OIDC server

We're really not trying to force anyone to do anything. We're trying to decouple apps from ASP.NET Core Identity so that you can choose whatever identity provider you want. We're doing this by wrapping ASP.NET Core Identity in standards complaint service endpoints. By decoupling identity from the app in this way you can then switch to whatever OpenID Connect provider you want whenever you want to. If you don't want the OIDC endpoints at all you can remove them, but we think most customers will want this level of flexibility.

If you don't want the OIDC endpoints at all you can remove them, but we think most customers will want this level of flexibility.

If you're so sure people will want that, why not offering a way to opt out (using a checkbox?) for those who don't want to use OIDC? :smile:

We're really not trying to force anyone to do anything. We're trying to decouple apps from ASP.NET Core Identity so that you can choose whatever identity provider you want.

This seems disingenuous when you describe the issue you're trying to solve as:

This service should provide an opinionated and turn-key identity solution that enables customers to easily migrate to Azure AD B2C.

This doesn't imply flexibility in the Identity service as the goal, but rather, a push/promotion for Azure AD B2C.  It definitely flies in the face of the open and composable goals of ASP.NET Core up to this point.

@ketrex  I can understand how that statement was a bit confusing, so I've updated the issue description to say "easily migrate to Azure AD B2C, or any other OpenID Connect provider". Obviously we would love for you to use our Azure services and we will ensure, but there is nothing that constrains you to do so. Use whatever provider you'd like.

@danroth27 , what is difficult is that the user needs to decrypt the code to understand it. The template in ASP.NET 2.0 Preview 1 shown above is too abstract, which is the price to pay for the decoupling you mention. While I think the idea is nice, it would help to point to a short tuto that goes through the code (a 20 min video would be best perhaps as this is a preview). Cheers

@Ponant Absolutely! You can see the template in action at the end of the Introducing ASP.NET Core 2.0 BUILD talk, but we will work on putting together a more complete walkthrough in the weeks ahead as the template code settles.

@danroth27 , I saw this video a few days ago but that was not enough me except in getting a general idea. The problem with abstraction is that you lose the basics of understanding code, namely follow a method which calls another method etc (I may be too old for that ;) ). I would rather go for something like Adam Tulliper did once https://mva.microsoft.com/en-US/training-courses/customizing-aspnet-authentication-with-identity-8647?l=1Yef8hF1_7604984382, but in a short version until you clean up the code. After that, people will adopt it in my opinion because you offer a better separation of concern.

@Ponant Yup, totally agree. I'll shoot for getting something out by early June.

The initial code for this feature is now checked in, so I'm going to go ahead and close this issue. However, please feel free to continue to comment if you have further questions. Even better, give the ASP.NET Core 2.0 Preview 1 bits a spin and let us know what you think!

So after all these comments, the only change is the words describing what you have done.

This service should provide an opinionated and turn-key identity solution that enables customers to easily migrate to Azure AD B2C.

There was not much point in allowing discussion if you do not listen. This is the biggest problem with all Microsofts "open source" efforts.
If you want people to use your B2C product, lower its price to something less insane. Herding customers into using it will not work.

With a separation as a Service, it seems to me that more complex scenarios are getting into the Identity equation. So, I ask again if support on Mutitenancy (TenantId into AspNetUsers table) is still out of reach. Please refer to #1047 & #266.
SaaS apps were neither AzureAD nor IdentityServer are a fit, would greatly benefit of this construct right from the library itself.
Thanks!
Luis

@PericlesSouza It certainly wasn't the intent to ignore any feedback. We've been monitoring this issue closely and I've also opened the following issues to track the other feedback we've heard. If I missed something please do let us know:

Consider renaming the packages to make clear the alignment with Azure AD B2C. We are open to this, but we want to avoid causing confusion where people think these components have a dependency on B2C, when they don't (https://github.com/aspnet/Identity/issues/1198)
Reduce the complexity of the template additions that support OIDC as much as possible (https://github.com/aspnet/Security/issues/1212, https://github.com/aspnet/Identity/issues/1199, https://github.com/aspnet/Identity/issues/1201)
Consider adding a template option that only adds cookie auth without the OIDC pieces (https://github.com/dotnet/templating/issues/800)
Provide a way to ship controllers and views as a binary/package (https://github.com/aspnet/Home/issues/2030)

Your specific feedback has been about not forcing folks to use Azure AD B2C, which this feature does not do. It sounds like you are particularly interested in preserving choice of identity provider, which is exactly what this feature is about. This feature decouples your app from ASP.NET Core Identity making it easy to switch to IdentityServer, OpenIdDict or any OIDC provider you want.

@luisgizirian Unfortunately, I don't believe we have any new plans around multitenancy. However, the Orchard folks have been hard at work on Orchard Core and they have multitenancy support built-in.

@danroth27 That's a deal-breaker for us.
We're a proprietary SaaS platform supporting multiple websites for our customers . We're stuck into ASP.NET Identity v.2 (with multi-tenancy addition). We have already +50K users among our tenants (sites with customers of our customers). We shall decouple from v.2 Identity (while keeping existing passwords) to allow our code base to evolve an be upgraded to .NET Core.
We operate on top of Azure using a combination of IaaS, SDN, PaaS, and several Azure services (Microsoft offered and 3rd Parties as well thru Marketplace) over multiple DCs.
It's a big deal to us the negative on moving on with multitenancy for ASP.NET Identity Core, but I hope it is for the best somehow. At first look, Orchard Core is not in our best interest as its a big tradeoff with a steeper learning curve that deviate us from our core.

@luisgizirian I don't think @danroth27 would mean you should move to OrchardCore, simply that you can look on it to see how multitenancy was solved to bring ideas to your platform. So, instead of forcing others to have a tenant id in user table that maybe we don't want to use, you could adapt to what exists using
a different user table per tenant.

This feature decouples your app from ASP.NET Core Identity making it easy to switch to IdentityServer, OpenIdDict or any OIDC provider you want.

What a lie, created a new project and tried to swap to another provider... it's just imposible.
After that I did create new blank app, and got auth stuff done in like 15 minutes.
@danroth27  The definition of  the word easy that you use in every comment on this issue is not what you think it is.

Even better, give the ASP.NET Core 2.0 Preview 1 bits a spin and let us know what you think!

As sincere as possible, I think the new auth template it's useless/confusing/complex (at least for me), it also doesn't work right (neither the former template so was no surprise) and I have no plan to invest anymore time on it or this issue.
What I get from this and the many times that I tried to contribute to the way authentication is done, point out defects on the templates, etc. is that I just need to forget that Microsoft has any authentication "stuff" and move on. 😫

@Bartmax It's certainly not impossible. If it helps, take a look at my IdentitySwap sample that's preconfigured to allow you to swap between local ASP.NET Core Identity, Azure AD B2C, and IdentityServer4 for sign in by changing a single line of code. This is the same demo app I used at BUILD. There's certainly plenty of room for improvement (it's only preview1), but hopefully it gives the idea of what we're trying to enable.
I can tell your frustrated (sounds like there's some history here), but if you'd be willing to share where you ran into issues I'd love to hear what they were. You're probably one of the first people to try out the new templates, and we greatly appreciated the early feedback.

@danroth27 Where can I change grant_types_supported because when I looked at this link xxx/v2.0/.well-known/openid-configuration it's always empty
I tried to use ASP.NET Core Identity for issue token to user, how?

@minhnhat2807 Please note that we recently made a decision to postpone the identity as a service work until after 2.0 so that it has more time to bake.
The configuration document is provided by the IdentityServiceConfigurationController in the template. See https://github.com/aspnet/Identity/blob/dev/samples/IdentityOIDCWebApplicationSample/Areas/IdentityService/Controllers/IdentityServiceConfigurationController.cs#L23 for the latest implementation of this endpoint. Note that the route for this endpoint is [HttpGet("tfp/IdentityService/signinsignup/v2.0/.well-known/openid-configuration")] to match the behavior of Azure AD B2C.

Typical of how .Net Core is mismanaged.
Make a decision to go off on a tangent that nobody asked for (while ignoring the most wanted features), and then swerve to another direction at the last moment.
You guys need to be managed by the folks that carefully husband the C# language. They know what they are doing.

@danroth27 So what does this mean?  Will it have to wait until aspnetcore 3.0? Or will it get released as part of an update to 2.0?

@gregoryagu

The following items (and items related to them) were cut completely from the 2.0.0 release due to them being deemed not ready. We will revisit them in 2.1:

Convention-based configuration in our sub-systems (aspnet/MetaPackages#117)
Identity as a Service (STS)

https://github.com/aspnet/Announcements/issues/253

In general the identity xp over the years has been a tumultuous one (e.g. ASP Role/Membership, Identity, AD Integration, OWIN OAuth, etc..) It has kind of bounced us all over the place and caused a good bit of complexity and time consuming R&D. I hope this implementation ultimately comes down to making it easier for us not more complex! I want to spend more time thinking about my business requirement implementations than an Identity framework. Its not only the code to implement but also maintenance and longevity too!
For our Web Apps and APIs we are looking at Identity Server 4 for a unified solution. IDS 4 looks great but just seems more than we need/want. We were also are looking at Azure AD B2C but when you factor in user storage, authentication and Multi-Factor the cost becomes far too big for a small startup.
I guess we would like to see this be a seamless very low friction implementation to a low cost backend service that does what Azure B2C does (or here is an idea. MAKE AZURE B2C CHEAPER! :-)). Love the idea of having a unified identity service for our APIs and Web Apps but please make this as low friction as possible. Also please do something MS will stick with for years to come, if possible! Otherwise it is really very little help.
My $.02....

@chassq
I agree with your points regarding the identity journey we have had over the last few iterations. Also agree with the cost of Azure B2C
IDS4 is actually a very good attempt at making a highly complex subject, easy to use. The samples and documentation are thorough, and its essential to understand the concepts behind the industry standards it employs, whatever backend you choose, in order to properly secure your applications.
My experience so far with IDS4 has been very good - flexible, efficient and scalable. The initial investment  will pay dividends.

One of the goals here is to at least standardize on the OpenID Connect (OIDC) protocol. That makes it a lot easier to swap out the back end. If you started with one backend and need to switch to another, you still have to figure out how to migrate your data (that's nearly always true anyway), but at least the app's frontend shouldn't need to change.

@mcquiggd, @chassq  I looked at the current cost of AzureB2C.  For less than 1,000,000 users, the cost works out to 18 cents per month based on 50 logins per month ($0.0028 each login), plus 1.1 cents per user per month. Add in Multi-Factor auth at once per month at 3 cents each.
That seems pretty reasonable pricing to me.
Am I missing something?

I watched @danroth27 build demo of Identity As A service and it seems pretty cool to me.  Is there a way to get the bits for this so I can give it a spin?

The azure price calculator (see https://azure.microsoft.com/en-us/pricing/calculator/ ) has 1 million stored users at $1,045.00/Mo. Add 1 million authentications = $2,660.00/mo. Add 10,000 multi-factor = $300/mo for a total of $4,005.00/mo. So please tell me what I have wrong here. Am I not using the calculator correctly?

Your calculations comes to one half cent per user, per month.   If it's a totally free app with several million users, I can see the case for rolling your own auth.  But that seems pretty reasonable to me for a paid app.

Yep. If they drop the price they could gain more adoption and become a defacto for Identity. And make it far easier on the dev community by having one place to turn for Identity. Just look at the costs for Azure Functions. An execution is next to nothing by comparison. Why is Identity so expensive? A stored user cannot take that much disk space and an authorization should be on par time and resource wise as an Azure Function call. You can get 10 million Azure function executions (assuming under 1 sec and less than 128kb) for $13.60/month. Azure AD B2C just seems way over priced to me as compared to other Azure cloud services.

You will always have considerably more authentications than 1 per user per month.
If not, your app is a failure.
Compare the above cost estimated by @chassq - $4,005.00/mo. which assumes the very low active authentication rate of 1 per month:
Hosting my own IdentityServer on an auto-scaled App Service, Standard Level, even with 3 permanently running S1 instances that never auto-scale down during quiet periods, will cost me $223 per month, and can easily handle the same load and scale to peak demand. In practice it would be less due to auto scale down.
Combining that with Cosmos DB (DocumentDB) with:
10GB of SSD based storage.
4000 Request Units per second, 744 hours each month. Thats about 2000 authentication requests per second.
And just for the hell of it, and additional 40,000 Request Units per minute provisioned, 744 hours each month.
$320.57
Total cost $543.57. And capable of dealing with 10s of millions of user profiles, and 100s of millions of authentications each month. Double that price if you want Geographic Region Failover. Still considerably more performance for a quarter of the cost.
Azure B2C for 1 million user accounts (which is not much for B2C), and only 5 logins per month, is $12,105.00.

When one player enters the market and takes all the developers don't 😢 and said we didn't warn you.
I wish I could use xxxx (insert name Azure, Auth0, whatever) for identity.
As of right now, we are strongly suggesting all our customers/clients to roll their own login mechanism. With libraries like open iddict I really don't see much value added from Auth0 nor Azure and the pricing is insane, IN-SANE

@chassq multi-factor is sms based; which has a 3rd party cost per auth. You are better using the authenticator app version for 2fa that's in 2.0 (also advised to use it instead of sms based 2fa as per current security advice) so that shouldn't be a cost worth worrying about?

@danroth27 , any idea on when Identity as a Service will come up now that it is removed from 2.0?
Is it expected for 2.1?

It's being actively developed, but when it will ship is still TBD.

@danroth27 Can I beta test it for you?

There's no beta to test yet. It's still very much a work in progress.

There's no beta to test yet. It's still very much a work in progress.

Turns out that building a token service is a lot of work :)

@brockallen
That's why I admire the people that open-source theirs...

That's why I admire the people that open-source theirs...

Well, OSS is not free and not typically a charity. You have to evaluate the motivations of those that do. Ours is to sell consulting and services. Microsoft's is to sell Azure.

@brockallen
The difference being I can use your OSS without paying for the optional consultancy... and assess it's the quality of it's implementation.

Sure, but Microsoft will (if not already) OSS theirs.
The most important thing, which you've somewhat gotten at, is what's the right token server for you. If you plan to use and move to Azure B2C, then I suspect the Microsoft on will be the right choice. But if you're not sure, or you need more features or flexibility than Azure B2C, then the Microsoft token server will probably not be the right choice for you.
I hope Microsoft has the courage and honesty to be very clear on this point as they move forward promoting their token server. They have a huge amount of power and influence in what developers hear and think (regardless if the info is correct or not) in their marketing and in things like the File->NewProject experience.

@brockallen , in what do you want MS to be clear on and how can you know what they are doing in the details? I know there are lots of discussions on this topic and surely they are not the most glorifying ones, but my point is that if you are concerned about their implementation then why not explaining what are those limitations of their future OSS. Otherwise it is perceived as a negative critic for free not mentioning a biased one.

@Ponant I thought I was clear... the Microsoft token service (from their own words if you piece enough of it together) is designed for eventually moving your users to be hosted in Azure B2C. It's not a more general purpose or flexible token server. That's all.
What I'm trying to protect against if when people are told half-truths and manipulated in order to sell a product that's not appropriate for their needs. So I'm just trying to keep Microsoft honest about what they are building and what it does.

While I considered using AB2C, I decided not to do it (priced too high and lack of customization and unclear data sovereignty). You may be right but I understood their answers differently, quoting parts from @danroth27 and @Eilon ,

Enable apps to easily migrate to use Azure AD B2C, or any other OpenID Connect provider
We're really not trying to force anyone to do anything. We're trying to decouple apps from ASP.NET Core Identity so that you can choose whatever identity provider you want. We're doing this by wrapping ASP.NET Core Identity in standards complaint service endpoints. By decoupling identity from the app in this way you can then switch to whatever OpenID Connect provider you want whenever you want to. If you don't want the OIDC endpoints at all you can remove them, but we think most customers will want this level of flexibility.

One of the goals here is to at least standardize on the OpenID Connect (OIDC) protocol. That makes it a lot easier to swap out the back end. If you started with one backend and need to switch to another, you still have to figure out how to migrate your data (that's nearly always true anyway), but at least the app's frontend shouldn't need to change.

I think what they are doing is an invariant OIDC-compliant protocol, I recall Dan made this demo
https://github.com/danroth27/ProjectConstruction/tree/master/IdentitySwap

I think what you are referring to is the MVC/ASP.NET Identity templates that consume an OIDC token service, which is separate from the token service itself that is being provided as the migration path to Azure B2C.
And I think, in a sense, your slight confusion has illustrated the exact concern I'm trying to raise. By blurring the distinction between the consuming app and the token service itself (or another way to look at it is by failing to explain with extreme clarity the distinction between the two), it's easy to fall into the situation where File->New Project has led you into being spoon fed a token service whose design is to funnel you into Azure B2C, unbeknownst to the developer. That's the power of owning VS and the File->New Project message that is delivered to developers.
IMO, those should be two different project templates. But that doesn't demo well on stage at conferences and during keynotes.

@brockallen asking/saying/hoping that ms will be clear in their strategy is not for free because MS wasn't clear and lied in the past about this.
bonus: my opinion shouldn't feel biased.

IMHO,

MS needs to lower the cost of Azure B2C drastically and make it along the lines of the cost of say a storage account (store users) + a function execution (per auth) + email/sms call (optional for multi-fac) + AD/365 Integration (optional). If they did that then AD B2C becomes a more viable option for what is really needed and there is no more feeling that they are leading us into overpaying for something that should be a cloud commodity. AD B2C is not a commodity today at its current cost.

Keep the identity programming model simple as possible.  Put on top of that the lackluster docs on how to set that stuff up and override it and bad method design (e.g. VerifyUserTokenAsync returns a bool when it should return an object which specifies at least success or not and if not gives an error message) and you get a framework people begin to dread to use.

I guess my point is that if identity is going to be made so hard to deal with that many developers will simply not use it and opt for a "home grown" path of least resistance solution which could have major security problems. I personally have seen this time and again in code for which I have had to take responsibility.
If we can make identity streamlined and simple more people will use it and hopefully more applications will be safer for it. Don't just think big tech company with tons of resources to field a dedicated dev security team. Think startup/small/medium/big business that is not led by technical people and do not know how to run their company as a tech company but want a technology based product. I know that sounds crazy but I see it all the time. They don't give devs the time and resources to do the right thing.

I totally agree in keeping the identity and backing store separate but out of the gate there should be an easy path or 2 for the new folks so that they do not have to put to much time and effort into getting a great secure auth/auth framework setup and implemented.

I am not trying to advocate for MS but they are in a unique position to make this happen for a great number of people and make our eco-system safer. Just want them to do the right thing.
Hope that input makes some sense.... Sorry, I rambled.... Sorry so long....

I guess my point is that if identity is going to be made so hard to deal with that many developers will simply not use it and opt for a "home grown" path of least resistance solution which could have major security problems.

The problem is that identity is just as much a business feature as anything else, while also concerning security. The reason IdentityServer is so popular is that because identity is not something you can productize as a cloud hosted SaaS offering and control and customize. IdentityServer does take care of the security stuff, while designed to allow the developer to do the customization they need. So it's an option for you instead of doing a "home grown" solution.

Hey @brockallen ,
I guess its perspective. I think I was more talking about implementation than security in general. Agreed security is part of requirements. But I see ASP NET Identity/IDS4 today as a frameworks a dev can employ, not quite like custom business specific logic to meet a set of consumer feature requirements. Much like we put custom logic in using frameworks (e.g. EF Core is to data access as Identity is to auth/auth).
Trying to be pragmatic I find most decision makers do not think like I do when it comes to this stuff. They just assign value to consumer features that they can see and take for granted the ones they cannot (e.g. security) until its too late. So making the identity implementation more straightforward without a bunch of ceremony makes for a far better story to your boss and dev team. For example, app security will take us 4 hrs vs. 4 days of coding and testing. My thoughts are not necessarily about one implementation vs another I guess just more about the need for more straight forward identity implementations that are easy to follow, put in place and transfer to other devs on a team.

From the client app perspective, I think you're right and that can be achieved in the templates or just by adding the AddOpenIdConnect authentication handler into DI. It's minimal code, so in a sense, there's already not much ceremony to it.

Well, then it is maybe a good time to sell IdentityServer to MS :) Cheers

@Ponant it's free...

@Bartmax , their expertise is not for free and valuable. Anyway, that was a (half) joke to stop turning in circles until MS clarifies or outputs a "template".


Failed to load external module babel-register

Fresh Node v4.4.3 and npm v3.x install.
> gulp -v
[14:55:49] Failed to load external module babel-register
[14:55:49] Requiring external module babel-core/register
[14:55:49] CLI version 3.9.1
[14:55:49] Local version 3.9.1

This only happens if the local folder has a gulpfile.babel.js. package.json has these installed:
"babel-core": "^6.7.7",
"babel-preset-es2015": "^6.6.0",
"babel-preset-stage-0": "^6.5.0",

.babelrc
{
  "presets": ["es2015", "stage-0"]
}

I even tried require('babel-core/register'); in gulpfile.babel.js but no luck.
Not sure how to fix this.

Downgrading to v3.9.0 (and removing local version) gives this
> gulp -v
[14:55:49] Requiring external module babel-core/register
[14:55:49] CLI version 3.9.0

Not an issue, as it states on the next line down, it required babel-core/register.  Babel now suggests you use a module called babel-register so we try that first with the fallback.  Please read your entire log before creating an issue.

Hmm. So I did npm i -S babel-register in order to get rid of the Failed... warning. Thanks for pointing in the right direction.

I am using ubuntu 14.04. And i am using nvm managing the nodejs.
Runing gulp -v getting the error below
[20:54:47] Failed to load external module babel/register
[20:54:47] CLI version 3.9.0
[20:54:47] Local version 3.9.1

And the issue was solved by the steps below:
sudo rm -r /usr/lib/node_modules/
sudo rm /usr/bin/gulp
npm cache clear
npm uninstall gulp-cli -g
npm uninstall gulp -g
npm install gulp-cli -g

Hope it will be helped for whom that is using nvm.

try install
    "babel-core": "^6.14.0",
    "babel-register": "^6.14.0",

For a new project, using
	node -v
		v9.2.0
	yarn -v
		1.3.2

after
	yarn global add gulp-cli
	yarn add --dev https://github.com/gulpjs/gulp.git#master
	yarn add --dev \
	 babel-core \
	 babel-register \
	 babel-preset-env \
	 babel-preset-stage-2 \
	 babel-cli

with
	cat package.json
	{
	  "name": "test",
	  "version": "1.0.0",
	  "main": "index.js",
	  "license": "MIT",
	  "dependencies": {
	    "jquery": "^3.2.1"
	  },
	  "devDependencies": {
	    "babel-cli": "^6.26.0",
	    "babel-preset-env": "^1.6.1",
	    "babel-preset-stage-2": "^6.24.1",
	    "babel-register": "^6.26.0",
	    "gulp": "https://github.com/gulpjs/gulp.git#master"
	  }
	}

	cat .babelrc
		{
		  "presets": ["es2015", "es2016", "es2017", "stage-2"],
		  "retainLines": true
		}

verifying
	yarn list | grep babel | grep register | grep "^├─"
		├─<EMAIL_ADDRESS>
gulp exec still returns
	gulp -v
		[18:29:26] Failed to load external module @babel/register
		[18:29:26] Requiring external module babel-register
		[18:29:26] CLI version 1.4.0
		[18:29:26] Local version 3.9.1

@phated given your prior " Please read your entire log before creating an issue.", rather than opening a new issue, what, specifically, in the log above addreses the "Failed to load external module @babel/register" ?  IS that 'fail' a real problem, or just to be considered YA-warning?

It's a warning. Notice the line after?

we shouldn't have to explicitly install babel-register as it's already included in babel-core by itself;

$ npm ls babel-core
<EMAIL_ADDRESS>/opt/github/seed-demo
└─┬<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>deduped

even I explicitly installed babel-register (which I don't see why I need that. I just followed the instructions above ) I still get the save error.
I reckon the solution suggested above only work for a particular babell-core version

We also have this issue and it seems babel loads @babel/register even f it is already installed separately cc @zhoo

Please, please, please understand the projects you are using being spamming closed issues like this.  Babel (yet again) changed the module you require to enable runtime support.  We've updated our internal dependencies to reflect their change and now you see the warning about @babel/register.  Your project is still working, it's just attempting to use the "new" babel thing before it uses the old one you are depending on.  Again, please do more research before you spam things like this.


pre-commit: PR110413

Link: https://github.com/llvm/llvm-project/pull/110413
Requested by: @dtcxzyw

/add-label reviewed

/close


How should we load georeferenced shapes (e.g. points, lines, polygons) from a file?

How should we load georeferenced shapes (e.g. points, lines, polygons) from a file?
Motivating use case: Load points from .csv and geopoints file (e.g. .geojson, .shp, .kml)
Standard practice: As a geospatial data scientist I would use geopandas to load shapes from a file into a geopandas dataframe.
import geopandas as gpd

# geopandas happily loads .csv, .geojson, .shp, .kml etc..
fpath = 'path/to/file'

# geodataframe (a pandas dataframe with geospatial powers)
gdf = gpd.read_file(fpath)

GeoDataFrame makes it easy to, for example, filter by geographic region of interest, change the coordinate reference system (crs) and do other geospatial things like calculate distances and areas.
Known Issue. A .csv file is not natively geospatial. This requires handling. In the case of loading points we would need to know which column(s) contains the point coordinates, and how to parse them, as well as the crs (which is typically not explicit). Here is an example of reading a csv into a geodataframe
# read .csv form file
gdf = gpd.read_file(fpath)

# specify geometry column from the name of the lat and lon columns
gdf['geometry'] = gpd.points_from_xy(gdf[lon_name], gdf[lat_name])

# set the coordinate reference system
gdf = gdf.set_crs(epsg=epsg)

Opinionated view. We should follow the geopandas convention. When we write to file, shapes must be stored in a column called geometry . Geospatial methods work automatically (and exclusively) on the shapes in the geometry column. They should be shapely objects. It's fine to have different types of shapes (e.g. points and lines) in the geometry column. We can read a non geospatial .csv file without falling over but will complain when need (e.g. geometry column does not exist, crs is not set, etc.).

@sandorkertesz please have a look at this and how pdbufr will also play into it.
In the end, loading points from geojson or from bufr should feel and look the same, no?

I think it is a good idea and would also work with BUFR data. At the moment, erthkit-data only offers the to_pandas() method to deal with BUFR, which extracts the specified data/columns into a pandas DataFrame using pdbufr. Since pdbufr already supports the "geometry" and "CRS" columns this data would be fine for GeoPandas.
The main question for me is what API we want to offer for geospatial point data in earthkit-data on top of these methods:

from_source("file",....)
to_pandas()

Is that enough and can we do everything using GeoPandas?

Thanks for the chat earlier today @sandorkertesz. Following up on that, and comments above,..

we may want to consider a to_geopandas() method
we talked about nomenclature of these georeferenced shapes (with properties). imo we probably should we call them features (like in the geojson spec).
we probably should have a reader (a.k.a. plugin) for each file type we support that can store collections of features (e.g. geojson, shp, csv)
attached are some sample data. they were mostly created using the excellent geojson.io web app. The exception being geospatial.csv (which was created by reading the geojson into a geopandas geodataframe then saving to .csv so that there is a geometry column with shapely objects represented as text)

Sample Data
example_vector_files.zip

@sandorkertesz closing this comment but lmk if I should re-open


As a keyboard or screen user, I want to navigate the timetree without a mouse or touch device so that I can explore the content in multiple paths and access all the information in a manner that is equivalent to the experience of a sighted  user.

dev notes

[x] make leaves keyboard navigable
[x] make keyboard nav order logical
[x] make the leaves buttons (role = button)

[x] aria label: display title of the leaf
[x] area described by: display date and branch
[x] trigger button on enter & space bar; transfer focus in, then close button transfers focus back.

[x] disable leaf button when tag is active and leaf does not have tag
[x] make the panel act like a modal (transfer focus; announce; for keyboard user, send them to the close button after tabbing through last tag; return focus to the next leaf after the clicked one)
[x] separate tag from panel: closing panel should no longer close the tag
[x] h2 equivalent label for each branch (possible target from the branch legend in the intro)
[x] make the footer tab order first before the tree
[x] make the intro dom order first before the tree
~allow zoom on desktop~  (tracked separately)
~buttons for zoom in/out~  (tracked separately)
[x] #199
[x] ensure visually hidden content is also hidden from screen readers
[x] ensure visually hidden/disabled buttons are disabled or hidden from screen readers

revisions after testing:

[x] update node order in the dom to follow visual left-to-right branch order
[x] revert focus style customization for active tag close button
[x] ensure invisible branch headers retain tabindex="-1" (focussable but not part of default tab sequence)
[x] clean up focus style for invisible branch header when focused
[x] when tag is active, make tagging act like a modal (contain within tree + tag)

implemented and tested on #202


Get annotation JSON from Anni

[ ] On every app start, check if a new version is available
[ ] If a new version is available, fetch new version
[ ] If data for genotypes changed, show which data changed

Closing as duplicate (covered by #501)


Initial commit for EPANET binary output API

This EPANET binary file outputAPI is written in C and compiles in mingw gcc as a dll. It has been tested but not rigorously. It has approximately a dozen functions and offers convenient methods for getting different "slices" of data out of the binary file. It was developed to facilitate programmatic access to EPANET outputs to automate regression testing. Hence, it was written with thread safety and reentrancy in mind. These aspects of its implementation, however, have not been tested.
The output API requires the programmer to manage memory for vectors of results by providing methods for allocating and freeing memory for them. The output API will likely be wrapped and used with scripting languages like Matlab, Python, and R. Other memory management strategies should therefore consider use cases that involve interactions with wrapper codes.
Another way the output API could be improved is by providing a way to translate between model element ID strings and indexes. This may make access to data more intuitive for general use cases or to improve interpretation of anomalous test results.
Agreeing on a standard API for accessing EPANET output will ultimately allow us to modernize away from the antiquated binary file format currently in use. This output API can also serve as a straw man for that purpose.

:+1:


Invalid action name

After a suscessful installation of the recaptcha (v3), I tried to execute an action just like this:
this.$recaptcha.execute(process.env.NUXT_ENV_RECAPTCHA, { action: 'homepage' });

Which gave me the following error:

recaptcha__en.js:514 Invalid action name, may only include “A-Za-z/_”. Do not include user-specific information.

I could make a workaround by (mounted method):
await this.$recaptcha.init();

window.grecaptcha.ready(() => {
  window.grecaptcha.execute(process.env.NUXT_ENV_RECAPTCHA, { action: 'homepage' });
});

or
await this.$recaptcha.init();
await this.$recaptcha._ready;
window.grecaptcha.execute(process.env.NUXT_ENV_RECAPTCHA, { action: 'homepage' });

Hi,
Try this.$recaptcha.execute('homepage');
This will execute the following (see https://github.com/nuxt-community/recaptcha-module/blob/master/lib/plugin.js#L49):
  async execute (action) {
    try {
      await this.init()

      if ('grecaptcha' in window) {
        return window.grecaptcha.execute(
          this.siteKey,
          { action }
        )
      }
    } catch (error) {
      throw new Error('ReCaptcha error: Failed to execute')
    }
  }


Test issue to test labeler

🐛 Bug description
Something terrible happened to documentation! Oh, no!

Environment

PyTorch Version (e.g., 1.4):
Ignite Version (e.g., 0.3.0):
OS (e.g., Linux):
How you installed Ignite (conda, pip, source):
Python version:
Any other relevant information:

Going to add docker manually...

now going to update issue, Let's see what happens

Oh, sine there is no 'docker' keyword in the issue body labeler removes it :(

But labeler has no idea about 'help-wanted'


dd

/review
auto_approve
--pr_reviewer.extra_instructions="
In the possible issues section, emphasize the following:

Is the code logic efficient?

"
--pr_reviewer.num_code_suggestions="0"
--pr_reviewer.inline_code_comments=true
-i
--pr_reviewer.require_score_review=true
--pr_reviewer.require_can_be_split_review=true
--pr_reviewer.require_soc2_ticket=true

/review
auto_approve
--pr_reviewer.extra_instructions="
In the possible issues section, emphasize the following:

Is the code logic efficient?

"
--pr_reviewer.num_code_suggestions="0"
--pr_reviewer.inline_code_comments=true
-i
--pr_reviewer.require_score_review=true
--pr_reviewer.require_can_be_split_review=true
--pr_reviewer.require_soc2_ticket=true

/improve
--pr_code_suggestions.extra_instructions="
Emphasize the following:

Does the code logic cover relevant edge cases?
Is the code logic clear and easy to understand?
Is the code logic efficient?

"

copilot:walkthrough

@CodiumAI-Agent /review

PR Reviewer Guide 🔍

 ⏱ Estimated effort to review [1-5]
5

 🧪 Relevant tests
No

 🔒 Security concerns
- Sensitive Information Exposure: The system's MAC address is used directly in network packets without any form of obfuscation or protection, which could lead to MAC address spoofing and other security vulnerabilities.
- Denial of Service: The DHCP server implementation does not handle high volumes of requests or malicious inputs, which could lead to service unavailability.
- Code Injection: In the Python scripts, there is direct execution of system commands with parameters that could be manipulated by an attacker, leading to arbitrary code execution.

 ⚡ Key issues to review

Possible Bug: In the main.go file, the error handling for MAC address parsing is not robust. If the MAC address is invalid, it defaults to a hardcoded MAC address. This could lead to unexpected behavior or security issues. Consider handling this scenario more gracefully or alerting the user.

Code Quality: There are multiple instances across the files where error handling is done using die() function which calls exit(). This approach is not recommended as it prevents clean-up operations and can make debugging difficult. Consider using exceptions or error return values instead.

Performance Concern: In the DHCPserver.c file, the server continuously runs in a while loop without any termination condition or signal handling. This could lead to high CPU usage and potential denial of service if the server does not manage its resources properly.

Redundancy: There is significant code duplication, especially in the DHCP client and server implementations in C and Python. Consider abstracting common functionalities into functions or libraries.

Security Issue: The DHCP server implementation in DHCPserver.c does not validate the incoming data sufficiently before processing it. This could be exploited by sending malformed packets to the server.

/review
auto_approve
--pr_reviewer.extra_instructions="
In the possible issues section, emphasize the following:

Is the code logic efficient?

"
--pr_reviewer.num_code_suggestions="0"
--pr_reviewer.inline_code_comments=true
-i
--pr_reviewer.require_score_review=true
--pr_reviewer.require_can_be_split_review=true
--pr_reviewer.require_soc2_ticket=true

/review
auto_approve
--pr_reviewer.extra_instructions="
Exclude the following:
"
--pr_reviewer.num_code_suggestions="0"
--pr_reviewer.inline_code_comments=true
-i
--pr_reviewer.require_score_review=true
--pr_reviewer.require_can_be_split_review=true
--pr_reviewer.require_soc2_ticket=true

@CodiumAI-Agent /review

Persistent review updated to latest commit https://github.com/dechristopher/dhcp-client/commit/54c2b85006bcb335d0567e64dace608e75228970


Needs other language examples

This needs examples for all languages supported by the azure function framework. Currently at a loss on how to do this with node

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ee2ce9e8-8504-ddab-1880-485962b99ffa
Version Independent ID: 1dc67396-c348-d66b-bbab-0d424375ed51
Content: Use client SSL certificate in application code - Azure App Service
Content Source: articles/app-service/app-service-web-ssl-cert-load.md
Service: app-service-web
GitHub Login: @cephalin
Microsoft Alias: cephalin

@joeythomaschaske ,
Thanks for brining this to our attention. We will investigate it further and update you shortly.

@joeythomaschaske -  I'm going to assign this to the document author so they can update the document accordingly.

Much appreciated! Thanks for the quick response!

@joeythomaschaske Happy to help :)

hello. Please provide a python example. I'm deploying a Django app and I need this to work for an external db that has a ca-certificate.crt requirement

@weirdaze , Thanks for bringing this to our attention. I have assigned it to the document author, so they can update the document accordingly. We will keep you posted once the doc is updated.

@joeythomaschaske @weirdaze I've clarified this in the new doc: https://docs.microsoft.com/en-us/azure/app-service/configure-ssl-certificate-in-code#make-the-certificate-accessible. You'll need to load your certificate file directly instead. Check the Node.js and Python documentations on how to load a certificate file in the code. #please-close

Thanks, that's how I ended up doing it anyways!


yarn run chain: address already in use <IP_ADDRESS>:8545

yarn run chain

yarn run v1.22.5
$ yarn workspace @scaffold-eth/buidler chain
$ buidler node
Error: listen EADDRINUSE: address already in use <IP_ADDRESS>:8545
    at Server.setupListenHandle [as _listen2] (net.js:1228:14)
    at listenInCluster (net.js:1276:12)
    at GetAddrInfoReqWrap.doListen (net.js:1415:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:65:10)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed.
Exit code: 1
Command: /home/oren/.nvm/versions/node/v12.8.0/bin/node
Arguments: /usr/share/yarn/lib/cli.js chain
Directory: /tmp/test/scaffold-eth/packages/buidler
Output:

info Visit https://yarnpkg.com/en/docs/cli/workspace for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

More info:
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.6 LTS
Release:	16.04
Codename:	xenial

$ uname -a
Linux oren 4.4.0-179-generic #209-Ubuntu SMP Fri Apr 24 17:48:44 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

yes - buidler (now renamed hardhat) runs on 8545 by default, so will throw if you're running something else on that already. You might have another local chain running already? @sylar217's suggestions would both work, though the second would then require some scaffold-eth reconfiguration (as the react app expects 8545). Closing, but ping again if it's a live issue!