A Tokyo Night–derived terminal TUI language: one job per color, restrained tool-row signal, breathing motion, and fish-isomorphic command highlighting.
Live in themes/cyber-ui-dark.json vars, read through palette.ts as the single source. Reserved for the working breath, path, and prompt glyph — not body text. Pink already sits in Accent (tokyonight moon magenta).
prompt glyph ❯ = promptSilver · border tracks thinking / bash · static session label at top-right · long text wraps to the width after the prompt, no clipped glyphs or caret
64-frame dual breath (fgDim ↔ pink / fgDim ↔ cyan, peaks alternate) · verb letter-wave (fgMuted ↔ silverHi) · ambient motion capped at 33ms / 30fps · elapsed · tokens · tps · turn inside the parens · fades in after 10s esc to cancel
Shown after retries, compaction, and follow-ups actually settle, until the next prompt · only ✓ is green; the rest stays muted
One hue, warming as the level rises · xhigh takes pink (tokyonight moon magenta, purple → pink → red) so red stays free for max · max lands on red + bold · no per-character rainbow
Left: model · thinking (max is red/bold) · context · cache | Right: path · git · extension statuses · folds to +N when narrow
Principle (Grok restraint × sci-fi HUD × high-end dark UI): saturate the status layer, keep content low-chroma. Bars — blue = running, teal = success, red = failure, pink = user input; one panel #121218. Tool name / $ / shell command = cyan (native fish); everything else mostly splits on muted / dim luminance.
A healthy dynamic wrap stays silent. One warning if the running Pi renderer bridge is incompatible; every tool then falls back to the native themed block. A single third-party renderer exception keeps the gutter and shows Pi-equivalent raw fallback inside it.
▍ blue running · static (motion lives in the working HUD)
▍ teal done · static
▍ red failure · the only alarm
▍ pink user input · high-chroma identity; ❯ promptSilver stays quiet
bg #0a0a0d → panel #121218 (shared by tools and input)
tool name / $ / shell command = cyan · path / args / flags = fgMuted
bash quotes = silverDim · $VAR = green · pipes / separators = fgDim · redirects = fg
bar ▍ is 3/8 cell · 1-line pad top and bottom · 1-line gap between call and result
Built-in, extension, and SDK tools all get the same gutter. Tools registered later need no reload. Execute, schema, active set, and original renderer ownership stay untouched. A mismatched renderer bridge falls the whole set back to the native themed block. A failed user-message structure check silently keeps the theme box.
Cool Minimal × native fish: tool name / $ / shell command share full cyan (same as the tokyonight fish theme — no derived dim). Param/path fall to fgMuted, quote = silverDim, end = fgDim, expansion = green (native fish green). No loud purple/yellow; below the command, lexicon is mostly luminance.
diff added = teal · context = fgDim; syntax string = teal · number = pink; Markdown fence = fgDim, a low-weight structural edge.
| Element | Period | Notes |
|---|---|---|
| spinner pulse | 4800ms | 64-frame dual breath · peak pink/cyan alternate · trough fgDim · 75ms/frame |
| verb wave | 1800ms | 120ms/char · 4:3 out of phase with the spinner |
| message motion | 30fps · 33ms | letter-wave, odometer, glow, freeze-fade stay time-continuous; the terminal frame cap drops useless full redraws without changing animation periods |
| verb rotate | 8000ms | 20 verbs, several languages |
| tps smoothing | τ 500ms | time-based EMA + 0.5s denominator floor · kills first-frame spikes and stair-step jitter |
| value odometer | ≈250ms | displayed value ease-out chases the real count · tokens roll instead of jumping |
| value glow | hold 600 · attack 120 / release 350ms | each data arrival re-arms a 600ms hold: stay lit while the stream is live, transition only on start/stop · peak capped at 70% · dt clamped to 64ms |
| freeze fade | 250ms | token / tps dim while a tool runs, restore when it ends |
| hint / summary fade | 600ms | esc to cancel and the ✓ done summary fade in |
— tps
tokens arrive in steps + per-frame recompute → number and color chatter
— tps
low-pass · converges smoothly · color stays still
Live tps sim: base drift + arrival noise · left jumps, right EMA chases
↑128k ↓0
each token batch jumps the number · the whole line shimmies when width changes
↑128k ↓0
display ease-out chases (~250ms) · a brief glow on text change · fixed-width slot so the line does not shake
Crossing 999 → 1.02k: left line jitters sideways, right slot stays put · glow hits only the changing number, not the whole row
While a tool runs, keep the last token / tps and fade them dim · restore live emphasis when it ends
After 10s, esc to cancel fades in (600ms) instead of popping · the summary line fades the same way when the task actually finishes · the terminal interpolates color from bg → target