David Lechner
529ae9e1bf
github: include date in version for labs build
...
Make labs version a bit easier to identify by also including the build date.
2026-01-25 17:05:21 -06:00
David Lechner
d629c225f0
app: update copyright year to 2026
2026-01-25 17:05:21 -06:00
David Lechner
86e08e4c94
alerts/UnexpectedErrorAlert: expand the message
...
Expand the unexpected error alert message to include instructions on
what information to provide to make a useful bug report.
2026-01-25 16:53:39 -06:00
David Lechner
ed886745ff
usb/sagas: show unexpected error alerts
...
Add more error alerts when failing to connect to a Pybricks hub over USB.
We will need user feedback on what triggered the error to be able to
write a helpful error message, so we are using the unexpected error
alert for now.
2026-01-25 16:53:39 -06:00
David Lechner
209b7ef974
usb: show error message if opening device fails
...
So far, we've just seen this on Linux when the user doesn't have the
correct udev rules installed. We'll have to wait for more user feedback
to see what other situations might cause this.
2026-01-25 16:53:39 -06:00
David Lechner
b6cf5e8491
usb: implement AlreadyInUse alert
...
Add an alert that notifies the user when the USB device is already in
use by another application.
Closes: https://github.com/pybricks/support/issues/2373
2026-01-25 16:53:39 -06:00
David Lechner
457fa8b6b2
usb/sagas: Fix command response race condition
...
Fix a race condition where a response to a USB command could be missed
if it arrives before the USB transferOut() call returns. This is done
by using a channel to buffer incoming responses.
Fixes: https://github.com/pybricks/support/issues/2467
2026-01-25 14:30:05 -06:00
David Lechner
fa275b8000
github: upload build artifact
...
Add a step to upload the build artifact after building the project.
This will make it easy for people to test it without having to build it
themselves.
2026-01-25 14:30:05 -06:00
David Lechner
368ab7cb96
usb/sagas: Retry USB device open on Linux if SecurityError occurs
...
On slow machines, udev rules may not have finished processing by the time
we try to open the USB device. This causes a SecurityError, so we add a
retry loop to handle this case.
Closes: https://github.com/pybricks/support/issues/2372
2026-01-25 14:30:05 -06:00
David Lechner
7a415e7c85
firmware/ev3: pad firmware to avoid bugs
...
Add a function to pad EV3 firmware size to avoid potentially triggering
bugs in the EV3 bootloader. When we do a download command with too small
of a payload, the bootloader can send a bad response. We can work around
this by ensuring that the firmware size is such that the last chunk is
the maximum size. This way we never send a small chunk that could
trigger the bug.
2026-01-24 16:16:02 -06:00
David Lechner
38bb4f3092
firmware/ev3: add extra progress report
...
Add an extra progress between erasing and writing. This makes the
progress not stall for quite as long before progressing when flashing
smaller firmwares.
2026-01-24 16:16:02 -06:00
David Lechner
055d2c8ca8
firmware/ev3: erase 2 sectors at one time
...
Change from erasing 1 sector at a time to erasing 2 sectors at a time.
This works around a USB issue where commands that don't take long to
execute can receive an incorrect response.
The point of erasing 2 sectors at a time is that when we write the data
to the sectors that we just erased, the last (partial) chunk of data is
now twice as large, which makes it take twice as long to write. This
seems to be long enough to avoid the USB issue.
2026-01-24 16:16:02 -06:00
David Lechner
04697e9afa
firmware/ev3: allow buggy replies from EV3 bootloader
...
Add a hack to not fail if the EV3 bootloader sends an echo of the request
instead of the expected response. There is a known compatibility issue
with the EV3 bootloader USB and, e.g. Windows with USB 3.0 ports. This
apparently causes a race condition where commands that don't take long
to process before sending a response will have the request echoed back
instead of receiving the actual response. If this happens, we can
ignore it and assume the command was successful. It just won't work, e.g.
for the version command since that has a payload in the response.
2026-01-24 16:16:02 -06:00
David Lechner
a4aade5a29
firmware/actions: remove didStart and didFinish actions
...
Remove didStart and didFinish actions from firmware flashing sagas as
they are not used for anything.
didFailToFinish is not so easily removed as it is used to trigger error
toasts.
2026-01-04 17:27:08 -06:00
David Lechner
7fe080bf1a
firmware/reducers: remove 'flashing' state
...
The 'flashing' state variable in the firmware reducer is not used
anymore so can be removed.
2026-01-04 17:27:08 -06:00
David Lechner
6911bdd3da
firmware/sagas: fix duplicate error alerts for ev3 flashing
...
Remove alertsShowAlert() calls. didFailToFinish() already triggers
an error toast.
2026-01-04 17:27:08 -06:00
David Lechner
71a6727a8f
firmware/actions: reuse isError from utils
...
Remove duplicate isError function.
2026-01-04 17:27:08 -06:00
David Lechner
0d0e366cba
firmware/sagas: fix progress toasts not being removed on error
...
Add some calls to hide the progress toasts when an error occurs during
firmware flashing. Without this, the toasts would remain visible even
after the error alert was shown.
2026-01-03 21:01:53 -06:00
David Lechner
830855e428
firmware: remove progress/didProgress
...
Remove the didProgress action and progress state, as they were not being used.
2026-01-03 21:01:53 -06:00
David Lechner
4469e173cd
firmware/sagas: add check for new SPIKE Prime bootloader version
2026-01-03 21:01:53 -06:00
David Lechner
4516cc8764
yarn: Bump @types/w3c-web-usb from 1.0.10 to 1.0.11
...
Patch got merged upstream, so we no longer need it.
2025-09-06 12:51:33 -04:00
David Lechner
fa21abc7ec
firmware/sagas: fix missing error arg when unknown reason
...
For some reason, the type checker doesn't catch this, but
FailToFinishReasonType.Unknown requires an error argument, otherwise
we get an unhandled exception.
2025-08-30 19:12:53 -04:00
David Lechner
84cca9d8e6
firmware/sagas: finish EV3 message ID TODO
...
Implement unique message ID for EV3 firmware messages.
2025-08-30 19:12:53 -04:00
David Lechner
426305116b
firmware/sagas: handle case of checksum-type == 'none'
...
The v2.1 spec allows this, but up to now, Pybricks code didn't handle it.
2025-08-30 19:12:53 -04:00
David Lechner
6fc327a917
yarn: patch @types/w3c-web-usb
...
Fix issues with null vs. undefined.
Based on https://github.com/DefinitelyTyped/DefinitelyTyped/pull/73568
2025-08-30 19:12:53 -04:00
David Lechner
1f81fbb8c7
webpack: bump precache size to 16MiB for EV3 firmware
2025-08-09 21:51:47 -05:00
David Lechner
c0b2c13e7c
github: update codevcov action version
2025-08-09 21:51:47 -05:00
David Lechner
8365f71ca3
npx update-browserslist-db@latest
2025-08-09 21:51:47 -05:00
David Lechner
70bedecb83
firmware: implement EV3 official firmware restore
...
Basic support for restoring the official EV3 firmware. Is missing a video
and needs a bunch of helpful error messages, but basic functionality
is working.
2025-08-09 21:51:47 -05:00
David Lechner
007640c7b6
firmware: add UI for EV3 firmware flashing
...
This is just the UI bits (new file template, Pybricks firmware install,
official firmware restore).
The Pybricks firmware flashing hangs because we don't have a EV3 firmware
yet in @pybricks/firmware. Official firmware restore has an alert()
placeholder so at least it does something.
2025-08-09 21:51:47 -05:00
David Lechner
8b5cab4760
s/Web USB/WebUSB/g
2025-08-09 21:51:47 -05:00
David Lechner
5e8c8b8743
firmware: installPybricksDialog: add exception for Technic Move hub
...
The Technic Move hub requires signed firmware, so we cannot install
Pybricks on it.
2025-08-09 21:51:47 -05:00
David Lechner
a546109273
usb: add USB support
...
Initial working USB support.
2025-08-08 21:36:18 -05:00
David Lechner
38db0d016c
hub: move hub info reducers to hub
...
Most of the hub state doesn't depend on the connection type. To make it
generic, move it out of ble and into hub so that we can share it with
usb.
2025-08-08 21:36:18 -05:00
David Lechner
1fe01b5719
status-bar: make visibility depend on runtime state
...
Change dependency on Bluetooth connection state to runtime state. This
way it works for USB connection as well.
2025-08-08 21:36:18 -05:00
David Lechner
3c4cc20c53
ble-pybricks-service: add support for slots
...
The firmware has added some additional info for hubs that support slots
for user programs. Add these additional parameters accordingly.
2025-07-26 16:14:40 -05:00
David Lechner
1a7663a383
ble-pybricks-service: rename slot to progId
...
Rename the requested program ID from slot to progId and the running
program ID to runningProgId. These can also have the value of built-in
programs, not just slot numbers, so it doesn't make sense to call them
slots.
2025-07-26 16:14:40 -05:00
David Lechner
9e092ca469
explorer: fix tree item button translations not updating
2022-05-16 01:11:10 -05:00
David Lechner
3245fc5853
Merge pull request #431 from pybricks/dlech
...
add .gitattibutes
2021-05-17 14:49:32 -05:00
David Lechner
b001748f95
Merge pull request #424 from pybricks/dlech
...
use overflow: hidden on splitter panes
2021-05-11 14:44:08 -05:00
David Lechner
877c2157c1
Merge pull request #421 from pybricks/dlech
...
RC1
2021-05-11 13:12:27 -05:00
David Lechner
d2771aaa05
Merge pull request #414 from pybricks/dlech
...
bump linter version
2021-04-26 14:18:14 -05:00
David Lechner
4c802e811f
Merge pull request #412 from pybricks/dlech
...
beta 15
2021-04-26 13:50:43 -05:00
David Lechner
0bd90e76d1
Merge pull request #404 from pybricks/dlech
...
beta 14
2021-04-12 16:50:42 -05:00
David Lechner
028a7dc549
Merge pull request #403 from pybricks/dlech
...
beta 13
2021-04-12 13:55:07 -05:00
David Lechner
800acf5081
Merge pull request #395 from pybricks/dlech
...
Fix <p> element on notification action
2021-04-07 13:26:50 -05:00
David Lechner
a21b8e8bab
Merge pull request #393 from pybricks/dlech
...
beta 12
2021-04-07 12:37:29 -05:00
David Lechner
decf3e909d
Merge pull request #391 from pybricks/dlech
...
beta 11
2021-04-07 11:37:59 -05:00
David Lechner
7a8dab1bb4
Merge pull request #389 from pybricks/dlech
...
yarn upgrade
2021-04-06 14:29:47 -05:00
David Lechner
595cb05b04
Merge pull request #388 from pybricks/dlech
...
beta 10
2021-04-06 13:55:49 -05:00
David Lechner
6dc700d396
Merge pull request #384 from pybricks/dlech
...
beta 9
2021-04-05 16:15:20 -05:00
David Lechner
bbcfe4530e
Merge pull request #383 from pybricks/dlech
...
beta 8
2021-04-02 16:13:45 -05:00
David Lechner
ac07e4ba61
Merge pull request #378 from pybricks/dlech
...
update packages
2021-03-30 14:00:45 -05:00
David Lechner
b783f7f7d9
Merge pull request #353 from pybricks/dlech
...
Pybricks BLE service implementation
2021-03-12 08:58:32 -06:00
David Lechner
5c6adcb851
Merge pull request #351 from pybricks/dependabot/npm_and_yarn/blueprintjs/core-3.40.1
...
Bump @blueprintjs/core from 3.40.0 to 3.40.1
2021-03-09 08:53:04 -06:00
David Lechner
2f4d3396a6
Merge pull request #349 from pybricks/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.17.0
...
Bump @typescript-eslint/eslint-plugin from 4.16.1 to 4.17.0
2021-03-09 08:38:57 -06:00
David Lechner
01271205d6
Merge pull request #347 from pybricks/dependabot/npm_and_yarn/types/react-16.14.5
...
Bump @types/react from 16.14.4 to 16.14.5
2021-03-08 09:59:10 -06:00
David Lechner
15a475a929
Merge pull request #345 from pybricks/dependabot/npm_and_yarn/typescript-4.2.3
...
Bump typescript from 4.2.2 to 4.2.3
2021-03-05 10:37:55 -06:00
David Lechner
cfbb0dc180
Merge pull request #342 from pybricks/dependabot/npm_and_yarn/license-webpack-plugin-2.3.15
...
Bump license-webpack-plugin from 2.3.14 to 2.3.15
2021-03-04 11:34:24 -06:00
David Lechner
f7cb54b2b3
Merge pull request #339 from pybricks/dependabot/npm_and_yarn/typescript-eslint/parser-4.16.1
...
Bump @typescript-eslint/parser from 4.15.2 to 4.16.1
2021-03-02 10:18:58 -06:00
David Lechner
d8ba550fd5
Merge pull request #337 from pybricks/dependabot/npm_and_yarn/eslint-7.21.0
...
Bump eslint from 7.20.0 to 7.21.0
2021-03-01 10:07:31 -06:00
David Lechner
405bcca7dc
Merge pull request #333 from pybricks/dependabot/npm_and_yarn/typescript-4.2.2
...
Bump typescript from 4.1.5 to 4.2.2
2021-02-24 10:05:09 -06:00
David Lechner
02f6d74471
Merge pull request #330 from pybricks/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.15.2
...
Bump @typescript-eslint/eslint-plugin from 4.15.1 to 4.15.2
2021-02-23 09:03:12 -06:00
David Lechner
9f1f371337
Merge pull request #331 from pybricks/dependabot/npm_and_yarn/typescript-eslint/parser-4.15.2
...
Bump @typescript-eslint/parser from 4.15.1 to 4.15.2
2021-02-23 08:52:14 -06:00
David Lechner
ab8d5c923a
Merge pull request #327 from pybricks/dependabot/npm_and_yarn/testing-library/dom-7.29.6
...
Bump @testing-library/dom from 7.29.4 to 7.29.6
2021-02-22 11:06:51 -06:00
David Lechner
1f7bab0e7e
Merge pull request #326 from pybricks/dependabot/npm_and_yarn/testing-library/user-event-12.7.2
...
Bump @testing-library/user-event from 12.7.1 to 12.7.2
2021-02-22 10:55:56 -06:00
David Lechner
791f81ffd0
Merge pull request #325 from pybricks/dependabot/npm_and_yarn/license-webpack-plugin-2.3.14
...
Bump license-webpack-plugin from 2.3.13 to 2.3.14
2021-02-22 10:45:46 -06:00
David Lechner
1b1ef988f8
Merge pull request #321 from pybricks/dependabot/npm_and_yarn/shopify/react-i18n-5.2.3
...
Bump @shopify/react-i18n from 5.2.2 to 5.2.3
2021-02-19 11:30:41 -06:00
David Lechner
39289e4ceb
Merge pull request #322 from pybricks/dependabot/npm_and_yarn/blueprintjs/core-3.39.0
...
Bump @blueprintjs/core from 3.38.2 to 3.39.0
2021-02-19 11:20:44 -06:00
David Lechner
a4496b00b8
Merge pull request #319 from pybricks/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.15.1
...
Bump @typescript-eslint/eslint-plugin from 4.15.0 to 4.15.1
2021-02-16 15:37:59 -06:00
David Lechner
6613e28962
Merge pull request #315 from pybricks/dependabot/npm_and_yarn/testing-library/user-event-12.7.1
...
Bump @testing-library/user-event from 12.7.0 to 12.7.1
2021-02-15 09:06:39 -06:00
David Lechner
9314b1d3a3
Merge pull request #314 from pybricks/dependabot/npm_and_yarn/types/react-16.14.4
...
Bump @types/react from 16.14.3 to 16.14.4
2021-02-15 08:54:33 -06:00
David Lechner
a268aff125
Merge pull request #313 from pybricks/dependabot/npm_and_yarn/types/node-12.20.1
...
Bump @types/node from 12.19.16 to 12.20.1
2021-02-15 08:43:58 -06:00
David Lechner
66d2fa522f
Merge pull request #316 from pybricks/dependabot/npm_and_yarn/license-webpack-plugin-2.3.13
...
Bump license-webpack-plugin from 2.3.12 to 2.3.13
2021-02-15 08:34:14 -06:00
David Lechner
552cd345b2
Merge pull request #309 from pybricks/dependabot/npm_and_yarn/testing-library/user-event-12.7.0
...
Bump @testing-library/user-event from 12.6.3 to 12.7.0
2021-02-11 11:28:21 -06:00
David Lechner
c7285046af
Merge pull request #307 from pybricks/dependabot/npm_and_yarn/typescript-4.1.4
...
Bump typescript from 4.1.3 to 4.1.4
2021-02-10 10:56:36 -06:00
David Lechner
3da30dfa57
Merge pull request #305 from pybricks/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.15.0
...
Bump @typescript-eslint/eslint-plugin from 4.14.2 to 4.15.0
2021-02-09 09:14:36 -06:00
David Lechner
9f848ce872
Merge pull request #304 from pybricks/dependabot/npm_and_yarn/types/node-12.19.16
...
Bump @types/node from 12.19.14 to 12.19.16
2021-02-08 11:47:04 -06:00
David Lechner
0aaed76152
Merge pull request #303 from pybricks/dependabot/npm_and_yarn/types/react-16.14.3
...
Bump @types/react from 16.14.2 to 16.14.3
2021-02-08 11:34:27 -06:00
David Lechner
85fa8e0ad2
Merge pull request #302 from pybricks/dlech
...
dependabot updates
2021-02-08 11:21:35 -06:00
David Lechner
86d2317924
Merge pull request #301 from pybricks/dependabot/npm_and_yarn/jest-mock-extended-1.0.13
...
Bump jest-mock-extended from 1.0.10 to 1.0.13
2021-02-08 11:16:20 -06:00
David Lechner
b6d5297825
Merge pull request #293 from pybricks/dependabot/npm_and_yarn/craco/craco-6.1.1
...
Bump @craco/craco from 6.1.0 to 6.1.1
2021-02-08 11:03:41 -06:00
David Lechner
c8bcaa8546
Merge pull request #299 from pybricks/dependabot/npm_and_yarn/react-dropzone-11.3.1
...
Bump react-dropzone from 11.2.4 to 11.3.1
2021-02-08 10:51:17 -06:00
David Lechner
6be7d65d33
Merge pull request #297 from pybricks/dependabot/npm_and_yarn/react-scripts-4.0.2
...
Bump react-scripts from 4.0.1 to 4.0.2
2021-02-08 10:39:47 -06:00
David Lechner
9cf5dea702
Merge pull request #295 from pybricks/dependabot/npm_and_yarn/testing-library/user-event-12.6.3
...
Bump @testing-library/user-event from 12.6.2 to 12.6.3
2021-02-08 10:28:35 -06:00
David Lechner
5b4d0109f1
Merge pull request #300 from pybricks/dependabot/npm_and_yarn/testing-library/react-11.2.5
...
Bump @testing-library/react from 11.2.3 to 11.2.5
2021-02-08 10:17:55 -06:00
David Lechner
cede200c9e
Merge pull request #298 from pybricks/dependabot/npm_and_yarn/shopify/react-i18n-5.2.2
...
Bump @shopify/react-i18n from 5.2.1 to 5.2.2
2021-02-08 09:47:15 -06:00
David Lechner
48850d7669
Merge pull request #296 from pybricks/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.14.2
...
Bump @typescript-eslint/eslint-plugin from 4.14.1 to 4.14.2
2021-02-08 09:35:44 -06:00
David Lechner
153c9ac8ed
Merge pull request #291 from pybricks/dlech
...
Add Python 2 dependency
2021-02-04 19:12:10 -06:00
David Lechner
f3197c34f9
Merge pull request #290 from pybricks/dlech
...
final updates for 1.0.0-beta.6
2021-02-01 14:25:11 -06:00
David Lechner
8d77004aed
improve print margin contrast in dark mode
2021-01-26 21:33:17 -06:00
David Lechner
547dff7150
better fit of license dialog on small screens
2021-01-26 21:09:45 -06:00
David Lechner
d37459b3f7
version bump
2021-01-23 17:38:25 -06:00
David Lechner
467627dc75
flash-firmware: drop error on fail to connect
...
This error is already handled elsewhere.
2021-01-23 17:29:43 -06:00
David Lechner
d44fcad411
yarn upgrade
2020-06-17 16:52:21 -05:00
David Lechner
4a3440d8a5
fix typo
2020-06-17 16:52:21 -05:00
David Lechner
8d2d6e12ed
add notes about authenticating to Github package manager
2020-06-17 16:52:21 -05:00
David Lechner
b1e99e0582
implement notifications
2020-04-20 13:57:58 -05:00
David Lechner
cf5d801a9a
enable progressive web app
2020-04-19 17:54:44 -05:00
David Lechner
530f164af1
alphabetize imports
2020-04-19 15:53:28 -05:00