Skip to content

Add privacy-safe CLI and TUI recordings - #123

Open
tony wants to merge 10 commits into
masterfrom
screen-recording
Open

Add privacy-safe CLI and TUI recordings#123
tony wants to merge 10 commits into
masterfrom
screen-recording

Conversation

@tony

@tony tony commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Keep the synthetic recording corpus, recorder inputs, rendered media, and still posters together under docs/_static/demos/.
  • Record 16 VHS scenarios across root help, search, grep, find, JSON/NDJSON, and two TUI workflows, plus canonical asciinema casts for search, grep, find, and ui.
  • Add a local-only {terminal-demo} directive that derives intrinsic geometry from an explicit poster and emits a native, no-JavaScript MP4 player with accessible builder fallbacks.
  • Embed six primary CLI and TUI recordings in their reference pages, while the README keeps linked posters with explicit dimensions.
  • Publish the 16 MP4 recordings and six posters through Sphinx while keeping casts, tapes, helpers, GIFs, and WebMs out of the static copy.
  • Keep the recording and documentation work in ten reviewable commits, with the pnpm regression fix in one separate CI commit.

Color and safety

  • Seed only synthetic Codex, Claude, Cursor, and Gemini history, and neutralize every catalogued store override plus the WSL host probe before agentgrep starts.
  • Reject seeding outside the fixed synthetic sandbox before cleanup.
  • Remove ambient NO_COLOR and FORCE_COLOR at the recording boundary and set truecolor explicitly. The old environment made Textual install its no-color filter, which stripped the TUI palette and materialized terminal-default backgrounds as black.
  • Scan sources, casts, captures, and metadata for developer paths, emails, credentials, secrets, and non-synthetic prompt content.

Preview

CLI

agentgrep search ranking matching prompts

TUI

agentgrep Textual explorer filtering local agent prompts

Verification

  • rm -rf docs/_build; uv run ruff check . --fix --show-fixes; uv run ruff format .; uv run ty check; uv run py.test --reruns 0 -vvv; just build-docs;
  • 2,301 tests passed, 3 skipped, and 3 strict xfails remained expected; 2 snapshots passed.
  • Both TUI capture families decode at 1200 by 700 across GIF, MP4, and WebM; their populated posters decode at the same geometry.
  • The built site contains native players for all six referenced demos, with typed MP4 sources, intrinsic dimensions, controls, and preload="none".
  • The built site contains all 16 MP4s and six posters under _static/demos/, with no recorder sources or alternate media in the static demo copy.
  • Focused directive tests cover asset confinement, required alt/poster metadata, playback sources, copied files, and non-HTML fallbacks.
  • The final pull-request docs and test jobs passed after removing the temporary preview deployment; normal master-only publication rules are restored.

Goal

Idempotent completion condition for /goal. It asserts an end state, not an action: if the state already holds, the first evaluation passes and nothing is edited.

/goal Work in a worktree on branch screen-recording set to PR #123's pushed head, where its demo assets live; never check it out in the master tree, never push. Report all five before editing; stop with no edits if all pass. (1) git rev-parse --abbrev-ref HEAD prints screen-recording. (2) tests/test_terminal_demo_docs.py carries a module-level documentation mark plus slow on its Sphinx-building nodes; it carries none today, so five in-process builds sit in the default lane. (3) git diff master...HEAD --name-only shows no src/agentgrep/ path and merge-tree of local master and HEAD shows no CONFLICT (true today, keep them). (4) A scan of the committed .tape, .cast, .sh, .py and .md files under docs/_static/demos finds zero developer home paths, emails or real store paths, synthetic .codex/sessions strings excepted; report the count. (5) After just build-docs, docs/_build/html/_static/demos exists and holds no .tape, .cast, .gif or .webm while the six posters and the MP4s are present; a missing directory FAILS this check. Run both under NO_COLOR=1 with VIRTUAL_ENV and UV_NO_SYNC unset; report the warning count. Constraints: check 3's zero src/agentgrep footprint leaves ADR 0011 untouched. The terminal-demo directive stays in docs/_ext/, out of the wheel, with no runtime dependency. Regeneration stays opt-in and offline: no pytest lane or docs build invokes VHS, asciinema, ffmpeg, Docker or the network; the demo corpus must not become a shared fixture; add no retained CI gate. Leave the unpublished .gif and .webm alternates alone; pruning is the user's call. Pin no search, ranking, limit, cursor, record-ID, index or provider contract; recordings are illustrative and stay regenerable when #113/#115/#142/#143 change output. Or stop after 8 turns and report what remains.
  • Proofgit rev-parse --abbrev-ref HEAD; rg -c '^pytestmark' tests/test_terminal_demo_docs.py || echo 0; git diff master...HEAD --name-only | rg -c '^src/agentgrep/' || echo 0; git -c rerere.enabled=false merge-tree --write-tree master HEAD | rg -c '^CONFLICT' || echo 0; rg -l -g '*.{tape,cast,sh,py,md}' '/home/|/Users/|[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]+' docs/_static/demos | wc -l; NO_COLOR=1 env -u VIRTUAL_ENV -u UV_NO_SYNC .venv/bin/python -m pytest tests/test_terminal_demo_docs.py -q && just build-docs && ls docs/_build/html/_static/demos >/dev/null && find docs/_build/html/_static/demos \( -name '*.tape' -o -name '*.cast' -o -name '*.gif' -o -name '*.webm' \) | wc -l
  • Idempotence — Re-running in a satisfied worktree only re-prints screen-recording, one pytestmark, zero src/agentgrep paths, zero CONFLICT lines, zero privacy hits and zero leaked source assets from an existing built site; every check is a read-only observation, and a missing build directory fails rather than silently passing, so nothing re-fires an edit.
  • Blocked by — nothing hard; Concept: Local insights reports with model-backed enrichment #87's pyproject edge is already absent from the pushed head and does not have to land first
  • Blocks — nothing; docs-only, no retained CI gate, and the demo corpus is barred from becoming a fixture other tests depend on
  • Preserves — The branch keeps its zero src/agentgrep/ footprint, so the ADR 0011 non-blocking TUI contract is untouched by construction and no pump path is added. The terminal-demo directive stays a docs/_ext build-local extension rather than shipped API, and adds no runtime dependency. Recordings stay illustrative: no CLI output format, ranking, limit, cursor token, record ID, index presence or provider seam is asserted, so search --limit discards the best results (limit caps in scan order, not result order) #113, search relevance scoring measures length, not relevance #115, Durable prompt corpus and derived search indexes (ADR 0019) #142 and Progressive deep search: the --deep / --exhaustive effort ladder (ADR 0020, ADR 0021) #143 may change what agentgrep prints and the demos are simply re-recorded. The unpublished .gif and .webm alternates are left in place for the user to decide, and regeneration stays opt-in and offline.

@tony
tony force-pushed the screen-recording branch from bf4898c to 232f177 Compare July 12, 2026 20:47
@tony
tony force-pushed the screen-recording branch from e38a51e to c17b5e6 Compare July 12, 2026 23:39
@tony
tony force-pushed the screen-recording branch from c17b5e6 to 14a3be3 Compare July 13, 2026 00:57
@tony
tony force-pushed the screen-recording branch from 14a3be3 to 13c27db Compare July 18, 2026 12:06
@tony
tony force-pushed the screen-recording branch from 13c27db to 234f4b5 Compare July 19, 2026 00:42
@tony
tony force-pushed the screen-recording branch from 234f4b5 to 4ef2283 Compare July 19, 2026 01:40
@tony
tony force-pushed the screen-recording branch from 4ef2283 to aa1e970 Compare July 19, 2026 16:53
@tony
tony force-pushed the screen-recording branch from aa1e970 to 706d38c Compare July 19, 2026 23:15
@tony
tony force-pushed the screen-recording branch from 706d38c to b2d73f4 Compare August 1, 2026 17:58
tony added 4 commits August 9, 2026 07:02
why: Reproducible recordings show agentgrep's terminal surfaces without
reading a developer's real history. Keeping the sources beside their
rendered artifacts makes every preview refreshable.

what:
- Seed synthetic Codex, Claude, Cursor, and Gemini stores
- Record CLI and TUI workflows as GIF, MP4, WebM, and asciinema casts
- Add still poster frames for lightweight documentation previews
- Remove ambient color controls so Textual keeps its intended palette
why: The quickstart introduces both terminal interfaces with command
snippets alone. Still previews make their output visible immediately
without forcing an animated download.

what:
- Embed a ranked-search preview beside the CLI quickstart
- Embed an explorer preview beside the TUI invocation
- Link both stills to their hosted MP4 recordings
why: The CLI reference explains each output shape in prose, but readers
cannot see its hierarchy, highlighting, or terminal color at a glance.

what:
- Put the root help preview on the CLI landing page
- Add search, grep, and find previews to their command references
- Link each still preview to its hosted MP4 recording
why: The explorer's search, results, detail, and sticky-filter panes are
spatial interactions that are easier to understand from the real UI.

what:
- Add an explorer preview after the launch examples
- Place a filtered-results preview beside the sticky-filter guide
- Link both still previews to their hosted MP4 recordings
tony added 5 commits August 9, 2026 07:02
why: Sphinx copies the whole demo source tree from `_static` by default,
which would publish recorder inputs, alternate renders, and duplicate
poster files beside the linked videos.

what:
- Keep casts, tapes, helpers, GIFs, WebMs, and poster sources out
- Leave MP4 recordings available at stable `_static` URLs
- Let Sphinx copy referenced PNG posters through its image pipeline
why: Static posters linked to recordings do not provide in-page playback or
reserve a tested video surface across Sphinx builders.

what:
- Add a local-only terminal-demo directive with native MP4 playback.
- Infer intrinsic dimensions from required posters and publish responsive CSS.
- Cover asset validation, builder fallbacks, playback, and copied files.
why: CLI readers should be able to play each primary command demonstration
without leaving the command reference.

what:
- Embed the help, search, grep, and find MP4 recordings.
- Retain explicit posters and accessible descriptions for every demo.
why: The explorer overview and sticky-filter workflow are easier to understand
when their recordings play where those interactions are documented.

what:
- Embed the primary TUI and loaded-result filter recordings.
- Keep explicit posters and accessible descriptions for both workflows.
why: Explicit poster geometry prevents the README from shifting as the linked
CLI and TUI previews load.

what:
- Declare the search poster's intrinsic width and height.
- Declare the reframed TUI poster's intrinsic width and height.
why: The original wide captures made explorer text too small when embedded in
the documentation and did not foreground a populated detail pane.

what:
- Render both TUI workflows at 1200 by 700 with an 18-pixel font.
- Shorten each recording around one meaningful loaded-result interaction.
- Extract matching populated posters and regenerate GIF, MP4, and WebM files.
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.

1 participant