Commit Graph
100 Commits
Author SHA1 Message Date
David Lechner 4aadd94fef WIP: open doc examples in editor 2022-12-08 11:19:40 -06:00
David Lechner 3361c25d88 app: bump copyright year displayed in app
We are a bit early but since will will do a final release soon, we
don't want the app to look out of date already on the first of the
year.
2022-12-07 15:40:19 -06:00
David Lechner 6687bb73ce firmware: remove android check for chunk size
This should no longer be needed since Chrome v98 (released Nov. 2021).
2022-12-06 15:50:35 -06:00
David Lechner cc20ab8c35 editor: move docs toggle from settings
This removes the docs toggle switch from the settings and adds a new
docs toggle button to the editor.

Fixes: https://github.com/pybricks/support/issues/778
2022-12-06 15:38:58 -06:00
David Lechner 55cf05d480 app: add drag handles to resizable separators
This makes them easier to discover and an easier target for touch.
2022-12-06 15:38:58 -06:00
David Lechner 05445c1b07 settings: use sessionStorage for doc state
This adds use of sessionStorage for the documentation visibility toggle.
This way, when multiple windows are open, the docs can be controlled
separately in each window. Local storage is still used as the default
value for new windows.

Issue: https://github.com/pybricks/support/issues/807
2022-12-06 15:38:58 -06:00
David Lechner ee850dec71 activities: use sessionStorage for selected tab
The useLocalStorage hook synchronizes state between windows. In the
case of the activities tabs, we don't want this state synchronized,
otherwise changing a tab in one window would change the tab in all
open windows.

Instead, we can use sessionStorage so that the state persists when
refreshing or duplicating a browser tab. Local storage is still used
as the default value so that any new window that is opened will use
the last selected state.

Issue: https://github.com/pybricks/support/issues/807
2022-12-06 15:38:58 -06:00
David Lechner 27b2c42023 tour: open settings when triggered from startup
Since we moved the first tour step to a possibly hidden place, we need
to make sure it is showing before starting the tour.

Fixes: https://github.com/pybricks/support/issues/823
2022-12-05 13:17:37 -06:00
David Lechner f5fbea905f CHANGELOG: move link into correct section 2022-12-05 13:17:37 -06:00
David Lechner ec556e8589 v2.0.0-beta.12 2022-12-02 12:10:17 -06:00
David Lechner 19878cbac6 update @pybricks/firmware to firmware v3.2.0b2 2022-12-02 11:54:18 -06:00
David Lechner a262f44762 explorer: fix focus outline obscured 2022-12-02 11:37:22 -06:00
David Lechner c001ca77c1 tour: use color constants 2022-12-02 11:37:22 -06:00
David Lechner a443ced3f4 CHANGELOG: add entry for 71c8605 2022-12-02 11:37:22 -06:00
David Lechner 99760146a6 tour: move button to settings
Since we have the Pybricks logo elsewhere now, we don't need to have
this button on the toolbar. Instead, put it in the settings where it
is out of the way, but can still be used to watch the tour again if
desired.

Some steps are reordered so we don't jump back and forth between
activities since we are starting from the settings tab now.

Also fix changing the selected activities tab when closing the tour.
2022-12-01 17:08:19 -06:00
David Lechner 86a26d07ca StatusBar: always use dark mode styling
Since the background doesn't change, we shouldn't change the foreground
either. White shows up better than black on the blue, so we prefer the
dark mode styling.
2022-12-01 17:08:19 -06:00
David Lechner 6a979cafa8 editor: add pybricks logo welcome 2022-12-01 17:08:19 -06:00
David Lechner a0f05c00a4 react-aria: drop typing workaround
This was fixed upstream.
2022-12-01 17:08:19 -06:00
David Lechner 3a0130d73f editor: fix spinner jumping to top on page load 2022-12-01 17:08:19 -06:00
David Lechner 35cef50e44 editor: drop use of react-monaco-editor
The upstream package is currently broken and doesn't actually save us
any work.
2022-12-01 17:08:19 -06:00
David Lechner 113b06904f github: fix dependabot-auto-merge workflow
The step id was accidentally changed in bdf9f3c and broke the workflow.
2022-11-29 10:59:15 -06:00
David Lechner 49f3c5d8f3 components: move ViewHeightSensor
we've moved all of the other components already
2022-11-29 10:59:15 -06:00
David Lechner e01fb1fbe9 eslint: strict equality
Enforce use of ===/!== and fix existing issues.
2022-11-23 17:20:45 -06:00
David Lechner 1d9dd82191 explorer/sagas: don't show error on user cancel
fileSave can raise DomException+AbortError if use clicks cancel in the
OS file dialog. We should not show an error message in this case.
2022-11-23 17:20:45 -06:00
David Lechner d7726325ab blueprintjs-icons: fix missing large trash icon 2022-11-23 17:20:45 -06:00
David Lechner e8b57fe3d9 toolbar/ActionButton: drop aria-haspopup workaround
The fixe has been merged upstream.
2022-11-23 17:20:45 -06:00
David Lechner 9f538490e5 toolbar: remove OpenFileButton
This is no longer used.
2022-11-23 17:20:45 -06:00
David Lechner d323db4d1b toolbar/ActionButton: only disable using style
This removes use of the button disable property since it removes the
button from the accessibility tree and also makes tooltips not work.
The styling is kept the same by manually including the disable style.
2022-11-23 17:20:45 -06:00
David Lechner bb8015eae5 test: finish TODO for escape key hack
Fix was merged upstream so we can remove the hack.
2022-11-22 15:56:56 -06:00
David Lechner 9fe62467d5 alerts: use shorthand return 2022-11-22 15:56:56 -06:00
David Lechner 95199e44c1 hub/alerts/UserProgramSize: add alert for program too big
This finishes the TODO about adding a proper message.

Fixes: https://github.com/pybricks/support/issues/810
2022-11-22 15:56:56 -06:00
David Lechner db438be40b editor: finish remove hack TODO
The upstream fix was merged, so the workaround is no longer needed.
2022-11-22 15:56:56 -06:00
David Lechner 764083e6be monaco-extension: finish TODO
code was merged upstream, so we no longer need the workaround
2022-11-22 15:56:56 -06:00
David Lechner 004667b80b webpack: finish TODO about avif file types
was fixed in https://github.com/jshttp/mime-db/commit/65f65eda094a8ec206f9144584657ff14fd597ab
2022-11-22 15:56:56 -06:00
David Lechner efec127b8e webpack: precache oss-licenses.json
This works around the oss-licenses.json file not being picked up by
the workbox plugin.

Closes: https://github.com/pybricks/pybricks-code/issues/1245
2022-11-19 16:58:27 -06:00
David Lechner 61098453c7 webpack: move monoaco editor js into static/js folder
All other js files are there already.
2022-11-19 16:58:27 -06:00
David Lechner 0d1bc4c9fa index.html: fix apple-touch-icon for beta
Beta uses a different icon, so we need to account for that.
2022-11-19 16:58:27 -06:00
David Lechner ea84c48159 service-worker: fix caching of app icons
The application icons, like favicon.ico were not being cached properly
and were missing when the app was used offline.

Changing the strategy to CacheFirst and changing the test to include
all images fixes the problem.
2022-11-19 16:58:27 -06:00
David Lechner 7850a505e4 about: fix icon not working offline
Issue: https://github.com/pybricks/pybricks-code/issues/1245
2022-11-18 19:28:00 -06:00
David Lechner b5b857bca5 firmware/sagas: implement restoring official firmware
Closes: https://github.com/pybricks/pybricks-code/issues/1104
2022-11-18 19:28:00 -06:00
David Lechner cf99ab223d firmware/sagas: refactor firmwareFlashUsbDfu
This allows the firmwareFlashUsbDfu to take an arbitrary binary blob
instead of a Pybricks firmware.zip file. This will allow it to be used
to restore the official LEGO firmware as well.
2022-11-18 19:28:00 -06:00
David Lechner 71c8605773 firmware/restoreOfficialDialog: change to multistep dialog
This gives instructions on how to put the hub in bootloader mode like
the install Pybricks dialog and sets the stage for doing the DFU restore
without going to another website.

Issue: https://github.com/pybricks/pybricks-code/issues/1104
2022-11-18 19:28:00 -06:00
David Lechner 44169bd178 firmware/bootloaderInstructions: extract component
This extracts the instructions for placing a hub in bootloader mode to
a separate component so that it can be shared.
2022-11-18 19:28:00 -06:00
David Lechner f167f168ee fix missing icons
Warning sign was missed in 90b04f8. 20px error and info are added just
in case.
2022-11-18 19:28:00 -06:00
David Lechner 745d09df7a constants: add LEGO registered trademark
This shouldn't be translated so we make a constant to ensure that. Also
makes it easy to get the registered trademark symbol which isn't
trivial to type on the keyboard.
2022-11-18 19:28:00 -06:00
David Lechner f944948a44 yarn: update to v3.3.0 2022-11-18 19:28:00 -06:00
David Lechner 597419be47 ble/alerts/BluetoothNotAvailable: add browser support paragraph
Browsers such as Brave and Opera are based on Chromium but disable
Web Bluetooth. In this case, we can't tell the difference between the
browser not supporting it or the Bluetooth adapter not being present.
So we make the error message cover all possibilities.

Issue: https://github.com/pybricks/support/discussions/804
Issue: https://github.com/pybricks/support/issues/635
2022-11-18 19:28:00 -06:00
David Lechner bdf9f3c850 github: update auto-merge workflow
Don't restrict action version. Hopefully fixes warnings about `set-output`.
2022-11-18 19:28:00 -06:00
David Lechner d48734b513 ble-pybricks-service/protocol: add CommandType.ResetInUpdateMode 2022-11-18 19:28:00 -06:00
David Lechner 06936aa0e6 Merge pull request #1300 from pybricks/dlech
fixes
2022-11-11 13:16:24 -06:00
David Lechner abb4578450 v2.0.0-beta.11 2022-11-11 13:00:40 -06:00
David Lechner 6f91c57743 firmware/sagas: add delay after connecting
This adds a delay after connecting to a hub when flashing firmware via
BLE before sending any commands. This gives the OS Bluetooth stack time
to finish enumerating the Bluetooth device before we start trying to
interact with the device. Hopefully this fixes issues for some people
who are seeing problems while flashing firmware.

Issue: https://github.com/orgs/pybricks/discussions/792
2022-11-11 13:00:40 -06:00
David Lechner b2e098f2dd app: catch error when checking for updates
ServiceWorkerRegistration.update() can raise exceptions, so we need to
catch and handle them, otherwise it will crash redux sagas and the app
will stop responding.

Fixes: https://github.com/pybricks/pybricks-code/issues/1299
2022-11-11 13:00:40 -06:00
David Lechner 6c906c9cec Merge pull request #1298 from pybricks/dlech
v2.0.0-beta.10
2022-11-11 12:09:18 -06:00
David Lechner e31a567f93 vv2.0.0-beta.10 2022-11-11 12:02:59 -06:00
David Lechner 11d3a81426 update @pybricks dependencies 2022-11-11 11:59:51 -06:00
David Lechner 992923bf15 SponsorDialog: make team link inline
Also buttons cannot be inside of `<p>` tags.
2022-11-10 13:47:16 -06:00
David Lechner 3e50e58206 mpy/sagas: use "new" webpack asset URL
Jest added support for wasm imports which broke our tests. In the mean
time, Webpack 5 added a new asset inclusion mechanism that can work
around this and removes the need for our existing webpack workaround.
2022-11-10 13:47:16 -06:00
David Lechner 072358036a explorer/newFileWizard: update layout
- move switch under template title
- add description text
- style changes
2022-11-08 13:56:38 -06:00
David Lechner e2f448c12b index: make checked:disabled radio buttons appear unchecked 2022-11-08 13:56:38 -06:00
David Lechner 3974613738 activities: fix not scrolling on overflow
This adds css needed to make the activities tab view contents scroll
appropriately when the contents don't fit vertically.

Fixes: https://github.com/pybricks/support/issues/782
2022-11-08 13:56:38 -06:00
David Lechner d8b8672793 pybricksMicropython/python-worker: consolidate loadPackage
The pyodide.loadPackage() method can take an array arg, so we don't
have to call it multiple times.
2022-11-08 13:56:38 -06:00
David Lechner cb5101282b firmware/sagas: fix checksum validation
The checksum can be 0, so we can't be lazy and use `!checksum` to test
for undefined.

Issue: https://github.com/pybricks/support/issues/724#issuecomment-1295929316
2022-10-29 14:05:31 -05:00
David Lechner 2d9a0ca39e terminal: focus when repl is requested 2022-10-28 18:01:39 -05:00
David Lechner 03f6c004db sponsor: add new button and dialog
Issue: https://github.com/pybricks/support/issues/719
2022-10-28 18:01:39 -05:00
David Lechner ede6f80f49 explorer/newFileWizard: add empty file option
Fixes: https://github.com/pybricks/pybricks-code/issues/771
2022-10-28 18:01:39 -05:00
David Lechner 7810a8ee87 components/hubPicker: use images instead of text 2022-10-28 18:01:39 -05:00
David Lechner 4f09ba444c Merge pull request #1265 from pybricks/dlech
v2.0.0-beta.9
2022-10-27 13:37:13 -05:00
David Lechner e7665a2f9f v2.0.0-beta.9 2022-10-27 13:25:47 -05:00
David Lechner 90b04f85b3 webpack: add hack to remove unused icons
This follows the suggestions from [1] to reduce the package size by
only including the icons we are actually using. This gets the main
module small enough to avoid the CRA "The bundle size is significantly
larger than recommended." warning (gzipped size is < 512KB).

[1]: https://github.com/palantir/blueprint/issues/2193
2022-10-27 13:17:51 -05:00
David Lechner 694b064683 remove unnecessary {} 2022-10-27 13:17:51 -05:00
David Lechner 0725203d66 app: lazy-load terminal
This changes the terminal sagas and components to be lazy loaded to
improve time until first render.
2022-10-27 13:17:51 -05:00
David Lechner c49f37f5e4 editor: lazy load
This makes the required changes needed to make the editor components
and sagas lazy-load to improve the time before the first render of the
app.

This is done by making sure we only import types from the monaco editor
module anywhere other than the saga and the component modules and using
React.lazy to lazy-load the component and start the sagas.

This cuts the main bundle time to less than 1/2 so load time should be
over twice as fast now.
2022-10-27 13:17:51 -05:00
David Lechner 0f56bb7174 app/actions: drop didStart
This action is no longer used.
2022-10-27 13:17:51 -05:00
David Lechner 509c635a07 ble/sagas: add workaround for BlueZ quirk
The 'gattserverdisconnected' event is called before the device is
actually disconnected, so if the user tries to connect again
immediately, the web browser will show a still "paired" device, but
selecting this devices results in an infinite wait. This is a bug in
Chromium, but we can work around it by adding a delay to give BlueZ
time to actually disconnect the device.

Closes: https://github.com/pybricks/support/issues/600
2022-10-26 16:20:08 -05:00
David Lechner 57c87da464 editor: disable word-based suggestions
This turns off the default word-based suggestions. This was useful when
we didn't have proper code completion but now can be distracting.

Fixes: https://github.com/pybricks/support/issues/757
2022-10-25 13:48:02 -05:00
David Lechner e41a297922 editor: close tab on middle-click
Fixes: https://github.com/pybricks/support/issues/758
2022-10-25 12:57:07 -05:00
David Lechner e0dda59c87 Delete dependabot-yarn2.yml
dependabot should support yarn v2 now
2022-10-25 12:49:24 -05:00
David Lechner d036195a4e Update dependabot.yml
Schedule during off hours.
2022-10-25 12:48:30 -05:00
David Lechner efde030f5f Merge pull request #1259 from pybricks/dlech
v2.0.0-beta.8
2022-10-25 12:00:58 -05:00
David Lechner c763b2ef72 v2.0.0-beta.8 2022-10-25 11:50:06 -05:00
David Lechner ed8394bf84 pybricksMicropython/lib: handle exceptions when parsing
The new code parsing library raises exceptions when there are syntax
errors, so this needs to be handled.

Fixes: https://github.com/pybricks/support/issues/755
2022-10-25 11:50:06 -05:00
David Lechner 3b3f8287c0 Merge pull request #1250 from pybricks/dlech
v2.0.0-beta.7
2022-10-24 15:44:47 -05:00
David Lechner 335a16e30d Merge branch 'master' into dlech 2022-10-24 15:34:08 -05:00
David Lechner 07b929cde3 v2.0.0-beta.7 2022-10-24 15:30:50 -05:00
David Lechner cc37548e36 pybricksMicropython/lib: replace parser
This replaces the Python parsing library. The python-ast package has
really poor performance (many seconds to parse a 500 line file). The
new package can parse a file about 100 times faster.
2022-10-24 15:29:17 -05:00
David Lechner 0e2a0f909a pybricksMicropython/lib: replace parser
This replaces the Python parsing library. The python-ast package has
really poor performance (many seconds to parse a 500 line file). The
new package can parse a file about 100 times faster.
2022-10-24 15:21:52 -05:00
David Lechner a3a6e1bc6f CHANGELOG: fix link 2022-10-21 17:09:02 -05:00
David Lechner 6e7462a67a Merge pull request #1244 from pybricks/dlech
v2.0.0-beta.6
2022-10-21 16:56:37 -05:00
David Lechner fcffef37d4 v2.0.0-beta.6 2022-10-21 16:26:43 -05:00
David Lechner 6692ab6fae CHANGELOG: update for dependencies and missed changes 2022-10-21 16:26:43 -05:00
David Lechner 397ea60354 ReplButton: disable when hub doesn't support it
Fixes: https://github.com/pybricks/support/issues/743
2022-10-21 16:26:43 -05:00
David Lechner 964c18f12e ble/sagas: fix blePybricksServiceDidNotReceiveHubCapabilities firmware version
We were using the version from the @pybricks/firmware package but we
really want the version from the connected device.
2022-10-21 16:26:43 -05:00
David Lechner fa00c0aea6 firmware/sagas: fix progress alerts
These were being replaced (dismissed then new alert) instead of updated.
2022-10-21 16:26:43 -05:00
David Lechner 4400c0663e alerts/UnexpectedErrorAlert: fix not showing message
This was not showing the actual error message.

Also hide the technical details when no stack trace is available.
2022-10-21 16:26:43 -05:00
David Lechner 7e726fffaf mpy/alerts: implement compiler error
This shows the output from mpy-cross and has a button to go to the
error.
2022-10-19 18:26:37 -05:00
David Lechner e5ab52b250 explorer/fileNameFormGroup: fix fix-it for dash in file name 2022-10-19 18:26:37 -05:00
David Lechner fc4cb8eb78 alerts: add alertsHideAlert actions
This is used instead of using toaster.dismiss() directly.
2022-10-19 18:26:37 -05:00
David Lechner 28cf87c356 alerts: allow overriding key
This adds an optional key parameter to alertsShowAlert() to allow
overriding the key. This allows us to call flashProgress using that
action instead of having to use the toaster directly.
2022-10-19 18:26:37 -05:00
David Lechner fa27649fe3 toasterTypes: change toaster to ref
Instead of rendering the toaster separate from the main index, add it
there so we can inherit all of the context providers. This requires
passing the ref object instead of the toaster instance itself, so
sagas have to be updated.
2022-10-19 18:26:37 -05:00