Skip to content

claude-web-console: session management #177

Description

@studykit

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    taskWorkflow implementation task

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions