David Lechner
a28ea572ae
status-bar: fix height styling
...
Since this is display: flex, it needs min/max-height instead of plain
height.
2023-04-05 19:27:48 -05:00
David Lechner
1e764b4e95
ble/sagas: spawn ble writes
...
Code depends on always receiving a didWrite/didFailToWrite, however
when a hub disconnected, these tasks were being cancelled. Spawning
protects them from cancellation.
2023-04-01 15:17:22 -05:00
David Lechner
c8e7e86da0
toolbar/buttons/bluetooth: show progress on disconnect
2023-04-01 13:52:03 -05:00
David Lechner
379965e48f
toolbar/buttons: debounce short progress
...
Don't flash progress for short actions like starting repl and stopping
user program. If the hub becomes disconnected, these actions can take
a long time before failing and in that case, we do want to show the
progress indicator.
2023-04-01 13:38:19 -05:00
David Lechner
3baaff5b61
ble/sagas: avoid Linux 5 second disconnect when possible
...
If the user did not request disconnection, then we know this is a true
disconnect event and not an early one so we don't need the delay hack
in that case.
Issue: https://github.com/pybricks/support/issues/600
Issue: https://github.com/pybricks/support/issues/1021
2023-04-01 13:38:19 -05:00
David Lechner
73248fe6aa
hub/reducers: simplify Disconnected state logic
...
Reduce duplicate code by only checking for current state == Disconnected
once.
2023-04-01 13:38:19 -05:00
David Lechner
69605ada4a
hub/reducers: consolidate command in progress states
...
The Loaded state is not used anywhere else, so we can replace it with
the Unknown state. Then we can make all other command-in-progress
states (start repl/stop user program) the same as download and run.
When the command completes, the hub is in an unknown state until a
status message is received. The Disconnected states overrides all other
states.
2023-04-01 13:38:19 -05:00
David Lechner
ce29984be5
hub/sagas: show error if stopping failed
...
- Finish TODO to show error if stopping fails.
- Make button busy in case waiting for failure takes a long time.
2023-04-01 13:38:19 -05:00
David Lechner
be3afa167a
hub/sagas: fix error message not shown when starting repl
...
- Add check for repl start command success/fail.
- Show error message on fail.
- Rename start repl action.
- Add new did start/did fail to start repl actions.
- Change terminal saga to use did start repl action to focus terminal.
- Add more tests.
2023-04-01 13:38:19 -05:00
David Lechner
70020275a7
ble/alerts/Disconnected: better error message for disconnected
...
WebBluetooth generally uses DomException with name NetworkError to mean
that Bluetooth is disconnected, so we can use that to provide a helpful
error message.
2023-04-01 13:38:19 -05:00
David Lechner
19f6862bb5
hub/reducers: change hub runtime state when disconnecting
...
When disconnect is requested, we should not longer allow interacting
with the hub, so we say the runtime state is unknown until it is
confirmed to be disconnected.
Fixes: https://github.com/pybricks/support/issues/1021
2023-04-01 13:38:19 -05:00
David Lechner
be32c37f18
editor/sagas: focus editor when activated
...
When a file is activated, it is an indication that the user wants to
edit the file right now, so the editor should be focused.
2023-03-28 10:44:23 -05:00
David Lechner
2f5d11b648
LicenseDialog: fix console errors in tests
...
useFetch() was trying to actually fetch the license file and mocking
fetch() caused errors about not wrapping code in act(). So instead,
we can avoid all errors by just mocking useFetch() instead.
2023-03-10 18:16:27 -06:00
David Lechner
3114ac4e2b
mpy/sagas: fix tests attempting to load .wasm via http
...
Since we are using jsdom, the emscripten generated code doesn't use
the node filesystem lookup for .wasm files. But then it falls back to
node for file:// urls, but this doesn't work because node treats file:
as a drive letter.
We can work around this by modifying the node path.normalize() function
to return the correct path.
Fixes: https://github.com/pybricks/pybricks-code/issues/1584
2023-03-10 18:16:27 -06:00
David Lechner
d88ce8998f
test: wrap all user calls in act()
...
Some user events trigger react dom changes. These need to be wrapped in
act() to avoid a warning printed to the console. To be save, we wrap
all instances.
2023-03-10 18:16:27 -06:00
David Lechner
7d3c77664c
fix vertical button margin in dialogs
2023-03-08 18:06:49 -06:00
David Lechner
af160c99a8
more code coverage
2023-03-08 15:07:16 -06:00
David Lechner
6a9405e653
explorer: add support for importing ZIP
...
Also add a new dialog to get user input when file names conflict.
Previously, we were not supplying a list of existing files, so existing
files were silently written over.
Fixes: https://github.com/pybricks/support/issues/833
2023-03-07 14:31:12 -06:00
David Lechner
68d7932ef9
NewFileWizard: fix setUseTemplate casing
2023-03-07 14:31:12 -06:00
David Lechner
bad7f1b066
app/constants: add zip file extension and mime type
2023-03-07 14:31:12 -06:00
David Lechner
ac00b82cab
firmware/installPybricksDialog: fix hub name error icon style
2023-02-16 14:10:07 -06:00
David Lechner
63597e4b88
firmware/installPybricksDialog: only call useFirmware() once
...
We were unpacking the firmware twice. Instead, we should only call
useFirmware() once and pass the results as props.
2023-02-16 14:10:07 -06:00
David Lechner
a841562c6c
firmware/installPybricksDialog: remove hard-coded hub name size check
...
The UI has been rearranged so we now have firmware metadata available
when we validate the hub name.
2023-02-16 14:10:07 -06:00
David Lechner
13c69918e1
firmware/installPybricksDialog: add basic metadata check
...
This will catch some errors. Mainly this is to ensure we show an error
if someone tries to use, e.g. a NXT firmware file that isn't supported
in Pybricks Code yet. Error message isn't great but we don't expect this
to be hit often, if ever, by non-developers.
2023-02-16 14:10:07 -06:00
David Lechner
c8bcddbffd
firmware/installPybricksDialog: fix use of useCustomFirmware()
...
useCustomFirmware() was called multiple times with the same file which
resulted in the same file being parsed 3 times. Instead we should only
call useCustomFirmware() and pass the results as props instead.
2023-02-16 14:10:07 -06:00
David Lechner
0d3447a0b6
editor: show error message on fail to activate
...
When gotoError fails to activate a file, we need to show an error
message, otherwise it just appears to the user that the button is
broken.
Fixes: https://github.com/pybricks/support/issues/924
2023-02-13 16:13:58 -06:00
dependabot[bot] and David Lechner
64625bec3a
build(deps): bump monaco-editor from 0.34.1 to 0.35.0 ( #1495 )
...
* build(deps): bump monaco-editor from 0.34.1 to 0.35.0
Bumps [monaco-editor](https://github.com/microsoft/monaco-editor ) from 0.34.1 to 0.35.0.
- [Release notes](https://github.com/microsoft/monaco-editor/releases )
- [Changelog](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md )
- [Commits](https://github.com/microsoft/monaco-editor/commits/v0.35.0 )
---
updated-dependencies:
- dependency-name: monaco-editor
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* yarn dedupe
* work around jest/monaco-editor performance.mark issue
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Lechner <david@pybricks.com >
2023-02-08 16:06:44 +00:00
David Lechner
876f1f2118
toolbar/ActionButton: drop workaround for https://github.com/palantir/blueprint/issues/5889
...
This was fixed in @blueprintjs/popover2 v1.12.1
2023-02-01 11:05:43 -06:00
dependabot[bot] and David Lechner
7b0dc47b04
build(deps): bump @blueprintjs/popover2 from 1.11.3 to 1.12.0 ( #1454 )
...
* build(deps): bump @blueprintjs/popover2 from 1.11.3 to 1.12.0
Bumps [@blueprintjs/popover2](https://github.com/palantir/blueprint/tree/HEAD/packages/core ) from 1.11.3 to 1.12.0.
- [Release notes](https://github.com/palantir/blueprint/releases )
- [Changelog](https://github.com/palantir/blueprint/blob/develop/CHANGELOG.md )
- [Commits](https://github.com/palantir/blueprint/commits/@blueprintjs/popover2@1.12.0/packages/core )
---
updated-dependencies:
- dependency-name: "@blueprintjs/popover2"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix breaking change in blueprintjs popover2
work around https://github.com/palantir/blueprint/issues/5889
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Lechner <david@pybricks.com >
2023-01-24 16:18:23 +00:00
dependabot[bot] and David Lechner
a50cc9801c
build(deps-dev): bump eslint-plugin-import from 2.26.0 to 2.27.2 ( #1435 )
...
* build(deps-dev): bump eslint-plugin-import from 2.26.0 to 2.27.2
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import ) from 2.26.0 to 2.27.2.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases )
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md )
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.26.0...v2.27.2 )
---
updated-dependencies:
- dependency-name: eslint-plugin-import
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix breaking changes in eslint sort order
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Lechner <david@pybricks.com >
2023-01-12 16:50:38 +00:00
dependabot[bot] and David Lechner
bf2dec362d
build(deps): bump @blueprintjs/core from 4.13.0 to 4.14.1 ( #1432 )
...
* build(deps): bump @blueprintjs/core from 4.13.0 to 4.14.1
Bumps [@blueprintjs/core](https://github.com/palantir/blueprint/tree/HEAD/packages/core ) from 4.13.0 to 4.14.1.
- [Release notes](https://github.com/palantir/blueprint/releases )
- [Changelog](https://github.com/palantir/blueprint/blob/develop/CHANGELOG.md )
- [Commits](https://github.com/palantir/blueprint/commits/@blueprintjs/core@4.14.1/packages/core )
---
updated-dependencies:
- dependency-name: "@blueprintjs/core"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix breaking path name change
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Lechner <david@pybricks.com >
2023-01-11 15:54:05 +00:00
dependabot[bot] and David Lechner
9be97c7fdd
build(deps-dev): bump prettier from 2.8.1 to 2.8.2 ( #1426 )
...
* build(deps-dev): bump prettier from 2.8.1 to 2.8.2
Bumps [prettier](https://github.com/prettier/prettier ) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/prettier/prettier/releases )
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/prettier/compare/2.8.1...2.8.2 )
---
updated-dependencies:
- dependency-name: prettier
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
* yarn lint
Fixes breaking changes in eslint.
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Lechner <david@pybricks.com >
2023-01-09 15:28:56 +00:00
David Lechner
5330821a96
pybricksMicropython: use new PythonError type property
...
This was introduced in Pyodide 0.22 and saves us from having to parse
the message for the type.
Could also affect https://github.com/pybricks/support/issues/772 (but
there is no known reproducible case to check it).
2023-01-04 11:20:52 -06:00
David Lechner
62d7fdff36
editor/sagas: disable code completion trigger on space
...
This gets in the way when typing comments and often results in
accepting a completion that was not intended.
Fixes: https://github.com/pybricks/support/issues/894
2022-12-30 16:07:52 -06:00
David Lechner
7d5c9710e5
editor/sagas: fix signature trigger characters
...
The intended behavior is that comma should trigger signature help when
it is not showing. retrigger only triggers if already showing.
2022-12-30 16:04:48 -06:00
David Lechner
d119cb564e
editor: fix find widget z-index
...
When open, the find widget was visible above modal dialogs because
of z-index.
2022-12-30 14:08:36 -06:00
David Lechner
ca50d60b2c
app: fix vertical resizing issues
...
Some new issues with layout when resizing the browser window vertically
were caused either by recent xterm updates or other recent style changes.
This works around those issues.
2022-12-30 14:08:36 -06:00
David Lechner
810ee362c6
editor/sagas: maintain jedi sort order
...
Now that jedi returns names that start with `_`, we need to make sure
they don't end up at the top of the list for completions.
2022-12-28 17:23:59 -06:00
David Lechner
e153ffe295
pybricksMicropython: fix import completion for user module
...
The pybricks_jedi package was filtering on only pybricks modules but
now has a feature to amend the filter to include user modules.
Fixes: https://github.com/pybricks/support/issues/759
2022-12-28 17:04:23 -06:00
David Lechner
a981bcbda2
editor/pybricksMicroPython: fix numeric literal highlighting
...
This was picking up leading underscores, e.g. the first `__` in
`__name__`.
2022-12-28 16:40:43 -06:00
David Lechner
74f1619eb3
app: fix clipping of editor popups
...
Editor popups like the ones for code completion were getting clipped
by the layout pane containers.
2022-12-27 17:35:11 -06:00
David Lechner
1482e9f197
editor/pybricksMicroPython: add constant formatting
2022-12-27 17:35:11 -06:00
David Lechner
098c8e60ab
editor/pybricksMicroPython: add Side to hub template
...
This is included in pybricks.parameters on all hubs.
2022-12-27 17:35:11 -06:00
David Lechner
43a6f63eaf
editor/pybricksMicroPython: improve f-string highlighting
...
Fixes: https://github.com/pybricks/support/issues/875
2022-12-27 17:35:11 -06:00
David Lechner
5bef7e2637
editor/pybricksMicroPython: improve operator highlighting
...
This handles newer things like the := operator better.
2022-12-27 17:35:11 -06:00
David Lechner
1db0c48844
editor/pybricksMicroPython: improve numeric literal highlighting
...
- Drop Python 2.x "L" suffix.
- Add support for underscores.
- Drop including leading minus sign.
- Add support for binary.
- Add support for octal.
2022-12-27 17:35:11 -06:00
David Lechner
bb2fa3ae1d
package: switch to @pybricks/python-program-analysis
...
The package we were using was only for Python 3.4 and didn't include
async/await which broke imports in any script that used async/await.
Fixes: https://github.com/pybricks/support/issues/873
2022-12-22 13:21:02 -06:00
David Lechner
a77acc1001
firmware/bootloaderInstructions: hide video from tests
...
The video element makes a bunch of noise (console.error) in tests.
2022-12-22 13:21:02 -06:00
David Lechner
f083ad84ef
pybricksMicropython/lib: log parser errors
...
This makes it easier for users to diagnose errors.
Issue: https://github.com/pybricks/support/issues/873
2022-12-22 13:21:02 -06:00
Laurens Valk
44512c9533
firmware/bootloaderInstructions: Clarify hold button text.
2022-12-22 10:20:37 -06:00