Reads Claude Code transcripts from ~/.claude/projects and renders them as static
HTML you can actually read.
uv run python -m viewchatsWrites ~/claude-sessions/index.html plus one page per session, and prints the
index path. Full rebuild each run. Open it with wslview ~/claude-sessions/index.html
or any browser.
The index groups sessions by project, newest first, with prompt count, peak context and total output tokens per row. Abandoned sessions are greyed out.
A session page is a single reading column. Your prompts and Claude's replies are open; tool calls collapse into one block each showing the command and its output, with failed calls marked while still collapsed. Claude Code's own bookkeeping renders too, but hidden behind the "machinery" toggle in the header. Every assistant turn shows its context size, which is the number worth watching.
Claude Code does not persist thinking text to disk, only a signature, so thinking appears as a marker saying how many blocks occurred and nothing more.
uv run ruff check . && uv run mypy . && uv run pytest -qTests run against tests/fixtures/sample.jsonl, a synthetic transcript covering
every event type. No real session content lives in this repo.
Terminology is defined in CONTEXT.md. The decisions behind the design are in .scratch/view-chats/spec.md.