Skip to main content

v0.2.0 — Customization Layer (Phase 2)

Phase 2 hardened the customisation core that v0.1.0 sketched and turned it into a feature complete enough to author a working account against without touching application code.

What shipped

Definitions

  • All 18 entity types live in the editor
  • Math parameters get a Test dialog that runs the Dart engine against an editable sample-scope JSON
  • Validate button posts to /definitions/:id/validate and surfaces every Zod error with the offending path
  • Spec-as-JSON tab for power-user editing
  • Versioning bumps automatically on save

Custom Views

  • Three view types live: cid, single-table, multi-session-table
  • CID editor: full Section / Block / Line / Cell add / remove / reorder; cell-level expression and parameter binding
  • Single-table editor: column list, filter expression, sort default, row-accent expression
  • Live router re-registration — saving a view makes it appear in the ribbon within seconds, no restart
  • Seeded Pit Window Calculator (CID) and All Laps (multi-session-table) views as worked examples

Custom Columns

  • Authoring CRUD across nine entity types (Lap / Run / RunSheet / Setup / Tyre / TyreSet / BoardCard / Weather / LapMarker)
  • Two seeded profiles (Lap, RunSheet)
  • Providers wired (customColumnsForEntityProvider(entityType))
  • Note: at the close of Phase 2, no built-in grid yet consumed these profiles. Phase 3 wires them into the Run Sheet Main, Board, and Setups grids.

Math engine

  • Pure TypeScript Pratt parser + tree-walking evaluator
  • 35 built-in functions across aggregations / numeric / logic / collection / lookup / interpolation / text / conversion
  • 25 dimensions in units.ts with factor + offset conversions
  • Dart port with parity test corpus

Plugin host

  • Plugin SDK published as @race/plugin-sdk with the six plugin interface contracts (math, kpiProcessor wired; runPlan, uiCell, transform, liveHook typed only)
  • Server invocation via POST /plugins/:id/invoke/{math,kpi}
  • Demo plugin (race-demo:rolling-avg-rpm@1.0.0) bundled and uploaded via pnpm seed:demo-plugin
  • Plugin Runner UI at /analysis/plugin-runner
  • Capability declarations recorded; runtime enforcement still TODO (see Capabilities and Security)

What's stubbed at end of Phase 2

  • Lap KPIs registry surface (Phase 3 brings the engine + admin)
  • CGD designer (Phase 3 ships the schema and editor)
  • Webhooks (Phase 3 ships the route + admin)
  • API keys (Phase 3 ships the admin and middleware)
  • Permission rule profiles (Phase 3 ships the middleware and admin)

See v0.3.0 — Pilot Readiness (Phase 3) for what landed next.