@@ -4,25 +4,65 @@ Browse and export Claude Code chat history — Web GUI and CLI.
44
55## Features
66
7- - ** Web GUI** : Flask-based browser with project list, session viewer, full-text search, syntax highlighting, tool call rendering, thinking blocks, dark/light mode
8- - ** CLI Export** : Standalone script to export all sessions to Markdown with YAML frontmatter
9- - ** Rich Markdown** : Includes token usage, tool calls (Bash, Read, Edit, Write, Glob, Grep, Task, etc.), thinking blocks, model info, timestamps
10- - ** Incremental Export** : ` --since last ` flag to only export new/updated sessions
11- - ** Bulk Export** : Download all sessions as a zip from the web UI
7+ ### Web GUI
8+ - ** Project dashboard** with card grid, aggregate stats, and staggered animations
9+ - ** Session viewer** with split layout (sidebar + message panel)
10+ - ** Full-text search** across all sessions
11+ - ** Syntax highlighting** for code blocks
12+ - ** Tool call rendering** — Bash, Read, Edit, Write, Glob, Grep, Task, TodoWrite, WebFetch, WebSearch, and more
13+ - ** Thinking blocks** — collapsible sections for Claude's reasoning
14+ - ** Dark/light theme** with Inter font
15+ - ** Responsive design** — mobile-friendly with hamburger sidebar
16+ - ** Toast notifications** with icon, progress bar, and close button
17+ - ** Confirm modals** with keyboard support (Enter/Escape) and backdrop blur
18+ - ** Top loading bar** (YouTube-style) during data fetches
19+ - ** Smooth transitions** — staggered card/message animations, crossfade content swaps
20+ - ** Scroll-to-top button** in bottom-right corner
21+ - ** Per-model badges** in session header
22+ - ** Bulk export** — download all sessions as a zip
23+
24+ ### CLI Export
25+ - Standalone script to export all sessions to Markdown with YAML frontmatter
26+ - Rich Markdown: token usage, tool calls, thinking blocks, model info, timestamps
27+ - ` --since last ` flag for incremental export (only new/updated sessions)
28+ - ` --project ` flag to export a specific project
1229
1330## Quick Start
1431
1532### Web GUI
1633
1734``` bash
18- pip install flask
35+ # Create virtual environment
36+ python -m venv venv
37+
38+ # Activate (Windows)
39+ venv\S cripts\a ctivate
40+
41+ # Activate (macOS/Linux)
42+ source venv/bin/activate
43+
44+ # Install dependencies
45+ pip install -r requirements.txt
46+
47+ # Run
1948python app.py
20- # Open http://localhost:3000
49+ # Open http://localhost:5000
50+ ```
51+
52+ Options:
53+ ``` bash
54+ python app.py --port 8080 --host 0.0.0.0
55+ python app.py --base-dir /path/to/claude/projects
2156```
2257
2358### CLI Export
2459
2560``` bash
61+ # Activate venv first (see above), then:
62+
63+ # List all projects (shows directory names you can use with --project)
64+ python scripts/export.py list
65+
2666# Export all sessions as zip
2767python scripts/export.py
2868
@@ -32,10 +72,12 @@ python scripts/export.py --out ./exports --no-zip
3272# Incremental export (only new sessions since last run)
3373python scripts/export.py --since last
3474
35- # Export specific project only
36- python scripts/export.py --project myproject
75+ # Export specific project only (substring match on directory name)
76+ python scripts/export.py --project boost-capy
3777```
3878
79+ The ` --project ` flag matches against the directory names under ` ~/.claude/projects/ ` . These are path-based names like ` F--boost-capy ` or ` d--harbor-forge ` . You can use any substring — for example ` boost-capy ` will match ` F--boost-capy ` . Run ` python scripts/export.py list ` to see all available project names.
80+
3981## Data Source
4082
4183Reads from ` ~/.claude/projects/ ` which contains JSONL session files created by Claude Code.
@@ -46,22 +88,22 @@ Reads from `~/.claude/projects/` which contains JSONL session files created by C
4688
4789```
4890claude-code-chat-browser/
49- ├── app.py # Flask entry point
91+ ├── app.py # Flask entry point (default port 5000)
5092├── api/
51- │ ├── projects.py # Project listing endpoints
52- │ ├── sessions.py # Session viewer endpoints
53- │ ├── search.py # Full-text search
54- │ └── export_api.py # Bulk and per-session export
93+ │ ├── projects.py # Project listing & session counts
94+ │ ├── sessions.py # Session parsing & message delivery
95+ │ ├── search.py # Full-text search across sessions
96+ │ └── export_api.py # Bulk zip and per-session Markdown export
5597├── utils/
56- │ ├── session_path.py # OS-aware path detection
57- │ ├── jsonl_parser.py # JSONL session parser
58- │ └── md_exporter.py # Markdown exporter with frontmatter
98+ │ ├── session_path.py # OS-aware path detection & project naming
99+ │ ├── jsonl_parser.py # JSONL session parser with tool result classification
100+ │ └── md_exporter.py # Markdown exporter with YAML frontmatter
59101├── scripts/
60- │ └── export.py # Standalone CLI export
102+ │ └── export.py # Standalone CLI export tool
61103├── static/
62- │ ├── index.html # SPA entry point
63- │ ├── css/style.css # Dark/light theme
64- │ └── js/app.js # Client-side routing and rendering
104+ │ ├── index.html # SPA entry point (Inter font, minimal markup)
105+ │ ├── css/style.css # Dark/light theme, responsive, animations
106+ │ └── js/app.js # Hash-based routing, rendering, UI components
65107└── tests/
66108```
67109
@@ -72,5 +114,5 @@ Each exported session includes:
72114- ** YAML frontmatter** : title, timestamps, session_id, models, token counts, tool call breakdown, working directory, git branch, Claude Code version
73115- ** Per-message metadata** : role, model, token usage (in/out/cache), timestamp
74116- ** Thinking blocks** : Collapsible ` <details> ` sections
75- - ** Tool calls** : Formatted by type (Bash commands, file reads/edits, glob/grep patterns, subagent tasks, todos)
117+ - ** Tool calls** : Formatted by type (Bash commands, file reads/edits, glob/grep patterns, subagent tasks, todos, web fetches, plans )
76118- ** System events** : Context compaction markers
0 commit comments