All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [codex] Fix viewer search for duplicate request ids (#342)
- Fix Gemini SSE response reconstruction (#339)
- fix(sse): reconstruct Responses output from streaming item events (#343)
- feat: add MiMo Code client support (#338)
- fix upstream target diagnostics
- fix: do not proxy loopback upstream targets
- feat: add back button on session detail page
- fix: mock codex provider detection in reverse-inject test
- feat(viewer): add cache hit rate display in header stats bar
- feat: add Codex App transcript listener (#297)
- fix: decode double-serialized JSON request bodies
- docs: add Phistory ecosystem showcase (#321)
- fix: prevent Windows pip background update corruption (#319)
- feat: add Kimi Code tap client
- Add bulk session deletion and lazy dashboard paging (#298)
- perf: compact repeated message content in traces
- fix: render direct Gemini native traces (#312)
- fix: keep Gemini native traces visible
- feat: clarify shared dashboard lifecycle controls (#293)
- fix: guard against None values in usage token fields causing dashboard 500 (#303)
- Document local proxy upstream support
- Fix Codex display turn numbering (#266)
- Add capture-only prompt snapshot export
- Add dashboard session delete action (#236)
- feat: add AWS Bedrock support for Claude Code tracing
- refactor: split viewer assets (#271)
- docs: add agent trace viewer seo pages
- Fix dashboard first prompt extraction (#270)
- Add dashboard HTML export (#265)
- perf: compact repeated trace payload fields (#250)
- fix: hide Windows background subprocess consoles (#260)
- feat: add readable tool call parameters (#261)
- fix: support VSCode Claude wrapper browser controls (#244)
- Fix viewer session round grouping (#235)
- Refactor CLI module boundaries (#247)
- fix: count OpenAI usage when aliases are zero
- Count OpenAI-compatible
prompt_tokensandcompletion_tokenswhen provider aliases reportinput_tokensandoutput_tokensas zero.
- perf: guard trace compaction and skip package noise (#227)
- Skip persisted trace records for package registry metadata and archive downloads in forward proxy mode while still forwarding responses to clients.
- fix: render chat completion choices in viewer (#251)
- Fix Codex Responses viewer continuity (#245)
- Fix viewer global search navigation (#239)
- feat(viewer): support iframe embed query options (#246)
- feat!: omit raw stream events by default (#231)
- Breaking change: raw SSE and WebSocket stream event arrays are no longer persisted by default. Pass
--tap-store-stream-eventswhen capturing a trace to store those raw event arrays in trace storage and viewer/export output; traces captured without the flag cannot recover the omitted raw events later.
- fix(codex): capture custom provider base URLs (#228)
- Capture Codex custom OpenAI-compatible providers by overriding the selected provider base URL, not only
openai_base_url.
- feat: add sqlite trace history index (#210)
- ci: improve workflow caching and merge latency
- perf(ws): release websocket trace buffers without dropping trailing events
- feat: add CodeBuddy CLI client support (#190)
- fix(viewer): show message content block boundaries
- docs: document VS Code wrapper setup (#220)
- docs: add Codex review guidelines (#218)
- ui(viewer): 优化滚动条视觉效果和操作体验 (#206)
- fix: Make backports-zstd conditional for Python <3.14
- fix: unblock protected auto release (#208)
- Add Antigravity CLI (agy) client support (#197).
- Add the session dashboard for browsing saved trace sessions (#200).
- Add
--tap-no-liveto disable the live viewer server and restore the pre-v0.1.75 default behavior for scripts, CI, remote shells, or other non-interactive runs.
- Breaking change: the live viewer now starts by default when
claude-tapruns a client, so users can watch trace records while the agent is still running (#192). --tap-no-opennow prevents both the live viewer and the generated HTML viewer from auto-opening in a browser (#192).- Add Gemini LLM paths to the primary viewer path filter (#196).
- Write completed WebSocket traces immediately (#195).
- Add trace log display support (#189).
- Enforce the PR policy gate in CI (#199).
- refactor: move viewer i18n strings to JSON source (#186)
- fix viewer empty trace evidence quality (#184)
- Add Qoder CLI support (#179)
- docs: expand messages in light viewer screenshot (#181)
- docs: refresh README and demo assets (#178)
- Detect Claude custom upstream target (#118)
- docs: show Anthropic Python SDK in proxy-only mode
- feat(viewer): add collapsible JSON tree view
- feat(cli): add update subcommand (#114)
- feat: support Pi CLI capture (#172)
- test(opencode): add real trace viewer evidence (#170)
- Add OpenCode real trace viewer evidence, OpenAI OAuth Responses evidence, and dedicated viewer contracts for multi-turn tool-call traces.
- test(viewer): add cross-client quality contracts (#168)
- Add cross-client HTML viewer contract tests for semantic sections, runtime errors, visual layout states, and V8 coverage of core inline JavaScript functions.
- Add backend/frontend project, incremental, and viewer CSS selector coverage targets enforced by CI.
- feat(cli): add Gemini CLI client (#166)
- Add Gemini CLI client support with forward proxy default.
- Render Gemini CLI system prompts, messages, tool calls, tool results, SSE output, and token usage in the viewer.
- refactor(cli): support multiple reverse base URL envs (#160)
- add --tap-allow-path argument to support custom api prefixes (#122)
- feat(cli): add hermes-agent client (forward proxy by default) (#97)
- Fix dotted WebSocket turn ordering (#130)
- fix(viewer): improve diff targets and tool details (#148)
- fix(viewer): interleave Codex tool results (#151)
- fix(viewer): generalize Responses tool item normalization (#145)
- fix(viewer): show Codex cached tokens (#144)
- docs: strengthen Kimi evidence with real multiturn trace (#141)
- feat: add Kimi CLI client support (#139)
- Harden viewer metadata for Codex string bodies (#137)
- fix(viewer): clarify token summary label (#133)
- fix(viewer): count Responses function calls (#131)
- fix(proxy): support DeepSeek Claude Code metadata (#121)
- chore: split internal docs from public docs (#125)
- docs: collapse detailed README sections (#127)
- feat(cli): support cursor cli tracing (#119)
- feat(cli): add opencode client support
- fix(ci): use release bot token for auto release
- feat(cli): add standalone dashboard command
- fix(viewer): label Codex responses input as request context
- fix(cli): inject settings for Claude reverse proxy
- docs: fix README accuracy (#107)
- Add missing skill names to local skill metadata (#93)
- Make auto-release open and auto-merge a changelog pull request when the main branch is protected, then publish after that release PR is merged.
- Package versions are now derived from git tags via
setuptools-scm, so local builds and PyPI releases use the same version source. - PyPI publishing no longer mutates
pyproject.tomlduring the release job. - Auto-release can insert missing changelog sections before tagging, and publish still verifies that the exact tag being published is documented.
- Surface Codex forward WebSocket responses in traces and viewer output.
- Warn on stateful Codex Responses continuations.
- Unbreak
claude-tapon Windows.
- Handle null trace bodies during export.
- Add HTML viewer output to the
exportcommand.
- Hide auxiliary Bedrock setup calls in the viewer.
- Decode Bedrock EventStream traces for viewer rendering.
- Auto-detect Codex ChatGPT targets and force HTTP transport when needed.
- Honor environment proxy settings for Codex forward WebSocket upstreams.
- Relay WebSocket traffic in forward proxy mode.
- Improve Codex proxy compatibility and WebSocket trace reconstruction.
- Add focused pull request templates.
- Trigger publishing via
workflow_dispatchfrom auto-release. - Move auto-release publishing out of inline tag-trigger assumptions.
- Auto-release on every merge to
main.
- Collapse path filter chips to prevent viewer header overflow.
- Compact viewer layout, merge token stats into the header, and fix the date picker.
- Persist section collapse state across turns.
- Add cross-midnight trace cleanup handling.
- Refactor live viewer SSE handling to deduplicate records and simplify naming.
- Date-based trace storage with a date picker in the live viewer.
- Support OpenAI Responses API traces in the viewer and SSE parser.
- Migrate skills to directory-based
SKILL.mdformat. - Improve CLI
--helpwith argument groups and examples.
- Add a proxy path allowlist to block scanner and crawler requests.
- Correct Codex upstream URL construction for OAuth and API-key modes.
- Add Codex client support for proxy tracing.
- Add WebSocket proxy support for Codex CLI.
- Add automated PR merge-readiness checks.
- Add OpenRouter-backed i18n translation helper.
- Add MVP agent legibility checks and standards index.
- Add enhanced viewer search and large-trace performance improvements.
- Translate internal markdown docs to zh-CN.
- Add screenshot quality standards and automated screenshot checks.
- Make PyPI publishing more robust with GitHub Release and PyPI verification.
- Make the diff overlay scrollable for long diffs.
- Ignore
SIGTTOUbefore reclaiming the foreground process group to prevent suspend on exit.
- Read the package version from package metadata instead of a hardcoded string.
- Graceful
Ctrl+C/Ctrl+Zshutdown. - Open the generated HTML viewer by default.
- Bump
.python-versionto 3.13 to match the CI matrix ceiling.
- Document the Python 3.13 SSL AKI requirement in error-experience notes.
- Forward proxy mode with HTTP
CONNECTtunneling and TLS termination. - Real E2E scripts with tmux support for interactive and non-interactive flows.
- Engineering practice and compounding-engineering documentation for agent workflows.
- CI and test hardening for real proxy/E2E scenarios and Python 3.13 certificate validation.
- Replace the
AGENTS.mdsymlink with a regular file. - Real E2E fixtures and OAuth preflight handling were stabilized.
- Add SKI/AKI extensions to generated certificates for Python 3.13 SSL compatibility.
- Sidebar task-type coloring and live-mode detail-scroll reset fix.
- Viewer UX improvements: non-blocking browser open, sidebar timestamps, and scroll preservation.
- Task fingerprinting now uses the full system prompt instead of only the first line.
- Import order cleanup to satisfy ruff lint rules.
- WEIFENG2333 (#3, #4, #5, #6)
- Packaging and release progression toward the 0.1.12 viewer/community update series.
- Packaging and release progression toward the 0.1.12 viewer/community update series.
- Removed 1MB request body size limit in proxy mode.
--tap-hostflag to configure bind address.
- Diff navigation button boundary logic in the viewer.
- aiohttp server noise in terminal output.
- Natural-language message rendering compatibility by using
div.pre-text.
- CI: auto-publish to PyPI on push to
main. - Repository policy documentation for local pre-commit checks.
- Mobile responsive viewer improvements.
- Mobile previous/next request navigation.
- Diff fallback warning and manual diff-target selector.
- Smart update check and trace cleanup improvements.
- Keyboard/mobile navigation now follows visual sidebar order.
- Diff matching robustness for subagent-thread detection:
- Strip
cache_controlfrom message hash inputs. - Increase message-hash truncation length for better separation.
- Strip
claude-tap exportcommand to export trace JSONL to Markdown or JSON format.--tap-liveflag for SSE-based real-time trace viewer.--tap-live-portflag to choose the live-viewer port.--tap-openflag to auto-open HTML viewer after exit.- Token summary bar with input/output/cache_read/cache_write breakdown.
py.typedmarker file for PEP 561 support.- Coverage configuration in
pyproject.toml. - This
CHANGELOG.mdfile.
- Refactored monolithic
__init__.pyinto focused modules (sse.py,trace.py,live.py,proxy.py,viewer.py,cli.py). - Migrated tests to pytest with a structured
tests/layout. - Entry point changed to
claude_tap.cli:main_entry(public API unchanged).
anthropicdependency (SSE reassembly uses built-in implementation).- Cost estimation feature (pricing data maintenance overhead).
--tap-livereal-time viewer with SSE updates.
- Viewer UI improvements for image rendering, file path display, and live-mode behavior.
-v/--versionCLI flag.- PyPI badges in README.
- Pre-commit hooks configuration.
- pytest-based test infrastructure.
- Applied ruff formatting to all Python files.
- Structural diff view in HTML viewer.
- Side-by-side comparison for consecutive requests.
- Turn ordering fix.
- Stdout buffering issue with uv tool.
- Transparent argument passthrough to claude.
- Initial release.
- Local reverse proxy for Claude Code API requests.
- JSONL trace recording.
- Self-contained HTML viewer with:
- Light/dark mode
- i18n support (8 languages)
- Token usage display
- SSE event inspection
- System prompt viewing
- cURL export