โ–ฃ

Maqueen Lab // Project Report

Snapshot at v0.1.60 ยท 2026-05-02 ยท commit ab8c47f
๐Ÿ“š Docs ๐Ÿค– Robot App

๐Ÿ“Š What this page is

End-to-end status of the Maqueen Lab project โ€” what's shipped, what's in flight, and what's still left. Auto-rendered from observed repo state, not from a wishlist.

v0.1.60 firmware/build version 53 HTML files 0 broken links 32/32 smoke tests passing 3 languages (EN ยท FR ยท AR) 5 themes ๐ŸŒ Live
๐Ÿ“ By the numbers โœ… Shipped ๐ŸŸก Partial ๐Ÿ”ต What's left ๐Ÿ”ด Manual / human-only ๐Ÿ—๏ธ Architecture map ๐Ÿ›  CI & quality ๐Ÿ”‡ Won't do

๐Ÿ“ By the numbers

Total HTML
53
across 5 surfaces
Labs
8
single-purpose, kid-friendly
Lessons
8
A4 print-ready, mapped
Workshops
9
manual ยท booklet ยท cards ยท โ€ฆ
Smoke tests
32
all passing in 1.3 min
i18n strings
~3 k
EN ยท FR ยท AR everywhere
Markdown docs
7
+ 6 translations
JS modules
4 new
telemetry ยท share ยท demo ยท a11y

โœ… Shipped

Phase 1 โ€” Original 20-item roadmap (v0.1.0 โ†’ v0.1.60)

CategoryDone
10 app improvementsVoice commands ยท Tilt-to-drive ยท AI session summary ยท Time-lapse export ยท Drag-to-trace autopilot ยท AR webcam overlay ยท Robot personalities ยท Battery indicator ยท Telemetry export ยท 2-robot pairing
10 educational gamesSLAM the Room ยท Echo Hunt ยท Maze Runner ยท Buzz the Tune ยท Simon Says NeoPixel ยท Math the Distance ยท Robot Soccer ยท Line Follower Race ยท PWM Lab ยท Morse Decoder

โœ“ 20 / 20

Phase 2A โ€” Reach (turn product into adoption)

#ItemWhat landedStatus
1Main cockpit i18n (FR + AR)js/lang.js 1932 LoC + 304 data-i18n + flag picker + RTLDONE
2Etsy package โ€” slim & readySlimmed 86โ†’10 files (260 KB). Build script tested, 1.02 MB ZIPDONE
3Teacher kit (8 lesson plans)A4 print-ready, mapped to FR Cycle 3/4 + NGSS + CCSS-M + CSTA, ๐Ÿ’พ PDF buttonDONE
4PDF export from flyer/poster๐Ÿ’พ PDF button on both, first-click i18n toast hintDONE
5Curriculum mapping8 Labs + 10 games ร— FR Cycle 3/4 ยท NGSS ยท CCSS-M ยท CSTADONE

โœ“ 5 / 5

โšก Multipliers โ€” small effort, large leverage

ItemWhat it doesStatus
๐ŸŽญ Demo without robotjs/demo-mode.js โ€” fake BLE shim activated by ?#demo=1 or localStorage flag. Replaces connect/sendLine/isConnected; emits synthetic ECHO:N + DIST/LINE/IR sensor values. Floating orange badge. Conversion lever: teachers/kids try every Lab without buying hardware.DONE
๐Ÿ”— /share deep linksjs/share-link.js โ€” encodes theme ยท lang ยท demo into URL hash. Auto-applies on load (RTL flips for AR). Public API MqShare.url() / .copy() / .addButton().DONE
๐Ÿ“Š Local-only telemetryjs/telemetry.js + viewer โ€” auto-tracks visits, themes, langs into localStorage. Zero network โ€” no fetch, no beacon, no cookies. Heatmap with bar charts, JSON export, opt-out.DONE

โœ“ 3 / 3

๐Ÿ›  Phase 2B โ€” Hardening (4 of 5)

#ItemStatus
2B-6Smoke tests (Playwright) โ€” 32 tests covering hubs ยท labs ยท lessons ยท demo-mode ยท telemetry ยท share-link ยท a11y ยท lang switcher ยท auto-renderDONE โ€” 32/32
2B-7Split maqueen-tab.js (4580 LoC)PENDING
2B-8GitHub Actions CI โ€” link audit + inlined-md staleness + JSON validity + secret-leak guard + a11y sanity + smoke testsDONE
2B-9A11y pass โ€” js/a11y.js on 53 pages: skip-link, focus-visible ring, auto-aria-label, aria-hidden on decorative emoji, prefers-reduced-motion, lang ensuredDONE
2B-10Performance budget (Lighthouse CI)PENDING

๐ŸŒ i18n parity (full coverage)

SurfaceENFRARMechanism
Main app index.htmlโœ“โœ“โœ“js/lang.js + 304 data-i18n
Labs (10 files)โœ“โœ“โœ“Inline T table
Workshops (9 files)โœ“โœ“โœ“3-file pattern + inline T
Docs guides (5 ร— 3 files)โœ“โœ“โœ“3-file pattern
Auto-rendered (CHANGELOG ยท CUSTOMIZE ยท todo ยท README)โœ“โœ“โœ“_md-render.js lang-aware loader
Flyer + Posterโœ“โœ“โœ“Inline T table

Translation files for FR + AR: README.{fr,ar}.md, docs/{CHANGELOG,CUSTOMIZE,todo}.{fr,ar}.md โ€” +1132 lines of new content. Every HTML auto-renders the right language.

๐Ÿ—๏ธ Bonus shipped during this session

๐ŸŸก Partial / work-in-progress

Nothing currently mid-flight in the codebase. Last partial item (Etsy package) was either shipped (slim version) or punted to manual (the 3 launch-critical photo/video items).

๐Ÿ”ต What's left

Phase 2B โ€” Hardening (2 of 5 remaining)

#ItemWhy nowEffort
2B-7Split js/maqueen-tab.js (4580 LoC) into per-card modulesPre-condition for any further main-app work. One file = one accident. Now safe with smoke tests green.3-4 h
2B-10Performance budget โ€” Lighthouse CI + budget fileSchool hardware is slow. Catch perf regressions in CI. Budget: โ‰ค 1.5 s LCP on cheap Android tablet.1 h

Phase 2C โ€” Depth (5 of 5 remaining)

#ItemEffort
11Top 3 wishlist labs (curated from labs/wishlist.html votes)varies
12Multi-robot Lab (WebRTC peer-to-peer) โ€” Phase 1 #10 was checked but no first-class lab4-6 h
13Progress badges / kid passport (localStorage-only, no backend)2 h
14Add-on framework (Gravity sensors + I2C accessories) โ€” verb namespace stubbed in firmware4 h
15Phase 2 firmware (firmware/v2-raw-pins.ts) โ€” same protocol, raw pins.* calls6 h

๐Ÿ”ด Manual โ€” only you can do

These are not codable. Either hardware/photo or external account access. Block the Etsy publish until done.

ItemWhy
๐Ÿ“ท Photograph a real micro:bit on a laptop running the app (Etsy hero image)Single biggest Etsy thumbnail conversion factor for teacher-product listings.
๐ŸŽฌ Record a 60-second listing video using seller-only/ETSY_LISTING.md as the scriptEtsy algorithmically prefers listings with video by ~30%.
๐Ÿ›’ Create LAUNCH10 promo code in Etsy Shop ManagerDrives first 10 reviews fast.

๐Ÿ—๏ธ Architecture map

5 surfaces, all reachable from the main index.html hub. Full link audit: 0 broken hrefs, 1 acceptable orphan (tools/tests.html).

maqueen-app/
โ”œโ”€โ”€ index.html                 โ† Main app (BLE cockpit + Playground tabs)
โ”œโ”€โ”€ README.html                โ† auto-rendered from README.md (+ FR/AR variants)
โ”‚
โ”œโ”€โ”€ labs/                      โ† Phase 1 bonus ยท 10 HTML files
โ”‚   โ”œโ”€โ”€ index.html               โ† Labs hub (8 cards + wishlist)
โ”‚   โ”œโ”€โ”€ joystick ยท distance ยท music ยท servo ยท ir ยท lights ยท vision ยท copilot
โ”‚   โ””โ”€โ”€ wishlist.html            โ† community vote
โ”‚
โ”œโ”€โ”€ docs/                      โ† Documentation surface
โ”‚   โ”œโ”€โ”€ index.html               โ† Docs hub (10+ cards)
โ”‚   โ”œโ”€โ”€ guide ยท pinout ยท plan ยท schematics ยท schematics-kids  โ† 5 guides ร— 3 langs
โ”‚   โ”œโ”€โ”€ lessons/                 โ† Phase 2A-3 ยท 8 A4 lesson plans + index
โ”‚   โ”œโ”€โ”€ curriculum.html          โ† Phase 2A-5 ยท standards mapping
โ”‚   โ”œโ”€โ”€ telemetry.html           โ† Multiplier 1 ยท usage heatmap
โ”‚   โ”œโ”€โ”€ report.html              โ† this page
โ”‚   โ”œโ”€โ”€ CHANGELOG ยท CUSTOMIZE ยท todo ยท next  โ† auto-rendered .md
โ”‚   โ””โ”€โ”€ _md-render.js ยท _inline-md.mjs       โ† shared renderer
โ”‚
โ”œโ”€โ”€ workshops/                 โ† Printables (FR/EN/AR)
โ”‚   โ”œโ”€โ”€ hub.html                 โ† workshops hub (8 cards)
โ”‚   โ”œโ”€โ”€ manual.{html,fr,ar}      โ† 12-mission classroom manual
โ”‚   โ”œโ”€โ”€ booklet ยท cheatcards ยท energizers
โ”‚   โ””โ”€โ”€ flyer.html ยท poster.html โ† A4 print + ๐Ÿ’พ PDF + QR + i18n
โ”‚
โ”œโ”€โ”€ js/                        โ† Behavior layer
โ”‚   โ”œโ”€โ”€ ble.js ยท ble-shim.js ยท ble-scheduler.js ยท core.js ยท maqueen-tab.js (4580 LoC) ยท โ€ฆ
โ”‚   โ”œโ”€โ”€ lang.js                  โ† i18n machinery (1932 LoC, EN/FR/AR)
โ”‚   โ”œโ”€โ”€ a11y.js            โ† skip-link ยท focus-ring ยท aria-label ยท prefers-reduced-motion
โ”‚   โ”œโ”€โ”€ telemetry.js       โ† localStorage-only visit counters
โ”‚   โ”œโ”€โ”€ share-link.js      โ† URL-hash state encoder
โ”‚   โ””โ”€โ”€ demo-mode.js       โ† fake BLE shim (try without robot)
โ”‚
โ”œโ”€โ”€ firmware/                  โ† v1-maqueen-lib.ts (MakeCode, BLE UART)
โ”œโ”€โ”€ etsy-package/              โ† slim, 10 files, 260 KB
โ”‚
โ”œโ”€โ”€ tests/smoke.spec.mjs       โ† Phase 2B-6 ยท 32 Playwright tests
โ”œโ”€โ”€ .github/workflows/ci.yml   โ† Phase 2B-8 ยท link audit + tests + a11y + secrets
โ””โ”€โ”€ tools/
    โ”œโ”€โ”€ _audit-links.py          โ† static link/orphan audit (used by CI)
    โ”œโ”€โ”€ _check-asset-refs.py     โ† finds missing assets
    โ”œโ”€โ”€ inject-script.py         โ† bulk-inject <script> into all HTML
    โ””โ”€โ”€ git-hooks/pre-commit     โ† auto-runs inline-md when .md changes
  

๐Ÿ›  CI & quality

Every push and PR to main runs two CI jobs. They block merge if anything regresses.

JobChecksFailure mode
audit โœ… Link audit (53 HTML ยท 0 broken hrefs ยท 1 allowed orphan)
โœ… Inlined-md staleness โ€” refuses commits that edited .md without re-running the inliner
โœ… JSON validity โ€” product.json + build-info.json
โœ… Secret-leak grep โ€” API_KEY= ยท PRIVATE_KEY ยท TODO:.*SECRET
โœ… A11y sanity โ€” every <html> has lang, every <img> has alt
Hard-fails on broken hrefs or stale inlined md
smoke โœ… Playwright headless (chromium)
โœ… 32 tests covering hubs ยท labs ยท lessons ยท auto-render ยท demo-mode ยท telemetry ยท share-link ยท a11y ยท lang switcher ยท workshops hub flyer/poster
โœ… Total runtime ~1.3 min in CI
Fails on any test failure; uploads Playwright report on failure

Local quality tools

๐Ÿ”‡ Explicitly won't do

๐Ÿ“ˆ Where we are now

Phase 1 (20 items) DONE ยท Phase 2A (5 items) DONE ยท Multipliers (3 items) DONE ยท Phase 2B (3 of 5) 3/5 ยท Phase 2C (0 of 5) 0/5 ยท Manual 3 items pending

Recommended next pick: 2B-7 (split maqueen-tab.js) โ€” now safe to attempt with smoke tests green. Then 2B-10 (Lighthouse CI) โ€” small, high-leverage.