Skip to main content

Feature plan

Layered product plan for Cabin. Layers build upward: later layers may not invent foundations the earlier layers do not provide. Aligns with pillars and the roadmap.

Module names and APIs below are planned unless noted.

Layer 0 — Foundations

Shared meaning before chrome or apps. Included in frozen MVP v0.1.

FeatureIntentPrimary docs / modules
Cabin TokensSemantic + component tokens; OEM overlay without forktokens, token schema, tokens/cabin.tokens.json
Restriction EngineDriving / UX / safety policy as injectable gatesrestriction-states, cabin-compliance
Theme KitDay/night schemes resolving tokens into Views themes (Compose mirror optional)theme-kit, foundationsAlpha

Exit for Layer 0: Theme Kit can resolve tokens; Restriction Engine answers allow/substitute/block for chrome interactions.

Layer 1 — System surfaces

Persistent cabin chrome. MVP includes System Bar + Status Bar (Views-first) only. Overlay & Toast full pack is later.

FeatureIntentPrimary docsMVP
System BarWayfinding slots, large targets, restriction-aware entriesspecAlphaYes
Status BarGlanceable vehicle/system status; honest unavailable/faultspecAlphaYes
Overlay & ToastTransient feedback that does not trap driversPatterns + safety docsLater

Exit for Layer 1 (MVP): OEM can slot brand chrome via tokens/RRO without forking bar widgets; SystemUI consumes thin Soong deps.

Layer 2 — Core screens

Domain surfaces every cabin program expects. Explicitly after MVP — do not start until mvp.md success criteria pass.

FeatureIntentPrimary docs
MediaNow-playing, transport, restriction-aware browsemedia
HVACZones, steppers, defrost always availablehvac
EV EnergySOC, range, charge session, charge faultsev
Vehicle ControlsLocks, lights, drive modes, hazards; extension tilesvehicle controls

Exit for Layer 2: Each domain has Compose + Views contracts, compliance hooks, and dual-stack parity for critical states.

Layer 3 — Patterns

Reusable interaction grammar across domains.

FeatureIntent
Primary ActionOne obvious action cluster; glance-sized; gated cleanly
Confirm DestructiveRare, large-target confirmation; never blocks safety paths
Cabin List / GridLow-density, restriction-aware collection layouts
Empty & ErrorCalm empty states; exhaustive fault/unavailable patterns

Patterns compose Layer 0–2 pieces; they do not bypass the Restriction Engine.

Layer 4 — Craft & platform

How the product is built, verified, taught, and adopted into OEM images.

FeatureIntentPrimary docs / modules
Compose Kitcabin-compose / CabinCompose theme + System/Status bars (Experimental)compose
Views Kitcabin-views / CabinViews theme + components (SystemUI primary)views
Build-tree / Soong distributionSame sources as Maven AARs; Soong modules for SystemUI, CarLauncher, platform media; RROs for brand; thin Views-first depsbuild-tree, soong, packaging
Agent skills + AGENTS.mdModular Agent Skills and hard rules so coding agents implement thin, compliant, dual-stack Cabin correctlyAGENTS.md, docs/agents, skills/
Catalog appInteractive reference for parity and adoptionsite plan
Docs sitePublic Material-class IAsite plan

Catalog and docs site ship after enough Layer 1–2 surface exists to showcase honestly — not as empty shells. Build-tree distribution is required for OEM chrome adoption; Gradle-only packaging is insufficient for SystemUI. Agent affordances ship in Phase 1 docs so later implementation stays aligned.

Explicitly not in v1

Out of scopeWhy
Vanity animationMotion budgets favor trust over spectacle; driving reduces decoration
Phone-first patternsHandheld navigation, dense sheets, and tiny targets fail glance/quiet/safe
Kitchen-sink packsUmbrella AARs violate thin-by-design (packaging)
OEM forks as defaultBrand and features extend via tokens, slots, and policy overlays (extension model)

Also deferred: full OEM launcher as the product, every vehicle domain, and regional regulation packs as a substitute for program policy overlays (vision non-goals).

Mapping layers → roadmap

Roadmap beatFeature layers
Docs + pre-implementationStance, pillars, this plan, MVP freeze
MVP v0.1Layer 0 + System/Status bars (Views)
Media + HVACLayer 2 (first pair) — after MVP
EV + Vehicle ControlsLayer 2 (second pair)
CatalogLayer 4 catalog
WebsiteLayer 4 docs site

Compose Kit and Views Kit grow with Layers 1–2 rather than as a separate “UI framework phase” detached from surfaces. See roadmap.