[DO NOT MERGE] Merge beta into main#737
Draft
microbit-matt-hillsdon wants to merge 114 commits intomainfrom
Draft
[DO NOT MERGE] Merge beta into main#737microbit-matt-hillsdon wants to merge 114 commits intomainfrom
microbit-matt-hillsdon wants to merge 114 commits intomainfrom
Conversation
Fix theme and upgrade ml-trainer-microbit theme package (#626)
- New and updated nudges to guide user through recording for 2 actions then training. - Also replaced empty data samples page state with an initial placeholder action. - Add screen reading and reduced motion support for nudges. - Update homepage step-by-step and move it above video. - The welcome dialog has not been finalised yet, but has a placeholder video. --------- Co-authored-by: Matt Hillsdon <matt.hillsdon@microbit.org>
This may well be replaced by another animation format but good enough for testing.
Update UI to cope with multiple projects
Merge branch 'main' into beta
This previously tried to add existing actions to storage which threw.
Update card styling Limit number of projects in carousel Add card to view all projects at end
Ensure that text input is focused when dialoged is opened.
The recording highlight effect used usePrevious (from Chakra) to detect isRecording transitions. Because prevIsRecording was in the effect's dependency array, the effect re-ran when prevIsRecording caught up to isRecording on the next render. With isRecording still true, this drew a second start line a few ms after the first, distorting the highlight. The beta changes caused additional re-renders (e.g. due to hints) that triggered the extra effect execution. Fix by replacing usePrevious with a ref updated inside the effect. The ref is already in sync when the effect runs, so re-renders are harmless and only actual isRecording transitions trigger drawing. This doesn't seem to be an issue on beta or apps so the re-renders must be a combined effect of the two branches.
The !model criterion is too cryptic so leaves users unsure about when we show the dialog. We might add a skip, or a per session rule, or a new projects only rule in future.
... on devices with limited height e.g. 1336x768, 1280x720.
Brand colour and short viewport tweaks
...depending on stage as the createai page is not yet live.
Remove AboutPage and link to createai/ai page
New animation layout introduced for portrait mobile / narrower screen sizes.
Some of the strings have been unused since the image -> video swap in the old home page.
Prevents it showing again on navigation back from Train Model when you didn't connect (e.g. opened project with data already).
* Button B press should only record 1 recording * Don't allow recording when tour is in progress * Allow button B recording only when record button for selected action is displayed
…ve project (#809) Extract renameProject to project-utils so it can be shared between store and storage. The shared version updates both header.name and pxt.json name, and handles missing headers gracefully.
* Make visible toolbar editable name focus ring * Maximise showing project name by tweaking ActionBar styling
These should now be complete except for Catalan which we'll update again before we ship.
The redirect path was hardcoded as "/new" instead of using the basepath prefix, so it didn't match when deployed at e.g. /v/beta/new.
Essentially @glastonbridge's #825 but modified to pause the graph at the help dialog. Fixes #798 In order to stop visual flicker as the page changes out-of-step with the state machine for the training dialogs, I push the close dialog event onto the back of the event stack after a navigate, so it does not pre-emptively redraw the old page before hitting the navigate action. --------- Co-authored-by: Alex Shaw <alex.shaw@microbit.org>
Write errors (quota exceeded, unexpected failures) show a persistent toast via store state observed in Layout, keeping the app usable. Read errors propagate to the React Router error boundary. First error per session is reported to Sentry; subsequent ones are suppressed. Includes e2e tests that monkey-patch IDBObjectStore to simulate both write and read failures.
New edge cases considered: - Prioritise record hint for first action if first action has name, but no data samples. - Prioritise add action name hint for first action if first action does not have name or data samples. Move hint visibility has been updated so that: - It wobbles again if user does not move micro:bit after first wobble. - It gets hidden if user does not move micro:bit 5s after second wobble. - It does not get reinstated after reconnecting within a session. - It gets hidden after deleting action(s)/recording. - It gets hidden after being connected in testing model page. - It gets hidden if an action name input field changes. Fixes #803
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Go-live plan of which this is part: https://www.dropbox.com/scl/fi/qhrpsfbzdhetbbw713piu/CreateAI-beta-April-2026-go-live.paper?rlkey=8s3buqd6qdfanyne2o2h9g0h9&dl=0 (private)