Skip to content

What Matthew's working on

Generated from front matter on every project page — do not hand-edit, run scripts/build_dashboard.py instead. Each project below is its own self-contained site; clicking in takes you into that project alone.

Component Catalogue

Doc Type Status Updated Summary
Component Catalogue brief 🟢 active 2026-09-11 Overview of the Betta component catalogue brief — parts, control, and library.
Component Library: The Part System brief 🟢 active 2026-09-11 Brief defining what a 'part' is, a named independently addressable sub-element of a component, and how it attaches to the existing schema.
Custom Component Catalogue: Design Brief brief 🟢 active 2026-09-11 Stu's original component-catalogue design brief, reformatted, scoping the first pass to building the 22 standalone Betta components and their manifest.
Component parts, control and library: decisions log side-quest ✅ shipped 2026-09-11 Running decisions log for wave two of the Betta component catalogue build (parts, control, library), recording each decision and the rejected alternative.
Handoff: make the Betta component catalogue usable (Parts, Control, Library) side-quest ✅ shipped 2026-09-11 Unattended build handoff instructing an agent to implement Parts, Control and Library wiring for the Betta component catalogue end-to-end, including tests and a draft PR.

Resolver Engine

Doc Type Status Updated Summary
Background brief 🟢 active 2026-09-11 Feature page introducing background as a new derived-layout layer type whose box is computed as the union of other layers.
Brand Style Tokens brief 🟢 active 2026-09-11 Feature page replacing literal colour and font values with named brand-style-role references so a brand's palette has one home.
Cues brief 🟢 active 2026-09-11 Feature page defining named time-landmark cues, split into an early cheap addressing primitive and a later full authored cue/retiming system.
Example: 50% Off — Audio brief 🟢 active 2026-09-11 Worked JSON example for the 50% Off Audio category-discount component (manifest row 13).
Example: Betta Buys Cashback brief 🟢 active 2026-09-11 Worked JSON example for the Betta Buys Cashback component (manifest row 12), three flush equal-width stacked blocks.
Example: Black Friday banner brief 🟢 active 2026-09-11 Worked JSON example for the Black Friday banner component (manifest row 01), covering flow layout, rotation, and staggered wipe/pulse animation.
Example: Bonus Cashback sticker brief 🟢 active 2026-09-11 Worked JSON example for the Bonus Cashback sticker component (manifest row 09), a compact two-row cashback sticker layout.
Example: Bonus Cashback, full stack brief 🟢 active 2026-09-11 Worked JSON example for the Bonus Cashback full-stack component (manifest row 05), three tilted panels plus small print.
Example: Bonus Cashback, no value brief 🟢 active 2026-09-11 Worked JSON example for the Bonus Cashback no-value component (manifest row 06), the simplest two-panel member of the cashback family.
Example: Bonus Cashback, red flash brief 🟢 active 2026-09-11 Worked JSON example for the Bonus Cashback red-flash component (manifest row 07), bare text and panel rows over a coloured scene background.
Example: Bonus Cashback, three tier brief 🟢 active 2026-09-11 Worked JSON example for the Bonus Cashback three-tier component (manifest row 08), a yellow/red/yellow panel stack with a footnote.
Example: Boxing Day banner brief 🟢 active 2026-09-11 Worked JSON example for the Boxing Day banner component (manifest row 02), three tilted stacked panels with staggered wipe-in.
Example: Energy Rating badge brief 🟢 active 2026-09-11 Worked JSON example for the Energy Rating badge component (manifest row 18), the smallest possible single swappable-image document.
Example: Footy Finals banner brief 🟢 active 2026-09-11 Worked JSON example for the Footy Finals banner component (manifest row 04), a label-over-hero panel pair with drop shadow and pulse.
Example: Home Appliance Cashback brief 🟢 active 2026-09-11 Worked JSON example for the Home Appliance Cashback category tab component (manifest row 10).
Example: Price + Product v2, price and saving brief 🟢 active 2026-09-11 Worked JSON example for the Price + Product v2 price-and-saving component (manifest row 16), a straight-discount two-part module.
Example: Price + Product, before / after cashback brief 🟢 active 2026-09-11 Worked JSON example for the Price + Product before/after-cashback component (manifest row 15), fixed-width stacked price boxes.
Example: Product description and code brief 🟢 active 2026-09-11 Worked JSON example for the product description and code component (manifest row 17), a left-aligned content-hugging text stack.
Example: Red Hot Summer Sale brief 🟢 active 2026-09-11 Worked JSON example for the Red Hot Summer Sale component (manifest row 03), a five-panel tilted column with staggered wipes.
Example: Sale — Up To 30% Off brief 🟢 active 2026-09-11 Worked JSON example for the Sale Up To 30% Off component (manifest row 14), two oppositely-tilted red panels.
Example: Spend and Get brief 🟢 active 2026-09-11 Worked JSON example for the Hisense Spend and Get partner-lockup component (manifest row 11).
Example: plain text brief 🟢 active 2026-09-11 Worked JSON example for a bare, content-sized typed-text component with no background panel.
Example: the catalogue cover and phone brief 🟢 active 2026-09-11 Worked JSON example for the catalogue cover-and-phone component (manifest row 20), two pinned/positioned swappable images.
Example: the catalogue flag brief 🟢 active 2026-09-11 Worked JSON example for the catalogue Out Now flag component (manifest row 19), a pennant shape dropping in from the canvas edge.
Example: the discount lockup brief 🟢 active 2026-09-11 Canonical worked example, the discount lockup, written as JSON touching most of the system's features at once.
Example: the free-form text box brief 🟢 active 2026-09-11 Worked JSON example for a free-form fixed-size text box component that wraps typed copy inside an authored panel.
Examples brief 🟢 active 2026-09-11 Index page for the worked examples section, rebuilding all 22 Betta catalogue components as pure JSON against this brief's schema.
Foundations: Coordinate System & Sizing brief 🟢 active 2026-09-11 Foundations page defining the real-pixel coordinate system, sizing, anchors and bounds vocabulary shared by layout and background.
Foundations: Expressions brief 🟢 active 2026-09-11 Foundations page introducing a single small expression-string primitive to unify four previously-bespoke computed-number mechanisms.
Foundations: Pipeline & Architecture brief 🟢 active 2026-09-11 Foundations page mapping the pipeline surfaces touched (schema, compositions engine) shared across every feature.
Foundations: The Motion Graph brief 🟢 active 2026-09-11 Foundations page describing the motion graph, the node/edge mechanism every layer reads its resolved transform from during Animate.
Keyframe Animation brief 🟢 active 2026-09-11 Feature page generalizing motion into a per-property keyframe timeline, with named animations as the authoring unit and cues as the addressing mechanism.
Positioning — Layout Modes (Absolute, Flow, Pin) brief 🟢 active 2026-09-11 Feature page defining the four layout modes (absolute, flow, pin, derived) as a discriminated union on layout.mode.
Price brief 🟢 active 2026-09-11 Feature page unifying currency, percent, unit and decimal formatting into one number-run style built on Intl.NumberFormat.
Resolver Engine — Design Brief brief 🟢 active 2026-09-11 Overview and status page for the Resolver Engine design brief, covering scope (pipeline, price/background, keyframe animation) and what's actually built today.
Text Foundation brief 🟢 active 2026-09-11 Feature page for the text engine, the one already-built-and-tested foundation (solve/animate modules, rich-text wrap/shrink solver, typography units) the rest of the brief treats as trusted.
references brief 🟢 active 2026-09-11 References page listing what this brief supersedes or extends and which bespoke components it retires or migrates.
schema-version-gating brief 🟢 active 2026-09-11 Foundations page documenting the decision to ship this delivery as a permanent explicit two-pipeline fork gated on schemaVersion rather than a live migration.

Retail Studio Layout

Doc Type Status Updated Summary
Retail Studio Layout & Animation — Intended Shape (Working Notes) side-quest ✏️ draft 2026-09-11 Working notes (not a decision doc) capturing a long design conversation about the intended shape of Retail Studio's layer/layout/animation architecture.

Template Composer

Doc Type Status Updated Summary
Deferred: AI / Agent Forward-Compatibility brief 🟢 active 2026-09-11 Page deferring AI/agent integration, relying on the Change[] mutation path being the one thing an agent would need as a caller later.
Deferred: Concurrency & Editing Safety brief 🟢 active 2026-09-11 Page deferring real-time collaborative editing out of alpha scope while ensuring the schema and Change model don't preclude adding it later.
Deferred: Keyframes & Cues, from Composer's Side brief 🟢 active 2026-09-11 Page explaining why Composer defers to the Resolver Engine's keyframe and cue systems, and the one hook the Change model leaves for them.
Delivery Sequencing: Dependency Graph & Priority Ranking brief 🟢 active 2026-09-11 Page laying out the delivery dependency graph and priority ranking, distinguishing architectural structure from where effort should go next.
Editing UI & Canvas brief 🟢 active 2026-09-11 Page mapping which existing Retail Studio UI reuses into Composer's editing surface and what's genuinely new (property panel, layer list, undo/redo, promote-to-Element).
Fork, Rebase & Conflict Resolution brief 🟢 active 2026-09-11 Page defining fork-and-rebase: every instance starts from a frozen base plus a Change[] diff, and catching up is an explicit rebase.
Foundations: Brand Scoping & Brand Style brief 🟢 active 2026-09-11 Foundations page defining brand scoping for Elements, Scenes and Projects and the brand style-role reference mechanism.
Foundations: Elements, Scenes & Projects brief 🟢 active 2026-09-11 Foundations page defining Elements, Scenes and Projects as one mechanism reused at three altitudes rather than three bespoke systems.
Foundations: Identity, Versions & Schema Versioning brief 🟢 active 2026-09-11 Foundations page defining the three-way identity/version/instance shape, the commit rule, and the open question of Composer's schema versioning relative to the engine's.
Foundations: Overlays brief 🟢 active 2026-09-11 Foundations page defining Overlay as a scene-like container that covers Scene instances rather than taking a slot in the sequence.
Foundations: The Change Model & Mutation Engine brief 🟢 active 2026-09-11 Foundations page defining Change[], the single typed discriminated-union mutation mechanism that replaces today's four separate override schemes.
Foundations: The Resolver Engine Dependency brief 🟢 active 2026-09-11 Foundations page describing what Composer takes from and asks of the separately-delivered Resolver Engine, without restating its mechanisms.
Permissions & Enforcement brief 🟢 active 2026-09-11 Page defining the real authorisation tier scale for Composer editing, replacing the affordance-only layoutMode gate.
Process & Organisation brief 🟢 active 2026-09-11 Page on delivery process and organisation, addressing the fact that alpha scope has no concrete definition from BSR.
References brief 🟢 active 2026-09-11 References page pointing to the Resolver Engine brief and the full discussion-history notes file.
Storage & Versioning brief 🟢 active 2026-09-11 Page extending Retail Studio's bundled-vs-DB-native template storage pattern to Composer content, decided DB-native-only with full recursive versioning from day one.
Template Composer — Design Brief brief 🟢 active 2026-09-11 Overview and status page for the Template Composer design brief, describing scope and pointing to the full discussion history in the notes file.
Testing, Preview & Incident Response brief 🟢 active 2026-09-11 Page defining Composer's review rigour via render-and-compare visual regression and its incident-response plan.