The living catalog

Instruments01/10

Console

G2G5G6G7

The persistent docked control strip at the app frame's bottom edge — not a media player but the app's hands. Six zones: identity, transport+commit, the board, panic, level, status. Exactly ONE per product.

Posture

A working console — arm with the button below, commit with GO, panic with STOP. The announcer anchors above the housing.

npx candlelight-ds add console

Use when

The app shell's one console slot — dock it at the frame's bottom edge the way you mount nav. Whatever your product's running thing is lives here.

Don't use when

Anywhere else. A second 'footer' component is a failing test. Per-surface controls belong to the surface.

States
running (identity + glow)empty (teaches, in voice)identity hidden (width yields)board compressedboard scrolling
Keyboard
  • ?opens the surface's generated key map (ConsoleHelpKey)
Traps
  • Two strips that 'look the same' but share no code will drift within a month — this law exists because it happened. The component warns in dev when two consoles mount.
Acceptance
  • The one-instrument test: exactly one implementation, imported by every posture; the store is shared. (Dev warning fires on a second mount.)
  • The glance test: from any surface, one glance at the bottom edge answers what is running, is it healthy, how do I stop it.
  • The navigation test: nothing in the console navigates away while something is live.
  • The honesty test: every printed key fires; every control that can't act sits dark rather than lying.
  • The panic test: STOP is reachable in one click from every surface, wears danger, never moves between postures.
  • The empty test: with nothing running the console still teaches, in voice, and the commit key shows what's staged.

Raw twin: /components/console.md·Registry item: /r/console.json