Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
5fa2656
Take @microbit/ui-carousel for the home and projects pages
microbit-matt-hillsdon Sep 12, 2026
4141cae
Move the editor to /project
microbit-matt-hillsdon Sep 12, 2026
e7b1b17
Choose the editor's project when its route loads
microbit-matt-hillsdon Sep 12, 2026
881d1d5
Add the home and projects pages
microbit-matt-hillsdon Sep 12, 2026
e70fb7f
Add a home button to the editor's sidebar header
microbit-matt-hillsdon Sep 12, 2026
4fc749c
Add e2e coverage for the home and projects pages and the new routes
microbit-matt-hillsdon Sep 12, 2026
2b075f6
Make the sidebar logo the way home instead of a separate button
microbit-matt-hillsdon Sep 12, 2026
9cd4171
Show the Python logo in brand colour at the top-left of project cards
microbit-matt-hillsdon Sep 12, 2026
3c5f2dc
Make a #project: link a new project when the projects database is active
microbit-matt-hillsdon Sep 12, 2026
fafd95d
Import files as new projects, and add files to the open project
microbit-matt-hillsdon Sep 12, 2026
8376e86
Align the home page projects row with ml-trainer
microbit-matt-hillsdon Sep 12, 2026
035b9f1
Let resource cards fill their carousel slide
microbit-matt-hillsdon Sep 12, 2026
c6ca965
Link the private theme package with a script and align home page cont…
microbit-matt-hillsdon Sep 12, 2026
d23bf11
Show a persistent toast when saving to the projects database fails
microbit-matt-hillsdon Sep 13, 2026
ed75913
Show the organisation logo and Python Editor wordmark in the page hea…
microbit-matt-hillsdon Sep 13, 2026
d4e22a7
Reword the home page banner in microbit.org's terms
microbit-matt-hillsdon Sep 13, 2026
41e3ff8
Make the projects page's back-to-home button a white pill with ml-tra…
microbit-matt-hillsdon Sep 13, 2026
0382b7a
Use the plain button variant for the page header's settings and help …
microbit-matt-hillsdon Sep 13, 2026
ec9f8f4
Update the home spec for the reworded banner heading
microbit-matt-hillsdon Sep 13, 2026
748d401
Scope the editor's drop target to the editor, give the projects page …
microbit-matt-hillsdon Sep 13, 2026
a239441
Show the beta notice as a band under the page header and drop the sid…
microbit-matt-hillsdon Sep 13, 2026
3dbe084
Take the project idea card images from the website's make pages
microbit-matt-hillsdon Sep 13, 2026
bbb2b6e
Use ml-trainer's minimal placeholders for the OSS image fallbacks
microbit-matt-hillsdon Sep 13, 2026
684e976
WIP notes on the home page/multiple projects work.
microbit-matt-hillsdon Sep 13, 2026
d449b90
Migrate to the reviewed ui-patterns project component API
microbit-matt-hillsdon Sep 14, 2026
47f4efd
Add ml-trainer's footer to the home page
microbit-matt-hillsdon Sep 14, 2026
2dcf357
Pin the released ui packages and the theme branch build
microbit-matt-hillsdon Sep 14, 2026
15ddb54
Fix #project: links on a deployment under a base URL
microbit-matt-hillsdon Sep 14, 2026
f0ebbd8
Match page URLs against the deployment's base URL in the e2e tests
microbit-matt-hillsdon Sep 14, 2026
4900d9c
Set the e2e cookies on the context, not the app fixture
microbit-matt-hillsdon Sep 14, 2026
008f92b
Upload the Playwright report CI actually writes
microbit-matt-hillsdon Sep 14, 2026
ab1f54e
Serve the base URL without its trailing slash from vite preview
microbit-matt-hillsdon Sep 14, 2026
82d561e
Give the OSS build a logo to click
microbit-matt-hillsdon Sep 14, 2026
8d7434a
Size the drop targets to their content so the home footer sits at the…
microbit-matt-hillsdon Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env:
# renovate: datasource=npm depName=npm
NPM_VERSION: "11"
# renovate: datasource=npm depName=@microbit-foundation/python-editor-v3-microbit registryUrl=https://npm.pkg.github.com
THEME_VERSION: 0.4.0
THEME_VERSION: 0.0.0-projects.pages.111
# renovate: datasource=npm depName=@microbit-foundation/website-deploy-aws registryUrl=https://npm.pkg.github.com
DEPLOY_AWS_VERSION: "0.6.0"
# renovate: datasource=npm depName=@microbit-foundation/website-deploy-aws-config registryUrl=https://npm.pkg.github.com
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: reports
path: reports/
path: playwright-report/
retention-days: 3
- run: npm run deploy
if: github.repository_owner == 'microbit-foundation' && (env.STAGE == 'REVIEW' || success())
Expand Down
6 changes: 4 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
This app uses react-aria-components + Panda CSS via `@microbit/ui`.
Read `../ui/docs/hints.md` before styling/theming/UI work.
The private theme package is the sibling repo
`../python-editor-v3-microbit` (consumed via a manual `node_modules`
symlink locally — re-create it after `npm install`).
`../python-editor-v3-microbit`. Link it with `npm run dev:link-theme`, which
builds it and symlinks it into `node_modules`; re-run after `npm install`.
Home page artwork (banner, help cards) lives there and is resolved per file by
`theme-package/images/*` imports, falling back to `src/deployment/default`.

`@microbit/ui` is consumed as the **published package**, pinned in
`package.json`. To develop against a local `../ui` checkout instead — what you
Expand Down
79 changes: 67 additions & 12 deletions docs/analytics-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,26 +108,80 @@ No `destination` param: the editor only downloads. ml-trainer's
### `project_import`

User brought files in. Fires once per drop / picker selection, before the
files are parsed, so it counts attempts.
files are parsed, so it counts attempts. A hex always becomes a new project.
Other files join the open project from the editor and become a new project
from the home and projects pages.

| Param | Values |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `source` | `drop` / `file_picker` (same values as ml-trainer) |
| `format` | `hex` (replaces the project) / `py` (Python file added to the project) / `other` (any other single file) / `multiple` (more than one file) |

### `project_reset`

User chose Reset project, replacing everything with the starter program. Fires
when the menu action is chosen, before the confirm dialog. No params.
| Param | Values |
| --------- | ------------------------------------------------------------------------------------------------------------ |
| `source` | `drop` / `file_picker` (same values as ml-trainer) |
| `format` | `hex` / `py` (a single Python file) / `other` (any other single file) / `multiple` (more than one file) |
| `surface` | `editor` (the Files tab or a drop on the editor) / `home` (the projects row's Import button or a drop there) |

### `project_rename`

User set the project name, from the header or the name-your-project prompt on
save. No params.
save, with no params; or from a project card or the projects toolbar, with
`surface`.

| Param | Values |
| --------- | --------------------------------------------------------- |
| `surface` | `home` / `projects` (absent when renamed from the editor) |

## Project management events

The home and projects pages, aligned with ml-trainer's events of the same
names so one set of custom definitions serves both.

### `project_create`

User named and created a new project from the home page.

| Param | Values |
| --------- | ------ |
| `surface` | `home` |

### `project_open`

User opened a project from a card or its menu.

| Param | Values |
| --------- | ------------------- |
| `surface` | `home` / `projects` |

### `project_duplicate`

| Param | Values |
| --------- | ------------------- |
| `surface` | `home` / `projects` |

### `project_delete`

Fires once for a single delete and once for a multi-select delete, after the
user confirms.

| Param | Values |
| --------- | --------------------------------------------------------- |
| `count` | int (1 for a card's menu; the selection's size otherwise) |
| `surface` | `home` / `projects` |

### `project_search`

Projects page only. Fires once per intentional search, 400ms after the last
keystroke, not per keypress. No params.

### `project_sort`

Projects page only. Fires when the user changes the sort field or direction.

| Param | Values |
| ----------- | ---------------------------------------------- |
| `field` | `name` / `timestamp` (last modified or opened) |
| `direction` | `asc` / `desc` |

### `idea_open`

User opened an idea into the editor.
User opened an idea from the documentation as a new project.

| Param | Values |
| ----- | -------------------------- |
Expand Down Expand Up @@ -234,6 +288,7 @@ reading old dashboards.

| Old name | Status |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `project_reset` | Removed with the Reset project action (September 2026); replacing a program means importing from the home page. |
| `boot` → `WebUSB-available` | Dropped. Replaced by the `webusb_available` user property. `session_start` auto-fires. |
| `connect` | Replaced by `device_step` (`task: connect`) and `device_success` / `device_failure` / `device_exit`. |
| `disconnect` | Renamed `device_disconnect`; widened with `reason` to also capture unexpected drops. |
Expand Down
Loading