**Move activity buttons to main toolbar**
This was on a vscode-style sidebar because we originally thought we would add more. It turns out we will not. Having explorer/settings with the other buttons simplifies the UI.
This also makes the buttons not jump around when you open/close the explorer.
Also improves on small screens, where the explorer would obscure all buttons. Also lets us remove the blueprint hacks we had to make this work.
**Add toggles for sideviews.**
This lets us fix several UI/UX problems. It used to be easy to lose the terminal or docs forever. Now you can toggle them back on with a button and conveniently close them rather than dragging them down.
**Improve splitters**
Switch to react-resizable-panels which lets us control the split as needed. Also when dragging to near closed, it will snap to properly closed. Toggling on then restores normal size. Otherwise it preserves the split value.
The collapsed state of this library is made for hiding the docs without destroying them, so we don't need some of the hacks we had to preserve the terminal and docs state.
Having this persist across sessions is not necessary and a bit overly complicated when we add more sideview states such as camera (which should not stay on by default).
Everything is visually unchanged. This just moves the button logic to the app, since it doesn't conceptually belong to the editor component.
It controls things such as docs which has nothing to do with the editor. This way we don't have to pass states as props around when we add more buttons later.
This was an undocumented feature that gets in the way of other shortcuts, and doesn't extend well to the sideview being used for other things in future commits.
This was very complicated, particularly between versions and tabs and windows, for something that offers only a minor convenience.
This also makes it simpler to navigate to a particular page interactively by just setting the iframe URL, which is useful for interactive help from the block editor.
This is separate from Python's __main__ mechanism, so we shouldn't be manually renaming things to __main__ here.
This also makes file names show correctly on EV3.
See https://github.com/pybricks/support/issues/2364
This operation does not work on Windows, and does not appear to be
crucial on other platforms either. The browser seems to already handle
resetting the endpoints as needed when connecting or closing the browser
(at least on Linux)
This hasn't been used for a long time in Pybricks Code. We're only keeping it in the firmware because Pybricks Code raises an error otherwise.
Disabling it saves about +400 bytes on Move Hub and Technic Hub and helps simplify the firmware. By removing it we don't run untested code if someone connects to the advertised NUS service.
- Use steps for the connection procedure
- Use categories (To do: consider making numbering consecutive)
- Show hub bootloader device name explicitly
- List official app to use for recovery (make V2/V3 explicit)
- Copy edit
Also fix the layout (class) of the installation panel to make it consistent with the style of the recovery panel.
Since there are up to three things to prepare, it is better to start the
list with that. We can still keep a separate section for points that match the video.
Do not use a fixed height for the editor, but responsively scale to the remaining available height.
Also fill horizontally for a responsive layout. This gives us room to add left or right columns with docs or settings.
The hub responds to every message with a checksum. The mpy size message is no different, so we need to read it.
This fixes the checksum messages being out of sync by one.