Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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-home.page.114
# 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