4.9.0 (2026-05-18)
Features
- catalog: add OpenRouteService under new maps category (#1513) (43c90ba)
- ci: surface unresolved review threads as a status check (786848e)
- ci: surface unresolved review threads as a status check (21ae8a5)
- cli: add --auth-preference flag for catalog-driven scheme selection (#865) (34ca814)
- cli: catalog auth_env_vars declares canonical credential env vars (#1508) (fe4a5ec)
- cli: emit .printing-press-patches.json on every generate (#1590) (c3e1b87)
- cli: expose PRINTING_PRESS_DOGFOOD env signal for long-running commands (#1493) (96fca08)
- skills: add /printing-press-amend skill — dogfood + direct-input modes (#1490) (c31632b)
Bug Fixes
- ci: address Greptile review on conversation-resolution check (f55f57a)
- ci: cancel-in-progress=false so cancelled check_runs don't pile up (906928d)
- ci: cancel-in-progress=false so cancelled check_runs don't pile up (80ba507)
- ci: close jq if-then-else with end so >10-thread path doesn't crash (f7365c2)
- ci: conversation-resolution check race + duplicate check_run (264617a)
- ci: conversation-resolution check race + duplicate check_run (162d9a3)
- ci: require all review threads resolved before queue + merge (a8fa80a)
- ci: scope settle delay to synchronize, strip head_sha from PATCH (5b8a814)
- ci: use job exit-code instead of POST/PATCH for check_run state (9433241)
- cli: always emit boolean body fields, no zero-guard (#1494) (9d3050b)
- cli: apply Bearer prefix in composed and cookie AuthHeader paths (#1500) (ca4898a)
- cli: cap body-flag recursion depth to prevent compiler OOM (#1522) (82ad787)
- cli: detect integer page paginator and advance numerically in sync (#1519) (0c3c8bc)
- cli: detect partial-failure response shape in :mutate handlers, add --allow-partial-failure flag (#1360) (875d64e)
- cli: drive browser-sniff http_transport from HAR HTTP-version distribution (#1540) (833213f)
- cli: drop // PATCH marker instruction from generated AGENTS.md (caa6880)
- cli: drop MCP code-orch handler pre-marshal that base64-encoded mutating bodies (#1521) (ff56237)
- cli: exempt vendor OpenAPI/Swagger source under .manuscripts from PII scan (#1496) (dc0651a)
- cli: filter auth login --chrome cookies by spec auth.cookies allowlist (#1518) (9541740)
- cli: match both singular and plural required-flag cobra outputs (#1413) (f5ea270)
- cli: move extra_commands SKILL.md block to its own top-level section (#1524) (c10d0b5)
- cli: preserve body/content payload on single-object compact path (#1509) (c7e1b82)
- cli: refresh auth on redirects via CheckRedirect (#1497) (f3f7043)
- cli: route promoted-command file stem through safeResourceFileStem (#1489) (#1506) (bf7f346)
- cli: scope-aware sync --param dispatch with --global-param fallback (#1529) (4e304df)
- cli: synthesize undeclared path placeholders in OpenAPI parser (#1510) (bf9014d)
- cli: validate-narrative splits piped recipes and strips redirects (#1517) (62838d0)
- cli: writeThroughCache caches single-object responses keyed by non-id PKs (#1531) (c96ac5d)
- scorer: resolve binary at build/stage/bin/ before cliDir (#1150) (#1412) (2abbfec)
- skills: add NULL-safe SQL scan guidance to Phase 3 store-query starter (bca9866)
- skills: add NULL-safe SQL scan guidance to Phase 3 store-query starter (7396d66)
- skills: drop cli-skills mirror regen from publish flow (#1502) (f64e991)
- skills: require codex completion marker before treating delegation as success (#1523) (9963794)
- skills: retro skill scrubs secrets and PII before posting issue bodies (#1595) (fef027f)
- skills: split SQL example out of go-fenced block in NULL-safe scans guidance (63f745b)
- skills: surface novel-feature hand-code scope at Phase Gate 1.5 (#1501) (793d5b2)