mirror of
https://github.com/max-sixty/worktrunk.git
synced 2026-09-14 20:00:38 +08:00
ee52834701
The demo recorder kept its own copies of the docs site's colors, and they had drifted from `docs/src/styles/custom.css`: - The VHS terminal's ANSI colors were still the Zola site's palette, which #3866 deleted and #3936 replaced with `--wt-terminal-*`. Light yellow had 2.65:1 contrast against the page background; the site's browser test requires 4.5:1 for its own dim terminal text. - `brightWhite`, the background of Worktrunk's gutter, used the ink color, so dark GIFs drew the gutter as a near-white bar. - Zellij, the starship prompt, and Claude Code were configured for light in both themes, so dark GIFs showed a light Zellij tab bar and Claude Code's light theme. `docs/demos/shared/themes.py` now reads the hex `--wt-*` properties from `custom.css` when the build runs. The VHS theme maps ANSI colors the way the site renders snapshot output (`terminal_color_class` and `terminal_background_class` in `tests/integration_tests/readme_sync.rs`). `DemoEnv` carries the recording's theme, so Zellij, the starship palette, and Claude Code follow it. This replaces the `(pre-Starlight; site is #…)` comments the PR first added. Recording from inside a Claude Code session also leaked into the Claude demos. The demo's Claude Code inherited that session's `CLAUDE*` variables and warned that transcript saving was off, and it started Remote Control, which printed a live claude.ai session URL into the GIF. The recorder now drops inherited `CLAUDE*` variables except `CLAUDE_CODE_OAUTH_TOKEN`, and the demo's `settings.json` sets `remoteControlAtStartup` to false. The GIFs are re-recorded locally (`./docs/demos/build docs` and `./docs/demos/build social`) and published in max-sixty/worktrunk-assets@bb3bfba. ## Verification - `pytest docs/demos/tests`: 4 passed. - OCR of every 20th frame of the Claude demos (354 frames) finds no `remote-control`, `claude.ai/code`, `rc active`, or `Transcript saving`. The same check matches on frames from the leaking recording. - Frames checked by eye in both themes for the ANSI colors, the gutter, and the Zellij chrome. - TUI validation passes for all nine Claude demo GIFs. The `wt-switch` and `wt-statusline` checkpoints named absolute frames past the end of these faster recordings (274–318 frames, against 344–465 in the previously published GIFs), so a negative checkpoint frame now counts back from the last frame; the omnibus checkpoint on its closing `wt list` uses the same anchoring. The previously published GIFs pass the new checkpoints too. Those checkpoints also forbid `claude.ai/code` and `Transcript saving`, and a GIF made from a leaking frame fails on them. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01TQPDxs2csvGFGBr2j4MtrA > _This was written by Claude Code on behalf of max-sixty_ --------- Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com> Co-authored-by: Maximilian Roos <m@maxroos.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
83 lines
1.7 KiB
Python
83 lines
1.7 KiB
Python
"""Shared infrastructure for demo recording scripts."""
|
|
|
|
from .lib import (
|
|
REAL_HOME,
|
|
FIXTURES_DIR,
|
|
VALIDATION_RS,
|
|
DemoEnv,
|
|
DemoSize,
|
|
SIZE_SOCIAL,
|
|
SIZE_DOCS,
|
|
SIZE_DOCS_MOBILE,
|
|
run,
|
|
git,
|
|
render_tape,
|
|
record_vhs,
|
|
build_wt,
|
|
commit_dated,
|
|
prepare_base_repo,
|
|
claude_auth_available,
|
|
setup_claude_code_config,
|
|
setup_zellij_config,
|
|
setup_fish_config,
|
|
setup_mock_clis,
|
|
prepare_demo_repo,
|
|
# Demo recording infrastructure
|
|
check_dependencies,
|
|
check_ffmpeg_libass,
|
|
setup_demo_output,
|
|
write_starship_config,
|
|
record_theme,
|
|
recorder_env,
|
|
# Text output recording
|
|
record_text,
|
|
build_tape_replacements,
|
|
# Snapshot recording
|
|
extract_commands_from_tape,
|
|
record_snapshot,
|
|
# External dependencies
|
|
ensure_vhs_binary,
|
|
)
|
|
from .themes import THEMES, format_theme_for_vhs
|
|
|
|
__all__ = [
|
|
"REAL_HOME",
|
|
"FIXTURES_DIR",
|
|
"VALIDATION_RS",
|
|
"DemoEnv",
|
|
"DemoSize",
|
|
"SIZE_SOCIAL",
|
|
"SIZE_DOCS",
|
|
"SIZE_DOCS_MOBILE",
|
|
"run",
|
|
"git",
|
|
"render_tape",
|
|
"record_vhs",
|
|
"build_wt",
|
|
"commit_dated",
|
|
"prepare_base_repo",
|
|
"claude_auth_available",
|
|
"setup_claude_code_config",
|
|
"setup_zellij_config",
|
|
"setup_fish_config",
|
|
"setup_mock_clis",
|
|
"prepare_demo_repo",
|
|
"THEMES",
|
|
"format_theme_for_vhs",
|
|
# Demo recording infrastructure
|
|
"check_dependencies",
|
|
"check_ffmpeg_libass",
|
|
"setup_demo_output",
|
|
"write_starship_config",
|
|
"record_theme",
|
|
"recorder_env",
|
|
# Text output recording
|
|
"record_text",
|
|
"build_tape_replacements",
|
|
# Snapshot recording
|
|
"extract_commands_from_tape",
|
|
"record_snapshot",
|
|
# External dependencies
|
|
"ensure_vhs_binary",
|
|
]
|