Complete Conversation Timelines for Every Session
When you open an old Claude Code session in claude-view, you should see the same rich conversation timeline you get for live sessions. Until now, you didn’t.
The gap
claude-view renders conversations as a sequence of InteractionBlocks — visual units that represent Plans, Questions, tool calls, and responses. These blocks make it easy to scan a session at a glance: “here’s where the agent planned, here’s what it asked me, here’s where it ran the tests.”
The problem: Plan and Question blocks were only synthesized for sessions currently in memory. For any session that had ended — even from yesterday — those blocks were missing. You’d see a flat stream of tool calls and text, without the higher-level structure that makes sessions actually readable.
This wasn’t a small gap. Plans and Questions are the most informative blocks in a session. They’re where Claude explains what it’s about to do and why. Losing them from historical sessions meant losing the narrative thread.
What changed
v0.31.0 synthesizes InteractionBlocks from historical JSONL data during the indexing pass. When you open any session — from today or from three months ago — claude-view reconstructs the block structure from the raw event log.
The result: your full conversation timeline is complete, regardless of when the session happened. Plans appear where they were triggered. Questions appear where they were asked. The session reads like it did when it was live.
Accurate cost estimates
A separate fix in this release plugs a caching issue that was silently skewing token cost estimates. A one-hour cache window was causing cost display to drift from actual usage — you might see costs from an hour ago presented as current. This is now resolved, and system message rendering gaps are also fixed.
Dev reliability improvements
Four fixes landed for the development environment:
- Crash-aware sidecar supervisor —
node --watchdoesn’t handle crashes gracefully. The new supervisor detects crashes and restarts cleanly. - Orchestrator script — the 400-character inline
concurrentlycommand in the dev start script is replaced with a proper orchestrator. Easier to read, easier to debug. - Cleanup script —
dev-cleanup.shnow kills orphan processes, not just the ports they were using. - Sidecar ownership gate —
CLAUDE_VIEW_SIDECAR_EXTERNALprevents the Rust server from spawning a second sidecar in dev mode. Previously, everycargo watchrebuild would kill thetsx watchprocess and replace it with a stale build, causing WebSocket failures that looked like FSM bugs.
These are internal improvements — they don’t affect the installed npx claude-view experience, only the development workflow.
What’s next
- Deeper historical reconstruction — filling more block types from JSONL
- Improved cost breakdown by session phase
- Timeline scrubbing for long sessions
Update now
npx claude-view@latestOpen any old session and check the timeline. Plans and Questions should now appear throughout.