Tags: Epicism/headroom
Tags
chore: release main (headroomlabs-ai#891) 🤖 I have created a release *beep* *boop* --- <details><summary>0.25.0</summary> ## [0.25.0](headroomlabs-ai/headroom@v0.24.0...v0.25.0) (2026-06-12) ### Features * add differential network capture harness ([headroomlabs-ai#761](headroomlabs-ai#761)) ([11ab5f8](headroomlabs-ai@11ab5f8)) * add light mode for dashboard ([headroomlabs-ai#834](headroomlabs-ai#834)) ([c425893](headroomlabs-ai@c425893)) * add OAuth2 client-credentials upstream-auth proxy extension ([headroomlabs-ai#778](headroomlabs-ai#778)) ([headroomlabs-ai#784](headroomlabs-ai#784)) ([eb2e50f](headroomlabs-ai@eb2e50f)) * add Vertex AI proxy routing ([headroomlabs-ai#793](headroomlabs-ai#793)) ([3c77e52](headroomlabs-ai@3c77e52)) * **cli:** comprehensive help text, validation, and exception handling improvements ([headroomlabs-ai#640](headroomlabs-ai#640)) ([028efab](headroomlabs-ai@028efab)) * compression safety rails — error-output protection, pipeline circuit breaker, library inflation guard ([headroomlabs-ai#851](headroomlabs-ai#851)) ([c0cadcc](headroomlabs-ai@c0cadcc)) * **dashboard:** per-model savings breakdown and expected-vs-actual cost on historical charts ([headroomlabs-ai#807](headroomlabs-ai#807)) ([34dafe6](headroomlabs-ai@34dafe6)) * detect re-served tool results as over-compression waste signal ([headroomlabs-ai#854](headroomlabs-ai#854)) ([5f1d88a](headroomlabs-ai@5f1d88a)) * **evals:** add zero-cost tool schema compaction integrity eval ([headroomlabs-ai#817](headroomlabs-ai#817)) ([53a08c6](headroomlabs-ai@53a08c6)) * gated Markdown-KV compaction formatter (serialization-aware output) ([headroomlabs-ai#859](headroomlabs-ai#859)) ([06b2625](headroomlabs-ai@06b2625)) * **kompress:** warn on unrecognized HEADROOM_KOMPRESS_BACKEND + document backend selection ([headroomlabs-ai#204](headroomlabs-ai#204)) ([6367d0b](headroomlabs-ai@6367d0b)) * **memory:** add opt-in Apple-GPU (MPS) embedding runtime ([headroomlabs-ai#766](headroomlabs-ai#766)) ([c71592d](headroomlabs-ai@c71592d)) * net-cost cache mutation formula on CompressionPolicy ([headroomlabs-ai#856](headroomlabs-ai#856) P1) ([headroomlabs-ai#857](headroomlabs-ai#857)) ([d5f5802](headroomlabs-ai@d5f5802)) * **plugins:** Hermes agent headroom_retrieve plugin ([headroomlabs-ai#824](headroomlabs-ai#824)) ([058bced](headroomlabs-ai@058bced)) * probe-based retention scoring of recorded compression events ([headroomlabs-ai#862](headroomlabs-ai#862)) ([c2106cb](headroomlabs-ai@c2106cb)) * **proxy:** add CLI opt-outs for CCR injection (compression-only mode) ([headroomlabs-ai#823](headroomlabs-ai#823)) ([693d9d2](headroomlabs-ai@693d9d2)) * **proxy:** attribute savings history rollups per provider ([headroomlabs-ai#791](headroomlabs-ai#791)) ([0b8b8d9](headroomlabs-ai@0b8b8d9)) * **proxy:** log compressed messages alongside original request ([headroomlabs-ai#261](headroomlabs-ai#261)) ([2269e40](headroomlabs-ai@2269e40)) * **proxy:** per-project savings breakdown on the dashboard (claude, codex, aider, copilot, cursor) ([headroomlabs-ai#803](headroomlabs-ai#803)) ([914a60a](headroomlabs-ai@914a60a)) * support Python 3.14+ via pyo3 abi3 stable ABI ([headroomlabs-ai#516](headroomlabs-ai#516)) ([19eac8e](headroomlabs-ai@19eac8e)) * switch Kompress default to kompress-v2-base with weight-only int8 ONNX ([headroomlabs-ai#799](headroomlabs-ai#799)) ([74392b2](headroomlabs-ai@74392b2)) * **transforms:** attribute read_lifecycle + smart_crush tags ([headroomlabs-ai#249](headroomlabs-ai#249)) ([8f37426](headroomlabs-ai@8f37426)) ### Bug Fixes * **anthropic:** CCR exception must re-raise, not silently swallow ([headroomlabs-ai#838](headroomlabs-ai#838)) ([8db5efc](headroomlabs-ai@8db5efc)) * **ccr:** key Rust search/diff/log markers with explicit_hash ([headroomlabs-ai#852](headroomlabs-ai#852)) ([bfcb07d](headroomlabs-ai@bfcb07d)) * **ccr:** make retrieval TTL configurable ([headroomlabs-ai#715](headroomlabs-ai#715)) ([2533f77](headroomlabs-ai@2533f77)) * **ccr:** skip CCR when model calls headroom_retrieve alongside user tools ([headroomlabs-ai#839](headroomlabs-ai#839)) ([30078f8](headroomlabs-ai@30078f8)) * **ccr:** use shared compression store ([headroomlabs-ai#875](headroomlabs-ai#875)) ([249af6c](headroomlabs-ai@249af6c)) * **ci:** correct comments, timeouts, and pip reliability in native e2e workflows ([headroomlabs-ai#878](headroomlabs-ai#878)) ([b716c8c](headroomlabs-ai@b716c8c)) * **ci:** pin cosign-installer to v3 (v4 does not exist) ([headroomlabs-ai#774](headroomlabs-ai#774)) ([199d693](headroomlabs-ai@199d693)) * **codex:** respect CODEX_HOME for wrap config ([headroomlabs-ai#731](headroomlabs-ai#731)) ([96abf38](headroomlabs-ai@96abf38)) * **content_router:** guard against empty compression output causing Anthropic 400 ([headroomlabs-ai#771](headroomlabs-ai#771)) ([2f9ff07](headroomlabs-ai@2f9ff07)) * **copilot:** use responses API for subscription reasoning models ([headroomlabs-ai#647](headroomlabs-ai#647)) ([84ac332](headroomlabs-ai@84ac332)) * correct preserved-entry index mapping in Gemini content round-trip ([headroomlabs-ai#836](headroomlabs-ai#836)) ([0ffe2b6](headroomlabs-ai@0ffe2b6)) * **dashboard:** stable 'Proxy $ Saved' hero tile under --workers > 1 ([headroomlabs-ai#481](headroomlabs-ai#481)) ([fd73b88](headroomlabs-ai@fd73b88)) * don't inject empty tools:[] when client omitted the tools field ([headroomlabs-ai#772](headroomlabs-ai#772)) ([574bbae](headroomlabs-ai@574bbae)) * harden Copilot API auth token handling ([headroomlabs-ai#557](headroomlabs-ai#557)) ([6b0c09f](headroomlabs-ai@6b0c09f)) * **health:** readyz verifies upstream connectivity, not just process liveness ([headroomlabs-ai#744](headroomlabs-ai#744)) ([5dfb446](headroomlabs-ai@5dfb446)) * **init:** guard persistent task startup ([headroomlabs-ai#616](headroomlabs-ai#616)) ([9252d85](headroomlabs-ai@9252d85)) * **init:** normalize Windows hook paths to forward slashes ([headroomlabs-ai#788](headroomlabs-ai#788)) ([6ea6e31](headroomlabs-ai@6ea6e31)) * **init:** suppress hook recovery output ([headroomlabs-ai#760](headroomlabs-ai#760)) ([b439599](headroomlabs-ai@b439599)) * **learn:** claude-cli streams output with idle timeout ([headroomlabs-ai#373](headroomlabs-ai#373)) ([9bff575](headroomlabs-ai@9bff575)) * make headroom wrap readiness probe timeout configurable for slow ML imports ([headroomlabs-ai#581](headroomlabs-ai#581)) ([163677b](headroomlabs-ai@163677b)) * **parser:** detect waste signals in Anthropic tool_result content blocks ([headroomlabs-ai#815](headroomlabs-ai#815)) ([929698a](headroomlabs-ai@929698a)) * **proxy:** F4 — trust X-Forwarded-* only behind allow-listed gateway ([d10bd5f](headroomlabs-ai@d10bd5f)) * **proxy:** lazy-import server to avoid fastapi crash ([headroomlabs-ai#442](headroomlabs-ai#442)) ([93c6937](headroomlabs-ai@93c6937)) * **proxy:** make CCR multi-worker warning conditional on backend ([headroomlabs-ai#770](headroomlabs-ai#770)) ([d76a729](headroomlabs-ai@d76a729)) * **proxy:** make Kompress eager preload cache-only so a cold cache can't block startup ([headroomlabs-ai#783](headroomlabs-ai#783)) ([841663d](headroomlabs-ai@841663d)) * **proxy:** restore Codex usage headers on WS and streaming SSE transports ([headroomlabs-ai#577](headroomlabs-ai#577)) ([headroomlabs-ai#794](headroomlabs-ai#794)) ([0ce68de](headroomlabs-ai@0ce68de)) * schema compaction must not drop property names that match DROP_KEYS ([headroomlabs-ai#785](headroomlabs-ai#785)) ([ae2122f](headroomlabs-ai@ae2122f)) * **security:** block DNS-rebinding on /debug/* and /stats/reset via Host-header allowlist ([headroomlabs-ai#605](headroomlabs-ai#605)) ([b4b5025](headroomlabs-ai@b4b5025)) * **ssl:** upstream httpx client inherits SSL_CERT_FILE, REQUESTS_CA_BUNDLE, NODE_EXTRA_CA_CERTS ([headroomlabs-ai#745](headroomlabs-ai#745)) ([e50fbb3](headroomlabs-ai@e50fbb3)) * suppress LiteLLM provider banner before import ([headroomlabs-ai#874](headroomlabs-ai#874)) ([f9384ef](headroomlabs-ai@f9384ef)) * **transforms:** use thread-local tree-sitter parsers to prevent pyo3 Unsendable panic ([headroomlabs-ai#604](headroomlabs-ai#604)) ([2ad300a](headroomlabs-ai@2ad300a)) * **wrap:** track shared proxy clients with markers ([headroomlabs-ai#877](headroomlabs-ai#877)) ([05bd56b](headroomlabs-ai@05bd56b)) ### Code Refactoring * extract litellm model resolution to shared utility ([ec7d006](headroomlabs-ai@ec7d006)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
chore: release main (headroomlabs-ai#607) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Merge pull request headroomlabs-ai#594 from chopratejas/release-pleas… …e--branches--main chore: release main
Merge pull request headroomlabs-ai#490 from chopratejas/refactor/memo… …ry-tool-handles Refactor/memory tool handles
Merge pull request headroomlabs-ai#485 from chopratejas/refactor/memo… …ry-tool-handles fix(memory): expose memory IDs in auto-tail + memory_list tool + ID-usage guidance
Merge pull request headroomlabs-ai#484 from chopratejas/refactor/memo… …ry-ranker-and-image-decision refactor(proxy): MemoryRanker + ImageCompressionDecision + branch-aware version-sync
Merge pull request headroomlabs-ai#483 from chopratejas/refactor/memo… …ry-system-uniformity fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap
Merge pull request headroomlabs-ai#475 from chopratejas/fix/wrap-e2e-… …startup-timeout fix(tests): widen wrap-e2e openclaw startup timeout to 30s
Merge pull request headroomlabs-ai#474 from chopratejas/fix/pypi-whee… …l-size-cargo-strip fix(build): shrink Rust extension wheels (strip + thin-LTO + single codegen unit)
PreviousNext