Skip to content

web: keep the new look, restore the old site's strengths, real TUI capture - #6613

Merged
4 commits merged into
mainfrom
site/whale-road-merge
Sep 28, 2026
Merged

4 commits merged into
mainfrom
site/whale-road-merge

Conversation

@Hmbown

@Hmbown Hmbown commented Sep 26, 2026

Copy link
Copy Markdown
Owner

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

  1. a90f9b0d0 test(tui): capture honest website terminal frames (the Rust capture fix; frames in web/lib/terminal-captures/)
  2. c3f511aff web: render real PTY captures as live text; README image from the same frame
  3. 7bc3185b4 web: keep the whale-road look, restore the old site's strengths

What 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

  • R1 Type and form. Section titles at 28-40px (--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.
  • R2 Hero water. components/strata.tsx is 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.
  • R3 Waterline bands. A band above the footer on every page (the footer sea moved to .site-footer-sea). One band mid-home leads into deep water (.home-deep.stage), which continues into the footer.
  • R4 404. The original Codwhale poster (codwhale-404.webp, restored from d4c3b47fe^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.
  • R5 Seals and Han titles. components/seal.tsx in the ombre, plus bilingual Han titles (PageHeader titleAside), on faq (问), runtime (接 集 信 数), constitution (法 序 证) and feed (动). Each page keeps its pose.
  • R6 Details. Numbered chapter labels on home (01 / Your terminal ... 04 / Where it runs). The three restored keys are copied from d4c3b47fe^1 for all 18 locales. chapterAvailability is 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.mjs compacts the capture JSON into styled runs (web/lib/terminal-capture.generated.ts, --check is wired into check:docs, and a test checks the text of every row against the cells). components/terminal-capture.tsx renders a frame as selectable text in the system mono font:

  • one role="img" with an aria-label summary, inside a focusable role="region";
  • at 390px the 100 columns scroll sideways inside their own container.

The README image is the same home frame, rasterized by that script (codewhale-tui-5765d80.png, replacing codewhale-tui-d7a9a1c.png in all 19 READMEs). TERMINAL_SCREENSHOT and docs/public-surface-facts.json now 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.
  • Install guide: not changed. web/lib/install-guide.generated.ts is current with main's docs/INSTALL.md (derive-install --check passes). 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 failed
  • Root gate npm test: node 67 + 14 passed, 0 failed; web 502 passed
  • npm run check:web (facts, latest-release, docs, tokens, eslint, tsc, next build): exit 0
  • npm run check:locales: PASS; gt-site check: OK
  • Lint gates: check-blocking-calls-budget, check-dead-code-budget, check-command-crate-boundaries, split/module_graph.py --check and cargo fmt --all -- --check all exit 0
  • CHANGELOG.md not touched.

Screenshots (local only; they can't be uploaded from here)

  • After (this branch): /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.
  • Before/after of the previous merge: /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

@Hmbown Hmbown added this to the v0.10.1 milestone Sep 26, 2026
Copilot AI lite review requested due to automatic review settings September 26, 2026 06:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

CodeWhale Bot and others added 4 commits September 26, 2026 19:46
…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
Hmbown force-pushed the site/whale-road-merge branch from 7bc3185 to 9359897 Compare September 27, 2026 02:55
@Hmbown Hmbown closed this pull request by merging all changes into main in 0bfe04e Sep 28, 2026
@Hmbown
Hmbown deleted the site/whale-road-merge branch September 28, 2026 08:40
pull Bot pushed a commit to soitun/CodeWhale that referenced this pull request Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants