0.8.0 (2026-08-28)
Added
- bench: P3.7 walled scorecard with honest per-suite pass rates (#111) (b13ca30)
- bench: TTY Rich scorecard with per-case stderr ticks (#113) (7517c4b)
- cli: doctor progress ticks (#103) (c28daab)
- cli: P4.6 phase ticks for transcribe/grab/get (#109) (adabfc8)
- cli: P4.6 search progress ticks (#110) (3c36dca)
- cli: progress ticks on read + mcp serve banner (#100) (5ab2c81)
- install: write user-scope reach rule for Claude and Cursor (#86) (76ce119)
- mcp: MCPServer on mcp 2.x (P2.3) (#98) (afbe15a)
- mcp: tell agents to retry walled hits via read_url (#88) (1c03d0e)
Fixed
- bench: ladder ticks during a long case (#114) (e80c0c3)
- benchmark: thin content is not a pass; label smoke suite (#79) (9dc6af4)
- channels: drop routing theater; doctor is a probe (#85) (e5e32b1)
- config: drop dead knobs; load .env without override (#81) (3b4f333)
- config: environment variables beat YAML (#82) (02463b9)
- deps: pin curl_cffi, trafilatura, and ddgs (#83) (c365dbc)
- doctor: honest stealth probe; stop skill install side effect (#74) (102a94c)
- mcp: SSRF guards on MCP URL tools (#105) (545ea35)
- release: fail if RELEASE_PLEASE_TOKEN is missing (#84) (0fdeed0)
- skill: keep SKILL.md description under 1024 chars (#89) (403ac8d)
- unlocker: domain memory TTL and unpin on failure (#102) (f565ee0)
- unlocker: drop hardcoded Chrome 126 UA (#104) (08515f0)
- unlocker: fail loud on thin and challenge pages (#93) (89fbb5e)
- unlocker: login shells are not a pass (#116) (fcac810)
- unlocker: P3.5 Jina opt-out (default on) (#107) (2013a4b)
- unlocker: Playwright off asyncio for MCP (P3.10) (#96) (2809ac7)
What's Changed
- test: make must-not-be-called tripwires able to fail by @capad-xyz in #73
- fix(doctor): honest stealth probe; stop skill install side effect by @capad-xyz in #74
- fix(benchmark): thin content is not a pass; label smoke suite by @capad-xyz in #79
- docs: add frozen honesty plan by @capad-xyz in #80
- fix(config): drop dead knobs; load .env without override by @capad-xyz in #81
- fix(config): environment variables beat YAML by @capad-xyz in #82
- fix(deps): pin curl_cffi, trafilatura, and ddgs by @capad-xyz in #83
- fix(release): fail if RELEASE_PLEASE_TOKEN is missing by @capad-xyz in #84
- fix(channels): drop routing theater; doctor is a probe by @capad-xyz in #85
- feat(install): write user-scope reach rule for Claude and Cursor by @capad-xyz in #86
- ci: slim PR checks; full matrix on main by @capad-xyz in #87
- feat(mcp): tell agents to retry walled hits via read_url by @capad-xyz in #88
- fix(skill): keep SKILL.md description under 1024 chars by @capad-xyz in #89
- docs(plan): tick P1.1 P1.2 P1.2b; note PyPI 0.7.3 by @capad-xyz in #90
- docs(plan): pipx keep / uvx try by @capad-xyz in #91
- fix(unlocker): fail loud on thin and challenge pages by @capad-xyz in #93
- refactor(mcp): FastMCP on mcp 1.x (P2.1) by @capad-xyz in #94
- docs(plan): F9 localhost HTTP later by @capad-xyz in #92
- docs(plan): eval + P3.10 + X2/X3 status by @capad-xyz in #95
- fix(unlocker): Playwright off asyncio for MCP (P3.10) by @capad-xyz in #96
- ci: mcp 2.x compat job (P2.2) by @capad-xyz in #97
- feat(mcp): MCPServer on mcp 2.x (P2.3) by @capad-xyz in #98
- feat(cli): progress ticks on read + mcp serve banner by @capad-xyz in #100
- docs(plan): P4.6 CLI UX feedback (doctor/search/transcribe/grab) by @capad-xyz in #101
- fix(unlocker): domain memory TTL and unpin on failure by @capad-xyz in #102
- fix(unlocker): drop hardcoded Chrome 126 UA by @capad-xyz in #104
- feat(cli): doctor progress ticks by @capad-xyz in #103
- fix(mcp): SSRF guards on MCP URL tools by @capad-xyz in #105
- docs(plan): park P3.6b redirect/DNS-rebinding SSRF by @capad-xyz in #106
- fix(unlocker): P3.5 Jina opt-out (default on) by @capad-xyz in #107
- docs(plan): mark X3 posted; refresh P1.3 / X2 notes by @capad-xyz in #108
- feat(p4.6): search progress ticks for CLI UX by @capad-xyz in #110
- feat(cli): P4.6 phase ticks for transcribe/grab/get by @capad-xyz in #109
- feat(bench): P3.7 walled scorecard with honest per-suite pass rates by @capad-xyz in #111
- docs(plan): P4.6 applies to new long runners by @capad-xyz in #112
- feat(bench): TTY Rich scorecard with per-case stderr ticks by @capad-xyz in #113
- fix(bench): ladder ticks during a long case by @capad-xyz in #114
- docs: F8 pipx keep / uvx try by @capad-xyz in #115
- fix(unlocker): login shells are not a pass by @capad-xyz in #116
- docs(plan): park P3.11 stealth page.content nav race by @capad-xyz in #117
- docs(plan): park F11 Windows MCP shim vs editable install by @capad-xyz in #118
- docs(plan): skip + worth it gets an id and a revisit by @capad-xyz in #119
- docs(plan): tick X2 and P1.3; PyPI 0.8 before article by @capad-xyz in #120
- docs(plan): park F5b known-host ring and F12 wall playbook by @capad-xyz in #121
- chore(main): release 0.8.0 by @github-actions[bot] in #78
Full Changelog: v0.7.2...v0.8.0