.gitignore
.pre-commit-config.yaml
.python-version
AGENTS.md
CHANGELOG.md
LICENSE
README.md
README_zh.md
pyproject.toml
uv.lock
.agents/skills/codex-e2e-test/SKILL.md
.agents/skills/demo-video/SKILL.md
.agents/skills/e2e-test/SKILL.md
.agents/skills/js-in-html-testing/SKILL.md
.agents/skills/legibility-check/SKILL.md
.agents/skills/playwright-screen-recording/SKILL.md
.agents/skills/pr-preflight/SKILL.md
.agents/skills/push-release/SKILL.md
.agents/skills/real-e2e-test/SKILL.md
.agents/skills/screenshot-validation/SKILL.md
.agents/skills/translate-i18n/SKILL.md
.claude/CLAUDE.md
.claude/skills
.githooks/pre-commit
.github/PULL_REQUEST_TEMPLATE/chore.md
.github/PULL_REQUEST_TEMPLATE/docs.md
.github/PULL_REQUEST_TEMPLATE/feature.md
.github/PULL_REQUEST_TEMPLATE/fix.md
.github/PULL_REQUEST_TEMPLATE/plan.md
.github/PULL_REQUEST_TEMPLATE/refactor.md
.github/PULL_REQUEST_TEMPLATE/test.md
.github/workflows/auto-release.yml
.github/workflows/ci.yml
.github/workflows/legibility.yml
.github/workflows/publish.yml
claude_tap/__init__.py
claude_tap/__main__.py
claude_tap/certs.py
claude_tap/cli.py
claude_tap/export.py
claude_tap/forward_proxy.py
claude_tap/live.py
claude_tap/proxy.py
claude_tap/py.typed
claude_tap/sse.py
claude_tap/trace.py
claude_tap/viewer.html
claude_tap/viewer.py
claude_tap.egg-info/PKG-INFO
claude_tap.egg-info/SOURCES.txt
claude_tap.egg-info/dependency_links.txt
claude_tap.egg-info/entry_points.txt
claude_tap.egg-info/requires.txt
claude_tap.egg-info/top_level.txt
docs/architecture.png
docs/architecture.svg
docs/billing-header-diff.png
docs/demo.gif
docs/demo.mp4
docs/demo_zh.gif
docs/demo_zh.mp4
docs/diff-modal.png
docs/gen_architecture.py
docs/support-matrix.md
docs/viewer-dark.png
docs/viewer-light.png
docs/viewer-zh.png
docs/architecture/manifest.yaml
docs/error-experience/entries/2026-02-25-pr1-stale-base.md
docs/error-experience/entries/2026-02-26-codex-sandbox-git-blocked.md
docs/error-experience/entries/2026-02-26-codex-sandbox-tmux-blocked.md
docs/error-experience/entries/2026-02-26-hardcoded-version-string.md
docs/error-experience/entries/2026-02-26-python313-ssl-aki-required.md
docs/error-experience/entries/2026-02-26-rg-not-portable.md
docs/error-experience/entries/2026-02-26-sigttou-suspend-on-exit.md
docs/error-experience/entries/2026-02-27-pr-screenshot-cache-stale.md
docs/error-experience/entries/2026-02-28-codex-reverse-websocket-capture-gap.md
docs/error-experience/entries/2026-03-03-codex-ws-timeout-fallback-evidence.md
docs/error-experience/entries/2026-03-03-pr-screenshot-quality-failures.md
docs/error-experience/entries/2026-03-03-pr22-websocket-screenshot-quality-regression.md
docs/error-experience/entries/2026-03-03-ws-proxy-debugging-failure.md
docs/error-experience/entries/2026-03-10-codex-strip-prefix-url-mismatch.md
docs/evidence/PR44_VERIFY_REPORT.md
docs/evidence/WS_VERIFY_REPORT.md
docs/evidence/pr22-websocket-last-turn-wide.png
docs/evidence/pr22-websocket-viewer-wide.png
docs/evidence/pr26-test-evidence.png
docs/evidence/bedrock-default-filter/sidebar-default-main-turns.png
docs/evidence/bedrock-eventstream-viewer/bedrock-response-viewer.png
docs/evidence/issue87/codex-real-e2e-viewer.png
docs/evidence/issue87/codex-sdk-real-e2e-viewer.png
docs/evidence/issue87/codex-sdk-real-ws-continuation-warning.png
docs/evidence/issue87/codex-sdk-real-ws-message-history.png
docs/evidence/pr22/trace-viewer-summary.png
docs/evidence/pr22/ws-upgrade-log.png
docs/evidence/pr44/pr44-turn2-messages.png
docs/evidence/pr44/pr44-turn2-response.png
docs/evidence/pr63/pr63-collapsed.png
docs/evidence/pr63/pr63-expanded.png
docs/evidence/pr73/README.md
docs/evidence/pr73/pr73-cxx-forward-websocket-fixed-output.png
docs/evidence/pr73/pr73-cxx-forward-websocket.png
docs/evidence/pr73/pr73-direct-forward-websocket-fixed-output.png
docs/evidence/pr73/pr73-direct-forward-websocket.png
docs/evidence/pr74/README.md
docs/evidence/pr74/pr74-cxx-first-message-no-reconnect.png
docs/evidence/pr79/export-html-viewer.png
docs/evidence/pr99/viewer-real-codex-tool-name-fallback.png
docs/evidence/pr99/viewer-tool-name-fallback.png
docs/good-experience/entries/2026-02-25-mock-e2e-pattern.md
docs/good-experience/entries/2026-02-25-proxy-e2e-ci-hardening.md
docs/good-experience/entries/2026-02-26-tmux-e2e-success.md
docs/good-experience/entries/2026-02-27-viewer-sticky-validation-flow.md
docs/guides/engineering-practices.md
docs/guides/new-client-integration-playbook.md
docs/guides/viewer-ux-rationale.md
docs/images/viewer-brand-refresh-real-e2e-2turn-v1.png
docs/images/viewer-brand-refresh-real-e2e-tmux-v1.png
docs/images/viewer-brand-refresh-real-v1.png
docs/images/viewer-brand-refresh-v1.png
docs/images/viewer-sticky-actionbar-scrolled.png
docs/images/viewer-sticky-actionbar-top.png
docs/images/viewer-sticky-after-v2.png
docs/images/viewer-sticky-after.png
docs/images/viewer-sticky-before-v2.png
docs/images/viewer-sticky-before.png
docs/plans/2026-02-27-codex-support-handoff.md
docs/plans/2026-02-27-codex-support-plan.md
docs/plans/2026-02-27-viewer-sticky-e2e-workflow.md
docs/plans/2026-02-28-codex-websocket-support.md
docs/recordings/01_error_banner_and_sidebar.png
docs/recordings/02_sidebar_error_styling.png
docs/recordings/03_copy_button_fallback_success.png
docs/recordings/codex-demo.cast
docs/recordings/codex-demo.gif
docs/recordings/diff-scroll-bottom.png
docs/recordings/diff-scroll-top.png
docs/recordings/record_viewer.py
docs/recordings/search-01-open.png
docs/recordings/search-02-highlight.png
docs/recordings/search-03-navigate.png
docs/recordings/viewer-01-turn1-overview.png
docs/recordings/viewer-02-tools-sse-expanded.png
docs/recordings/viewer-03-request-json-scrolled.png
docs/recordings/viewer-04-turn5.png
docs/recordings/viewer-05-diff.png
docs/recordings/viewer-06-curl.png
docs/recordings/viewer-07-turn10.png
docs/recordings/viewer-08-dark-mode.png
docs/recordings/viewer-09-sidebar-scrolled.png
docs/recordings/viewer-10-last-turn.png
docs/recordings/viewer-11-final-wide.png
docs/recordings/viewer-codex-01-overview.png
docs/recordings/viewer-codex-02-messages.png
docs/recordings/viewer-codex-02-system-prompt.png
docs/recordings/viewer-codex-03-messages.png
docs/recordings/viewer-codex-03-scrolled.png
docs/recordings/viewer-codex-04-response.png
docs/recordings/viewer-codex-04-turn3.png
docs/recordings/viewer-codex-05-diff.png
docs/recordings/viewer-codex-05-tokens.png
docs/recordings/viewer-codex-06-diff.png
docs/recordings/viewer-codex-08-tools.png
docs/recordings/viewer-demo.mp4
docs/standards/README.md
docs/standards/coding-and-runtime.md
docs/standards/debugging-standards.md
docs/standards/e2e-and-evidence.md
docs/standards/hard-rules.md
docs/standards/screenshot-standards.md
docs/standards/validation-and-gates.md
docs/standards/workflow-and-review.md
scripts/README.md
scripts/check_changelog.py
scripts/check_legibility.py
scripts/check_pr.sh
scripts/check_screenshots.py
scripts/check_screenshots.sh
scripts/run_real_e2e.sh
scripts/run_real_e2e_tmux.sh
scripts/translate_i18n.py
scripts/update_changelog.py
scripts/verify_screenshots.py
tests/__init__.py
tests/conftest.py
tests/test_bedrock_viewer.py
tests/test_check_changelog.py
tests/test_check_legibility.py
tests/test_check_pr_script.py
tests/test_check_screenshots.py
tests/test_codex_launch.py
tests/test_diff_matching.py
tests/test_e2e.py
tests/test_export.py
tests/test_nav_browser.py
tests/test_path_allowlist.py
tests/test_perf_viewer.py
tests/test_responses_browser.py
tests/test_responses_support.py
tests/test_search_browser.py
tests/test_translate_i18n.py
tests/test_update_changelog.py
tests/test_windows_compat.py
tests/test_ws_proxy.py
tests/e2e/README.md
tests/e2e/__init__.py
tests/e2e/conftest.py
tests/e2e/test_real_proxy.py
tests/fixtures/codex_ws_multi_response_trace.jsonl
tests/fixtures/openai_responses_trace.jsonl