Files
CodeWhale BotandClaude Opus 5.5 3b8fcb59f0 feat(web): the homepage whale starts as the mark and comes alive as lights [skip ci]
The codewhale.net hero now tells the living mark's story with its existing,
owner-approved pieces: the flat C-curl mark (drawn by the vendored kit's
WhaleRig.build("mark") in brand navy #142352, reversed on dark) holds for
700 ms, the live canvas whale fades in as the colored-in whale for 2.4 s, then
64 beads of light assemble head first and keep breathing, swimming, hovering
and carrying a soft light crest at 12 paints per second. Pointing at it, or
picking a terminal view (the existing cueWhale path), brings the whale back;
it returns to lights 600 ms after the pointer leaves or 15 s after a pick. The
intro plays once per browser session. The canvas whale sleeps (no frames) while
the lights show; the lights pause when off screen or hidden. Under reduced
motion the hero keeps the still whale and draws no lights. Before the client
decides, the hero is hidden briefly so the character no longer flashes before
the mark; without JavaScript it appears after 1.2 s.

The beads come from web/vendor/whale-lights/whale-lights.json, an unchanged
copy of codewhale-app assets/whale-lights.json at 55c9ba0c (SHA-256 recorded),
the same file crates/tui-kit pins for the terminal. web/lib/whale-lights.ts
restates the app's drift, crest and seeded-star formulas (about 60 lines)
because the app source is private (CURRENT_DECISIONS 44); PROVENANCE says to
change the three together. lib/whale-motion.ts exposes the vendored WhaleRig.

Verified: tsc --noEmit clean; ESLint clean on the five changed TS/TSX files;
vitest 74 files, 770 tests passed (design-grammar contract included, which
moved the new timings onto the spring tokens and the fallback keyframe behind a
motion preference). next dev on 3241 in the browser pane and in Electron's
Chromium via Playwright: stages mark (0.3 s) -> whale (0.9-1.7 s) -> lights
(3.3 s+), beads move between reads, no console errors; with reducedMotion
reduce the stage stays whale, lights are display:none and nothing moves.
Not deployed; codewhale.net is unchanged until a founder-authorized deploy.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 13:06:03 -08:00
..