cyberine
UsageRun recipes

Confluence ring — welcome-screen brand mark

Both welcome screens (cyberine fleet hub overview and cyberine chat) show the Cyberine brand mark, the "confluence ring": an open ring for the fleet of attempts, one arc of it in the verified tone, and a diamond at the centre for the one answer that survived judging. The opening on the right makes the whole figure read as a C. It is the same mark the website and the web dashboard use (chosen 2026-09-25), drawn as two-tone half-block pixel art, and it is static.

  • The ring follows the active theme accent (theme.ts): Plasma violet #c77dff in the default dark theme, the same violet the web dashboard draws (the website recoloured the mark to its own 2026-10-01 palette: ink ring, stamp-blue arc).
  • The verified arc and diamond use TONE.verified, the website's locked verified role.
  • Same mark, same size (CONFLUENCE_COLSxCONFLUENCE_ROWS, 14x7) in both welcome screens.
cyberine          # fleet hub overview, mark in the header
cyberine chat     # chat REPL, same mark in the welcome header

Extend: the TUI raster is buildConfluenceFrame in src/tui/brand/mascotConfluence.ts on the HalfBlockCanvas (arc, diamond), rendered by HalfBlockMascot. The vector copies (site assets/src/mark-*.svg, the dashboard's src/web/public/mark-*.svg, favicon.svg and its PNGs) are all written by node site/scripts/gen-mark.mjs; run node site/scripts/gen-assets.mjs afterwards for the site icons. The angles live in both gen-mark.mjs and CONFLUENCE_GEOMETRY, so change them together.

Known limitations: the terminal mark is a 14x14 pixel raster, so the diamond reads as a small plus sign and the gap between the ring and the verified arc is one pixel. There is no longer an env var to recolour it; the former CYBERINE_ECLIPSE_MOON was removed with the eclipse mark.

Standalone ∞ preview harness (CYBERINE_MASCOT)

The earlier Braille ∞ (infinity / lemniscate) mascots are no longer shown in the live TUI, but they remain available in the standalone preview harness, where the CYBERINE_MASCOT* env vars still apply. These env vars have no effect on the live cyberine / cyberine chat welcome screens any more — only on scripts/mascot-preview.ts.

# Compare every saved ∞ variant side-by-side, then animate the active one
npx tsx scripts/mascot-preview.ts
CYBERINE_MASCOT=infinity-3d npx tsx scripts/mascot-preview.ts
ValueStyleSize
dna-infinity (default)DNA double-helix wound along the ∞ path; base-pair rungs travel along the loop as the helix twists, 120-frame9×25
infinity-wavefixed horizontal ∞ (lemniscate) with a bright pulse flowing along the curve, 120-frame9×25
infinity-3d∞ that wobbles/turns in 3D AND carries a wave flowing along the curve (combined motion), 120-frame11×25

An unset or unrecognized CYBERINE_MASCOT falls back to dna-infinity. CYBERINE_MASCOT_STATIC pins a still frame, and CYBERINE_MASCOT_SPEED (default 1.5, clamped [0.25, 16]) scales the 7.5 s/cycle base. The ∞ variants are defined in src/tui/brand/mascot.ts.