web: keep the new look, restore the old site's strengths, real TUI capture - #6613
Merged
4 commits merged intoSep 28, 2026
Merged
4 commits merged into
4 commits merged into
Conversation
…e workspace The codewhale.net terminal image showed a sealed tempdir path (.../.tmpXXXX/workspace), a forced Shoreline theme and mid-reveal motion. Fix it where the frames are captured: - qa_harness: make_sealed_workspace_in_home(project) puts the workspace at HOME/<project>, so display_path renders ~/my-project. The existing make_sealed_workspace callers are unchanged. - launch_card_pty: the launch helpers now route through start_in(workspace, Launch, on_provider_picker). website_current_terminal_capture uses the default Underwater theme, NO_ANIMATIONS=1 and CODEWHALE_DISABLE_LOCAL_OLLAMA_PROBE=1, now also set for every launch in this file. It skips the fixture Ctrl+U, whose "Ctrl+Z restores" receipt never expires on a motionless idle screen. It asserts that each published frame shows ~/my-project and no ".tmp", and captures four real states: the first-run provider picker, home, a typed prompt and /help. - web/lib/terminal-captures/: the four 100x24 frames (minified capture_cells JSON) and a manifest.json with provenance and schema. Verification (local, macOS): - website_current_terminal_capture --ignored: 1 passed, 0 failed - launch_card_pty raw_slash_input + local_slash_navigation: 2 passed, 0 failed - clippy -p codewhale-tui --test cucumber (CI flags, -D warnings): clean - cargo fmt --check, blocking-calls, dead-code, command-crate-boundaries, module_graph --check: all pass Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e frame Add web/scripts/render-terminal-capture.mjs, which compacts the PTY cell captures in web/lib/terminal-captures (from launch_card_pty.rs::website_current_terminal_capture) into styled runs (web/lib/terminal-capture.generated.ts, with --check), writes a standalone page of one frame, and rasterizes it with Playwright (--png). components/terminal-capture.tsx draws a frame as selectable HTML text in the system mono font: one role=img summary inside a keyboard-scrollable region, so the 100-column frame scrolls at 390px instead of shrinking. The README image is now that same home frame rasterized (web/public/codewhale-tui-5765d80.png, 1872x956), replacing codewhale-tui-d7a9a1c.png in all 19 READMEs, TERMINAL_SCREENSHOT and docs/public-surface-facts.json (source 5765d80, Underwater theme, captured 2026-09-25). check:docs now runs the capture --check. Tests (web): npx vitest run: 56 files, 502 passed, 0 failed (includes the new lib/terminal-capture.test.ts). tsc --noEmit clean. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Keeps the top bar, navy ground, ombre buttons, the whale on the horizon with its reflection, v2 pose marks, verbs-first docs and status dot+word. Restores, re-inked into the current tokens: - Editorial type scale: section titles at 28-40px (--text-section, back from 22px) and a two-column section form (Section layout="split": title, scope and link left; a ruled, mono-keyed list right) on home, product, runtime and models. Boxed icon rows stay only where a list needs its marks (runtime integrations, community links). - Strata water (components/strata.tsx): the hero water rising under the home horizon and reflection; a waterline band above the footer on every page (footer sea moved to .site-footer-sea); one mid-home band into deep water (.home-deep.stage). Static, aria-hidden, hidden in forced colours, inks from --strata-* tokens, no hex in the component. - The Codwhale 404 poster (codwhale-404.webp restored from d4c3b47^1) with its original copy in en/zh, in a navy frame with the current buttons. - Seals (components/seal.tsx) in the ombre, and bilingual Han titles (PageHeader titleAside) on faq (问), runtime (接 集 信 数), constitution (法 序 证) and feed (动), keeping each page's pose. - Numbered chapter labels on home (01-04; chapterTerminal, chapterTerminalTitle, chapterModels restored for all 18 locales from d4c3b47^1, chapterAvailability new), per-topic source-doc provenance behind a Details disclosure on the docs index, and a visible "Copy" word on the copy button. - The homepage terminal is now the live capture (TerminalCapture). - /constitution: the "See how it decides" panes are labelled as illustrations; no real session is cited for them. Contract tests updated to the new decisions (ocean-contract, public-surface-contract, docs-ia); gt catalogs re-exported. Tests (web): npx vitest run: 56 files, 502 passed, 0 failed. Root gate: npm test (67 + 14 node tests passed, 0 failed; web 502 passed) and npm run check:web (facts, release, docs, tokens, lint, tsc, next build) exit 0. check:locales PASS. Lint gates: check-blocking-calls-budget, check-dead-code-budget, check-command-crate-boundaries, split/module_graph --check, cargo fmt --check all exit 0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
README.md changed only its image path; every translation already points at codewhale-tui-5765d80.png. check-readme-translations.py passes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Hmbown
force-pushed
the
site/whale-road-merge
branch
from
September 27, 2026 02:55
7bc3185 to
9359897
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the founder-approved codewhale.net merge plan: keep the current whale-road look, bring back what the old site did better, and replace the terminal PNG on the homepage with live text from a real PTY capture.
No-Issue: founder-approved site merge plan
Commits
a90f9b0d0test(tui): capture honest website terminal frames (the Rust capture fix; frames inweb/lib/terminal-captures/)c3f511affweb: render real PTY captures as live text; README image from the same frame7bc3185b4web: keep the whale-road look, restore the old site's strengthsWhat stays
The top bar, navy ground #061431, ombre buttons #1E8FD8 to #0B48BB, the C-whale on the horizon with its reflection, v2 whale poses as page marks, verbs-first docs titles with the Next block, status dot plus word, and the shorter page order.
What comes back, restyled in the current tokens
--text-section, up from 22px). A two-column section form (Section layout="split": title, summary and link on the left, a ruled mono-keyed list on the right) on home, product, runtime and models. Boxed icon rows remain only where a list needs its icons: runtime integrations and community links.components/strata.tsxis re-inked from charcoal into navy and the ombre through--strata-*tokens, with no hex values in the component. It sits under the home horizon and whale reflection. It is static,aria-hidden, hidden in forced colours, and has no animation..site-footer-sea). One band mid-home leads into deep water (.home-deep.stage), which continues into the footer.codwhale-404.webp, restored fromd4c3b47fe^1) with its original en/zh copy ("404." / "We all make typos." / "This page doesn't exist yet. Neither does this game." / "Return to base"), in a navy frame with the current buttons.components/seal.tsxin the ombre, plus bilingual Han titles (PageHeader titleAside), on faq (问), runtime (接 集 信 数), constitution (法 序 证) and feed (动). Each page keeps its pose.d4c3b47fe^1for all 18 locales.chapterAvailabilityis new, and its non-English strings are my own short translations, so they are worth a native check. The docs index shows each topic's source-doc provenance behind a per-row Details disclosure. The copy button now shows the word "Copy" next to its icon.T2: live terminal
web/scripts/render-terminal-capture.mjscompacts the capture JSON into styled runs (web/lib/terminal-capture.generated.ts,--checkis wired intocheck:docs, and a test checks the text of every row against the cells).components/terminal-capture.tsxrenders a frame as selectable text in the system mono font:role="img"with an aria-label summary, inside a focusablerole="region";The README image is the same home frame, rasterized by that script (
codewhale-tui-5765d80.png, replacingcodewhale-tui-d7a9a1c.pngin all 19 READMEs).TERMINAL_SCREENSHOTanddocs/public-surface-facts.jsonnow name the capture, source 5765d80 and the Underwater theme. The contract tests that cross-check these pass.T4
/constitution: the "See how it decides" panes are now labelled "Illustration" / "示意", and the section copy says they are paraphrases, not a transcript. No real session can be cited for them.web/lib/install-guide.generated.tsis current with main'sdocs/INSTALL.md(derive-install --checkpasses). The known staleness in INSTALL.md (the Homebrew/node wording) belongs to the release docs packet.Verification
cd web && npx vitest run: 56 files, 502 passed, 0 failednpm test: node 67 + 14 passed, 0 failed; web 502 passednpm run check:web(facts, latest-release, docs, tokens, eslint, tsc, next build): exit 0npm run check:locales: PASS;gt-site check: OKsplit/module_graph.py --checkandcargo fmt --all -- --checkall exit 0Screenshots (local only; they can't be uploaded from here)
/private/tmp/claude-501/-Volumes-VIXinSSD-CW/cba1b55f-a2a3-4d16-b7c3-4b2bc325b399/scratchpad/site-after-merge/, 1440 and 390, dark and light, for home, product, faq, runtime, 404, docs, models, constitution, feed and zh-runtime. All pages returned 200 (404 for the 404 page), with no horizontal page scroll./private/tmp/claude-501/-Volumes-VIXinSSD-CW/cba1b55f-a2a3-4d16-b7c3-4b2bc325b399/scratchpad/site-compare/shots/{before,after}/and side-by-sides in/private/tmp/claude-501/-Volumes-VIXinSSD-CW/cba1b55f-a2a3-4d16-b7c3-4b2bc325b399/scratchpad/site-compare/view/. Before =d4c3b47fe^1, after = origin/main.Not deployed.
🤖 Generated with Claude Code