Commit Graph
432 Commits
Author SHA1 Message Date
David Lechner d5ad768122 notifications: use lambda syntax for components 2021-12-27 12:38:50 -06:00
David Lechner a58b30ed07 licenses: convert LicenseDialog to functions 2021-12-27 12:38:50 -06:00
David Lechner 57038360f4 hub/sagas: don't log to console in tests 2021-12-27 12:38:50 -06:00
David Lechner c9894de95e hub: convert StopButton to function 2021-12-27 12:38:50 -06:00
David Lechner f57bbdf8e2 hub: convert RunButton to function 2021-12-27 12:38:50 -06:00
David Lechner dbda94c33f hub: convert BluetoothButton to function 2021-12-27 12:38:50 -06:00
David Lechner f1f6b2076d firmware: convert FlashButton to function 2021-12-27 12:38:50 -06:00
David Lechner 0738046ab1 editor: conver SaveAsButton to function 2021-12-27 12:38:49 -06:00
David Lechner 384cb78a74 editor: convert OpenButton to function 2021-12-27 12:38:49 -06:00
David Lechner 476998030c editor: convert Editor to function component 2021-12-27 12:38:46 -06:00
David Lechner c29f879086 app: use lambda style for App function 2021-12-27 12:36:38 -06:00
David Lechner 650413d1fb about: convert AboutDialog to function 2021-12-27 12:36:38 -06:00
David Lechner e8a3026c43 settings: convert SettingsButton to function 2021-12-27 12:36:38 -06:00
David Lechner a1db455a66 settings: convert SettingsDrawer to function
This reduces boilerplate code.
2021-12-27 12:36:38 -06:00
David Lechner 97c5a3bfb8 settings: add hub name tooltip 2021-11-19 20:48:06 -06:00
David Lechner ae40c2f540 firmware: flash custom hub name
This adds support for customizing the hub name when flashing firmware.

Fixes: https://github.com/pybricks/support/issues/52
2021-11-19 20:48:06 -06:00
David Lechner 86c0e933f3 settings: add new hubName setting
This setting will be used to customize the hub name when flashing
firmware. This commit just implements the setting.

Some changes needed to be made to the existing settings infrastructure
since previously it only allowed boolean settings.
2021-11-19 20:48:06 -06:00
David Lechner 39c66eb98c yarn: add monaco-editor
react-monaco-editor changed to include monaco-editor as a peer dependency.

Also fix breakage for updated monaco-editor version.
2021-11-17 16:06:28 -06:00
David Lechner 788b77fda0 notifications: add firmware version check
This adds a firmware version check that shows an error message if the
connected hub is running an older Pybricks firmware version.

Issue: https://github.com/pybricks/support/issues/482
2021-09-15 16:49:51 -05:00
David Lechner e7d44ea9a9 src/utils: add ensureError() function
Typescript v4.4 no longer assumes that the error in catch is an Error
object [1]. This adds a helper function to ensure that caught errors
at least match the Error interface. If not, it creates a new Error
object with the value as the message.

[1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-4-beta/#using-unknown-in-catch-variables
2021-08-30 13:06:01 -05:00
David Lechner af89c0b80b about: add firmware version as main version
Since the firmware version is the most important version, make it the
primary version. (We still need the Pybricks Code version since not
every update includes a firmware update.)
2021-08-13 12:13:05 -05:00
David Lechner b7b3522f78 Merge remote-tracking branch 'origin/master' into dlech 2021-08-13 10:46:01 -05:00
David Lechner 7ddeed58b7 firmware: validate checksum while flashing
Since we are using the checksum message for throttling flash speed
anyway, we can validate the checksum during the flash process to
catch errors earlier.

Issue: https://github.com/pybricks/support/issues/433
2021-08-13 10:40:49 -05:00
David Lechner ce8f59e0c2 firmware: fix flashing on Android
Hubs that don't use the minimum chunk size will fail on Android since
it defaults to the smallest possible MTU.

Issue: https://github.com/pybricks/support/issues/403
2021-08-12 15:55:24 -05:00
David Lechner 56c739fa08 os: add isAndroid() function
This will be used to test if the app is running on Android.
2021-08-12 15:55:24 -05:00
David Lechner 2ba6d88c49 editor: remove gutter background override
This was carried over from the Ace editor, but doesn't work well with
the Monaco editor.

Fixes: https://github.com/pybricks/pybricks-code/issues/472
2021-07-08 15:57:16 -05:00
David Lechner 9ee2d1f102 editor: clean up keywords and builtins
- remove python 2 stuff
- separate builtins from keywords
2021-07-08 15:56:27 -05:00
David Lechner ad948dc152 editor: copy python language configuration
This copies the language configuration from https://github.com/microsoft/monaco-languages/blob/d7cc098c481059f63d51ce3753975c8ca8ab6030/src/python/python.ts

This fixes a number of editor features, like auto-indent.

Fixes: https://github.com/pybricks/pybricks-code/issues/470
2021-07-08 15:55:50 -05:00
David Lechner 4b0dc90e8d editor: improve template snippets
- fix always being suggested
- add more imports
- reduce duplicated code

Fixes https://github.com/pybricks/pybricks-code/issues/471
2021-07-08 15:55:03 -05:00
David Lechner 4e2902730a hub: fix buttons not enabled after connection
A previous commit broke buttons after connecting since state all state
transitions were changed to be ignored if the current state was
"disconnected". This made it impossible to get into any other state.

This brings back use of the "unknown" state upon initial connection
to provide a path out of the "disconnected" state.

Fixes: 7a5aa75894
2021-07-06 10:53:56 -05:00
David Lechner d95c550248 editor: change from ace to monaco
This replaces the ace editor with the monaco editor. It fixes quite a
few small paper-cut bugs and should be easier to add code completion
to in the future.

Many of the snippets are omitted but can be added back later if needed.
Otherwise, we have tried to preserve the existing look and feel as much
as possible.
2021-07-02 20:59:09 -05:00
David Lechner c3851e7139 tests: use matchMedia polyfill
This makes testing code that uses window.matchMedia() work better since
it mocks it globally.
2021-07-02 20:59:09 -05:00
David Lechner 7a5aa75894 hub: fix bad hub runtime state when disconnected
This fixes a bad hub runtime state when the hub disconnects during a
download. This caused the run button in the UI to be enabled when the
hub was disconnected.

Issue: https://github.com/pybricks/support/issues/378
2021-07-01 11:58:04 -05:00
David Lechner ab0ddd04b5 about/AboutDialog: fix failing test when $REACT_APP_NAME set
When the `REACT_APP_NAME` environment variable is set to something other
that "Pybricks Code", it caused the test to fail.
2021-06-23 15:12:07 -05:00
David Lechner 10148fa9cf ble-uart: decode PnP ID if it exists 2021-06-23 12:31:19 -05:00
David Lechner 9fca17fbac update projects URL to point to Pybricks website 2021-06-08 16:21:48 -05:00
David Lechner 6c692a7e95 fix wrapping on external link buttons 2021-06-08 14:52:44 -05:00
David Lechner 205937fdc3 add changelog link to about dialog 2021-06-08 14:52:44 -05:00
David Lechner deee6578f7 improved bluetooth adapter error message
Issue: https://github.com/pybricks/support/issues/338
2021-05-17 13:24:57 -05:00
David Lechner 12f3f40e36 use spinner when bluetooth is connecting
It can take a while (especially on Windows) before the connection is
ready and the other buttons become enabled. So use a spinner to let
the user know that we are working on it.

Issue: https://github.com/pybricks/support/issues/315
2021-05-17 13:03:32 -05:00
David Lechner 1279370fc8 Fix firmware flash button not disabled while connecting
We were using the wrong state variable to detect when BLE is disconnected.
We care about the BLE connection state, not the hub runtime state here.

Issue: https://github.com/pybricks/support/issues/315#issuecomment-841486591
2021-05-17 12:44:30 -05:00
David Lechner 956b6f3c96 firmware: add windows BLE hacks
This works around some issues that have been observed on a specific
Windows computer.

Issue: https://github.com/pybricks/support/issues/256
2021-05-16 16:18:34 -05:00
David Lechner 4da6f7e368 use overflow: hidden on splitter panes
This fixes problems with double scroll bars showing up.

Fixes: https://github.com/pybricks/pybricks-code/issues/406
Fixes: https://github.com/pybricks/pybricks-code/issues/407
2021-05-11 14:38:04 -05:00
David Lechner ec6753c314 yarn lint
rules seem to have changed a bit after upgrading packages
2021-05-11 12:45:43 -05:00
David Lechner e8c4472e50 Add progress bar for user program download. 2021-04-12 16:24:36 -05:00
David Lechner 1964c9c485 Add timeout while waiting for checksum
This adds a timeout while waiting for the checksum from the hub when
downloading and running a program. Without this, we can get stuck in
the "loading" state if the hub doesn't respond as expected. This can
happen, for example, if a program is started with the hub button at the
same time as the start button in Pybricks Code is pressed.

Issue: https://github.com/pybricks/support/issues/301
2021-04-12 13:24:10 -05:00
David Lechner 0d89f8daad Disable flash button when hub is connected.
Fixes: https://github.com/pybricks/support/issues/299
2021-04-12 10:34:59 -05:00
David Lechner f39dea36fe Fix <p> element on notification action
55e724e8d8 introduced <p> elements on
notifications. however this is undesirable on the notification action
text. This splits the Notification component into one that is pre change
and one that is post change.

Fixes #394
2021-04-07 13:19:52 -05:00
David Lechner 7f9e6bd4db Fix download and run race condition
It was possible for a program to start and finish running before the
final checksum message was received, which resulted in a bad state
(run button disabled).

This fixes it by using proper didStart/didFinish/didFailToFinish
actions for the download saga and updates the reducer to handle all
cases.
2021-04-07 12:28:36 -05:00
David Lechner a081c4a798 Fix download and run race condition
This fixes a race condition where the hub program running status flag
is received before the last checksum from the download process.

Issue: https://github.com/pybricks/support/issues/290
2021-04-07 11:27:40 -05:00