Testers wanted for new dual-boot script

We are considering a few ways to improve the Pybricks installer for SPIKE Prime and MINDSTORMS Robot Inventor. Ultimately, we'd like to provide something in Pybricks Code. One promising solution seems to be web serial, which lets us talk to the hub via the USB cable.
Before we add it to the app, we're doing some tests in pybricksdev. This helps us test at least the hub side of things, before we implement it in the web app.
If you have previously installed pybricksdev, it would be great if you want to help us test this. Perhaps @BertLindeman, @jorgepe, @johnscary-ev3, @heyllama would be interested if you have some time to spare.
Instructions

Make sure you have the latest pybricksdev.

Install if you haven't already
If already installed previously, just updating is fine:

git pull
poetry install

Boot the hub into the regular firmware and plug in USB.
Download the latest firmware build, e.g. this link and save it somewhere.
Run this, and replace the download path with yours:

poetry run pybricksdev dual-boot path/to/the/downloaded/primehub-firmware.zip

There should be some output in the terminal. And all 25 pixels will turn on one by one. When done, it should reboot and install the firmware. Now it should work the same as before, so a long press will give you Pybricks.

Working fine in Ubuntu Linux
I previously added a udev rule, not sure if it was needed. Dmesg regognized the 51515 hub, pybricks dev worked with no problems:
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 557056, 'version': 'v<IP_ADDRESS>4-b0c335b', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xc9Z\x08\x08'}
Backing up 557056 bytes of original firmware. Progress:
Backup complete

Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...

First time I connected with Chrome I tried REPL and could not write anything. Power off, power on again and REPL is fine.
Light example also working.
It feels so... clean. Thanks a lot!

Working fine in Ubuntu Linux
I previously added a udev rule, not sure if it was needed. Dmesg regognized the 51515 hub, pybricks dev worked with no problems:
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 557056, 'version': 'v<IP_ADDRESS>4-b0c335b', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xc9Z\x08\x08'}
Backing up 557056 bytes of original firmware. Progress:
Backup complete

Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...

First time I connected with Chrome I tried REPL and could not write anything. Power off, power on again and REPL is fine.
Light example also working.
It feels so... clean. Thanks a lot!

A backup file has also been created on your local folder. Just because 😄

A backup file has also been created on your local folder. Just because 😄

'firmware-v<IP_ADDRESS>4-b0c335b.bin'
the name has any meaning? I mean, can I store this files and relate to them for a specific LEGO firmware version?

'firmware-v<IP_ADDRESS>4-b0c335b.bin'
the name has any meaning? I mean, can I store this files and relate to them for a specific LEGO firmware version?

It is the version reported by the stock firmware. Not sure what it means exactly, but higher is probably newer 😄
You could use it to restore the stock firmware if you ever get tired of pybricks or dual boot for some reason.

It is the version reported by the stock firmware. Not sure what it means exactly, but higher is probably newer 😄
You could use it to restore the stock firmware if you ever get tired of pybricks or dual boot for some reason.

I was more thinking on keeping my own collection of stock firmwares in case 4 or 5 years in the future the LEGO App ii withdraw.

I was more thinking on keeping my own collection of stock firmwares in case 4 or 5 years in the future the LEGO App ii withdraw.

@laurensvalk Assumed that you meant the standard LEGO firmware with

the regular firmware

trying to get pybricksdev installed on windows did not succeed on my PC.
So switching to Linux Mint 20.1 as these things are so much easier there..
First attempt failed:
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 598016, 'version': 'v<IP_ADDRESS>2-3e5a121', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xa1A\t\x08'}
Backing up 598016 bytes of original firmware. Progress:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/cli/__init__.py", line 326, in main
    loop.run_until_complete(subparsers.choices[args.tool].tool.run(args))
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/cli/__init__.py", line 220, in run
    await installer.install(args.firmware.name)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 285, in install
    base_firmware_blob = await self.get_base_firmware_blob(base_firmware_info)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 185, in get_base_firmware_blob
    block = await self.get_flash_block(bytes_read)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 161, in get_flash_block
    return await self.exec_and_eval(
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 56, in exec_and_eval
    return eval(await self.exec_line(line))
TypeError: eval() arg 1 must be a string, bytes or code object

10th pixel was 3/4 lit.
retry
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 598016, 'version': 'v<IP_ADDRESS>2-3e5a121', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xa1A\t\x08'}
Backing up 598016 bytes of original firmware. Progress:
Backup complete

Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...

Auto reboot - OK
Boot into pybricks: hub initiated ('primehub', '3.0.0b1', 'v3.0.0b1-6-g9fc79e68 on 2021-01-27')
Connect to the Spike App also OKE.
Spike reports the firmware as:

@laurensvalk Assumed that you meant the standard LEGO firmware with

the regular firmware

trying to get pybricksdev installed on windows did not succeed on my PC.
So switching to Linux Mint 20.1 as these things are so much easier there..
First attempt failed:
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 598016, 'version': 'v<IP_ADDRESS>2-3e5a121', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xa1A\t\x08'}
Backing up 598016 bytes of original firmware. Progress:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/cli/__init__.py", line 326, in main
    loop.run_until_complete(subparsers.choices[args.tool].tool.run(args))
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/cli/__init__.py", line 220, in run
    await installer.install(args.firmware.name)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 285, in install
    base_firmware_blob = await self.get_base_firmware_blob(base_firmware_info)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 185, in get_base_firmware_blob
    block = await self.get_flash_block(bytes_read)
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 161, in get_flash_block
    return await self.exec_and_eval(
  File "/home/bert/Downloads/pybricksdev/pybricksdev/pybricksdev/repl_installer.py", line 56, in exec_and_eval
    return eval(await self.exec_line(line))
TypeError: eval() arg 1 must be a string, bytes or code object

10th pixel was 3/4 lit.
retry
Connecting to /dev/ttyACM0
Currently running dual-boot firmware.
Detected firmware:
{'size': 598016, 'version': 'v<IP_ADDRESS>2-3e5a121', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xa1A\t\x08'}
Backing up 598016 bytes of original firmware. Progress:
Backup complete

Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...

Auto reboot - OK
Boot into pybricks: hub initiated ('primehub', '3.0.0b1', 'v3.0.0b1-6-g9fc79e68 on 2021-01-27')
Connect to the Spike App also OKE.
Spike reports the firmware as:

Thanks for trying it as well. There should probably be some more error checking :)
The good news is that the real update doesn’t really start until the upload is successful, so there isn’t much that can go wrong, and trying again should work without restarts, so we can implement that as well.

Thanks for trying it as well. There should probably be some more error checking :)
The good news is that the real update doesn’t really start until the upload is successful, so there isn’t much that can go wrong, and trying again should work without restarts, so we can implement that as well.

Detected firmware:
{'size': 557056, 'version': 'v<IP_ADDRESS>4-b0c335b', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xc9Z\x08\x08'}
Backing up 557056 bytes of original firmware. Progress:
Backup complete
Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...
Can confirm dual boot and everything work as expected ;D

Detected firmware:
{'size': 557056, 'version': 'v<IP_ADDRESS>4-b0c335b', 'checksum':<PHONE_NUMBER>, 'boot_vector': b'\xc9Z\x08\x08'}
Backing up 557056 bytes of original firmware. Progress:
Backup complete
Preparing external flash.
Writing firmware. Progress:
Done! Verifying firmware.
Download succeeded. Rebooting now...
Can confirm dual boot and everything work as expected ;D

Not SURE if poetry pyenv etc is correctly installed on my win10 PC, . . . .
Python3 on my PC is 3.9 but I did pyenv local 3.8.2 here, and poetry does not complain about that.
But I think it's strange to see python39 in the messages:
  File "C:\Program Files\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)

Console log (have split the first line for readability):
C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\pybricksdev\pybricksdev>
poetry run pybricksdev dual-boot C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\primehub-firmware_for_dualb
oot_test.zip
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\pybricksdev\pybricksdev\pybricksdev\cli\__init__.py", line 10, in <module>
    import validators
ModuleNotFoundError: No module named 'validators'

This goes much further than my rudimentary knowledge of python ;-)

Not SURE if poetry pyenv etc is correctly installed on my win10 PC, . . . .
Python3 on my PC is 3.9 but I did pyenv local 3.8.2 here, and poetry does not complain about that.
But I think it's strange to see python39 in the messages:
  File "C:\Program Files\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)

Console log (have split the first line for readability):
C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\pybricksdev\pybricksdev>
poetry run pybricksdev dual-boot C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\primehub-firmware_for_dualb
oot_test.zip
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\bert.grijshuid\Downloads\Lego\Pybricks\pybricksdev\pybricksdev\pybricksdev\cli\__init__.py", line 10, in <module>
    import validators
ModuleNotFoundError: No module named 'validators'

This goes much further than my rudimentary knowledge of python ;-)

I don't recommend using pyenv on windows. The default installer comes with the Python Launcher for Windows which makes things easier.
Assuming the launcher is installed, you can run py --list-paths to see the full paths of all installed Python versions. Then use poetry env to set the Python path for Poetry to the path to the 3.8.x install.

I don't recommend using pyenv on windows. The default installer comes with the Python Launcher for Windows which makes things easier.
Assuming the launcher is installed, you can run py --list-paths to see the full paths of all installed Python versions. Then use poetry env to set the Python path for Poetry to the path to the 3.8.x install.

You can also run poetry env info to see what Poetry is currently using.

You can also run poetry env info to see what Poetry is currently using.

@laurensvalk
I tried this on my Win 10 PC which has Python 3.8 and previous version of pybricksdev installed. So I used the "update" option.
At first the "poetry install" step failed, but then I recalled having to remove .venv directory and poetry.lock file first.
After doing that, the poetry install worked, and then I was able to install the hub firmware using the command you gave and USB connection.
The hub is working fine again using BLE and VS Code after a reboot into Pybricks mode.
Thanks for working on this.
Much better than having to use the LEGO app  ;0)

@laurensvalk
I tried this on my Win 10 PC which has Python 3.8 and previous version of pybricksdev installed. So I used the "update" option.
At first the "poetry install" step failed, but then I recalled having to remove .venv directory and poetry.lock file first.
After doing that, the poetry install worked, and then I was able to install the hub firmware using the command you gave and USB connection.
The hub is working fine again using BLE and VS Code after a reboot into Pybricks mode.
Thanks for working on this.
Much better than having to use the LEGO app  ;0)

I don't recommend using pyenv on windows. The default installer comes with the Python Launcher for Windows which makes things easier.
Assuming the launcher is installed, you can run py --list-paths to see the full paths of all installed Python versions. Then use poetry env use <path> to set the Python path for Poetry to the path to the 3.8.x install.
Or if you installed Python from the Windows Store, you should be able to run poetry env use python38.

Thanks, David.
That helps to get rid of the python39 part. So a more consistent environment.
Now onto the post of  @johnscary-ev3

I don't recommend using pyenv on windows. The default installer comes with the Python Launcher for Windows which makes things easier.
Assuming the launcher is installed, you can run py --list-paths to see the full paths of all installed Python versions. Then use poetry env use <path> to set the Python path for Poetry to the path to the 3.8.x install.
Or if you installed Python from the Windows Store, you should be able to run poetry env use python38.

Thanks, David.
That helps to get rid of the python39 part. So a more consistent environment.
Now onto the post of  @johnscary-ev3

Thanks everyone for your quick responses! So it looks like we’ve got it working on Linux, Mac, and Windows, and for several hubs as well. That’s what I was after, thanks!
Don’t worry about poetry on Windows for this Bert - if it was working on Linux for you then that’s fine.
This was more about getting some feeling for whether this installation approach is a good idea. Both technically and the user experience. It seems that the answer is yes, so now we can consider doing it properly in Pybricks Code, instead of hacking around with pybricksdev.

Thanks everyone for your quick responses! So it looks like we’ve got it working on Linux, Mac, and Windows, and for several hubs as well. That’s what I was after, thanks!
Don’t worry about poetry on Windows for this Bert - if it was working on Linux for you then that’s fine.
This was more about getting some feeling for whether this installation approach is a good idea. Both technically and the user experience. It seems that the answer is yes, so now we can consider doing it properly in Pybricks Code, instead of hacking around with pybricksdev.

Thanks everyone for your quick responses! So it looks like we’ve got it working on Linux, Mac, and Windows, and for several hubs as well. That’s what I was after, thanks!
Don’t worry about poetry on Windows for this Bert - if it was working on Linux for you then that’s fine.
This was more about getting some feeling for whether this installation approach is a good idea. Both technically and the user experience. It seems that the answer is yes, so now we can consider doing it properly in Pybricks Code, instead of hacking around with pybricksdev.

Thanks, Laurens, I will not worry about poetry.
So, awaiting the next test situation ;-)

Thanks everyone for your quick responses! So it looks like we’ve got it working on Linux, Mac, and Windows, and for several hubs as well. That’s what I was after, thanks!
Don’t worry about poetry on Windows for this Bert - if it was working on Linux for you then that’s fine.
This was more about getting some feeling for whether this installation approach is a good idea. Both technically and the user experience. It seems that the answer is yes, so now we can consider doing it properly in Pybricks Code, instead of hacking around with pybricksdev.

Thanks, Laurens, I will not worry about poetry.
So, awaiting the next test situation ;-)

Can I make another request? :smile:
It's nothing much yet, but can you test that you are able to connect and toggle the lights of the hub using this page?
https://beta.pybricks.com/
Make sure USB is connected and you are booted into the stock firmware.

Can I make another request? 😄

naughty: Hi hi Laurens, you just did 😃 end-naughty
Sure, will look into it tomorrow.

@laurensvalk
This worked on my Win 10 PC, but first I had to Enable this Chrome Flags setting:
Experimental Web Platform features
Enables experimental Web Platform features that are in development. – Mac, Windows, Linux, Chrome OS, Android
#enable-experimental-web-platform-features

Sure will look into it tomorrow.

Sorry, Laurens, I cannot keep my promise...
Curiosity took over...
Just tested (win10 - MSEDGE)
MSedge  did not need any experimental setting
Saw this:

And Light-switch works
:smile:

Thanks both for the quick response.
And good to know about Microsoft Edge too, thanks for trying!

On my win 10 using Edge I got this error which is why I tried Chrome:

My previous post was using the Spikehub
On MSEDGE Versie 88.0.705.56 (Officiële build) (64-bits)
The enable-experimental-web-platform-features
were already enabled, via edge://flags/
Complication
Now trying to do the same with the inventorhub does not succeed.
Also tried on Chrome (enabled enable-experimental-web-platform-features)

web page comes up ok.
plug in USB - hub auto boots.
click connect
the serial connect pop-up comes up
select the serial com port and connect
Look slike nothing happens.

I see more than one serial port in the select list:

On the console I see:
script.js:63 Uncaught (in promise) DOMException: No port selected by the user.
connectButtonHandler @ script.js:63
async function (async)
connectButtonHandler @ script.js:59
script.js:198 Uncaught (in promise) DOMException: Failed to execute 'close' on 'SerialPort': The port is already closed.
    at disconnect (https://beta.pybricks.com/script.js:198:16)
    at HTMLButtonElement.connectButtonHandler (https://beta.pybricks.com/script.js:53:15)
disconnect @ script.js:198
connectButtonHandler @ script.js:53
async function (async)
connectButtonHandler @ script.js:53
script.js:63 Uncaught (in promise) DOMException: Failed to open serial port.
connectButtonHandler @ script.js:63
async function (async)
connectButtonHandler @ script.js:59

No idea if this is any help.
Did this both on MSEDGE and chrome
opened the message:
script.js:63 Uncaught (in promise) DOMException: Failed to open serial port.
connectButtonHandler @ script.js:63
async function (async)
connectButtonHandler @ script.js:59

Hmm, the inventor app does not connect too via USB . . . . . .
Going to debug that first

Chrome Version 88.0.4324.96 (Official Build) (64-bit) on Ubuntu working with 51515 Robot Inventor hub

@BertLindeman, I have that problem also sometimes.
But I've always had this with the SPIKE/Inventor hub for some reason, causing even a screen terminal not to work, or the regular app. When things do connect, I've also sometimes noticed the hub spitting out a few characters within the first couple of minutes after boot.
I have not yet investigated what that is, but it doesn't seem related to the browser per se, as it seems to happen with all apps.

@BertLindeman
Assuming you already have the pybricks udev rules, try adding these too:
# Extra TTY rules
ATTRS{idVendor}=="0694", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0694", ENV{MTP_NO_PROBE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0694", MODE:="0666"

I found them here, and things started working afterward. @dlech may be able to chime in to say which of these is really needed and which is not.

@BertLindeman
Assuming you already have the pybricks udev rules, try adding these too:
# Extra TTY rules
ATTRS{idVendor}=="0694", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0694", ENV{MTP_NO_PROBE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0694", MODE:="0666"

I found them here, and things started working afterward. @dlech may be able to chime in to say which of these is really needed and which is not.

Most of the time I use windows as it's almost constantly within reach.
AND I forgot to say so in the post above. Sorry  :smile:
Will wait for response of @dlech and may then add them to my Linux Mint system.
Thank you.

ATTRS{idVendor}=="0694", ENV{ID_MM_DEVICE_IGNORE}="1"

This one makes sense.

ATTRS{idVendor}=="0694", ENV{MTP_NO_PROBE}="1"

Does it still work if we leave this one out?

KERNEL=="ttyACM*", ATTRS{idVendor}=="0694", MODE:="0666"

This should already be taken care of if the user is in the dialout group, but I suppose it wouldn't hurt to add it. Although I would probably use the more generic SUBSYSTEMS=="tty" instead of KERNEL=="ttyACM*".

If anyone is feeling adventurous, there's a bit more to test now.... :rocket:

Early experience on win10 + MSEDGE:

No indication of LEGO Technic Large Hub in FS mode see the screenshot above.
Next after selecting a firmware zip file the butInstall is not enabled, see below:

Looks like it is possible to connect the hub from more than one browser.
Or even from more than one tab in a browser.
But that is at this stage not of interest I think.

@laurensvalk  do we need the dual-boot zip file for this, not a recent firmware zip?

Any fairly recent zip should work. Also make sure that you boot into the standard firmware to try this.

Used
C:\Users\bert.grijshuid\Downloads\Lego\Pybricks>unzip -l primehub-firmware_20210128.zip
Archive:  primehub-firmware_20210128.zip
 Length      Date    Time    Name
---------  ---------- -----   ----
  301260  2021-01-27 16:13   download_pybricks.llsp
  301263  2021-01-27 16:13   download_pybricks.lms
  208816  2021-01-27 16:13   firmware-base.bin
  209596  2021-01-27 16:13   firmware-dual-boot-base.bin
     283  2021-01-27 16:13   firmware.metadata.json
   13877  2021-01-27 16:13   install_pybricks.llsp
   13880  2021-01-27 16:13   install_pybricks.lms
     111  2021-01-27 16:13   main.py
   24248  2021-01-27 16:13   ReadMe_OSS.txt
---------                     -------
 1073334                     9 files

This contains the "firmware-dual-boot-base.bin" that the script wants. I think.
Another possibility is the file type?
From the console - text copy:
File {name: "primehub-firmware_20210128.zip", lastModified:<PHONE_NUMBER>183, lastModifiedDate: Thu Jan 28 2021 20:00:34 GMT+0100 (Midden-Europese standaardtijd), webkitRelativePath: "", size: 676712, …}lastModified:<PHONE_NUMBER>183lastModifiedDate: Thu Jan 28 2021 20:00:34 GMT+0100 (Midden-Europese standaardtijd) {}name: "primehub-firmware_20210128.zip"size: 676712type: "application/x-zip-compressed"webkitRelativePath: ""__proto__: File
script.ts:81

type reported here application/x-zip-compressed the script looks for application/zip

Also make sure that you boot into the standard firmware to try this.

If the hub is OFF and you plug-in USB. the hub automatically boots LEGO firmware.
A handy feature :smile:

Yes, that’s the right file.

Ran the test on Linux Mint - OK

had to add my user to the dialout group and restart the session to allow the use of /dev/ttyACM1
saw the LEGO? firmware downloaded as  firmware-backup-v<IP_ADDRESS>4-b0c335.bin
auto-reboot OK
LEGO boot OK
Pybricks boot OK

So no problem on Linux Mint 20.1

@BertLindeman, the issue on Windows might be resolved now.

Win10  - MS Edge Versie 88.0.705.63 (Officiële build) (64-bits)
Firmware update to Spike prime hub.
Installation progress: 100%

Ready to install.
Installing now...
Something went wrong. Please refresh the page and try again.

Could not copy the messages as text, so as a screenshot:

Took USB out and rebooted the hub. The hub neatly flashes red-green-blue and reboots ok.
Firmware reported as
('primehub', '3.0.0b1', 'v3.0.0b1-17-g576d0897 on 2021-02-08')

Will do the refresh as the message states . . .
And report in the next post.

Should be fixed now. Maybe do a hard refresh (CTRL+F5) to make sure you have the latest version of the page.

After click on connect  MSedge crashed.
Microsoft Edge is updated in the meantime
Versie 88.0.705.68 (Officiële build) (64-bits)
retrying:
SAME result:
After click on connect  MSedge crashed.
(Typing this in MSedge, so let me save this comment)

Did it not crash before?

No crash before.
Now "did" Chrome Version 88.0.4324.150 (Official Build) (64-bit) and that went all OKE including reboot to install the new firmware.
Page was like this after install:
Connect the hub via USB.
Click Connect and select the LEGO Technic Large Hub in FS mode.
Click Install to begin the update.
 If you like, download a backup of the original firmware: firmware-backup-v<IP_ADDRESS>4-b0c335.bin
If needed, start over by refreshing the page.
Installation progress: 100%

Ready to install.
Creating back up of original firmware...
Copying dual-boot firmware to the hub...
File transfer complete. The hub will now reboot to install the new firmware!

Will reboot PC and retry MSEDGE after that.

Problem in MSEDGE is not related to pybricks.
After a normal start of edge a close of a tab crashed also.
retry on msedge is good:
Connect the hub via USB.
Click Connect and select the LEGO Technic Large Hub in FS mode.
Click Install to begin the update.
 If you like, download a backup of the original firmware: firmware-backup-v<IP_ADDRESS>4-b0c335.bin
If needed, start over by refreshing the page.
Installation progress: 100%

Ready to install.
Creating back up of original firmware...
Copying dual-boot firmware to the hub...
File transfer complete. The hub will now reboot to install the new firmware!

Console as screenprint:

That looks good. Thank you!


Regenerate from latest CRP Spec

They just merged (minutes ago) a fix to the Compute spec that I need in Kubernetes.
Is there any chance that this could be included in the pending V9? https://github.com/Azure/azure-rest-api-specs/pull/980

@marstr

Absolutely.
I created the PR so that folks could get a heads up about breaking changes. I'll wait at least two weeks before pulling it in. I'll keep re-generating until that happens.
-Martin

Gentle ping, any chance I can convince you to regenerate and push sometime this week? Thanks!

I’ll regenerate and push to the marstr/v9 today. We’d like to keep it out of master for another week so that people have time to get a heads up about breaking changes.
-Martin
From: Cole Mickens<EMAIL_ADDRESS>Sent: Wednesday, March 15, 2017 6:50 PM
To: Azure/azure-sdk-for-go<EMAIL_ADDRESS>Cc: Martin Strobel<EMAIL_ADDRESS>Assign<EMAIL_ADDRESS>Subject: Re: [Azure/azure-sdk-for-go] Regenerate from latest CRP Spec (#570)
Gentle ping, any chance I can convince you to regenerate and push sometime this week? Thanks!
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-sdk-for-go/issues/570#issuecomment-286933928, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AKryXl49ng90bIyvYO_IUkh10hvFkiMuks5rmJVLgaJpZM4MYx3z.

Done. (A little later than I mentioned yesterday, my apologies.)

Ping @colemickens can you verify if this is resolved on your side?

I'm working on it, but KubeCon is interrupting me. I'll try to reply back in the next 48 hours.

Let's close this out, the updated generated code has been pushed to master. If there's an issue with it, it's almost surely with the swagger spec...


Composite key for relations

Describe the feature
https://github.com/vuex-orm/vuex-orm/issues/295
Additional information

[ ] Would you be willing to help implement this feature?
[ ] Could this feature be implemented as a module?

Final checks

[X] Check existing discussions and issues.

And again a legacy feature/bug 😄 .


allow-clear css bug.

sorry for this. but the v0.9.5 has a bug in select.css
like the example file: bootstrap.html,
if i add
allow-clear="true"

to
<ui-select-match placeholder="Select or search a person in the list...">{{$select.selected.name}}</ui-select-match>

the style is show as active, and the clear x can click.

+1

Is this still an issue? Can a Plunker be posted with reproduction based on the latest release?
Can more information be added that refers to more current code?


Read local IP address by method, not from cfg

resolves #4

@chipchilders Is dreddbot not updated yet?  I see that @voelzmo has his membership of sap-cloudfoundry set to public.

There was an issue with deploying dreddbot changes that is now resolved. (I hope)

On May 4, 2015, at 10:47 AM, dieucao<EMAIL_ADDRESS>wrote:
@chipchilders Is dreddbot not updated yet? I see that @voelzmo has his membership of sap-cloudfoundry set to public.
—
Reply to this email directly or view it on GitHub.

@dieucao @chipchilders seems like @cfdreddbot now recognizes that we have signed the CLA, see this PR for example: https://github.com/cloudfoundry/bosh-init/pull/29

@voelzmo Cool.  We hope to get to reviewing these by the end of the week, but it might go into later next week due to summit.

The BOSH team thinks this is better fixed on their end.
https://www.pivotaltracker.com/story/show/94906096


Add markdown smoke tests for changing text size and inserting links

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.005%) to 42.38%

Totals

Change from base Build<PHONE_NUMBER>:
0.005%

Covered Lines:
27496

Relevant Lines:
60659

💛  - Coveralls

Build failure isn't related to any of my changes, so I'll go ahead and merge it.


Type of cat (angry/social) is missing from create page

Select create new entry for a cat.  In the page the type of cat is missing. It is showen when selection the cat overview

It is now added to the create superkat page

checked


Bug

Template
Please write your blade template that occurs issues.
Context (Environment)

write your environment

Description

Any other informations

close

Closed by #372


Would it be possible to have a example showing how to manage multiple pages

I've been using SCFFLD to setup marketing landing pages. It would be much better if I could organize them into a site. Thank you for the project template I really enjoy using it.

Hey, nice to see someone else using scffld!
You could organize your code so you would have multiple entry points.
Each *.pug file directly in /src folder is already compiled to its' own html file. These pug files could extend a required layout for the page and in _styles you could setup multiple css entry points to build a separate css file for each site. This way you would have control over the styles for each site, but still would be able to re-use modules across the sites.
Something like this:
├── src
|   ├── _layouts
|   |   └── base.pug
|   |   └── full-width.pug
|   |   └── sidebar-left.pug
|   |   └── sidebar-right.pug
|   ├── _styles
|   |   └── page-one
|   |      └── main.sass
|   |   └── page-two
|   |      └── main.sass
|   └── page-one.pug             # Page one template
|   └── page-two.pug             # Page two template

and in config.json:
"styles": {
    "src": "_styles/page-*",
    "dist": "css"
},

Is this what you're trying to achieve?

Yes I'll try this setup. I use scffld all the time with material design
components.
Thanks!
On Thu, Sep 27, 2018 at 2:57 PM Matej Svajger<EMAIL_ADDRESS>wrote:

Hey, nice to see someone else using scffld!
You could organize your code so you would have multiple entry points.
Each *.pug file directly in /src folder is already compiled to its' own
html file. These pug files could extend a required layout for the page and
in _styles you could setup multiple css entry points to build a separate
css file for each site. This way you would have control over the styles for
each site, but still would be able to re-use modules across the sites.
Something like this:
├── src
|   ├── _layouts
|   |   └── base.pug
|   |   └── full-width.pug
|   |   └── sidebar-left.pug
|   |   └── sidebar-right.pug
|   ├── _styles
|   |   └── page-one
|   |      └── main.sass
|   |   └── page-two
|   |      └── main.sass
|   └── page-one.pug             # Page one template
|   └── page-two.pug             # Page two template
and in config.json:
"styles": {
"src": "_styles/page-*",
"dist": "css"
},
Is this what you're trying to achieve?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/matejsvajger/scffld/issues/3#issuecomment-425256240,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AH2Y7BlfvkXgdqOI5x8Ev8rVTBuUo9uGks5ufUncgaJpZM4WYIpW
.

How could I change settings so the site compiles more then one sass file? I'm trying to load a grid.css and main.css into my pages.

I changed the style css entries in both package and config json files to be "**" , that seemed to work.

Is it possible to do same with javascript? Have multiple main.js files for different layouts. Im working on 2 different projects rebranding the same front-end framework for both.


bazel: remove automatic run under for stack decoder

This is causing various issues. Devs can put it in a local .bazelrc.

LGTM

It's unlikely to get difference between change the local .bazelrc and this pull request.
But I do make a behavior change with previous pull request, which merge the stderr and stdout into the stdout of stack decoder, thus the test log can get all of them.

The change to merge stderr and stdout (thanks - I didn't know that tests went to stdout initially) is still in place.


mgmt, fix deployment npe when beginCreateAsync with withExistingResourceGroup

Description
fix https://github.com/Azure/azure-sdk-for-java/issues/31064
code in https://github.com/Azure/azure-sdk-for-java/pull/31087/commits/6ed886184f305ad833cb33e09882d0002604a7f2
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

API change check
API changes are not detected in this pull request.


VSCode browser sync - how to configure?

Hi! Thanks for the extension, seemed quicker than setting up browser sync for some of my projects.
Is there an option to configure the config of browsersync? I'd like to set notify: false but i don't know where to look in VSCode to set it up, could you help perhaps?

@Worie, added functionality to pass options in this PR, https://github.com/remicass/vscode-exts/pull/24

@Worie<EMAIL_ADDRESS>should solve your issues 😄!

nice! thanks!


Added the now used domain for Hochschule Aalen

changed the old one to symlink to the new one

@jannis-a Pull request merged. Thank you!


[dvsim] Generate report as json

This PR shall extend dvsim to generate reports in machine-readable json format, in addition to the existing human-readable formats.
TODOs
This is a first functional prototype, and the following tasks are still to be done:

[x] Report failure buckets.
[x] Cleanly convert JobTime objects to numeric values with a target unit.
[x] Report unmapped tests.
[ ] Make sure JSON results get published on the webserver.

The testplan stage summary is implemented, but it is only output when the simulation configuration has the map_full_testplan attribute set (as with the HTML output). Similarly, coverage only gets reported when dvsim is run with -c, which matches the behavior of the HTML report generation.

Thanks for working on that Andreas.
As far as I understood, you are generating the json from the .md file, I think that at this stage some peace of data has been discarted already, such as the logs messages and error messages.
I quickly looked the functionFormalCfg.py->_gen_results() and noted that the .md file is generated from a hjson file outputed by the simulation tool.
So can we generate this new json from the original hjson and transport all the data available?

Sorry, I made a mistake, there's a few functions with the name _gen_results. But it seems that the one I was mentioning is not even used.
https://github.com/lowRISC/opentitan/blob/b752b139ce7097086e41fd452fc3064fee3313a8/util/dvsim/FormalCfg.py#L159
So never mind.

Ah, I see! No worries, it also took (and still takes) me some time to get used to the code structure.

Okay, so the final step (I think) for getting this done will be to implement the generation of JSON reports for FlowCfg, which AFAIK are the outputs of the nightlies. Inputs on the existing software are already greatly appreciated!

JSON reports are now also correctly generated for DVSIM runs on top_earlgrey_sim_cfgs.hjson, which is the config that is used for the nightlies. The last point (I think) that has to be solved is the publication on the web server.

i am going to run Lint tool with this PR and let you know why the kokoro failed.

Thanks @cindychip, though it could be that Kokoro is invoked through dvsim's LintCfg, like Verible which currently fails in CI checks. I just saw that and will fix it

Great @andreaskurth, I think that might be the issue.
Also one silly question (my python knowledge is very limited)... Would it be easier if we use or implement a generic html to json converter function/package? Then that would be used for all tools within dvsim to generate html and json package?
Or for future improvement, maybe we could gather the complete results in MD format first, then have two converters:
1). MD -> HTML
2). MD-> JSON

Also one silly question (my python knowledge is very limited)... Would it be easier if we use or implement a generic html to json converter function/package? Then that would be used for all tools within dvsim to generate html and json package?
Or for future improvement, maybe we could gather the complete results in MD format first, then have two converters: 1). MD -> HTML 2). MD-> JSON

Thanks for this suggestion. I agree that it would be best to assemble one report in a canonical representation and then generate the different mark-ups (or mark-downs, heh) from it. I think it would make most sense to have a Python dict (a collection of key-value pairs) as canonical representation of the report. Converting that to a JSON string is trivial, and it could be combined with a template file to produce a Markdown (which could then be converted to HTML as we do now). I don't think that's super urgent, but I would create an issue to track this enhancement. WDYT?

I'm going ahead with merging this, so we get first results in the upcoming nightlies and can address any problems that may surface. I'm happy to follow up on the open discussion above in a separate PR if necessary


hal: ti: HwiP_zephyr.c blocks generic AUX interrupt (plus several others)

Describe the bug
Zephyr's platform adaptation layer for TI's CC13xx/CC26xx MCU assigns an exclusive interrupt handler for the combined "AUX_COMB" interrupt. It seems that this excludes custom drivers from most of the MCU's low-power peripherals (low power comparators, timers, time-to-digital converter, etc.).
I'm not very deep into the CC13xx/CC26xx adaptation layer yet so maybe I'm just overlooking something? But if it turns out to be a real problem I'll be able to provide a patch once we settle on a solution.
See the following code snippet
/hal_ti/blob/4e0e053f5ea413ef0cb20000729038d921ac2746/simplelink/kernel/zephyr/dpl/HwiP_zephyr.c#L223
	case INT_AUX_COMB:
		sl_AUX_COMB_cb.cb = hwiFxn;
		sl_AUX_COMB_cb.arg = arg;
		obj->cb = &sl_AUX_COMB_cb;
		irq_connect_dynamic(INT_AUX_COMB - 16, priority, sl_isr, &sl_AUX_COMB_cb, 0);
		break;

The affected peripherals can be seen here:
dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/<IP_ADDRESS>/exports/docs/driverlib_cc13xx_cc26xx/cc13x2_cc26x2/register_descriptions/CPU_MMAP/AUX_EVCTL.html#EVTOMCUFLAGS)
To Reproduce
Assigning a custom interrupt to the AUX_COMB IRQ will break zephyr's PM adaptation layer for CC13xx/CC26xx.
See https://github.com/zephyrproject-rtos/hal_ti/blob/b6ca1ace9024afa072c0ff8294d04b8d9fe4aede/simplelink/source/ti/drivers/power/PowerCC26X2.c#L343
Expected behavior
It should be possible to wrap or extend the platform adaption layer's ISR. As other IRQ numbers are also being shadowed by the same method it might be a good idea to find a solution that can be extended to those IRQ numbers if needed.
Impact
Most low power peripherals cannot be used as intended (except for the ADC which has its own IRQ number). Actively polling the corresponding event flags instead does not seem like a good option as the MCU should be able to sleep while low-power peripherals are doing their thing.
Logs and console output
n/a
Environment (please complete the following information):
current Zephyr mainline
Any ideas how this could be fixed?

See #25216 for a similar problem / some additional context.

Some ideas for discussion:

HwiP_construct/destruct/setFunc() might check whether an interrupt has already been assigned before and (un)wrap it. HwiP_setPriority() may be changed to only keep the highest requested priority for all ISRs.
It seems that Power_init() is only called once during the initialization of the PM. The AUX_COMB interrupt is used there to calibrate RC oscillators. It could release the interrupt handler once calibration is done. I've no idea how this could be synchronized with other drivers' access to the same IRQ, though.

@vaishnavachath maybe?

@fgrandel Thanks for reporting the issue, I think the concerns you mentioned are genuine and needs to be fixed, I will try to reproduce this issue locally and come up with some inputs for the discussion over the weekend, as of now I do not have a clear idea on what should be right fix.
The following approach you mentioned can be used to workaround the situation for AUX events if I understand correctly?

We could reserve the programmable interrupt (IRQ30) or one of the AON programmable interrupts (AON_PROGx) for AUX events.

The following approach you mentioned can be used to workaround the situation for AUX events if I understand correctly?

We could reserve the programmable interrupt (IRQ30) or one of the AON programmable interrupts (AON_PROGx) for AUX events.

@vaishnavachath Yes, absolutely. This is how we're trying to work around the issue for now.

@vaishnavachath I managed to build a working PoC on our side that works around the issue by routing TDC_DONE event via AON event fabric to AON_PROG0 and from there via MCU event subscriber to Interrupt 29 which is connected to that event. Works perfectly.
The question remains, though, how interrupts could be shared as there are many more event lines than available interrupt lines on the CC13/26xx platform - so being able to demux those interrupts somehow would be great if more drivers will be added. But no hurry - we have a working solution on our side and no need to rush.

See #49379 for a possible upcoming fix.


Daemon is off but redirect is still enabled

I'm not being able to go to ipfs.io urls because the extension keeps redirecting me, even though the daemon is off.

Is this intended?
I'm using version 2.1.0

Is Automatic Mode enabled on Preferences screen?

It is:


Issues related to swagger documentation

We are facing some issue. The properties of json are in camel case whereas it should have been the way they are defined in the entity.
By default the name of api controller also appears in camel case
The sample application (SwaggerOdataWebApiSample) create by you also has this issue.
Any pointers how to resolve this?
Entity :
public class Assessment
{
public int Id { get; set; }
public string AssessmentName { get; set; }
public long? AssessmentIdentifier { get; set; }
}
We did following setting for Default PropertyNames Convension still it displays Entity Propertis in Camel Case in API responce.
//httpConfiguration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
API Response structure:
{
Id :123
assessmentName:"Test"
assessmentIdentifier:"12345"
}
Issue No 2:
Package Required : Swashbuckle.OData
We are using Swashbuckle.OData package to display Odata Query option on Swagger document. Following configuration is done.
configuration.EnableSwagger(SwaggerDocsRoute, swagger =>
{
swagger.CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, swagger,configuration).Configure(odataConfig =>
{
odataConfig.IncludeNavigationProperties();
}));
}).EnableSwaggerUi(SwaggerUiRoute, swagger => swagger.EnableDiscoveryUrlSelector());
After Odata Versiong ODataSwaggerProvider throws Exception -
Additional information: Value cannot be null.
{"Value cannot be null.\r\nParameter name: routeData"}
at System.Net.Http.HttpRequestMessageExtensions.SetRouteData(HttpRequestMessage request, IHttpRouteData routeData)
at Swashbuckle.OData.Descriptions.SwaggerRouteStrategy.CreateHttpRequestMessage(HttpMethod httpMethod, Operation potentialOperation, SwaggerRoute potentialSwaggerRoute, HttpConfiguration httpConfig) in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\Descriptions\SwaggerRouteStrategy.cs:line 105
at Swashbuckle.OData.Descriptions.SwaggerRouteStrategy.GetActionDescriptors(HttpMethod httpMethod, Operation potentialOperation, SwaggerRoute potentialSwaggerRoute, HttpConfiguration httpConfig) in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\Descriptions\SwaggerRouteStrategy.cs:line 67
at Swashbuckle.OData.Descriptions.SwaggerRouteStrategy.GetActionDescriptors(SwaggerRoute potentialSwaggerRoute, HttpConfiguration httpConfig) in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\Descriptions\SwaggerRouteStrategy.cs:line 52
at Swashbuckle.OData.Descriptions.SwaggerRouteStrategy.<>c__DisplayClass3_0.b__1(SwaggerRoute potentialSwaggerRoute) in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\Descriptions\SwaggerRouteStrategy.cs:line 41
at System.Linq.Enumerable.d__162.MoveNext()    at System.Linq.Enumerable.<SelectManyIterator>d__162.MoveNext()
at System.Linq.Enumerable.d__631.MoveNext()    at System.Linq.Enumerable.<SelectManyIterator>d__162.MoveNext()
at System.Collections.Generic.List1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)    at Swashbuckle.OData.CollectionExtentions.ToCollection[T](IEnumerable1 source) in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\CollectionExtentions.cs:line 77
at Swashbuckle.OData.Descriptions.ODataApiExplorer.GetApiDescriptions() in C:\Users\rbeauchamp\Documents\GitHub\Swashbuckle.OData\Swashbuckle.OData\Descriptions\ODataApiExplorer.cs:line 43
at System.Lazy`1.CreateValue()
Issue No -3
Compile time error is occured for Odata ApiExplorer.
{"Object reference not set to an instance of an object."}
at Microsoft.Web.Http.Description.TypeExtensions.<>c__DisplayClass10_0.b__0(IEdmStructuredType t)
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source, Func2 predicate)
at Microsoft.Web.Http.Description.TypeExtensions.GetStructuredType(Type type, IEdmModel model, IAssembliesResolver assembliesResolver)
at Microsoft.Web.Http.Description.TypeExtensions.SubstituteIfNecessary(Type type, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver, ModelTypeBuilder modelTypeBuilder)
at Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptionFromBinding(HttpParameterBinding parameterBinding, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver)
at Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptions(HttpActionDescriptor actionDescriptor, IHttpRoute route)
at Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteActions(IHttpRoute route, HttpControllerDescriptor controllerDescriptor, IHttpActionSelector actionSelector, Collection1 apiDescriptions, ApiVersion apiVersion)    at Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteControllers(IDictionary2 controllerMappings, IHttpRoute route, ApiVersion apiVersion)
at Microsoft.Web.Http.Description.VersionedApiExplorer.InitializeApiDescriptions()
at System.Lazy1.CreateValue() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Lazy1.get_Value()
at Microsoft.Web.Http.Description.VersionedApiExplorer.get_ApiDescriptions()

Issue 1
OData doesn't use the default JSON MediaTypeFormatter; it uses its own. Camelcase is very common for JSON. I suspect you are using the configuration in the examples I provide, which enable this. Simply remove this configuration. For example:
var modelBuilder = new VersionedODataModelBuilder( configuration )
{
    // configuration shown in example using camelcase
    // ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),

    // default configuration using source case, which usually Pascalcase
    ModelBuilderFactory = () => new ODataConventionModelBuilder(),

    // remaining configuration ...
};

Issue 2
I really know very little about the Swashbuckle.OData library or project. I don't use it or support it. You should have everything you need with the OData API versioning, OData API Explorer, and vanilla Swashbuckle. If there is something not supported that you need, I'd be interested in hearing about it to determine if a new feature is required. My recommendation would be to remove Swashbuckle.OData all together. It shouldn't be needed.
Issue 3
I'm not sure what this is. Does it repro in the example that you previously provided? If you can provide a copy of the most version of that sample where the scenario repros, I'll take a look. It's possible there's a bug.

Were you able to get things working? Issue 3 turned out to be a real issue reported by another user. The issue only occurs when you host on IIS. You made no mention of that, but I assume you must be because that's the only case where I've see this occur. The latest version of the package - Microsoft.AspNet.OData.Versioning.ApiExplorer (v1.2.2) fixes the issue.
Let me know if you have any other issues or questions.

It seems that much of this issue is a duplicate of #302 and you have resolved your issue. Should that not be the case, feel free to come back. Thanks.

We are still getting below exception after using the latest package.
If we use DTOs instead on EF entities the issue does not occur
Runtime error occurs even after updating the package Microsoft.AspNet.OData.Versioning.ApiExplorer to v1.2.2
The code throws exception in SwaggerConfig at: apiExplorer.ApiDescriptions
The code works when there are only Dtos in the ODataModelBuilder. However it throws exception when there are entities.
Code Snippet (SwaggerConfig) :
public static void Register(HttpConfiguration configuration)
{
if (!IsRestApiDocsEnabled())
return;
        var apiExplorer = configuration.AddODataApiExplorer(
            options =>
            {
                options.GroupNameFormat = "'v'VVV";
               options.SubstituteApiVersionInUrl = true;
            });

        configuration.EnableSwagger(SwaggerDocsRoute, swagger =>
                {
                    swagger.MultipleApiVersions(
                    (apiDesc, version) =>
                    {
                    },
                info =>
                      {
                          foreach (var group in apiExplorer.ApiDescriptions)
                          {
                              info.Version(group.Name, $"Optimist 8 REST Integration Services {group.ApiVersion}");
                          }
                      });
                    swagger.PrettyPrint();
                    swagger.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
                    swagger.OperationFilter<AuthOperationFilter>();
                    swagger.OperationFilter(() => new AddHeaderParameter());
                    swagger.UseFullTypeNameInSchemaIds();
                }).EnableSwaggerUi(SwaggerUiRoute, swagger => swagger.EnableDiscoveryUrlSelector());

    }

Exception Detail:
System.NullReferenceException was unhandled by user code
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=Microsoft.AspNet.OData.Versioning.ApiExplorer
StackTrace:
at Microsoft.Web.Http.Description.TypeExtensions.<>c__DisplayClass10_0.b__0(IEdmStructuredType t)
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source, Func2 predicate)
at Microsoft.Web.Http.Description.TypeExtensions.GetStructuredType(Type type, IEdmModel model, IAssembliesResolver assembliesResolver)
at Microsoft.Web.Http.Description.TypeExtensions.SubstituteIfNecessary(Type type, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver, ModelTypeBuilder modelTypeBuilder)
at Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptionFromBinding(HttpParameterBinding parameterBinding, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver)
at Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptions(HttpActionDescriptor actionDescriptor, IHttpRoute route)
at Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteActions(IHttpRoute route, HttpControllerDescriptor controllerDescriptor, IHttpActionSelector actionSelector, Collection1 apiDescriptions, ApiVersion apiVersion)        at Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteControllers(IDictionary2 controllerMappings, IHttpRoute route, ApiVersion apiVersion)
at Microsoft.Web.Http.Description.VersionedApiExplorer.InitializeApiDescriptions()
at System.Lazy1.CreateValue()        at System.Lazy1.LazyInitValue()
at System.Lazy`1.get_Value()
at Microsoft.Web.Http.Description.VersionedApiExplorer.get_ApiDescriptions()

Do you have a repro of this behavior that you can attach/upload/link to? There's clearly some other type of edge case that I'm not seeing. In addition, I notice that your predicate in MultipleApiVersions doesn't test or match anything. It should be testing whether the specified API description matches the specified API version.

I get the behaviour of issue 3 when I have a public property on a model that references a public nested class.
If I add this to a model for example:
` public FileConfiguration File { get; set; }
public class FileConfiguration
{
}`
Stacktrace:
[NullReferenceException: Object reference not set to an instance of an object.]
Microsoft.AspNet.OData.<>c__DisplayClass24_0.b__0(IEdmStructuredType t) +74
System.Linq.Enumerable.FirstOrDefault(IEnumerable1 source, Func2 predicate) +182
Microsoft.AspNet.OData.TypeExtensions.GetStructuredType(Type type, IEdmModel model, IEnumerable1 assemblies) +237    Microsoft.AspNet.OData.TypeExtensions.SubstituteIfNecessary(Type type, IServiceProvider serviceProvider, IEnumerable1 assemblies, ModelTypeBuilder modelTypeBuilder) +194
Microsoft.AspNet.OData.TypeExtensions.SubstituteIfNecessary(Type type, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver, ModelTypeBuilder modelTypeBuilder) +120
Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptionFromBinding(HttpParameterBinding parameterBinding, IServiceProvider serviceProvider, IAssembliesResolver assembliesResolver) +217
Microsoft.Web.Http.Description.ODataApiExplorer.CreateParameterDescriptions(HttpActionDescriptor actionDescriptor, IHttpRoute route) +379
Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteActions(IHttpRoute route, HttpControllerDescriptor controllerDescriptor, IHttpActionSelector actionSelector, Collection1 apiDescriptions, ApiVersion apiVersion) +325    Microsoft.Web.Http.Description.ODataApiExplorer.ExploreRouteControllers(IDictionary2 controllerMappings, IHttpRoute route, ApiVersion apiVersion) +774
Microsoft.Web.Http.Description.VersionedApiExplorer.InitializeApiDescriptions() +731

@LuukN2 your scenario might actually be a bug. I don't think I've tested nor have any related scenarios for complex models. That being said, it should be supported. I assume this complex type in your model that has variation by version?
The API explorer compares the model type provided against the EDM. As long as the definitions match, there is no substitution. A substitution occurs when they don't match, at which point the API explorer builds a new, dynamic type that looks like what the EDM says it should be for that version, but is a real type that Swagger can work with. This supplants the that need for you to create a model-per-version.
Assuming that this is a bug in your scenario, the workaround will be to create a version-specific model for Swagger. Lame - I know, but that will unblock you until the fix is out.

@vanikulkarniAtFIS  This thread seems to have gone dark. Either the issue was solved or another resolution was found.
@LuukN2, I'm tracking the substitution issue as #358. I'm not 100% sure if that's your problem. If you have a complex model, then that is the culprit. Feel free to post any additional information and/or a repro on that issue. Thanks.


Service Page - Due Date should open on single click

Service Page - Due Date should open on single click
Currently it opens on double Click

https://www.berrycast.com/conversations/5ed3b3e6-e126-5196-befb-8000f9e21c3f


[WIP] version 6 main features

[x] Generalizes context to be multipart messages
[x] Allows multimodal contexts
[x] Enables caching control on messages
[x] Adjusts flow to allow context to be either packed into system prompt or some separate part of query, so that it can be cached
[ ] Update typing/update litellm types
[ ] Create image context that encodes image to a URL
[ ] Add a PDF reader that uses images instead of text
[x] Deprecate detailed evidence

Moved to #704


get-address test coverage

Issue #22

Have problem with testing this section - https://github.com/Permissionless-Software-Foundation/slp-cli-wallet/blob/master/src/commands/get-address.js#L82 (bitcoin.com backend). Maybe the real command is working but the mock is returning Promise for this.bchjs.Mnemonic.toSeed() not Buffer...

This section of code - https://github.com/Permissionless-Software-Foundation/slp-cli-wallet/blob/master/src/commands/create-wallet.js#L51 cannot be reached at all, because in the flags ( https://github.com/Permissionless-Software-Foundation/slp-cli-wallet/blob/master/src/commands/get-address.js#L149 )  -t = testnet is assigned to other puprose (SLP address).
Suggestion: -s to be used for SLP address generation, so -t can be used as testnet (this is the case in all other commands)

commit# b24b666:

bitcoin.com code removed
-s is used for SLP addresses, -t is back top testnet usage

100 PSF tokens awarded. TXID: 850c083991da03af54396adddc58af2ced69ef6414f87248e546d7ca83735afd

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Wiki possibly out of date for newest VS15 (2017)

Hi, I encountered problem on both my machines when trying to build cpp_redis using methods described for windows build from that repo's wiki. It turned out that the issue was regarded to Winsock2, which is related to this project.
I was getting errors like "undefined external symbol _impl_socket ..." form object files built by tacopie (120+ of them), upon trying to link my project to already built .libs .
It appears that VS15 (VS 2017) and CMake dont get along well, and generated projects miss linkage with ws2_32, that is present in CMakeLists.
Adding it manually via
(tacopie)Project->Properties->Librarian->Additional Dependencies->(input)ws2_32.lib seemed to solve the problem.
Cheers!

Some specifics:
Visual Studio 2017 15.3.0, Visual Studio Tools for CMake 1.0
Project files generated separately by CMake v 3.8.0

Hi,
Thanks a lot for reporting this issue.
As I mostly develop on unix based platform, these are hard to catch errors for me.
I'll add a note in the documentation.
Moreover, I'm also planning to include solutions files in the repository of both tacopie and cpp_redis as some people suggested in the issues, that should solve some CMake related issues.
Best


panic: unexpected output encountered

We've adopted gotestfmt for Go repos in https://github.com/pion, but every now and then a test run fails with:
panic: unexpected output encountered: exit status 1 (Did you use -json on go test?)

goroutine 7 [running]:
github.com/haveyoudebuggedit/gotestfmt/v2/parser.parse(0xc000062480, 0xc0000624e0, 0xc000062540, 0xc0000625a0, 0xc000062600)
	/home/runner/go/pkg/mod/github.com/haveyoudebuggedit/gotestfmt/v2@v2.3.0/parser/parse.go:163 +0x1588
created by github.com/haveyoudebuggedit/gotestfmt/v2/parser.Parse
	/home/runner/go/pkg/mod/github.com/haveyoudebuggedit/gotestfmt/v2@v2.3.0/parser/parse.go:26 +0xf7
Error: Process completed with exit code 2.

For example:

Failed: https://github.com/pion/dtls/runs/6061616437?check_suite_focus=true.
Rerun: https://github.com/pion/dtls/runs/6061638237?check_suite_focus=true

The rerun is "rerun failed jobs" and then passes, no CI or code changes in between.
I suspect this is some weird interaction with go-acc but the fact that it seems to only happen about 10% of the time has me kinda stuck trying to figure this out. Any pointers or ideas would be greatly appreciated.

It doesn't seem like I can get to the test log artifact of the failed run, seems only the one from the last attempt is kept. I'm guessing that one isn't all that useful to you, since it parsed successfully?
I'll see if I can get CI to break and grab the artifact then.

gotest.log
Caught one it seems: https://github.com/pion/dtls/runs/6063708502?check_suite_focus=true

panic: unexpected output encountered: # github.com/pion/dtls/v2/pkg/crypto/signaturehash [github.com/pion/dtls/v2/pkg/crypto/signaturehash.test] (Did you use -json on go test?)

goroutine 19 [running]:
github.com/haveyoudebuggedit/gotestfmt/v2/parser.parse(0xc000080480, 0xc0000804e0, 0xc000080540, 0xc0000805a0, 0xc000080600)
	/home/runner/go/pkg/mod/github.com/haveyoudebuggedit/gotestfmt/v2@v2.3.0/parser/parse.go:163 +0x1588
created by github.com/haveyoudebuggedit/gotestfmt/v2/parser.Parse
	/home/runner/go/pkg/mod/github.com/haveyoudebuggedit/gotestfmt/v2@v2.3.0/parser/parse.go:26 +0xf7
📦 github.com/pion/dtls/v2/e2e
coverage: 64.9% of statements in github.com/pion/dtls/v2, github.com/pion/dtls/v2/e2e, github.com/pion/dtls/v2/examples/dial/psk, github.com/pion/dtls/v2/examples/dial/selfsign, github.com/pion/dtls/v2/examples/dial/verify, github.com/pion/dtls/v2/examples/listen/psk, github.com/pion/dtls/v2/examples/listen/selfsign, github.com/pion/dtls/v2/examples/listen/verify, github.com/pion/dtls/v2/examples/util, github.com/pion/dtls/v2/internal/ciphersuite, github.com/pion/dtls/v2/internal/ciphersuite/types, github.com/pion/dtls/v2/internal/closer, github.com/pion/dtls/v2/internal/net/dpipe, github.com/pion/dtls/v2/internal/util, github.com/pion/dtls/v2/pkg/crypto/ccm, github.com/pion/dtls/v2/pkg/crypto/ciphersuite, github.com/pion/dtls/v2/pkg/crypto/clientcertificate, github.com/pion/dtls/v2/pkg/crypto/elliptic, github.com/pion/dtls/v2/pkg/crypto/fingerprint, github.com/pion/dtls/v2/pkg/crypto/hash, github.com/pion/dtls/v2/pkg/crypto/prf, github.com/pion/dtls/v2/pkg/crypto/selfsign, github.com/pion/dtls/v2/pkg/crypto/
signature, github.com/pion/dtls/v2/pkg/crypto/signaturehash, github.com/pion/dtls/v2/pkg/protocol, github.com/pion/dtls/v2/pkg/protocol/alert, github.com/pion/dtls/v2/pkg/protocol/extension, github.com/pion/dtls/v2/pkg/protocol/handshake, github.com/pion/dtls/v2/pkg/protocol/recordlayer
✅ TestPionE2ELossy (8.55s)

Piping that log through jq I actually get an error too: parse error: Invalid numeric literal at line 1527, column 2
{"Time":"2022-04-18T14:24:24.684335251Z","Action":"skip","Package":"github.com/pion/dtls/v2/pkg/crypto/signature","Elapsed":0}
# github.com/pion/dtls/v2/pkg/crypto/signaturehash [github.com/pion/dtls/v2/pkg/crypto/signaturehash.test]
pkg/crypto/signaturehash/signaturehash_go113_test.go:38:31: undefined: errors
pkg/crypto/signaturehash/signaturehash_test.go:93:31: undefined: errors
FAIL    github.com/pion/dtls/v2/pkg/crypto/signaturehash [build failed]

So I guess when a build fails, go test -json doesn't output only JSON?

This doesn't feel like the same thing as the first time I encountered it, since the original run I opened the ticket about didn't have a build failure.

Hey @daenney no worries, this seems to be a legitimate crash and it seems we are indeed not handling the case properly when there is extra non-JSON output due to syntax errors at the end. I'll take a look at it and issue a fix soon.
Is this issue blocking something right now, or are you able to work?

Note to self, simple example to reproduce the crash:
{"Time":"2021-11-27T10:23:01.309620888+01:00","Action":"run","Package":"github.com/haveyoudebuggedit/example/second","Test":"TestNothing"}
{"Time":"2021-11-27T10:23:01.309734731+01:00","Action":"output","Package":"github.com/haveyoudebuggedit/example/second","Test":"TestNothing","Output":"=== RUN   TestNothing\n"}
{"Time":"2021-11-27T10:23:01.3097659+01:00","Action":"output","Package":"github.com/haveyoudebuggedit/example/second","Test":"TestNothing","Output":"--- PASS: TestNothing (0.00s)\n"}
{"Time":"2021-11-27T10:23:01.309786588+01:00","Action":"pass","Package":"github.com/haveyoudebuggedit/example/second","Test":"TestNothing","Elapsed":0}
{"Time":"2021-11-27T10:23:01.309799132+01:00","Action":"output","Package":"github.com/haveyoudebuggedit/example/second","Output":"PASS\n"}
{"Time":"2021-11-27T10:23:01.309994377+01:00","Action":"output","Package":"github.com/haveyoudebuggedit/example/second","Output":"ok  \tgithub.com/haveyoudebuggedit/example/second\t0.002s\n"}
{"Time":"2021-11-27T10:23:01.310211915+01:00","Action":"pass","Package":"github.com/haveyoudebuggedit/example/second","Elapsed":0.002}
# github.com/haveyoudebuggedit/example
nothing_test.go:7:11: expected '(', found Nothing
FAIL    github.com/haveyoudebuggedit/example [setup failed]

Note to self: go-acc seems to output an extra line when the test fails:
exit status 2

Normal go test doesn't do that.

@daenney I've released the bugfix as v2.3.1. Please let me know if the error still happens.

 Thanks so much! I'll keep an eye out on CI over the next couple of days.


Replace javascript flash message div update with a helper method.

Replace javascript flash message div update with a helper method.
Doing this to:

cleanup code
make is easier in the future to change this to non-RJS

Steps for Testing/QA
test in the UI by displaying some flash message

I went through changes, can't see anything wrong, tested in UI, flash messages are working OK. LGTM.

@mzazrivec, @himdel, @h-kataria : this is pretty trivial, although not short. And it's reviewed by @romanblanco. Please, merge!


Replace substitute package

The current substitute package isn't published on npm.
We can either get someone to publish it, or we can just replace its functionality. I think the latter will be simpler.

..or we can just replace its functionality.

Seeing there's about 10 lines of code involved and the code hasn't changed for 5 years, I would also be tempted to copy-paste those lines into this project 🤷♂


WinRM certificate implementation in HTTPs is very strange

Steps to reproduce

Use an internal CA to deploy a Cert template valid for WinRM
Deploy the cert with an 8 hour validity period and renewal at 2 hours
Deploy a script to auto-renew certs once every hour (b/c the default renewal period is 8 hours and ain't nobody got time for that)
Enable WinRM w/ Https using winrm qc -transport:https
Wait for cert to expire

Expected behavior
We would expect to see one of two things happen here:
Cert Auto Renews and UI correctly reports this
or
WinRM never notices that cert has been replaced and all remoting fails
Actual behavior
In actuality, it appears that WinRM somehow does note that the certificate has been renewed, because it continues to accept WinRM connections over HTTPS with no issues, even after the certificate referenced under WSman\Listener has expired.
However, everything in the UI reports outdated certificate information, for instance.

On the left, the current valid cert, on the right, what PowerShell reports
These inconsistencies are all over the place.  WSman:\Service\CertificateThumbprint contains (in my case) the Thumbprint of the very first cert ever used with this machine, more than a week ago, also expired.
The built in winrm command also seems to report the same cert, which was present when winrm qc -transport:https was first conducted.

Looking under wsman:\Service, a Cert thumbprint from a previous test is visible
The strangest part of the whole thing is that even though WinRM References out of date and invalid certificate information all over, somehow only the correct and new cert is being presented when new Winrm connections come in (such as via Enter-PSSession -UseSsl.
Desired Change
The UI should correctly reflect the certificate thumbprint being used with WinRM, not refer to the original cert used to enable WinRM, as it does today.
Environment data

>
Name                           Value
----                           -----
PSVersion                      5.0.10586.117
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.117
CLRVersion                     4.0.30319.34011
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Investigating

I wrote more about this on my blog!  👻👻👻

https://foxdeploy.com/2016/09/16/winrm-https-and-the-case-of-ghost-certificate/

This issue appears to be with WinRM and not PowerShell. I notified the WinRM team and they will continue the investigation.
TFS:8956786

For testing, I found that on a Server 2008r2 machine with WMF 2.0 that the same behavior exists.  WSMan lists old cert but correctly presents new cert.
However in this configuration, the PsSession is dropped when the certificate changes.

@mirichmo , could you ask the WinRm team to update this issue with their results?

I'll get back on this EOD 10/4

@1RedOne can you confirm that after the certificate renews, following shows the new bindings (though WinRM reports the stale thumbprint):
netsh http show sslcert ipport=<IP_ADDRESS>:5986

My tests show the older certificate thumbprint.  (WinRM sessions over SSL confirmed still working using Enter-PSSession XX -UseSSL)

@hakabo, thanks. I assume the older certificate is still valid. http.sys caches the certificate, so that's the reason the connection is working even when the cert is deleted from store. I expect the SSL endpoint to stop working after the cert has expired or after a machine reboot.
Please let me know your observations.

Hi guys,
Just to confirm, I also see the expired certificate still listed when I run netsh as well.
Keep in mind that in my configuration, the cert will expire every eight hours, however, new HTTPS connections still work.  My hypothesis is that the cert is correctly updated, and that WinRM does present the correct cert, but that for some reason the WinRM PS drive and netsh commands list outdated information.

As its not explicitly been stated, the SSL connections continue to work after reboot.
Screenshot below taken after a reboot.

Enter-PSSession -UseSSL can still establish connections remotely.

I've tried capturing a trace using WireShark to help out, but
"Science Dog 'no clue what I'm doing'" .jpg
I've observed connections continuing to work no matter what, after reboot,
after restarting WinRM, etc.  It seems that somehow WinRM correctly grabs
the right certificate and uses this for connections, even if the UI always
displays the original cert used to configure WinRM.
On Thu, Oct 13, 2016 at 6:13 AM, hakabo<EMAIL_ADDRESS>wrote:

As its not explicitly been stated, the SSL connections continue to work
after reboot.
Screenshot below taken after a reboot.
[image: capture]
https://cloud.githubusercontent.com/assets/22237100/19345308/a8a70632-9135-11e6-9eb6-5b42e7f530b2.PNG
Enter-PSSession -UseSSL can still establish connections remotely.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PowerShell/PowerShell/issues/2282#issuecomment-253472921,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABMJiqcM2bhvYy7BixMa5jDagp9r_KHSks5qzgROgaJpZM4J-lsx
.

Hi guys,
I'm here for the MVP Summit this week.  Would love to chat with you guys if you have some time!
Thanks!
twitter.com/FoxDeploy

No resolution, just closed?

@jordanmills this issue is 2.5 years old without any new content.  If this is impacting you, I can reopen.

The tldr is that windows certificate services served a role in authenticating the connection when a cert expired but a new one was valid for the devices involved.
Powershell should still be updated to udoate the cert thumbprint used, if it hasn't already been done. This would be a change for pwsh 6 though

this is still an issue. all of the above is still correct.
this breaks connections from non-powershell utilities eg java.
just trying to curl the port gives you a connection reset from the server.
only way to get it working is to delete the winrm listener and then recreate it with the new thumbprint.

@SteveL-MSFT SteveL-MSFT
It looks like it's still impacting a lot of people.

Issue remains, @SteveL-MSFT SteveL-MSFT can you please re-open?
Certificate lifecycle notifications where introduced back with Windows 8, Windows Server 2012, but from what I noticed they covered the system, services (e.g. online responder service auto renewing OCSP certs, cert stored under service account) and users certificates.
However on an app/feature like IIS the IIS Admin remote management will not auto update the thumbprint of the renewed certificate and you can't connect once the cert that it is bound to expires, unfortunate but at least we know and expect this to be the case. However when it comes to WinRM there is a bug of some sort; either the lifecycle notifications does not encompass WinRM and/or WinRM source is doing something that is not documented and that is not a warm and fuzzy feeling.
It continues to work, but no matter how you look up the certificate thumbprint WinRM has bound to it's Https Listener, it shows the thumbprint of a previously expired cert.... and as @1RedOne pointed out it will be the very first cert we ever configured to WinRM,

winrm get http://schemas.microsoft.com/wbem/wsman/1/config

(Get-ChildItem "WSMan:\localhost\Listener$WinRMHttpsListener" | Where-Object Name -Like "CertificateThumbprint" | Select-Object -ExpandProperty Value) -replace " ",""

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Listener*+HTTPS\certThumbprint

@madburg, from what I can tell, Winrm has the thumbprint reference and only uses it to check the cert when updating. Otherwise, winrm knows very little about it if it is incorrect or missing, as the request gets dropped if anything happens.
It's also been a long time since I had to do this. Not for some reason; it just all works with  native Windows no matter what settings are in winrm
Also, when updating the cert, the Winrm wizard only updates if the old cert exists. The certification requirements are specific.

#Main Script
--
  | switch ($signed) {
  | 0{
  | $j = Invoke-Command  -Credential $cred -ComputerName $vmhosts.FQDN -Authentication Negotiate -AsJob -ScriptBlock {
  | # Gets the full host name from the current host
  | $fqdn = [System.Net.Dns]::GetHostByName($env:computerName).hostname
  | Write-Host -ForegroundColor Green "Connected to host $fqdn"
  | #Create New local Cert
  | Write-Host -ForegroundColor Green "Creating Self-Signed Cert"
  | New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName $fqdn -Subject $fqdn -NotAfter (Get-Date).AddYears(5) -ov cert
  | Write-Host -ForegroundColor Green "The cert thumbprint is $($cert.thumbprint)"
  | Write-Host -ForegroundColor Green "Removing old WinRM Listener"
  | winrm delete winrm/config/Listener?Address=*+Transport=HTTPS
  | #Create New WinRM Listener using New Cert
  | Write-Host -ForegroundColor Green "Creating New Listener with Thumbprint "$($cert.thumbprint)" "
  | winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname=""$fqdn""; CertificateThumbprint=""$($cert.thumbprint)""}" }
  | # Receive-Job -wait -name $j
  | }

Thank you @mrulke for sharing, the environment here is setup differently.
On-prem ADCS implementation. All self-signed certs are deleted from Windows asset, not allowed. This is enforcement via a script executed by group policy. Any and all certificate requirement are handled by the on-prem PKI.
So the required certificate for WinRM are automatically on hosts, the WinRM client/server configuration is set by group policy,  which disables the Http listener as well as FW rule only allows https for WinRM) and that just leaves creating the initial WinRM 'Https' listener and bind it with the respective certificate; which is also done via group policy executing a a script which creates a scheduled task which runs the very same script (distinguishes what context it is being run in to know what steps to take; capable of self-healing, can update local code if any change is made centrally, and lastly write event(s) should any abnormality be detected) to ensure WinRM Https listener is setup asap provided the PKI certificate exist in the local cert store of the asset. We have 100% success ratio as certificates are enrolled at the near end of a build process and upon last reboot after build deployment completes the GPO's handle the rest instantly.
However the issue remains till this day whereby WinRM is not displaying a renewed certificate thumbprint yet remains functioning, however unknown in what security context? Everyone agrees that it should either break like the example I brought up with IIS Admin remote management, or WinRM should update the thumbprint if it is using the renewed certificate under the hood.
I cannot speak for @1RedOne if he had any self-signed certificates on the system he was testing with, but the Wireshark capture in his blog post clearly showed the client was presented with the updated/renewed PKI certificate not a self-sign one. We certainly do not have any self-sign certificates for WSMAN to fall back on to.
So maybe, not sure the feasibility of what I am about to say but stared at the details enough to believe there is something here.
Removing support of IPSPN support for kerberos, etc. keeping it to basics. We are domain joined, using FQDN hostnames to establish a remote WinRM connection to a host.

The initial connection from client to server is to establish authentication based on the allowed authentication types (kerberos, NTLM, etc..) WinHTTP established a TLS handshake nothing to do with whether we have WinRM Https Listener configurated... Right?

This handshake will exchange certificates to both parties provided each has an appropriate certificate to present to the other. So this is where I believe @1RedOne Wireshark capture displayed the client was presented with the servers renewed certificate (and the server presented the client certificate before hand just not extracted from the capture as it wasn't relevant to the blog post). So WinHTTP it is automatically selecting the latest available certificate that meets the "<IP_ADDRESS>.<IP_ADDRESS>.1 Server Authentication" requirement from the local cert store for SSL and presents it to the initiating client in the TLS handshake. It just so happens that certificate is the very same certificate he (in my case as well) uses for the WinRM Https Listener.
Eventually the certificate expires and is the very same thumbprint that remains in the WinRM Https Listener configuration. However the actually certificate is being renewed in the local cert store, which WinHTTP checks for the latest upon any connect. Right?

Quote#1 "Regardless of the transport protocol used (HTTP or HTTPS), WinRM always encrypts all PowerShell remoting communication after initial authentication."
Quote#2 "Once initial authentication is complete, the WinRM encrypts the ongoing communication. When connecting over HTTPS, the TLS protocol is used to negotiate the encryption used to transport data. When connecting over HTTP, message-level encryption is determined by initial authentication protocol used."
https://learn.microsoft.com/en-us/powershell/scripting/security/remoting/winrm-security?view=powershell-7.4

The quotes above from MS is where it maybe useful that placement and additional verbiage is added for clarity.
WinRM encrypts the ongoing communication no matter what! So Certificate or NO Certificate we get message-level encryption  Right?
For "Regardless of the transport protocol used (HTTP or HTTPS)" I believe this is referencing to "WinRM Listener(s)" configuration for the transport protocol of HTTP and/or HTTPS (and/or as you can have both configured). I believe WinRm Listener(s) is exactly what they are referring to in that article because there is not configuration of WinHTTP (per se other than system wide supported encryption types, etc.. not a specific thumbprint).

Something I don't recall seeing in the past is a more detailed explanation of what the 'CertificateThumbprint' in the WinRM Listener configuration is for. We all believe it to be the Certificate to use and offer to establish a HTTPS tunnel from the very on set of the initial connection between client and server to ensure even 'Basic Authentication' wouldn't be in clear text.

But looking at the MS WinRM article now (years later) and I quote "'CertificateThumbprint' - Specifies the thumbprint of the service certificate. This value represents a string of two-digit hexadecimal values found in the Thumbprint field of the certificate. This string contains the SHA-1 hash of the certificate. Certificates are used in client certificate-based authentication. Certificates can be mapped only to local user accounts. They don't work with domain accounts."
There are contradictory statements for ''CertificateThumbprint' Specifies the thumbprint of the service certificate. Is clearly what
I remember being there, however the parts eluding to the certificate being used for client certificate-based auth. makes no sense as why would the WinRM SERVER configuration contain a client certificate-based cert for what would be mapped to a local account on the system... client certificate-based authentication certificates are passed on by clients to WinRM Listeners...
Clearly the case as when you move on to "WinRM client default configuration settings" the configuration has a setting named "Certificate" too "Allows the client to use client certificate-based authentication. Certificate-based authentication is a scheme in which the server authenticates a client identified by an X509 certificate. The default is True."
So my concern here is as followed, while it seems we are gifted by WinHTTP for selecting the latest qualifying server auth certificate thus we always successfully connect via TLS for our initial authentication and validating the endpoint is who we expect to be connecting too, We may not actually be establishing a SSL Tunnel between the hosts after initial authentication. Either we do have an SSL tunnel while the certificate is not expired and then it stops working after certificate expires, there just maybe no 'Event' log for the condition.
"The credentials and the rest of the transmission are encrypted." This is refereeing to the message-level encryption which is determined by initial authentication protocol used.
"To add additional protection, you can configure the remote computer to use Secure Sockets Layer (SSL) instead of HTTP to listen for Windows Remote Management (WinRM) requests."
https://learn.microsoft.com/en-us/powershell/scripting/security/remoting/powershell-remoting-faq?view=powershell-7.4
Which is exactly what we are trying to achieve by binding a qualifying certificate to the 'WinRM Https Listener'.
For clarity "When connecting over HTTP, message-level encryption is determined by initial authentication protocol used."
Basic authentication provides no encryption.
NTLM authentication uses an RC4 cipher with a 128-bit key. not secure
Kerberos authentication encryption is determined by the etype in the TGS ticket. This is AES-256 on modern systems. OK depending on advisory
CredSSP encryption is uses the TLS cipher suite that was negotiated in the handshake. If TLS 1.3
But with a SSL Tunnel we could encase the message-level encryption with up to TLS 1.3 with forward secrecy protocol and latest ciphers. Currently the asset certificates are dual role in that their used for endpoint verification as well as encryption. But that is changing where by we have rolled out a second ADCS implementation in order to properly rollout Ephemeral based certificates for endpoint services like SSL, VPN, WinRM, RDP as they benefit from the strength increase and the speed of modern cipher suites to keep them secure.
So I plead this issue get reopened and we get this figured out for the greater good. Thank you.


Getters/setters should be removed somehow

In Leaflet, we've got a bit of code like:
export var disableTextSelection;
export var enableTextSelection;
if ( /* browser has some feature */ ) {
    disableTextSelection = function () {...};
    enableTextSelection = function () {...};
} else {
    disableTextSelection = function () {...};
    enableTextSelection = function () {...};
}

Normally rollup will take all the exports and wrap them in a Object.freeze(), like:
var MyModule = Object.freeze({
    setPosition: setPosition,
    getPosition: getPosition,
    get disableTextSelection () { return disableTextSelection; },
    get enableTextSelection () { return enableTextSelection; },
    disableImageDrag: disableImageDrag,
    enableImageDrag: enableImageDrag
});

For some reason I don't fully understand (related to the fact that the exports are variables and not explicit functions), they're just a getter.
Now, when running rollup-plugin-es3, the resulting code will be as follows:
var MyModule = {
    setPosition: setPosition,
    getPosition: getPosition,
    get disableTextSelection () { return disableTextSelection; },
    get enableTextSelection () { return enableTextSelection; },
    disableImageDrag: disableImageDrag,
    enableImageDrag: enableImageDrag
};

...and that will trigger a parse error, even in ES5 and ES6 environments. :disappointed:
cc @mourner - this is blocking IE8 support in https://github.com/Leaflet/Leaflet/pull/4989
cc @Rich-Harris - maybe the getters/setters issue is a core rollup issue

@IvanSanchez instead of this plugin, as far as I remember, rollup recently landed a legacy option for this.

@IvanSanchez Please see this PR https://github.com/rollup/rollup/pull/1068
I've merged this plugin into legacy option, so this plugin is no needed after this.
About the getter issue, I think it's the AST problem to identify the isReassigned for the variable reference, you can check below line:
https://github.com/rollup/rollup/blob/master/src/Declaration.js#L82

@futurist Thanks for the info!
I'll keep an eye on that PR then.
I assume that this plugin will be deprecated eventually?

I assume that this plugin will be deprecated eventually?

For a long term, YES.
But after the PR accepted, and after the legacy option covered ES3, I'll continue with this work.

@futurist there doesn't appear to be a legacy option in Rollup anymore. Can this request be reopened? I found it by googling a way to remove setters/getters from Rollup output. Thank you.

There is no way to remove or transpile getters/setters to ES3 and any feature that is relying on them (like decorators). Any library that depends on Object.defineProperty() with getter/setter won't run on ES3. For these libraries the only way is to fork them and provide ES3 compatible implementation.
However, most libraries have similar older version that doesn't use modern getters/setters or decorators.
You could easily polyfill Object.freeze() as noop and Object.defineProperty() for cases when get and set are not passed to property descriptor even without this plugin. es5-shim and es5-sham have them.

@sormy yes but in this case, the request is to not add getters/setters when there weren't any to begin with, and aren't necessary for the outputted code to function (eg. from the OP, a getter that just returns the property...it would have been fine as a normal property without the getter).

babel can exclude Object.defineProperty() for regular properties if loose transformation is used. I don't believe that is possible to cleanup code from extra Object.defineProperty() without deep static code analysis since property descriptor could be programmatically constructed during runtime. Much easier is to add Object.defineProperty() ponyfill but it could be done without rollup.


Support lost perf event callback

I think we need to add the callback in bpf_open_perf_buffer here for lost events, which has been recently added in BCC. Refer https://github.com/iovisor/bcc/commit/4b764de6bcb3655b29b2fb6df6c9c65b7a31338c I can fix this if you want.

Yes, thanks :) It could be communicated via a "lostCounter chan uint64" to keep the caller choose in which thread to handle that.
It would be good to add the same support in github.com/iovisor/gobpf/elf's InitPerfMap too.
In addition to that bcc commit, there is another example doing the same thing on:
https://github.com/cilium/cilium/blob/v0.8.1/pkg/bpf/perf.go#L341-L347

Thanks :+1: We would have to wait for a new bcc release before merging the update into master.

https://github.com/iovisor/gobpf/pull/43 added the support in the elf backend, but the support in the bcc backend is still to be done.

this issue should be closed by https://github.com/iovisor/gobpf/pull/235


feat!: added roles to emojis

This PR adds roles to emojis, allowing bots to restrict emojis to certain roles. You can view discord's documentation about this at this page.
This also changes how we store the user, along with how we send information to discord. We now store the actual user object rather than a user_id (as discord provides the user object, this helps people who may not have cache on so they don't have to make another API request to get the user).
The information above is a breaking change.
Code change checklist

[x] I have ensured that all methods and functions are fully documented using doxygen style comments.
[x] My code follows the coding style guide.
[x] I tested that my change works before raising the PR.
[x] I have ensured that I did not break any existing API calls.
[x] I have not built my pull request using AI, a static analysis tool or similar without any human oversight.

Here's an image of it working! In this image, I restricted an emoji to my role only, meaning Brain couldn't use the emoji "memelol" until I set the roles variable to a blank array.