Skip to main content

v0.3.0 — Pilot Readiness (Phase 3)

Phase 3 turned the platform from "customisable plumbing" into something a pilot team could realistically run a session against. The headline additions: a fuel + tyre + run-plan calculation chain, a free-form CGD designer, an issues workflow with full state machine, account-level permission rule profiles, API keys, HMAC-signed webhooks, and a JSON import / scope-tree pipeline.

Run Plan + calculation engine

  • Run mode + Lap mode in the editor (toggle without losing data)
  • Time breaks and time fillers as first-class run kinds with their own row accents
  • Per-row insert menus — drop a run / break / filler in any position
  • Lap markers per row in Lap mode, with lapTimeRatio and fuelConsRatio visible in the dropdown
  • Live calculator (run_plan/calc.dart) recomputes the enriched plan on every keystroke — totals, coverage, cumulative distance, per-row start/end offsets
  • POST /run-plans/calculate — the same engine exposed as a headless endpoint
  • Print to PDF via the pdf package
  • Summary card with session-coverage bar (amber > 90%, red > 100%)

Tyres

  • New Wear Sheet tab on the Tyres screen with corner-by-corner data entry
  • Tyre Specifications admin (/admin/tyre-specifications) — declare which wear parameters apply per compound

Setups

  • Setup Comparison screen at /events/:eventId/setups/compare — pick two setups, optional Change Formatter, side-by-side diff with highlights and grouping
  • Change Formatters admin (/admin/change-formatters) — reusable parameter-grouping rules consumed by both the Run Sheet's Setup Change tab and the Comparison screen
  • New Setup Change tab on the Run Sheet

CGD

  • Full CGD (Custom Generic Designer) schema in packages/shared-types/src/cgd.ts
  • New cgd viewType on Custom Views
  • Recursive layout-item tree: border / grid / stack / tab / tab-item / scroll / expander / items-control / list-view
  • Cell leaves reuse the existing CID cellSpec
  • See CGD Editor for the property reference

KPIs and Data Analysis Profiles

  • New packages/kpi-engine with channel intrinsics (Channel, Window, RollingAvg, GateAbove, GateBelow, EdgeCount, Delta, Where)
  • Data Analysis Profiles admin (/admin/data-analysis-profiles) for authoring KPIs without a plugin
  • POST /data-analysis-profiles/:id/evaluate — evaluate a profile against a sample buffer; per-KPI errors don't poison the batch
  • See Lap KPIs and KPI Expression Language

Issues + workflows

  • Issues as a first-class entity (separate from BoardCards)
  • New Issues screen at /events/:eventId/issues
  • States, transitions, severity and category modelled
  • Acknowledge (POST /issues/:id/acknowledge) and Resolve (POST /issues/:id/resolve) actions
  • Issue Workflows admin (/admin/issue-workflows) — author reusable state machines
  • See Issues

Permissions, API keys, webhooks

  • Permission Rule Profiles*, read:*, write:Setup, HTTP-style globs, last-match-wins, default-allow, owner/admin-bypass
  • In-process middleware (requirePermission(entity, op)) gates every authenticated request
  • Profile assignment per membership
  • Admin at /admin/permission-profiles
  • API Keys admin (/admin/integrations → API Keys tab) — account-scoped, secret returned only on create
  • Webhooks admin (/admin/integrations → Webhooks tab) — HMAC-signed POST delivery for entity-change events
  • See Permission Profiles, Integrations

Per-event / per-session data

  • EventData (/event-data) and SessionData (/session-data) — JSON blob stores for per-event and per-session constants surfaced on math-expression scope
  • Account Options (/account-options) — account-wide global options
  • See Account Options, Event Data, Session Data

JSON import

  • POST /import with profile-driven scope tree — apply a single payload to multiple entities atomically
  • Import Profiles admin (/admin/import-profiles) — name and reuse scope trees
  • See Import Profiles

Local dev experience

  • ./setup.sh + ./teardown.sh at the repo root — one-shot bring-up of the entire stack (Docker, migrate, seed, upload demo plugin, build Flutter web on :6166, build docs on :6167, run smoke test)

Numbers

  • 35 Hono route modules
  • 35 math functions + the KPI engine on top
  • 25 dimensions in the units catalogue
  • 16 admin screens (up from 7 at v0.1.0)
  • Permission middleware: 10/10 tests passing
  • Phase 3 closed with a clean smoke test against the seeded account