Releases
v0.33.0
Compare
Sorry, something went wrong.
No results found
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
transforms: dispatch simple built-in strategies via the compressor registry (#2399 ) (fc9c63f )
wrap: retire tokensave; Serena is the code-memory MCP (#2499 ) (5d23a0a )
You can’t perform that action at this time.