-
chore: release main (#2339)
发布于
2026-07-29 22:54:23 +00:00 🤖 I have created a release beep boop
0.33.0
0.33.0
(2026-07-29)Features
- lossless: factor shared directory prefix in the grep search fold
(#2547)
(7dc9a97) - metrics: record per-extension token savings
(#2371)
(02eb90f) - opencode: ship the transport plugin in pip installs
(#2601)
(f54f04f) - opencode: support Copilot subscription backend for headroom models
(#2441)
(#2445)
(9089e7f) - proxy/hooks: run fold-only (stream-safe) turn hooks on streaming
OpenAI chat
(#2549)
(a6d4921) - proxy/savings: aggregate tool-schema savings into Metrics + all
reporting sinks
(#2546)
(9f1ffef) - proxy: label GitHub Copilot traffic as "copilot" in the outcome…
(#2377)
(d7a8cdb) - proxy: make /v1/compress usable as a gateway/Kong sidecar
(#2458)
(1329ed7) - proxy: model-aware cold-prefix hook — reasoning compaction
(Kimi/GLM) + cold recompaction (CC)
(#2555)
(cb8f4b6) - proxy: route selected external compressors through the content
router
(#2388)
(e3c7964) - proxy: select built-in compressors via --compressor + registry
inventory
(#2373)
(56c7d4a) - rust: add structured prose offload plumbing
(#334)
(#2378)
(9e07785) - rust: port CodeCompressor AST compressor to Rust (parity-only)
(#1154)
(e530de5) - rust: port Kompress ML prose compressor to Rust (parity-only)
(#1153)
(83e27e5) - telemetry: record provider cache read/write/uncached tokens per
request
(#2450)
(bec4cce) - transforms: add compressed signal + dispatch code_aware/html/diff
via registry
(#2400)
(7ebda67) - transforms: add pluggable compressor registry +
headroom.compressor entry point
(#2370)
(a02073e) - transforms: dispatch kompress/text via the compressor registry +
forward question
(#2411)
(446ec26) - transforms: dispatch smart_crusher via the compressor registry
(defer kompress/text ML boundary)
(#2404)
(7c7bf43) - transforms: make built-in compressors real Compressor
implementations (adapters)
(#2391)
(981616c) - wrap: boost Serena — symbol-first guidance, wrap-time pre-index,
repo-language scoping
(#2425)
(fd0e1a8) - wrap: default code-memory to Serena (dashboard browser off) behind
unified --code-memory
(#2413)
(6e4425a) - wrap: reduce-at-source — SAFE quiet-CLI env defaults for the
launched agent
(#2548)
(c990cfb)
Bug Fixes
- backends/litellm: guard None completion_tokens in usage mapping
(#2322)
(44a174f) - backends: don't crash the OpenAI->Anthropic converter on empty
choices
(#2484)
(43a7b57) - cache: preserve cache_control ttl when re-anchoring a breakpoint
(#2651)
(e0d2cd0) - cache: preserve client cache_control ttl when consolidating
breakpoints
(#2382)
(8906d3a) - ccr: guard empty/malformed OpenAI choices in
_extract_assistant_message
(#2389)
(89319fb) - ccr: sliding idle-window TTL with max-lifetime ceiling in the Rust
core backends
(#2604)
(#2631)
(e825588) - ci: align Ruff tooling versions
(#2406)
(2bb14d1) - cli: warn when Headroom proxy URL leaks into the shell after
unwrap claude
(#2238)
(#2571)
(904bc67) - codex: detect keyring-backed ChatGPT auth
(#2478)
(46293f4) - compression: report source-line span in CCR compression marker
(#2597)
(18e1c3c) - copilot: derive GHE credential host from API URL
(#800)
(#2511)
(4a8157f) - copilot: normalize subscription API routing
(#2441)
(#2455)
(2eca5ee) - copilot: preserve /v1 for the Anthropic /v1/messages endpoint
(#2409)
(#2414)
(c400f90) - deps: bump mcp to 1.28.1 to clear 3 high-severity CVEs
(#2348)
(a90be94) - grok: preserve business-seat auth while routing only inference
(#2514)
(e4076bb) - image: reuse image models instead of rebuilding them per request
(#2513)
(#2536)
(2a63ec7) - install: carry upstream-routing env overrides into supervised
deployments
(#2429)
(170b04a) - install: default to cache mode, matching
headroom proxy
(#1893
follow-up)
(#2563)
(b121223) - install: migrate deployments off the retired chopratejas image
repo (#2427)
(17ff13c) - install: use CREATE_NO_WINDOW instead of DETACHED_PROCESS on
Windows
(#2527)
(045f3df) - kompress: raise the default execution-slot wait
(#2456)
(5bd2266) - learn: detect the active OpenCode database
(#2587)
(f74d874) - learn: keep traceback tail in tool-error digest preview
(#2596)
(85e8699) - learn: treat unreadable candidate paths as absent in project
decode
(#2446)
(a09ba6c) - mcp: pin mcp dependency to <2.0.0 to prevent server startup
crash (#2642)
(b3f016b) - proxy/cost: count Gemini thinking tokens in output usage
(#2639)
(22b707f) - proxy/cost: record each request's savings exactly once (drop 3
double-counts)
(#2545)
(0845b26) - proxy/cost: warn once per model when pricing lookup fails
(#2504)
(#2535)
(fa47637) - proxy/gemini: None-guard token counts from usageMetadata
(#2347)
(f64aac9) - proxy/gemini: tolerate malformed parts on the compression path
(#2486)
(07cf547) - proxy/metrics: move the savings-ledger append off the event loop
(#2439)
(4aac068) - proxy/openai: cache under looked-up messages
(#2420)
(7052d52) - proxy/openai: don't record Codex WS savings without input
accounting
(#2493)
(2195ba7) - proxy/openai: feed chat/completions traffic into the traffic
learner
(#2333)
(6cdfd3f) - proxy/openai: None-guard usage token counts on the chat path
(#2431)
(313c290) - proxy/openai: replay incremental events in buffered Responses SSE
(#2410)
(#2415)
(0cbc0e8) - proxy/output-shaping: tolerate a non-string system block text in
steering
(#2435)
(3e97671) - proxy/perf: count turn-hook message folds in token accounting
(#2520)
(c371d5a) - proxy/perf: tokenizer-consistent token accounting + surface
tool-schema savings
(#2542)
(1cc53c9) - proxy/streaming: tolerate malformed content in _response_to_sse
(#2481)
(77b26c0) - proxy: keep buffered CCR streams alive
(#2479)
(a2e42fb) - proxy: keep core tools and the client's ToolSearch resident for
PascalCase clients
(#2647)
(1d29738) - proxy: offload OpenAI and Gemini tokenizer counting off the event
loop (#2498)
(806d2e4) - proxy: promote Kompress health after runtime load
(#2402)
(54526bc) - proxy: reassemble server_tool_use.input from streamed partial_json
(#2449)
(8c8fae0) - proxy: report deferred Kompress status and promote health from
cache (#2564)
(d50cfab) - proxy: skip max_tokens rename for backend-routed openai chat
(#2401)
(d6a1af4) - release: publish Windows wheel + sdist (disable PyPI attestations,
#112)
(#2405)
(f9cbdd6) - release: sync generated version metadata on the release branch
(#2659)
(5383c6b) - rust: port CJK-aware relevance-query matching to CodeCompressor
(#2634)
(e86c639) - security: exclude compromised ast-grep-cli 0.44.1 (supply-chain
trojan)
(#2342)
(494fb5a) - tokenizers: price Claude against a real BPE (tiktoken o200k) not a
char estimate
(#2543)
(285176b) - transforms/cross-turn-dedup: don't renumber-fold zero-padded line
prefixes
(#2369)
(f4070c4) - transforms/kompress-remote: keep compress fail-open on malformed
200 (#2320)
(b759990) - wrap: emit bare dotted keys for Codex --config overrides
(#2383)
(f57e959) - wrap: make RTK opt-in (off by default) across wrap subcommands
(#2344)
(44136ed) - wrap: skip Serena project setup outside real project roots
(#2574)
(0994ea0) - wrap: stop same-port persistent routing during claude unwrap
(#2340)
(#2350)
(cf5fa64)
Performance Improvements
Dependencies
- bump the cargo-minor-patch group with 10 updates
(#2284)
(3266ed7) - bump the npm-minor-patch group across 3 directories with 7 updates
(#2276)
(961866b)
Code Refactoring
This PR was generated with Release
Please. See
documentation.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
下载附件
- lossless: factor shared directory prefix in the grep search fold