Description
Give the claude-web-console viewer session management: let the user browse
stored Claude Code sessions across all projects, open any of them, render
its stored transcript in the viewer (not only the live stream), and — dependent
on the Bidirectional input workstream — start a brand-new session from the web
UI. Today the viewer only mirrors the current live session.
This is the coordinating parent for the Session management workstream of the
claude-web-console epic. It is delivered by its subtasks; this body owns the
integration-level goal and done conditions, not their implementation detail.
Context
- Parent epic: the
claude-web-console live-viewer epic, "Session management"
workstream.
- Current state: the viewer is live-only. The server keeps an in-memory
history of the running session (_history: list[dict] in
server/server.py) and exposes only /events (live SSE), /config.json,
and static assets — there is no path that reads sessions off disk.
- Stored transcripts live under
~/.claude/projects/<project-slug>/<session-uuid>.jsonl,
where the project slug is the project path with / replaced by -. Reaching
them means reading outside the current live session and across projects.
- Shared invariants that constrain every subtask (from the epic): hooks stay
best-effort and silent; the server stays Python stdlib only with no build
step; browser libraries stay vendored under server/static/vendor/ (no CDN),
and any new served file extension must be mapped in server.py's
CONTENT_TYPES.
Acceptance Criteria
- From the viewer, a user can see stored sessions from any project (not just the
current one), select one, and read its full transcript rendered the same way
live output is rendered.
- Starting a new session from the web UI is delivered once its transport
dependency (Bidirectional input) is available.
- The workstream invariants above still hold after the change (hooks silent and
best-effort; stdlib-only server; vendored, correctly typed assets).
Description
Give the
claude-web-consoleviewer session management: let the user browsestored Claude Code sessions across all projects, open any of them, render
its stored transcript in the viewer (not only the live stream), and — dependent
on the Bidirectional input workstream — start a brand-new session from the web
UI. Today the viewer only mirrors the current live session.
This is the coordinating parent for the Session management workstream of the
claude-web-consoleepic. It is delivered by its subtasks; this body owns theintegration-level goal and done conditions, not their implementation detail.
Context
claude-web-consolelive-viewer epic, "Session management"workstream.
history of the running session (
_history: list[dict]inserver/server.py) and exposes only/events(live SSE),/config.json,and static assets — there is no path that reads sessions off disk.
~/.claude/projects/<project-slug>/<session-uuid>.jsonl,where the project slug is the project path with
/replaced by-. Reachingthem means reading outside the current live session and across projects.
best-effort and silent; the server stays Python stdlib only with no build
step; browser libraries stay vendored under
server/static/vendor/(no CDN),and any new served file extension must be mapped in
server.py'sCONTENT_TYPES.Acceptance Criteria
current one), select one, and read its full transcript rendered the same way
live output is rendered.
dependency (Bidirectional input) is available.
best-effort; stdlib-only server; vendored, correctly typed assets).