[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-es617--claude-replay":3,"tool-es617--claude-replay":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",150037,2,"2026-04-10T23:33:47",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":74,"owner_company":74,"owner_location":74,"owner_email":74,"owner_twitter":74,"owner_website":74,"owner_url":76,"languages":77,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":32,"env_os":94,"env_gpu":95,"env_ram":95,"env_deps":96,"category_tags":100,"github_topics":101,"view_count":106,"oss_zip_url":74,"oss_zip_packed_at":74,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":140},932,"es617\u002Fclaude-replay","claude-replay","Convert AI coding agent sessions (Claude Code, Cursor, Codex) into self-contained, embeddable HTML  replays","claude-replay 是一个开源工具，可以将多种 AI 编程助手（如 Claude Code、Cursor、Codex CLI 等）的会话记录转换为交互式的 HTML 回放文件。这些文件完全自包含，无需依赖外部资源，可以直接嵌入博客、文档或演示中，方便分享和展示。\n\n它解决了 AI 编程会话难以高效分享的问题。传统的屏幕录制文件体积庞大，而纯文本日志又缺乏可读性和互动性。通过 claude-replay，用户能够生成轻量、美观且功能丰富的回放，支持播放速度控制、代码块折叠、主题切换等实用功能，甚至可以实时监控远程机器上的会话。\n\n这款工具特别适合开发者、技术博主和教育工作者使用。开发者可以用它记录和分享调试过程或代码示例，技术博主能通过交互式回放更生动地展示 AI 辅助开发的细节，而教育工作者则可以用它来讲解 AI 的推理过程和工具使用方法。\n\n值得一提的是，claude-replay 支持零依赖的单文件输出，并提供了一个基于 Web 的编辑器，允许用户对会话进行可视化编辑和预览。无论是本地安装还是通过 Docker 使用，都十分便捷。对于希望提升技术内容展示效果的用户来说，这是","claude-replay 是一个开源工具，可以将多种 AI 编程助手（如 Claude Code、Cursor、Codex CLI 等）的会话记录转换为交互式的 HTML 回放文件。这些文件完全自包含，无需依赖外部资源，可以直接嵌入博客、文档或演示中，方便分享和展示。\n\n它解决了 AI 编程会话难以高效分享的问题。传统的屏幕录制文件体积庞大，而纯文本日志又缺乏可读性和互动性。通过 claude-replay，用户能够生成轻量、美观且功能丰富的回放，支持播放速度控制、代码块折叠、主题切换等实用功能，甚至可以实时监控远程机器上的会话。\n\n这款工具特别适合开发者、技术博主和教育工作者使用。开发者可以用它记录和分享调试过程或代码示例，技术博主能通过交互式回放更生动地展示 AI 辅助开发的细节，而教育工作者则可以用它来讲解 AI 的推理过程和工具使用方法。\n\n值得一提的是，claude-replay 支持零依赖的单文件输出，并提供了一个基于 Web 的编辑器，允许用户对会话进行可视化编辑和预览。无论是本地安装还是通过 Docker 使用，都十分便捷。对于希望提升技术内容展示效果的用户来说，这是一个强大而灵活的选择。","# claude-replay\n\n![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fclaude-replay)\n![Claude Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-replay-blue)\n![Cursor](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursor-replay-purple)\n![Codex CLI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCodex_CLI-replay-green)\n![Gemini CLI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGemini_CLI-replay-orange)\n![OpenCode](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenCode-replay-red)\n![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)\n![Node.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-18%2B-green.svg)\n![Zero Dependencies](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdependencies-0-brightgreen)\n\n> Community tool — not affiliated with or endorsed by Anthropic.\n\nAI coding sessions are great for development, but hard to share. Screen recordings are bulky and transcripts are hard to navigate.\n\n**claude-replay** turns Claude Code, Cursor, Codex CLI, Gemini CLI, and OpenCode session logs into interactive, shareable HTML replays. The generated replay is a single self-contained HTML file with no external dependencies — you can email it, host it anywhere, or embed it in documentation. Use `--serve --watch` to monitor agent sessions live as they run.\n\n![Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fes617_claude-replay_readme_70ae0f3b0c2a.gif)\n\n**[Try it online](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002F)** · **[Live demo](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002Fdemo-redaction.html)**\n\nClaude Code, Cursor, Codex CLI, Gemini CLI, and OpenCode store conversation transcripts on disk. **claude-replay** auto-detects the format and converts them into visual replays suitable for blog posts, demos, and documentation.\n\n| Source | Transcript location |\n|---|---|\n| Claude Code | `~\u002F.claude\u002Fprojects\u002F\u003Cproject>\u002F` |\n| Cursor | `~\u002F.cursor\u002Fprojects\u002F\u003Cproject>\u002Fagent-transcripts\u002F\u003Cid>\u002F` |\n| Codex CLI | `~\u002F.codex\u002Fsessions\u002F\u003Cdate>\u002F` |\n| Gemini CLI | `~\u002F.gemini\u002Ftmp\u002F\u003CprojectHash>\u002Fchats\u002F` |\n| OpenCode | Export via `opencode export \u003CsessionID>` |\n\n## Features\n\n- Self-contained HTML output (no dependencies)\n- Interactive playback with speed control\n- Collapse\u002Fexpand tool calls and thinking blocks (Claude's internal reasoning traces)\n- Bookmarks \u002F chapters\n- Secret redaction before export\n- Multiple color themes\n- Terminal-style bottom-to-top scroll\n- Embeddable via iframe\n- Live watch mode — monitor agent sessions in real time (`--serve --watch`)\n- Web-based editor UI for visual session editing and preview\n\n## Use cases\n\nclaude-replay is useful for:\n\n- **Blog posts** — show AI-assisted development sessions interactively\n- **Documentation** — embed AI debugging sessions or code walkthroughs\n- **Demos** — share reproducible sessions without video\n- **Bug reports** — attach a replay instead of long logs\n- **Teaching** — step through AI reasoning and tool usage\n- **Live monitoring** — watch agent sessions in real time on remote machines or containers\n\n## Installation\n\n```bash\nnpm install -g claude-replay\n```\n\nOr run directly with npx (zero install):\n\n```bash\nnpx claude-replay\n```\n\n### Docker\n\n```bash\ndocker run --rm --init -p 7331:7331 \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002F.claude\u002Fprojects:ro \\\n  ghcr.io\u002Fes617\u002Fclaude-replay\n```\n\nOpen http:\u002F\u002Flocalhost:7331 for the web editor. Session directories are mounted read-only.\n\nFor CLI usage:\n\n```bash\ndocker run --rm --init \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002F.claude\u002Fprojects:ro \\\n  -v $(pwd):\u002Foutput \\\n  ghcr.io\u002Fes617\u002Fclaude-replay \\\n  \u002Froot\u002F.claude\u002Fprojects\u002Fmy-project\u002Fsession.jsonl -o \u002Foutput\u002Freplay.html\n```\n\n## Quick start\n\n```bash\n# Launch the web editor (default)\nclaude-replay\n\n# Generate a replay by session ID (auto-finds the file)\nclaude-replay abc123def456 -o replay.html\n\n# Or pass the full path\nclaude-replay ~\u002F.claude\u002Fprojects\u002F-Users-me-myproject\u002Fsession-id.jsonl -o replay.html\n\n# Chain multiple sessions into one replay\nclaude-replay session1-id session2-id -o combined.html\n```\n\nRunning `claude-replay` with no arguments opens a browser-based editor that auto-discovers your Claude Code and Cursor sessions. From there you can browse, edit, preview, and export replays visually.\n\nFor CLI usage, you can pass just a session ID — claude-replay will search `~\u002F.claude\u002Fprojects\u002F`, `~\u002F.cursor\u002Fprojects\u002F`, `~\u002F.codex\u002Fsessions\u002F`, and `~\u002F.gemini\u002Ftmp\u002F` to find the matching file. Or pass the full path to a session file directly.\n\n### Cursor\n\nCursor transcripts are also supported — the format is auto-detected. Cursor transcripts don't include timestamps, so playback uses paced timing by default (see [Timing modes](#timing-modes)).\n\n```bash\nclaude-replay ~\u002F.cursor\u002Fprojects\u002F*\u002Fagent-transcripts\u002F\u003Cid>\u002F\u003Cid>.jsonl -o replay.html\n```\n\n### Codex CLI\n\nCodex CLI (OpenAI) transcripts are also supported — the format is auto-detected. Codex tool calls (`exec_command`, `apply_patch`) are mapped to their Claude Code equivalents (`Bash`, `Edit`\u002F`Write`) so they render with the same diff views and command previews.\n\n```bash\nclaude-replay ~\u002F.codex\u002Fsessions\u002F2026\u002F03\u002F12\u002Frollout-\u003Cid>.jsonl -o replay.html\n```\n\n### Gemini CLI\n\nGemini CLI transcripts are also supported — the format is auto-detected. Gemini stores sessions as single JSON files (not JSONL) with inline thinking blocks and tool calls. Tool names are mapped to their Claude Code equivalents (`run_shell_command` → `Bash`, `read_file` → `Read`, etc.) for consistent rendering.\n\n```bash\nclaude-replay ~\u002F.gemini\u002Ftmp\u002F\u003CprojectHash>\u002Fchats\u002Fsession-\u003Cid>.json -o replay.html\n```\n\nYou can also search by session ID:\n\n```bash\nclaude-replay \u003Csession-id> -o replay.html  # searches ~\u002F.gemini\u002Ftmp\u002F automatically\n```\n\n### OpenCode\n\nOpenCode transcripts are supported — the format is auto-detected. OpenCode stores sessions in a SQLite database, so you'll need to export the session first using the OpenCode CLI. Thinking\u002Freasoning blocks are rendered natively.\n\n```bash\n# Export a session from OpenCode, then replay it\nopencode export \u003CsessionID> > session.jsonl\nclaude-replay session.jsonl -o replay.html\n```\n\n## Web Editor\n\nThe default experience. Launch it by running `claude-replay` with no arguments:\n\n```bash\nclaude-replay\nclaude-replay --port 8080\n```\n\n![Editor](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fes617_claude-replay_readme_8db66e2abe5a.gif)\n\nThe editor provides:\n- **Session browser** — auto-discovers sessions from `~\u002F.claude\u002Fprojects\u002F`, `~\u002F.cursor\u002Fprojects\u002F`, `~\u002F.codex\u002Fsessions\u002F`, and `~\u002F.gemini\u002Ftmp\u002F`, plus a folder navigator for session files stored elsewhere\n- **Turn editor** — include\u002Fexclude turns, edit user prompts, expand assistant blocks (read-only), add bookmarks\n- **Options panel** — theme, speed, thinking\u002Ftool call toggles, redaction rules, labels\n- **Live preview** — updates as you edit, renders the same output as the CLI\n- **Export** — download the final HTML replay\n\nThe editor runs a local server on `127.0.0.1` (localhost only, not exposed to the network). It never modifies your original JSONL files — all edits are held in memory and only affect the exported output.\n\n## Usage\n\n```\nclaude-replay [--port N]                        Launch the web editor (default)\nclaude-replay \u003Cinput> [input2...] [options]     Generate replay from CLI\nclaude-replay extract \u003Creplay.html> [-o output.jsonl] [--format jsonl|json]\n```\n\nEach `\u003Cinput>` can be a session file path or a session ID. If it is not an existing file path, it is treated as a session ID. claude-replay searches `~\u002F.claude\u002Fprojects\u002F`, `~\u002F.cursor\u002Fprojects\u002F`, `~\u002F.codex\u002Fsessions\u002F`, and `~\u002F.gemini\u002Ftmp\u002F` for a matching session file. You can find your current session ID in Claude Code by running `\u002Fstatus`.\n\nMultiple inputs are concatenated into a single replay (up to 20). When all sessions have timestamps, turns are sorted chronologically; otherwise command-line order is used. This is useful when accepting a plan creates a new session — chain the sessions to get the full story in one replay.\n\n### Commands\n\n#### `editor [file|session-id]`\n\nLaunches the web-based replay editor. Optionally pass a file path or session ID to auto-load it on startup. See [Web Editor](#web-editor) above.\n\n```bash\nclaude-replay editor                              # empty editor\nclaude-replay editor ~\u002F.claude\u002Fprojects\u002F...\u002Fsession.jsonl  # auto-load file\nclaude-replay editor abc123                       # auto-load by session ID\n```\n\n#### `extract`\n\nExtract the embedded turn data from a previously generated replay HTML file. Outputs JSONL by default (one turn per line, bookmarks embedded). Use `--format json` for the legacy JSON format.\n\n```bash\nclaude-replay extract replay.html -o session.jsonl            # JSONL (default)\nclaude-replay extract replay.html -o data.json --format json  # JSON\n\n# Round-trip: extract, then regenerate with different options\nclaude-replay extract replay.html -o session.jsonl\nclaude-replay session.jsonl -o new-replay.html --theme dracula\n```\n\nThe extracted JSONL can be fed back into `claude-replay` to regenerate with different options. Bookmarks are preserved as a `bookmark` field on each turn.\n\n### Options\n\n| Flag | Description |\n|---|---|\n| `-o, --output FILE` | Output HTML file (default: stdout) |\n| `--turns N-M` | Only include turns N through M |\n| `--exclude-turns N,N,...` | Exclude specific turns by index |\n| `--from TIMESTAMP` | Start time filter (ISO 8601) |\n| `--to TIMESTAMP` | End time filter (ISO 8601) |\n| `--speed N` | Initial playback speed, e.g. `2.0` (default: 1.0) |\n| `--no-thinking` | Hide thinking blocks by default |\n| `--no-tool-calls` | Hide tool call blocks by default |\n| `--mark \"N:Label\"` | Add a bookmark\u002Fchapter at turn N (repeatable) |\n| `--bookmarks FILE` | JSON file with bookmarks `[{turn, label}]` |\n| `--no-auto-redact` | Disable automatic secret redaction |\n| `--redact \"text\"` | Replace all occurrences of text with `[REDACTED]` (repeatable) |\n| `--redact \"text=repl\"` | Replace all occurrences of text with custom replacement (repeatable) |\n| `--title TEXT` | Page title (default: derived from input path) |\n| `--description TEXT` | Meta description for link previews (default: `Interactive AI session replay`) |\n| `--og-image URL` | OG image URL for link previews (default: [hosted default](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002Fog.png)). A default image is always included; to use your own, host it and pass the URL. |\n| `--user-label NAME` | Label for user messages (default: `User`) |\n| `--assistant-label NAME` | Label for assistant messages (default: auto-detected) |\n| `--timing MODE` | Timestamp mode: `auto`, `real`, `paced` (default: `auto`) |\n| `--theme NAME` | Built-in theme (default: `tokyo-night`) |\n| `--theme-file FILE` | Custom theme JSON file (overrides `--theme`) |\n| `--no-minify` | Use unminified template (default: minified if available) |\n| `--no-compress` | Embed raw JSON instead of compressed data (for older browsers) |\n| `--open` | Open the generated HTML in the default browser |\n| `--serve` | Serve the replay on a local HTTP server instead of writing to file |\n| `--watch` | Watch input files for changes and auto-regenerate |\n| `--list-themes` | List available built-in themes and exit |\n| `--port N` | Port for the editor\u002Fserve server (default: 7331 editor, 7332 serve) |\n\n### Examples\n\n```bash\n# Replay turns 5 through 15 at 2x speed\nclaude-replay session.jsonl --turns 5-15 --speed 2.0 -o replay.html\n\n# Filter by time range\nclaude-replay session.jsonl --from \"2026-02-26T02:00\" --to \"2026-02-26T03:00\" -o replay.html\n\n# Clean output: no thinking, no tools\nclaude-replay session.jsonl --no-thinking --no-tool-calls -o replay.html\n\n# Use a different theme\nclaude-replay session.jsonl --theme dracula -o replay.html\n\n# Pipe to stdout for further processing\nclaude-replay session.jsonl --turns 1-5 > snippet.html\n\n# Chain multiple sessions into one replay\nclaude-replay abc123 def456 ghi789 -o combined.html\n\n# Live preview: serve and auto-reload on changes\nclaude-replay session.jsonl --serve --watch\n\n# Serve without watching (one-shot preview)\nclaude-replay session.jsonl --serve\n\n# Watch and write to file on changes\nclaude-replay session.jsonl --watch -o replay.html\n```\n\n## Timing modes\n\nThe `--timing` flag controls how playback speed is derived:\n\n| Mode | Behavior |\n|---|---|\n| `auto` | Uses real timestamps if available, falls back to `paced` (default) |\n| `real` | Uses original timestamps from the transcript |\n| `paced` | Generates synthetic timing based on content length |\n\n`paced` mode creates presentation-style timing — similar to how slides appear in a presentation or subtitles are timed in a video. Block reveal speed scales with text length. This is the default for Cursor transcripts (which have no timestamps) and can also be used with Claude Code transcripts for smoother demos:\n\n```bash\n# Use paced timing even for Claude Code transcripts\nclaude-replay session.jsonl --timing paced -o demo.html\n```\n\n## Player controls\n\nThe generated HTML file is a fully self-contained interactive player:\n\n- **Play\u002FPause** — auto-advances through turns with block-by-block animation\n- **Step forward\u002Fback** — navigate one block at a time within turns\n- **Progress bar** — click to jump to any point; session timer shows elapsed\u002Ftotal time\n- **Speed control** — 0.5x to 5x playback speed\n- **Toggle checkboxes** — show\u002Fhide thinking blocks and tool calls\n\n### Keyboard shortcuts\n\n| Key | Action |\n|---|---|\n| `Space` \u002F `K` | Play \u002F Pause |\n| `→` \u002F `L` | Step forward (block) |\n| `←` \u002F `H` | Step back (block) |\n| `Shift+→` \u002F `Shift+L` | Jump to next turn |\n| `Shift+←` \u002F `Shift+H` | Jump to previous turn |\n| `T` | Jump to next thinking\u002Ftool block |\n| `Shift+T` | Jump to previous thinking\u002Ftool block |\n\n## Themes\n\n### Built-in themes\n\n```bash\nclaude-replay --list-themes\n```\n\nAvailable themes: `tokyo-night` (default), `monokai`, `solarized-dark`, `github-light`, `dracula`, `bubbles`.\n\n### Custom themes\n\nCreate a JSON file with CSS color values:\n\n```json\n{\n  \"bg\": \"#0d1117\",\n  \"bg-surface\": \"#161b22\",\n  \"bg-hover\": \"#1c2128\",\n  \"text\": \"#e6edf3\",\n  \"text-dim\": \"#7d8590\",\n  \"text-bright\": \"#ffffff\",\n  \"accent\": \"#ff7b72\",\n  \"accent-dim\": \"#c9514a\",\n  \"green\": \"#3fb950\",\n  \"blue\": \"#58a6ff\",\n  \"orange\": \"#d29922\",\n  \"red\": \"#f85149\",\n  \"cyan\": \"#39d2c0\",\n  \"border\": \"#30363d\",\n  \"tool-bg\": \"#0d1117\",\n  \"thinking-bg\": \"#0b0f14\"\n}\n```\n\n```bash\nclaude-replay session.jsonl --theme-file my-theme.json -o replay.html\n```\n\nAny missing keys are filled from the `tokyo-night` defaults, so you only need to specify the colors you want to change.\n\nFor advanced customization, add an `extraCss` key with arbitrary CSS rules to override layout, fonts, or any other styles:\n\n```json\n{\n  \"bg\": \"#ffffff\",\n  \"text\": \"#1c1e21\",\n  \"extraCss\": \".assistant-text { border-radius: 12px; border: 1px solid #ddd; }\"\n}\n```\n\nSee the built-in `bubbles` theme for an example of a fully custom layout using `extraCss`.\n\n\u003Cdetails>\n\u003Csummary>Theme variables reference\u003C\u002Fsummary>\n\n| Variable | Used for |\n|---|---|\n| `bg` | Main background |\n| `bg-surface` | Controls bar, elevated surfaces |\n| `bg-hover` | Hover states |\n| `text` | Primary text |\n| `text-dim` | Secondary text, timestamps, labels |\n| `text-bright` | User input, emphasized text |\n| `accent` | Prompt symbol, progress bar, active states |\n| `accent-dim` | Active button backgrounds |\n| `green` | Tool results |\n| `blue` | Tool call indicators |\n| `orange` | (reserved for warnings) |\n| `red` | (reserved for errors) |\n| `cyan` | Tool names |\n| `border` | Borders and separators |\n| `tool-bg` | Tool call block background |\n| `thinking-bg` | Thinking block background |\n\n\u003C\u002Fdetails>\n\n## Embedding\n\nThe output is a single HTML file with no external dependencies. Embed it in blog posts or docs with an iframe:\n\n```html\n\u003Ciframe src=\"replay.html\" width=\"100%\" height=\"600\" style=\"border: 1px solid #333; border-radius: 8px;\">\u003C\u002Fiframe>\n```\n\n## How it works\n\n1. **Parser** reads the JSONL transcript line by line, handling Claude Code's streaming format (where a single assistant message appears as multiple lines with incremental content blocks)\n2. Turns are grouped as: user message + assistant response (text, tool calls, thinking blocks) + tool results\n3. **Renderer** compresses the parsed turns (deflate + base64) and injects them into the HTML template\n4. The **player** is vanilla JS — no frameworks, no external requests. Data is decompressed at load time using the browser-native `DecompressionStream` API\n\n### Output optimization\n\nGenerated HTML files use two layers of optimization (zero external dependencies):\n\n- **Minified CSS\u002FJS** — the player template is minified with esbuild (mangled variable names, whitespace removed). Use `--no-minify` for readable output.\n- **Compressed data** — transcript JSON is deflate-compressed and base64-encoded, typically reducing output size by ~60-70%. The browser decompresses it natively at load time using `DecompressionStream` (Chrome 80+, Firefox 113+, Safari 16.4+). For older browsers, use `--no-compress` to embed raw JSON.\n\n### Development\n\nTo rebuild the minified template after editing `template\u002Fplayer.html`:\n\n```bash\nnpm install    # installs esbuild (devDependency)\nnpm run build  # generates template\u002Fplayer.min.html\n```\n\nThe minified template is built in CI and included in npm releases. Without it, the CLI falls back to the unminified template automatically.\n\n## Secret redaction\n\nBy default, claude-replay scans all embedded text for common secret patterns and replaces them with `[REDACTED]` **before** they are written into the output HTML. This means secrets from your session (API keys, tokens, connection strings, etc.) never end up in the generated file.\n\nDetected patterns include:\n- API keys (`sk-...`, `sk-ant-...`, `key-...`)\n- AWS access key IDs (`AKIA...`)\n- Bearer and JWT tokens\n- Database connection strings (`postgres:\u002F\u002F...`, `mongodb:\u002F\u002F...`, etc.)\n- Private key blocks (`-----BEGIN ... PRIVATE KEY-----`)\n- Generic key\u002Fvalue secrets (`api_key=...`, `auth_token: ...`)\n- Environment variable secrets (`PASSWORD=...`, `TOKEN=...`)\n- Long hex tokens (40+ characters)\n\n**Important:** Pattern-based redaction is a best-effort safety net — it cannot catch every possible secret format. Always review the generated HTML before sharing publicly.\n\nTo disable redaction (e.g. for internal\u002Fprivate replays):\n\n```bash\nclaude-replay session.jsonl --no-auto-redact -o replay.html\n```\n\n## Supported transcript formats\n\n### Claude Code\n\nOne JSON object per line with a `type` field (`user`, `assistant`, `system`, `progress`, etc.). Includes timestamps, thinking blocks, and tool calls with results.\n\n### Cursor\n\nOne JSON object per line with a top-level `role` field. No timestamps. Thinking appears as inline text. The format is auto-detected — no flags needed.\n\n### Codex CLI\n\nEvent-based JSONL with typed events (`session_meta`, `response_item`, `event_msg`, etc.). Includes timestamps. Tool calls (`exec_command`, `apply_patch`) are mapped to Claude Code equivalents for consistent rendering. Codex's encrypted reasoning blocks are skipped; commentary messages are shown as thinking blocks. The format is auto-detected — no flags needed.\n\n### Gemini CLI\n\nSingle JSON file with a `sessionId` field and a `messages` array containing `user` and `gemini` typed entries. Includes timestamps, inline thinking blocks (thoughts), and tool calls with nested results. Tool names (`run_shell_command`, `read_file`, `edit_file`, etc.) are mapped to Claude Code equivalents for consistent rendering. The format is auto-detected — no flags needed.\n\n## Requirements\n\n- Node.js 18+\n- Zero runtime dependencies (esbuild is a dev-only dependency for building the minified template)\n\n## Privacy\n\nReplay files embed the **full session transcript**, including source code, file paths, tool inputs\u002Foutputs, and thinking traces. Review the generated HTML before sharing publicly — it may contain proprietary code, internal paths, or other sensitive information. Secret redaction (enabled by default) catches common credential patterns but does not filter code or file contents.\n\nThe transcript data is stored as a compressed blob inside the HTML file. Editing the player JavaScript to hide or filter turns only affects rendering — the original data remains in the blob and can be recovered. To exclude sensitive content, use the CLI flags at generation time (e.g. `--turns`, `--exclude-turns`). Use `--redact` to strip specific strings (usernames, paths, project names) at generation time. Always review the generated replay before sharing publicly.\n\n## License\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fblob\u002Fmain\u002FLICENSE)\n","# claude-replay\n\n![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fclaude-replay)\n![Claude Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-replay-blue)\n![Cursor](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursor-replay-purple)\n![Codex CLI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCodex_CLI-replay-green)\n![Gemini CLI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGemini_CLI-replay-orange)\n![OpenCode](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenCode-replay-red)\n![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)\n![Node.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-18%2B-green.svg)\n![Zero Dependencies](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdependencies-0-brightgreen)\n\n> 社区工具 — 与 Anthropic 无关联或官方认可。\n\nAI 编码会话（coding sessions）对开发很有帮助，但难以分享。录屏文件体积庞大，而转录文本又难以导航。\n\n**claude-replay** 将 Claude Code、Cursor、Codex CLI、Gemini CLI 和 OpenCode 的会话日志转换为交互式、可分享的 HTML 回放文件。生成的回放是一个独立的 HTML 文件，没有任何外部依赖 —— 您可以通过电子邮件发送它、托管在任何地方，或者嵌入到文档中。使用 `--serve --watch` 实时监控代理会话的运行过程。\n\n![Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fes617_claude-replay_readme_70ae0f3b0c2a.gif)\n\n**[在线试用](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002F)** · **[实时演示](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002Fdemo-redaction.html)**\n\nClaude Code、Cursor、Codex CLI、Gemini CLI 和 OpenCode 会在磁盘上存储对话记录。**claude-replay** 自动检测格式并将其转换为适合博客文章、演示和文档的可视化回放。\n\n| 来源 | 转录文件位置 |\n|---|---|\n| Claude Code | `~\u002F.claude\u002Fprojects\u002F\u003Cproject>\u002F` |\n| Cursor | `~\u002F.cursor\u002Fprojects\u002F\u003Cproject>\u002Fagent-transcripts\u002F\u003Cid>\u002F` |\n| Codex CLI | `~\u002F.codex\u002Fsessions\u002F\u003Cdate>\u002F` |\n| Gemini CLI | `~\u002F.gemini\u002Ftmp\u002F\u003CprojectHash>\u002Fchats\u002F` |\n| OpenCode | 通过 `opencode export \u003CsessionID>` 导出 |\n\n## 功能特性\n\n- 独立的 HTML 输出（无依赖）\n- 带速度控制的交互式回放\n- 折叠\u002F展开工具调用和思考块（Claude 的内部推理轨迹）\n- 书签 \u002F 章节\n- 导出前的敏感信息隐藏\n- 多种颜色主题\n- 类终端的从下到上滚动\n- 可通过 iframe 嵌入\n- 实时监控模式 —— 实时监控代理会话 (`--serve --watch`)\n- 基于 Web 的编辑器界面，用于可视化会话编辑和预览\n\n## 使用场景\n\nclaude-replay 适用于以下场景：\n\n- **博客文章** —— 以交互方式展示 AI 辅助开发会话\n- **文档** —— 嵌入 AI 调试会话或代码讲解\n- **演示** —— 分享可复现的会话，无需视频\n- **错误报告** —— 附加回放文件而不是冗长的日志\n- **教学** —— 逐步讲解 AI 推理和工具使用\n- **实时监控** —— 在远程机器或容器中实时查看代理会话\n\n## 安装\n\n```bash\nnpm install -g claude-replay\n```\n\n或者直接使用 npx 运行（零安装）：\n\n```bash\nnpx claude-replay\n```\n\n### Docker\n\n```bash\ndocker run --rm --init -p 7331:7331 \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002F.claude\u002Fprojects:ro \\\n  ghcr.io\u002Fes617\u002Fclaude-replay\n```\n\n打开 http:\u002F\u002Flocalhost:7331 访问 Web 编辑器。会话目录以只读方式挂载。\n\nCLI 使用方式：\n\n```bash\ndocker run --rm --init \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002F.claude\u002Fprojects:ro \\\n  -v $(pwd):\u002Foutput \\\n  ghcr.io\u002Fes617\u002Fclaude-replay \\\n  \u002Froot\u002F.claude\u002Fprojects\u002Fmy-project\u002Fsession.jsonl -o \u002Foutput\u002Freplay.html\n```\n\n## 快速开始\n\n```bash\n# 启动 Web 编辑器（默认）\nclaude-replay\n\n# 通过会话 ID 生成回放（自动查找文件）\nclaude-replay abc123def456 -o replay.html\n\n# 或者传递完整路径\nclaude-replay ~\u002F.claude\u002Fprojects\u002F-Users-me-myproject\u002Fsession-id.jsonl -o replay.html\n\n# 将多个会话合并为一个回放\nclaude-replay session1-id session2-id -o combined.html\n```\n\n运行 `claude-replay` 不带参数时，会打开一个基于浏览器的编辑器，自动发现您的 Claude Code 和 Cursor 会话。您可以从中浏览、编辑、预览并导出可视化回放。\n\n对于 CLI 使用，您可以仅传递会话 ID —— claude-replay 会搜索 `~\u002F.claude\u002Fprojects\u002F`、`~\u002F.cursor\u002Fprojects\u002F`、`~\u002F.codex\u002Fsessions\u002F` 和 `~\u002F.gemini\u002Ftmp\u002F` 找到匹配的文件。或者直接传递会话文件的完整路径。\n\n### Cursor\n\n也支持 Cursor 转录文件 —— 格式会自动检测。Cursor 转录文件不包含时间戳，因此回放默认使用匀速计时（参见 [计时模式](#timing-modes)）。\n\n```bash\nclaude-replay ~\u002F.cursor\u002Fprojects\u002F*\u002Fagent-transcripts\u002F\u003Cid>\u002F\u003Cid>.jsonl -o replay.html\n```\n\n### Codex CLI\n\n也支持 Codex CLI（OpenAI）转录文件 —— 格式会自动检测。Codex 工具调用（`exec_command`、`apply_patch`）会被映射到其 Claude Code 等效项（`Bash`、`Edit`\u002F`Write`），以便以相同的差异视图和命令预览呈现。\n\n```bash\nclaude-replay ~\u002F.codex\u002Fsessions\u002F2026\u002F03\u002F12\u002Frollout-\u003Cid>.jsonl -o replay.html\n```\n\n### Gemini CLI\n\n也支持 Gemini CLI 转录文件 —— 格式会自动检测。Gemini 将会话存储为单个 JSON 文件（非 JSONL），其中包含内联的思考块和工具调用。工具名称会被映射到其 Claude Code 等效项（`run_shell_command` → `Bash`、`read_file` → `Read` 等），以确保一致的渲染效果。\n\n```bash\nclaude-replay ~\u002F.gemini\u002Ftmp\u002F\u003CprojectHash>\u002Fchats\u002Fsession-\u003Cid>.json -o replay.html\n```\n\n您也可以通过会话 ID 搜索：\n\n```bash\nclaude-replay \u003Csession-id> -o replay.html  # 自动搜索 ~\u002F.gemini\u002Ftmp\u002F\n```\n\n### OpenCode\n\n也支持 OpenCode 转录文件 —— 格式会自动检测。OpenCode 将会话存储在 SQLite 数据库中，因此您需要先使用 OpenCode CLI 导出会话。思考\u002F推理块会原生渲染。\n\n```bash\n# 从 OpenCode 导出会话，然后回放\nopencode export \u003CsessionID> > session.jsonl\nclaude-replay session.jsonl -o replay.html\n```\n\n## Web 编辑器\n\n默认体验。通过运行 `claude-replay` 不带参数启动：\n\n```bash\nclaude-replay\nclaude-replay --port 8080\n```\n\n![Editor](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fes617_claude-replay_readme_8db66e2abe5a.gif)\n\n编辑器提供：\n- **会话浏览器** —— 自动发现 `~\u002F.claude\u002Fprojects\u002F`、`~\u002F.cursor\u002Fprojects\u002F`、`~\u002F.codex\u002Fsessions\u002F` 和 `~\u002F.gemini\u002Ftmp\u002F` 中的会话，并提供文件夹导航以查找其他位置存储的会话文件\n- **轮次编辑器** —— 包括\u002F排除轮次，编辑用户提示，展开助手块（只读），添加书签\n- **选项面板** —— 主题、速度、思考\u002F工具调用切换、隐藏规则、标签\n- **实时预览** —— 随编辑更新，渲染与 CLI 相同的输出\n- **导出** —— 下载最终的 HTML 回放文件\n\n编辑器在 `127.0.0.1` 上运行本地服务器（仅限本地访问，不会暴露到网络）。它不会修改原始的 JSONL 文件 —— 所有编辑都保存在内存中，仅影响导出的输出。\n\n## 使用方法\n\n```\nclaude-replay [--port N]                        启动网页编辑器（默认）\nclaude-replay \u003Cinput> [input2...] [options]     通过命令行生成回放\nclaude-replay extract \u003Creplay.html> [-o output.jsonl] [--format jsonl|json]\n```\n\n每个 `\u003Cinput>` 可以是会话文件路径或会话 ID。如果它不是现有的文件路径，则被视为会话 ID。`claude-replay` 会在 `~\u002F.claude\u002Fprojects\u002F`、`~\u002F.cursor\u002Fprojects\u002F`、`~\u002F.codex\u002Fsessions\u002F` 和 `~\u002F.gemini\u002Ftmp\u002F` 中搜索匹配的会话文件。您可以在 Claude Code 中运行 `\u002Fstatus` 来找到当前的会话 ID。\n\n多个输入会被合并为一个回放（最多 20 个）。当所有会话都有时间戳时，对话将按时间顺序排序；否则使用命令行顺序。这在接收计划创建新会话时非常有用 —— 将会话链接起来以在一个回放中获取完整的故事。\n\n### 命令\n\n#### `editor [file|session-id]`\n\n启动基于网页的回放编辑器。可以选择传递文件路径或会话 ID 以在启动时自动加载。参见上面的 [Web 编辑器](#web-editor)。\n\n```bash\nclaude-replay editor                              # 空白编辑器\nclaude-replay editor ~\u002F.claude\u002Fprojects\u002F...\u002Fsession.jsonl  # 自动加载文件\nclaude-replay editor abc123                       # 按会话 ID 自动加载\n```\n\n#### `extract`\n\n从先前生成的回放 HTML 文件中提取嵌入的对话数据。默认输出 JSONL 格式（每行一个对话，书签嵌入其中）。使用 `--format json` 获取旧版 JSON 格式。\n\n```bash\nclaude-replay extract replay.html -o session.jsonl            # JSONL（默认）\nclaude-replay extract replay.html -o data.json --format json  # JSON\n\n# 循环：提取后使用不同选项重新生成\nclaude-replay extract replay.html -o session.jsonl\nclaude-replay session.jsonl -o new-replay.html --theme dracula\n```\n\n提取的 JSONL 可以重新输入到 `claude-replay` 中以使用不同选项重新生成。书签作为每个对话的 `bookmark` 字段保留。\n\n### 选项\n\n| 标志 | 描述 |\n|---|---|\n| `-o, --output FILE` | 输出 HTML 文件（默认：标准输出） |\n| `--turns N-M` | 仅包含第 N 到第 M 个对话 |\n| `--exclude-turns N,N,...` | 按索引排除特定对话 |\n| `--from TIMESTAMP` | 开始时间过滤（ISO 8601 格式） |\n| `--to TIMESTAMP` | 结束时间过滤（ISO 8601 格式） |\n| `--speed N` | 初始播放速度，例如 `2.0`（默认：1.0） |\n| `--no-thinking` | 默认隐藏思考块 |\n| `--no-tool-calls` | 默认隐藏工具调用块 |\n| `--mark \"N:Label\"` | 在第 N 个对话处添加书签\u002F章节（可重复） |\n| `--bookmarks FILE` | 包含书签的 JSON 文件 `[{turn, label}]` |\n| `--no-auto-redact` | 禁用自动敏感信息屏蔽 |\n| `--redact \"text\"` | 将文本的所有出现替换为 `[REDACTED]`（可重复） |\n| `--redact \"text=repl\"` | 将文本的所有出现替换为自定义内容（可重复） |\n| `--title TEXT` | 页面标题（默认：从输入路径派生） |\n| `--description TEXT` | 链接预览的元描述（默认：`Interactive AI session replay`） |\n| `--og-image URL` | 链接预览的 OG 图片 URL（默认：[托管默认值](https:\u002F\u002Fes617.github.io\u002Fclaude-replay\u002Fog.png)）。始终包含默认图片；如需使用自己的图片，请托管并传递 URL。 |\n| `--user-label NAME` | 用户消息的标签（默认：`User`） |\n| `--assistant-label NAME` | 助手消息的标签（默认：自动检测） |\n| `--timing MODE` | 时间戳模式：`auto`、`real`、`paced`（默认：`auto`） |\n| `--theme NAME` | 内置主题（默认：`tokyo-night`） |\n| `--theme-file FILE` | 自定义主题 JSON 文件（覆盖 `--theme`） |\n| `--no-minify` | 使用未压缩模板（默认：如果可用则压缩） |\n| `--no-compress` | 嵌入原始 JSON 而非压缩数据（适用于较旧浏览器） |\n| `--open` | 在默认浏览器中打开生成的 HTML |\n| `--serve` | 在本地 HTTP 服务器上提供回放服务，而不是写入文件 |\n| `--watch` | 监视输入文件的变化并自动重新生成 |\n| `--list-themes` | 列出可用的内置主题并退出 |\n| `--port N` | 编辑器\u002F服务服务器的端口（默认：7331 编辑器，7332 服务） |\n\n### 示例\n\n```bash\n# 回放第 5 到第 15 个对话，速度为 2 倍\nclaude-replay session.jsonl --turns 5-15 --speed 2.0 -o replay.html\n\n# 按时间范围过滤\nclaude-replay session.jsonl --from \"2026-02-26T02:00\" --to \"2026-02-26T03:00\" -o replay.html\n\n# 清洁输出：无思考块，无工具调用\nclaude-replay session.jsonl --no-thinking --no-tool-calls -o replay.html\n\n# 使用不同的主题\nclaude-replay session.jsonl --theme dracula -o replay.html\n\n# 输出到标准输出以进行进一步处理\nclaude-replay session.jsonl --turns 1-5 > snippet.html\n\n# 将多个会话链接成一个回放\nclaude-replay abc123 def456 ghi789 -o combined.html\n\n# 实时预览：提供服务并在变化时自动重新加载\nclaude-replay session.jsonl --serve --watch\n\n# 提供服务但不监视（一次性预览）\nclaude-replay session.jsonl --serve\n\n# 监视并在变化时写入文件\nclaude-replay session.jsonl --watch -o replay.html\n```\n\n## 时间模式\n\n`--timing` 标志控制播放速度的计算方式：\n\n| 模式 | 行为 |\n|---|---|\n| `auto` | 如果有真实时间戳则使用，否则回退到 `paced`（默认） |\n| `real` | 使用转录中的原始时间戳 |\n| `paced` | 根据内容长度生成合成时间 |\n\n`paced` 模式创建演示风格的时间安排 —— 类似于幻灯片演示或视频字幕的时间安排。块显示速度随文本长度缩放。这是 Cursor 转录（没有时间戳）的默认设置，也可以用于 Claude Code 转录以实现更流畅的演示：\n\n```bash\n# 即使对于 Claude Code 转录也使用 paced 时间\nclaude-replay session.jsonl --timing paced -o demo.html\n```\n\n## 播放器控件\n\n生成的 HTML 文件是一个完全独立的交互式播放器：\n\n- **播放\u002F暂停** —— 自动逐块推进对话\n- **向前\u002F向后步进** —— 在对话内逐块导航\n- **进度条** —— 点击跳转到任意点；会话计时器显示经过\u002F总时间\n- **速度控制** —— 0.5x 到 5x 播放速度\n- **切换复选框** —— 显示\u002F隐藏思考块和工具调用\n\n### 键盘快捷键\n\n| 键 | 动作 |\n|---|---|\n| `Space` \u002F `K` | 播放 \u002F 暂停 |\n| `→` \u002F `L` | 向前步进（块） |\n| `←` \u002F `H` | 向后步进（块） |\n| `Shift+→` \u002F `Shift+L` | 跳转到下一个对话 |\n| `Shift+←` \u002F `Shift+H` | 跳转到上一个对话 |\n| `T` | 跳转到下一个思考\u002F工具块 |\n| `Shift+T` | 跳转到上一个思考\u002F工具块 |\n\n## 主题\n\n### 内置主题\n\n```bash\nclaude-replay --list-themes\n```\n\n可用主题：`tokyo-night`（默认）、`monokai`、`solarized-dark`、`github-light`、`dracula`、`bubbles`。\n\n### 自定义主题\n\n创建一个包含 CSS 颜色值的 JSON 文件：\n\n```json\n{\n  \"bg\": \"#0d1117\",\n  \"bg-surface\": \"#161b22\",\n  \"bg-hover\": \"#1c2128\",\n  \"text\": \"#e6edf3\",\n  \"text-dim\": \"#7d8590\",\n  \"text-bright\": \"#ffffff\",\n  \"accent\": \"#ff7b72\",\n  \"accent-dim\": \"#c9514a\",\n  \"green\": \"#3fb950\",\n  \"blue\": \"#58a6ff\",\n  \"orange\": \"#d29922\",\n  \"red\": \"#f85149\",\n  \"cyan\": \"#39d2c0\",\n  \"border\": \"#30363d\",\n  \"tool-bg\": \"#0d1117\",\n  \"thinking-bg\": \"#0b0f14\"\n}\n```\n\n```bash\nclaude-replay session.jsonl --theme-file my-theme.json -o replay.html\n```\n\n任何缺失的键值都会从 `tokyo-night` 默认值中填充，因此你只需指定想要更改的颜色。\n\n对于高级自定义，可以添加一个 `extraCss` 键，使用任意 CSS 规则覆盖布局、字体或其他样式：\n\n```json\n{\n  \"bg\": \"#ffffff\",\n  \"text\": \"#1c1e21\",\n  \"extraCss\": \".assistant-text { border-radius: 12px; border: 1px solid #ddd; }\"\n}\n```\n\n参见内置的 `bubbles` 主题，了解如何使用 `extraCss` 实现完全自定义布局的示例。\n\n\u003Cdetails>\n\u003Csummary>主题变量参考\u003C\u002Fsummary>\n\n| 变量 | 用途 |\n|---|---|\n| `bg` | 主背景 |\n| `bg-surface` | 控制栏、提升表面 |\n| `bg-hover` | 悬停状态 |\n| `text` | 主文本 |\n| `text-dim` | 次要文本、时间戳、标签 |\n| `text-bright` | 用户输入、强调文本 |\n| `accent` | 提示符号、进度条、激活状态 |\n| `accent-dim` | 激活按钮背景 |\n| `green` | 工具结果 |\n| `blue` | 工具调用指示器 |\n| `orange` | （保留用于警告） |\n| `red` | （保留用于错误） |\n| `cyan` | 工具名称 |\n| `border` | 边框和分隔线 |\n| `tool-bg` | 工具调用块背景 |\n| `thinking-bg` | 思考块背景 |\n\n\u003C\u002Fdetails>\n\n## 嵌入\n\n输出是一个没有外部依赖的单个 HTML 文件。可以通过 iframe 将其嵌入博客文章或文档中：\n\n```html\n\u003Ciframe src=\"replay.html\" width=\"100%\" height=\"600\" style=\"border: 1px solid #333; border-radius: 8px;\">\u003C\u002Fiframe>\n```\n\n## 工作原理\n\n1. **解析器** 逐行读取 JSONL 转录文件，处理 Claude Code 的流式格式（单个助手消息可能以多行形式出现，内容块逐步增加）。\n2. 将对话分组为：用户消息 + 助手响应（文本、工具调用、思考块）+ 工具结果。\n3. **渲染器** 压缩解析后的对话（deflate + base64），并将其注入 HTML 模板。\n4. **播放器** 是纯 JavaScript 实现 —— 不使用框架，也不发送外部请求。数据在加载时通过浏览器原生的 `DecompressionStream` API 解压缩。\n\n### 输出优化\n\n生成的 HTML 文件使用两层优化（零外部依赖）：\n\n- **压缩的 CSS\u002FJS** —— 播放器模板通过 esbuild 进行压缩（混淆变量名，移除空白）。使用 `--no-minify` 参数可生成可读的输出。\n- **压缩的数据** —— 转录 JSON 使用 deflate 压缩并 base64 编码，通常可减少输出大小约 60-70%。浏览器在加载时通过 `DecompressionStream` 原生解压缩（支持 Chrome 80+、Firefox 113+、Safari 16.4+）。对于旧版浏览器，使用 `--no-compress` 参数嵌入原始 JSON。\n\n### 开发\n\n编辑 `template\u002Fplayer.html` 后重新构建压缩模板：\n\n```bash\nnpm install    # 安装 esbuild（开发依赖）\nnpm run build  # 生成 template\u002Fplayer.min.html\n```\n\n压缩模板在 CI 中构建，并包含在 npm 发布版本中。如果没有压缩模板，CLI 会自动回退到未压缩模板。\n\n## 敏感信息屏蔽\n\n默认情况下，claude-replay 会在所有嵌入文本中扫描常见的敏感信息模式，并在写入输出 HTML **之前** 将其替换为 `[REDACTED]`。这意味着你的会话中的敏感信息（API 密钥、令牌、连接字符串等）不会出现在生成的文件中。\n\n检测到的模式包括：\n- API 密钥 (`sk-...`, `sk-ant-...`, `key-...`)\n- AWS 访问密钥 ID (`AKIA...`)\n- Bearer 和 JWT 令牌\n- 数据库连接字符串 (`postgres:\u002F\u002F...`, `mongodb:\u002F\u002F...` 等)\n- 私钥块 (`-----BEGIN ... PRIVATE KEY-----`)\n- 通用键值对秘密 (`api_key=...`, `auth_token: ...`)\n- 环境变量秘密 (`PASSWORD=...`, `TOKEN=...`)\n- 长十六进制令牌（40+ 字符）\n\n**重要提示：** 基于模式的屏蔽是一种尽力而为的安全网 —— 无法捕获每一种可能的秘密格式。始终在公开分享前检查生成的 HTML。\n\n禁用屏蔽（例如用于内部\u002F私有回放）：\n\n```bash\nclaude-replay session.jsonl --no-auto-redact -o replay.html\n```\n\n## 支持的转录格式\n\n### Claude Code\n\n每行一个 JSON 对象，包含 `type` 字段（`user`, `assistant`, `system`, `progress` 等）。包括时间戳、思考块和工具调用及结果。\n\n### Cursor\n\n每行一个 JSON 对象，包含顶级 `role` 字段。无时间戳。思考以内联文本形式显示。格式自动检测 —— 无需标志。\n\n### Codex CLI\n\n基于事件的 JSONL，包含类型化事件（`session_meta`, `response_item`, `event_msg` 等）。包括时间戳。工具调用（`exec_command`, `apply_patch`）映射为 Claude Code 等效项以实现一致渲染。Codex 的加密推理块被跳过；注释消息显示为思考块。格式自动检测 —— 无需标志。\n\n### Gemini CLI\n\n单个 JSON 文件，包含 `sessionId` 字段和 `messages` 数组，数组中包含 `user` 和 `gemini` 类型的条目。包括时间戳、内联思考块（thoughts）和工具调用及嵌套结果。工具名称（`run_shell_command`, `read_file`, `edit_file` 等）映射为 Claude Code 等效项以实现一致渲染。格式自动检测 —— 无需标志。\n\n## 要求\n\n- Node.js 18+\n- 零运行时依赖（esbuild 仅为开发依赖，用于构建压缩模板）\n\n## 隐私\n\n回放文件嵌入了 **完整会话转录**，包括源代码、文件路径、工具输入\u002F输出和思考痕迹。在公开分享前请检查生成的 HTML —— 它可能包含专有代码、内部路径或其他敏感信息。默认启用的敏感信息屏蔽功能会捕获常见的凭据模式，但不会过滤代码或文件内容。\n\n转录数据存储为 HTML 文件中的压缩 blob。编辑播放器 JavaScript 以隐藏或过滤对话仅影响渲染 —— 原始数据仍保留在 blob 中并可恢复。要排除敏感内容，请在生成时使用 CLI 标志（例如 `--turns`, `--exclude-turns`）。使用 `--redact` 在生成时删除特定字符串（用户名、路径、项目名称）。始终在公开分享前检查生成的回放。\n\n## 许可证\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fblob\u002Fmain\u002FLICENSE)","# 快速上手指南：claude-replay\n\n**claude-replay** 是一个社区工具，用于将 Claude Code、Cursor、Codex CLI、Gemini CLI 和 OpenCode 的会话日志转换为交互式、可分享的 HTML 回放文件。以下是快速上手指南。\n\n---\n\n## 环境准备\n\n### 系统要求\n- **Node.js**: 18 或更高版本（推荐使用 LTS 版本）\n- **操作系统**: 支持 macOS、Linux 和 Windows（WSL2 推荐）\n- **依赖项**: 无外部依赖（零依赖）\n\n### 前置依赖\n确保已安装 Node.js。如果未安装，可以通过以下方式安装：\n```bash\n# 使用 nvm 安装 Node.js（推荐）\ncurl -o- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.39.5\u002Finstall.sh | bash\nnvm install --lts\n```\n\n国内用户可以使用淘宝镜像加速：\n```bash\nnpm config set registry https:\u002F\u002Fregistry.npmmirror.com\n```\n\n---\n\n## 安装步骤\n\n### 全局安装\n通过 npm 全局安装 `claude-replay`：\n```bash\nnpm install -g claude-replay\n```\n\n### 零安装运行\n如果不希望全局安装，可以直接使用 `npx` 运行：\n```bash\nnpx claude-replay\n```\n\n### Docker 安装（可选）\n如果需要使用 Docker，可以拉取官方镜像：\n```bash\ndocker run --rm --init -p 7331:7331 \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002F.claude\u002Fprojects:ro \\\n  ghcr.io\u002Fes617\u002Fclaude-replay\n```\n启动后访问 [http:\u002F\u002Flocalhost:7331](http:\u002F\u002Flocalhost:7331) 即可使用 Web 编辑器。\n\n---\n\n## 基本使用\n\n### 启动 Web 编辑器\n运行以下命令启动默认的 Web 编辑器：\n```bash\nclaude-replay\n```\n编辑器会自动扫描 `~\u002F.claude\u002Fprojects\u002F`、`~\u002F.cursor\u002Fprojects\u002F` 等目录中的会话文件，支持可视化浏览、编辑和导出。\n\n### 生成单个回放文件\n通过会话 ID 或文件路径生成 HTML 回放文件：\n```bash\n# 按会话 ID 自动生成\nclaude-replay abc123def456 -o replay.html\n\n# 指定完整路径\nclaude-replay ~\u002F.claude\u002Fprojects\u002F-Users-me-myproject\u002Fsession-id.jsonl -o replay.html\n```\n\n### 合并多个会话\n将多个会话合并为一个回放文件：\n```bash\nclaude-replay session1-id session2-id -o combined.html\n```\n\n### 实时监控会话\n使用 `--serve --watch` 实时监控会话运行：\n```bash\nclaude-replay session.jsonl --serve --watch\n```\n\n### 自定义主题和速度\n生成回放时可以指定主题和播放速度：\n```bash\nclaude-replay session.jsonl --theme dracula --speed 2.0 -o replay.html\n```\n\n---\n\n以上是 `claude-replay` 的快速上手指南，更多高级功能请参考官方文档或 README 文件。","一位技术博主正在撰写一篇关于如何使用 AI 编码助手优化开发流程的文章，需要分享一个完整的 AI 辅助编码会话。\n\n### 没有 claude-replay 时\n- 他只能通过录屏来展示整个编码过程，但视频文件体积大，加载慢，且无法直接复制代码片段。\n- 如果选择分享原始日志文件，读者面对的是枯燥的文本记录，难以快速定位关键步骤。\n- 在文章中嵌入交互式内容几乎不可能，只能通过截图和文字描述，降低了内容的吸引力。\n- 敏感信息（如 API 密钥）需要手动检查并删除，容易遗漏造成安全隐患。\n- 无法实时监控和调整演示内容，必须等到整个会话结束后才能处理。\n\n### 使用 claude-replay 后\n- 他将 AI 编码会话转换为轻量级、自包含的 HTML 文件，读者可以流畅加载并直接复制代码片段。\n- 生成的回放文件支持交互式播放，读者可以自由控制速度，并通过折叠\u002F展开功能聚焦关键步骤。\n- 直接嵌入到博客文章中的 HTML 回放让内容更具互动性，显著提升了阅读体验。\n- 内置的敏感信息过滤功能在导出前自动隐藏机密数据，避免了信息泄露风险。\n- 借助实时监控模式，他可以在会话进行时同步预览效果，随时调整演示内容以达到最佳效果。\n\nclaude-replay 将繁琐的日志分享转变为高效、安全且互动性强的展示方式，极大提升了技术内容传播的效果。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fes617_claude-replay_70ae0f3b.gif","es617",null,"https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fes617_8ca75236.png","https:\u002F\u002Fgithub.com\u002Fes617",[78,82,86],{"name":79,"color":80,"percentage":81},"JavaScript","#f1e05a",66.8,{"name":83,"color":84,"percentage":85},"HTML","#e34c26",33.2,{"name":87,"color":88,"percentage":89},"Dockerfile","#384d54",0,607,36,"2026-04-10T22:05:13","MIT","Linux, macOS, Windows","未说明",{"notes":97,"python":95,"dependencies":98},"需要 Node.js 18+，无其他外部依赖；支持通过 Docker 运行；工具主要用于处理 AI 会话日志并生成 HTML 回放文件。",[99],"node>=18",[13],[102,103,104,105],"agents","claude-code","codex","cursor",4,"2026-03-27T02:49:30.150509","2026-04-11T18:33:11.228664",[110,115,120,125,130,135],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},4086,"如何解决 Windows 上编辑器无法加载会话的问题？","问题出在路径分隔符的硬编码上，已通过使用 `path.sep` 修复。请更新到 v0.5.3 或从源码运行以应用修复：\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay.git\ncd claude-replay\nnpm install\nnode bin\u002Fclaude-replay.mjs\n```\n如果测试无误，可以等待正式版本发布。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F8",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},4087,"如何提取 HTML 文件中的回合数据？","`extract` 命令在处理自身生成的 HTML 文件时可能失败，原因是正则表达式未匹配 `$` 开头的函数名。此问题已在 v0.4.1 中修复，请确保使用最新版本。相关提交：[b845ae](https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fcommit\u002Fb845ae4c72811788944a5422cd460f1036a11b8a)。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F4",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},4088,"如何删除回放文件中的敏感信息？","可以通过一个 Python 脚本对压缩数据进行过滤和清理，永久移除不需要的回合数据。此功能已在 v0.3.0 中实现，您可以尝试使用编辑器 UI 进行操作。详情请参考：[Issue #1](https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F1)。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F1",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},4089,"是否支持时间加速功能？","v0.6.1 添加了自动节奏模式（auto-paced mode），允许用户在播放时切换实时和自动节奏。如果需要更灵活的时间控制，可以生成两个版本（`--timing real` 和 `--timing paced`）。预览地址：[https:\u002F\u002Fes617.dev\u002Fclaude-replay\u002F](https:\u002F\u002Fes617.dev\u002Fclaude-replay\u002F)。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F11",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},4090,"如何快速跳转到下一个用户交互？","v0.6.1 添加了新的跳转控件，支持快速导航到下一个用户输入。您可以通过更新到最新版本来使用此功能。UI 控件设计为类似 ⏮️⏪▶️⏩⏭️ 的按钮，方便用户发现和使用。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F10",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},4091,"是否支持 Docker 容器化运行？","v0.5.1 添加了 Docker 支持，Dockerfile 已包含在仓库根目录中。您可以通过以下命令运行：\n```\ndocker run --rm -p 7331:7331 \\\n  -v ~\u002F.claude\u002Fprojects:\u002Froot\u002Fprojects \\\n  ghcr.io\u002Fes617\u002Fclaude-replay:latest\n```\n镜像会在每次发布时自动更新。","https:\u002F\u002Fgithub.com\u002Fes617\u002Fclaude-replay\u002Fissues\u002F3",[141,146,151,156,161,166,171,176,181,186,191,196,201,206,211],{"id":142,"version":143,"summary_zh":144,"released_at":145},202131,"v0.8.0","\n### Player\n- File activity sidebar — shows which files were touched during the session, click to jump to the relevant tool call\n- LCS-based diff rendering for Edit\u002FWrite tool calls (falls back to simple diff for large inputs)\n- Font size control (small\u002Fnormal\u002Flarge) in filter popover and more menu\n\n### Editor\n- Shift+click hint in turn list toolbar\n- Font size option in playback settings\n\n### Architecture\n- Parser refactored into modular format plugins under `src\u002Fformats\u002F` — each format is a self-contained module with `detect()` and `parse()` exports\n- New contributor guide (`CONTRIBUTING.md`) with step-by-step instructions for adding new agent format support\n- Turn structure contract tests validate all formats produce the same output shape\n\n","2026-04-06T13:47:03",{"id":147,"version":148,"summary_zh":149,"released_at":150},202132,"v0.7.0","\n### New Formats\n- Gemini CLI transcript support — auto-detected JSON format with inline thinking and tool calls\n- OpenCode CLI transcript support — auto-detected JSONL format with reasoning and tool calls across multiple providers\n\n","2026-03-29T01:35:08",{"id":152,"version":153,"summary_zh":154,"released_at":155},202133,"v0.6.2","\n### Editor\n- Shift+click range selection for turn checkboxes\n\n### Docs\n- Add `--init` to Docker commands for proper Ctrl+C handling\n\n","2026-03-27T18:30:43",{"id":157,"version":158,"summary_zh":159,"released_at":160},202134,"v0.6.1","\n### Player\n- Turn skip buttons (⏮\u002F⏭) for jumping between turns\n- Auto-paced timing toggle — viewers can switch between real and smooth paced timing in the speed menu\n- Responsive controls: title hidden below 480px, speed\u002Ffilter\u002Fchapters collapse into more menu below 600px\n- \"Open in new tab\" link in more menu for iframe embeds\n\n### Editor\n- Sessions sorted by modification time instead of UUID alphabetical order\n\n","2026-03-24T14:10:22",{"id":162,"version":163,"summary_zh":164,"released_at":165},202135,"v0.6.0","\n### New\n- `--serve` — serve the replay on a local HTTP server instead of writing to file\n- `--watch` — watch input files for changes and auto-regenerate the replay\n- `--serve --watch` — live-updating replay in the browser, auto-follows new turns\n- `--no-origin-check` — disable CSRF origin check for remote\u002Fcontainerized environments\n- `CLAUDE_REPLAY_ALLOWED_ORIGINS` env var — whitelist specific origins for the editor server\n- `#turn=Nr` hash syntax — deep link to a turn with blocks revealed (used by watch mode)\n- Static website at es617.github.io\u002Fclaude-replay with online replay generator\n\n","2026-03-20T15:31:36",{"id":167,"version":168,"summary_zh":169,"released_at":170},202136,"v0.5.3","\n### Fixes\n- Fix editor failing on Windows (path separator in home directory check)\n\n","2026-03-18T14:38:43",{"id":172,"version":173,"summary_zh":174,"released_at":175},202137,"v0.5.2","\n### New\n- `claude-replay editor \u003Cfile|session-id>` — open the editor with a session pre-loaded\n\n","2026-03-17T15:48:52",{"id":177,"version":178,"summary_zh":179,"released_at":180},202138,"v0.5.1","\n### New\n- Docker support — image published to GHCR on each release\n- `--host` flag for editor server (use `0.0.0.0` for Docker\u002Fcontainer access)\n- `extract` now outputs JSONL by default (one turn per line, bookmarks embedded)\n- Extracted JSONL can be fed back into `claude-replay` to regenerate with different options\n- `--format json` flag to preserve legacy JSON output from extract\n\n","2026-03-16T14:49:55",{"id":182,"version":183,"summary_zh":184,"released_at":185},202139,"v0.5.0","\n### Editor\n- Import HTML — re-edit previously exported replays via button or file browser\n- Export JSON — download session data (turns and bookmarks) as JSON\n- Content search — type `\u002F` in session filter to search across all session files\n- Collapsible sub-blocks — tool calls and thinking collapsed by default, text open, click headers to toggle\n- Expand All \u002F Collapse All buttons in toolbar\n- Ctrl\u002FCmd+F expands all blocks for browser search\n- Excluded turns and bookmarks persist when switching sessions\n- Autosave edits to `~\u002F.claude-replay\u002Fautosave\u002F`, restored on reopen\n- Reset confirmation modal (only when changes exist)\n- Reset indicator includes excluded turns and bookmarks, not just text edits\n- Options organized into Playback, Appearance, Content, Metadata, and Output groups\n- Browse panel shows `.html` files alongside `.jsonl`\n- Friendly error for non-replay HTML files\n\n### Player\n- Fix play from last turn resetting to beginning\n\n","2026-03-14T19:53:39",{"id":187,"version":188,"summary_zh":189,"released_at":190},202140,"v0.4.1","\n### Fixes\n- Fix `extract` command failing on minified replays\n\n","2026-03-14T06:42:37",{"id":192,"version":193,"summary_zh":194,"released_at":195},202141,"v0.4.0","\n### Web Editor\n- New web-based editor UI (`claude-replay` with no args or `claude-replay editor`)\n- Three-panel layout: session browser, turn editor, live preview\n- Browse and search Claude Code, Cursor, and Codex CLI sessions\n- Edit user prompts with live preview updates\n- Include\u002Fexclude individual turns, bulk select, add bookmarks\n- Configure theme, speed, timing, redaction, labels, and metadata\n- Export to self-contained HTML from the editor\n- File browser with home directory restriction\n- Version shown in help modal\n\n### Codex CLI Support\n- Parse Codex CLI transcripts (`~\u002F.codex\u002Fsessions\u002F`)\n- Normalize `exec_command` → Bash with command preview in header\n- Normalize `apply_patch` → Edit (diff view) or Write (code block)\n- Extract user text from IDE context boilerplate\n- Map commentary phase to thinking blocks, final_answer to text blocks\n- Session discovery in editor and CLI session ID resolver\n\n### New Features\n- Session chaining: concatenate multiple sessions into one replay (up to 20)\n- Session ID lookup: pass a session ID instead of a file path, searches `~\u002F.claude\u002Fprojects\u002F`, `~\u002F.cursor\u002Fprojects\u002F`, and `~\u002F.codex\u002Fsessions\u002F`\n- `--version` \u002F `-v` flag\n- `--port N` flag for editor server\n\n### Player\n- Unified navigation: all entry points (splash, deep link, play) show turn header first with blocks hidden\n\n### Fixes\n- Fix `--list-themes` being blocked by editor server launch\n- Fix paced timing calculation bugs\n- Fix sidebar visibility after browser resize\n- Fix Cursor session discovery for `\u003Cuuid>.jsonl` filenames\n\n\n","2026-03-13T14:47:09",{"id":197,"version":198,"summary_zh":199,"released_at":200},202142,"v0.3.0","\n### New commands\n- `extract` subcommand: recover embedded turn\u002Fbookmark data from a generated replay HTML\n\n### New flags\n- `--exclude-turns N,N,...`: exclude specific turns by index (combines with `--turns`)\n- `--redact \"text\"` \u002F `--redact \"text=repl\"`: custom string replacement at generation time\n- `--no-auto-redact`: disable built-in secret pattern redaction (renamed from `--no-redact`)\n- `--description TEXT`: customize meta description for link previews\n- `--og-image URL`: customize OG image for link previews\n- `--open`: launch replay in default browser after generation\n\n### Player\n- Keyboard shortcuts: `Shift+→\u002FL` and `Shift+←\u002FH` to jump between turns\n- Keyboard shortcuts: `T` \u002F `Shift+T` to jump between thinking\u002Ftool blocks\n- Active block indicator (left border highlight)\n- OG\u002FTwitter meta tags with default image for link previews\n\n### Other\n- Default OG image hosted on GitHub Pages\n- Fix `npm test` to avoid Playwright\u002FNode test runner conflict\n\n","2026-03-11T14:56:19",{"id":202,"version":203,"summary_zh":204,"released_at":205},202143,"v0.2.0","### Player\r\n  - Diff view for Edit tool calls: removed lines in red, added lines in green (unified diff style)\r\n  - Code block view for Write tool calls instead of raw JSON\r\n  - Smarter tool header previews: file path for Edit\u002FWrite\u002FRead, pattern for Grep\u002FGlob, command for Bash\r\n  - Red indicator dot on failed tool calls (individual and grouped)\r\n  - Red result text for error messages\r\n  - `\u003Ctool_use_error>` XML tags stripped from error results for clean display\r\n\r\n  ### Parser\r\n  - Cursor agent transcript support (auto-detected, paced timing)\r\n  - Pass `is_error` flag from tool results through to renderer\r\n  - Strip `\u003Ctool_use_error>` wrapper tags from tool result text\r\n  - Strip `\u003Cide_opened_file>` tags from VS Code extension transcripts\r\n\r\n  ### Other\r\n  - Raise tool grouping threshold from 3 to 5 consecutive calls for better per-tool visibility\r\n  - Add Privacy section to README\r\n  - Add e2e tests for diff view, Write view, error indicators, and tag stripping (32 total)","2026-03-08T02:56:19",{"id":207,"version":208,"summary_zh":209,"released_at":210},202144,"v0.1.2","- Fix: expanding a block while paused then stepping forward now reveals the next block instead of\r\n  jumping to the next turn\r\n- Fix: expanded blocks are now collapsed when rewinding\r\n- Fix: `#turn=0` deep link shows splash screen instead of blank page\r\n- Add Playwright e2e integration tests (25 tests covering playback, stepping, expand\u002Fcollapse, keyboard shortcuts, navbar, progress bar, speed control, chapters)","2026-03-07T20:29:32",{"id":212,"version":213,"summary_zh":214,"released_at":215},202145,"v0.1.1","- Fix README screenshot layout for npm","2026-03-06T02:12:59"]