All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.36.85 - 2026-07-28
- (openai) preserve tool-result images on the Responses (Codex) path (#488)
- (docs) exclude flaky istio.io from lychee link check (#483)
0.36.84 - 2026-07-27
- (cli) make grob stop recognise its daemon on macOS (#481)
- switch merge policy to squash-only for reliable release-plz (#480)
- (release-plz) allow manual workflow_dispatch
0.36.83 - 2026-07-26
- (openai) forward image blocks on the Responses (Codex) path
0.36.82 - 2026-07-26
- (auth) remove the at_default_path token-store footgun
0.36.81 - 2026-07-26
- (status) read OAuth tokens from the encrypted store in status + setup
0.36.80 - 2026-07-25
- (validate) read OAuth tokens from the encrypted store, not legacy JSON
- (routing) kill 16 surviving mutants in the complexity classifier
- run the local prek gate in CI instead of restating it
0.36.79 - 2026-07-24
- (openai) replay encrypted reasoning across Codex turns
- repoint two rotted external links
- untrack the local debug config that reached main in #410
0.36.78 - 2026-07-24
- (deps) bump age to 0.12 to drop the unmaintained proc-macro-error2
- (deps) bump the OpenTelemetry stack to 0.32 for GHSA-w9wp-h8wv-79jx
- Merge pull request #460 from azerozero/chore/otel-0-32
- (security) drop advisory ignores no longer matching any crate
0.36.77 - 2026-07-24
- (deps) bump crossbeam-epoch to 0.9.20 for RUSTSEC-2026-0204
- (security) take the audit batch buffer instead of draining it
0.36.76 - 2026-07-02
- (deps) bump anyhow 1.0.103 and quinn-proto 0.11.15 for RUSTSEC advisories
- (readme) soften absolute claims and de-recycle benchmark headline
- (licensing) replace indicative pricing grid with contact
- split classify mutation shard
- (license) relicense core to Apache-2.0
- tighten demo gif crop
- crop readme demo gif
- add demo gif to readme
- add local demo to readme
- polish demo visuals and governance copy
0.36.75 - 2026-06-16
- preserve context warnings on direct lookup
- sync body limit explanation
- clarify launch positioning and context errors
0.36.74 - 2026-06-15
- (api) add context-window compact guard
- (demo) wire governance dashboards
0.36.73 - 2026-06-15
- (audit) add OpenTelemetry trace_id/span_id to audit entries
- (demo) emit a Loki level so audit logs stop showing detected_level=unknown
- (demo) make governance table fit narrow viewports in alert state
- (demo) fix horizontal scrollbar on the governance table
- (demo) polish governance + live-block UI (ui-ux-pro-max pass)
- (demo) add RSSI / agent-governance showcase kit
0.36.72 - 2026-06-14
- (audit) classify caviardages as C1/C2 in the audit log
- (licensing) fix AGPL framing, add edition matrix and §13 wording
- (adr) add ADR-0028 open-core boundary (AGPL core vs commercial)
0.36.71 - 2026-06-14
- (dlp) apply DLP redaction to the Responses passthrough path
0.36.70 - 2026-06-14
- (translation) preserve prompt caching across Codex/Claude × OpenAI/Anthropic
- (translation) enforce store=false and stream on the Responses passthrough
- gitignore the local grob-chatgpt.toml config
- (examples) trim the codex OAuth example to the essentials
- (dispatch) kill three surviving mutants on main
0.36.69 - 2026-06-12
- (openai) codex streaming arg routing + SSE/routing/cache fixes + cli-cycle quality pass + cache-read pricing & tier-model validation (#410)
0.36.68 - 2026-06-12
- (auth) adopt OAuth credentials from co-installed CLIs
- (deny) sync advisory ignores with main
- (auth) gate the Claude keychain helpers to macOS
0.36.67 - 2026-06-04
- (openai) preserve codex streams through grob
- exclude flaky public.cyber.mil link from lychee check
- don't block Required checks / test gate on cancelled jobs
0.36.66 - 2026-06-02
- (auth) offer codex oauth during exec preflight
- Merge pull request #402 from azerozero/fix/exec-tool-credentials
0.36.65 - 2026-06-02
- (routing) add endpoint inventory adapter
- converge routing and operational guardrails
0.36.64 - 2026-06-02
- (tracing) capture tool_use and thinking in streaming traces
0.36.63 - 2026-06-02
- (tracing) trace streaming responses to the JSONL file
0.36.62 - 2026-06-01
- (openai) match the Codex CLI request fingerprint on the OAuth path
0.36.61 - 2026-06-01
- (openai) make Codex priority models and reasoning effort configurable
- (security) disable rate limit, body size, and tool-spike caps by default
- (security) update integration assertions for off-by-default limits
- (examples) default the Codex example to the priority (1.5x) tier
0.36.60 - 2026-06-01
- (openai) apply Codex priority tier only to models that support it
0.36.59 - 2026-05-31
- (responses-compat) emit a spec-compliant Responses SSE stream
0.36.58 - 2026-05-31
- (server) log inbound Codex Responses request shape
0.36.57 - 2026-05-31
- (openai) forward Codex service_tier (priority = faster handling)
0.36.56 - 2026-05-31
- (dispatch) surface the real upstream error instead of masking it
0.36.55 - 2026-05-31
- (openai) pass forced Codex effort through; fix auto-map for adaptive thinking
0.36.54 - 2026-05-31
- (openai) control Codex reasoning effort (auto-map + config override)
- (openai) make ChatGPT Codex tool-calling work end-to-end
- (openai) update Codex tools contract pin to expect forwarded tools
0.36.53 - 2026-05-31
- (security) raise tool-spike defaults for agentic clients
0.36.52 - 2026-05-31
- (cli) pass --config before the start subcommand when daemonizing
- ignore local personal grob config (grob-openai.toml)
0.36.51 - 2026-05-30
- (openai) stream ChatGPT Codex (OAuth) via the Responses API
- (openai) parse Codex responses from output_item.done events
- (examples) add ChatGPT Codex OAuth config example
- (mutants) exclude the
delete !mutant in build_encrypted_content
0.36.50 - 2026-05-28
- (reload) don't gate config reload on live provider health
0.36.49 - 2026-05-28
- (storage) split GrobStore into per-concern submodules
- fix residual shellcheck warnings the gate surfaced
- add shellcheck gate, fix SC2168, drop empty scaffolds
0.36.48 - 2026-05-28
- break features↔models & auth↔providers cycles, split two god functions
- fix claude-code-router fork leftovers
- Merge pull request #350 from azerozero/revive/dispatch-retry-reload
- Merge pull request #351 from azerozero/revive/tool-spike-anomaly
0.36.47 - 2026-05-27
- (oauth) retry adjacent ports when OAuth callback port is busy
- use values()/values_mut() to satisfy clippy::for_kv_map
- Merge pull request #347 from azerozero/fix/fanout-budget-enforcement
0.36.46 - 2026-05-25
- (pricing) spend accounting for streaming responses with estimate fallback
- (pricing) bill streaming output estimate without a throwaway alloc
0.36.45 - 2026-05-25
- (pricing) local token estimate fallback for estimate mode
0.36.44 - 2026-05-25
- (startup) never block the bind on network I/O; log detached daemons
0.36.43 - 2026-05-15
- (security) per-tenant isolation for spend, secrets, strict mode
0.36.42 - 2026-04-28
- (providers) tool-use translation correctness (3 audit bugs)
- (translation) table-driven tests for Anthropic <-> OpenAI <-> Responses translation (#334)
- (security) multi-tenant isolation integration tests (#326)
- (providers) document Z.ai/GLM dual-endpoint model, no glm.rs needed
- ADR-0008 promoted from
proposedtoaccepted(2026-04-28). Unblocks chantiers A-1 (ControlEngine) and A-2 (CLI thin).
- ADR hygiene — corrected zombie statuses on previously-
doneADRs whose implementations are deferred. ADR-0013 (storage refactor on atomic files + JSONL) and ADR-0015 (indirect prompt injection coverage) revert fromdonetoaccepted; both designs remain final and binding, but no production code matches them yet (redb persistence still active in v0.36.x; A-6 output scan deferred). Status notes inline in each ADR record the correction. - ADR-0023 (proposed) — Preset Naming and Composition Strategy. Formalises
the existing five-preset catalogue with a
[meta] tiertaxonomy (base,audience-specific,experimental), the kebab-case naming convention, and the rule that presets do not nest (compliance overlays are a separatekind = "overlay"concept). No code changes yet — proposal only. - ADR-0024 (proposed) — Preset-as-Compliance-Template. Treats compliance
presets as packaged decisions bundling routing topology, policy choices,
ADR-0022
[endpoints.compliance]metadata, and[meta] compliance_reviewedattestation. Documents customer-extension overlays (tighten only, never loosen) and the certification-renewal lifecycle. No code changes yet — proposal only. - ADR-0025 (proposed) — RPC Mutation Transactionality and In-Flight
Visibility. Pins down semantics for
config/set,pledge/set,tools/*,policy/*RPC mutations: in-flight requests see pre-mutation snapshots, persistence is atomic with the in-memory swap, per-namespace mutex permits parallel writes across namespaces, every mutation emits anAuditEvent::RpcMutationwithbefore_hash/after_hash. No code changes yet — proposal only; resolves the open question on issue #228. - ADR-0026 (proposed) — Model Name Canonicalization Policy. Records the
fixed rule set landed in PR #307 (lowercase, strip
-latest, strip 8-digit date suffix, dot-to-dash version on a known prefix gate, Anthropic family-version reorder), the idempotence guarantee, the operator escape hatches (per-endpointactual_modelmapping or table patch), and the 2-minor-release deprecation window for renamed models. No code changes yet — formalises the existing implementation.
0.36.41 - 2026-04-28
- (secrets) add
grob secrets testsubcommand - (presets) add 'eu' preset (strict EU sovereign routing)
- (presets) add 'optimal' preset (multi-provider speed-first routing)
- (preset) auto-discover builtins via include_dir, fix broken main
- (presets) drop signup-bonus providers from ultra-cheap
- (presets) drop MiniMax from ultra-cheap (avoid trial deadline)
- (preset) fix test_apply_preset_to_temp_config to use ultra-cheap
- (presets) add Z.ai GLM, MiniMax, Mercury, DeepSeek direct
- (presets) max ultra-cheap free tiers + correct rate limits
- (presets) optimize ultra-cheap with Grok + R1 + V4 Flash
- (presets) consolidate to 5 presets with clear positioning
- (presets) split eu into eu-eco/pro/max, drop xAI Grok
- ADR-0018 promoted to
accepted(wasproposedsince 2026-04-17). Triggered by re-evaluation against two concrete user audiences: time-sensitive trading bots and security-prevails customers (defense, banks, OIV). - ADR-0019 — EMA stigmergy: opt-in adaptive endpoint health scoring; transparent to clients, fully observable. All defaults configurable in
[router.ema]; default flip fromstatictoemais itself a config-schema default change, never silent. - ADR-0020 — Hedged requests: opt-in tail-latency reduction via speculative duplication; per-slot config. Adds
compliance_isolationflag for security audiences (hedging restricted to endpoints sharing trust zone, jurisdiction, and meeting data-classification floor — fail-closed if either endpoint omits the compliance block). Cancellation cost behavior is operator-declared in[hedge.providers.<name>]after empirical verification; binary ships no speculative knowledge. - ADR-0022 —
[[endpoints]]+[[policies]]schema rebuild. 10-version auto-migration window (~12-18 calendar months) with deprecation warnings starting at the announcement release; legacy parser removed at the 10th minor release after announcement. New optional[endpoints.compliance]block with 6 structured fields (trust_zone,jurisdiction,data_classification,certifications,provider_risk_score,sub_processors). Everything is operator-tunable via config:data_classificationlevels,required_fieldsfor strict-mode lint, policy precedence (priority = Nopt-in),trust_zonetaxonomy. Industry-naming guidance documented (AWS regions, SecNumCloud, FedRAMP, EU AI Act tiers) but not enforced.
ADR-0021 (Thompson sampling) was rejected before drafting: probabilistic exploration is incompatible with both trading audit trails and security-prevails predictability requirements.
ADRs 0019, 0020, 0022 land here as status: proposed. None ship code in this
release. A separate status: accepted promotion PR gates each implementation.
0.36.40 - 2026-04-26
- (routing) auto-map respects explicit [[models]] entries
0.36.39 - 2026-04-26
- (registry) require SecretBackend on from_configs_with_models
0.36.38 - 2026-04-26
- (rpc) impl tools/enable + tools/disable with in-memory mutation (#228)
0.36.37 - 2026-04-26
- (connect) trigger OAuth browser flow directly from grob connect
0.36.36 - 2026-04-26
- (validate) resolve secret: and $ENV placeholders before testing providers
0.36.35 - 2026-04-26
- (infra,ci) pin container images and guard against version drift
- SDK examples, freshness fixes, and orphan-page links
- (slices) per-slice README charters and slice manifest
- (mcp) split mcp_handlers.rs into per-domain modules
0.36.34 - 2026-04-25
- (secrets) AES-GCM encrypted upstream api_keys + grob secrets CLI
- (profiles) rename silently-ignored fields + wire Phase P in full-opti-v5
0.36.33 - 2026-04-25
- (cache) make simhash hamming threshold configurable via TOML (T-P4-fix)
- Merge pull request #272 from azerozero/feat/grob-autotune
- (how-to) document grob_hint, classifier tuning, and simhash cache (Phase P)
- (docs,ci) point install script to raw GitHub + add lychee pre-commit hook
- fix 12 broken internal links (relative-path drift)
- (docs-lint) accept 303 See Other in lychee link checker
0.36.32 - 2026-04-25
- (ci,openai) relocate codex_instructions to provider dir + drop lychee --exclude-mail
- (deps) bump rustls-webpki 0.103.12 -> 0.103.13 (RUSTSEC-2026-0104)
- (docs,tier0) hygiene structurelle — ADR 0007 + codex move + CONTRIBUTING + SECURITY + RTM (#36 #37 #38 #39) (#259)
- (traits) # Examples on 3 core public traits (#28) (#258)
- cli.md missing flags + prose lint jobs (#13 #27) (#257)
- (deploy) switch grob.container to Type=exec (#20) (#256)
0.36.31 - 2026-04-21
- (wizard) --edit tools/endpoints sections (#26) (#255)
- (wizard) skip credential prompt when env var present (#24) (#254)
- (doctor) actionable fix hints on each check (#23) (#252)
- (wizard) schema drift auto-migration prompt (#25) (#251)
- (mcp) wizard config/doctor MCP surface per ADR-0011 (#21) (#249)
- (wizard) headless OAuth device-code RFC 8628 (#22) (#248)
0.36.30 - 2026-04-21
- (dispatch,router) wire grob_hint + doc drift (#5 #6 #14) (#245)
0.36.29 - 2026-04-21
- (dlp) split pii.rs into cards/iban/bic (T-SP-4 #10) (#243)
0.36.28 - 2026-04-21
0.36.27 - 2026-04-21
- (dispatch) cargo fmt on resolver/retry/provider_loop imports
- (dispatch) split provider_loop 808 LoC into resolver + retry + orchestration (T-SP-3 #9)
- (nightly) skip jemalloc + unix-signals features on Windows
0.36.26 - 2026-04-20
- (commands) split setup.rs 1877 LoC into setup/ submodules (T-SP-2 #8)
0.36.25 - 2026-04-20
- (cli) move AppConfig to models::config to break mega-SCC (T-SP-1 #7)
0.36.24 - 2026-04-20
- (structure) migrate root modules + fuse router into routing/classify (T-VS #12 #35)
0.36.23 - 2026-04-20
- (infra) corriger 5 regressions Tier 3 Containerfile + deploy
- (features) supprimer log_backend orphelin (1469 LOC)
0.36.22 - 2026-04-19
- (routing) active health checks Caddy-style (RE-1b)
0.36.21 - 2026-04-18
- (init) silence unused state sur --no-default-features
- (logs) classifier validation par HTTP code
- (init) supprimer la validation dupliquee au startup
- Merge pull request #217 from azerozero/fix/smart-validation-logs
0.36.20 - 2026-04-18
- (routing) resoudre actual_model via [[models]] dans branche tiers
- (adr) proposer 0018 nature-inspired routing
0.36.19 - 2026-04-15
- (deps) mettre a jour rustls-webpki 0.103.11 → 0.103.12
- (ci) ajouter paths-ignore a CodeQL pour eviter la boucle de rebase docs PRs
0.36.18 - 2026-04-15
- (tracing) chiffrer les traces JSONL avec AES-256-GCM + grob logs decrypt
0.36.17 - 2026-04-14
- (config) exposer ScoringConfig en TOML via la section [classifier]
0.36.16 - 2026-04-14
- (router) ajouter le match declaratif [tiers.match] pour le routing par complexite
- migrate from Git Flow (develop+main) to GitHub Flow (main only) (#198)
0.36.15 - 2026-04-14
- (ci) absorber main dans develop apres chaque sync-main
- (dlp) kill mutation survivor in IndirectInjectionBlocked Display
0.36.14 - 2026-04-14
- (ci) ajouter retry aux installations curl dans le pipeline
- (shell) gater les couleurs ANSI sur TTY et NO_COLOR
- (shell) supprimer le chemin hardcode et renforcer build.sh
- (security) passer SARIF_FILE par variable d'env dans codeql-check.sh
- (control) deplacer Role dans le control engine
0.36.13 - 2026-04-13
- (ci) auto-cleanup des sync-main PRs obsoletes et resolution de conflits
- absorber l'historique main dans develop
- (adr) marquer ADR-0013 et ADR-0015 done apres Phase A
0.36.12 - 2026-04-13
- (mcp) exposer les namespaces control via MCP tools + pledge CLI (#179)
- (cli) migrer les commandes CLI vers le client RPC thin (#178)
- (storage) remplacer redb par fichiers atomiques + journal append-only (ADR-0013) (#180)
0.36.11 - 2026-04-13
- (dlp) ajouter la detection d'injection indirecte dans les responses et tool_result (#175)
- (control) implementer le moteur ControlEngine generique (#174)
- (hit) implementer le scoring de risque parametrable (#173)
0.36.10 - 2026-04-12
- (security) resoudre les alertes CodeQL #64 et Semgrep #56
- (ci) supprimer paths-ignore sur pull_request pour debloquer les PRs docs-only
- (readme) synchroniser le README avec l'etat v0.36.9
- corriger 7 lints clippy nightly (collapsible_match, sort_by_key, checked_div)
- (router) lier classify.rs au guide auto-tune routing
- corriger le formatage de lib.rs
- declencher pipeline CI complet pour PR docs-only
- (how-to) ajouter le guide auto-tune routing via trace et MCP
0.36.9 - 2026-04-11
- (router) ajouter la config declarative des tiers de complexite
0.36.8 - 2026-04-11
- (wizard) polir le wizard setup pour atteindre le score audit 85+
0.36.7 - 2026-04-11
- (router) ajouter le scoring heuristique de complexite
- (ci) ajouter RUSTSEC-2026-0097 a audit.toml (#153)
- (ci) documenter la dépendance ruleset → Required checks (#154)
0.36.6 - 2026-04-11
- (setup) ajouter support custom endpoint OpenAI/Anthropic-compatible
- (ci) add RUSTSEC-2026-0097 exception and fix gitleaks force-push
- (dlp,router) ajouter proptests pour robustesse DLP et router
0.36.5 - 2026-04-11
- (mcp) ajouter le tool grob_hint + header X-Grob-Hint
- (mcp) gater grob_hint derrière cfg(feature = "mcp")
0.36.4 - 2026-04-11
- (security) résoudre 6 alertes CodeQL/Semgrep cleartext logging
0.36.3 - 2026-04-10
- (server) unifier la logique persist+reload des mutations config
0.36.2 - 2026-04-10
- (setup) valide les credentials par appel API avant acceptation
0.36.1 - 2026-04-10
- (cli) affiche un hint pour grob -- claude sans exec
- (setup) permet de saisir un budget cap libre
- (setup) rend le fallback provider opt-in
- (setup) chaine l'OAuth auto_flow dans le wizard
- (policies) add decision token type for transparent agent routing
- (auth) auto-detect and setup missing credentials on start
- (security) ajoute le guard is_key_denied a la web config API
- (ci) gitleaks gere les tag pushes (before=0000000) (#123)
- (ci) release-tag ecoute develop (pas seulement main) (#119)
- (security) corrige 5 alertes CodeQL/Semgrep cleartext logging
- (setup) respecte flags.yes dans chain_auto_flow
- (ci) sync-main ouvre une PR au lieu de pusher directement sur main (#105)
- (ci) shellcheck SC2086 array idiom pour SHARD_ARG
- (ci) ajoute un workflow shim pour debloquer les PR docs-only
- (ci) retire mutants du needs[] du summary required (continue-on-error deja actif)
- (ci) split shard 3 de mutation testing sur dlp/pii.rs en deux jobs paralleles
- (ci) raise mutation testing job timeout to 60 minutes
- (security) ignore RUSTSEC-2025-0134, document TLS dep status
- (security) ignore RUSTSEC-2025-0134 in cargo audit config
- (ci) use read-all global permissions baseline
- (security) close 3 policy engine drifts
- (setup,cli,security) overhaul wizard flow and fix audit issues
- (test) fix wizard W6 proxy test — use /v1 base_url for vidaimock
- (test) make wizard E2E tests pass locally
- (security,docs,ci) address 5 quick wins from issue #82
- (ci) trigger release-tag on PR merge instead of push
- (ci) split release-plz into release-pr and release-tag jobs
- (ci) remove cargo-semver-checks (binary, not a crate)
- (semver) make SpendData pub(crate) instead of non_exhaustive
- (ci) fix release flow — homebrew after release, tag push runs all jobs
- (ci) make semver-checks non-blocking (continue-on-error)
- (ci) add #[non_exhaustive] to SpendData to fix semver-checks
- (ci) remove audit-wire path dep (breaks CI), fix shellcheck SC2086
- (ci+dlp+docs) actionlint args, URL exfil request blocking, doc sync
- release v0.36.0 (#115)
- bump version to 0.36.0 (#114)
- corrige 12 incoherences doc-code identifiees par cli-audit-sync
- (dlp) ajoute 30+ tests pour tuer les mutants survivants de pii.rs
- (cli) reordonne KNOWN_SUBCOMMANDS alphabetiquement
- (dlp) extract token literal to kill chain_width violation
- (dlp) cargo fmt sur tests et dfa
- (dlp) ajoute 25+ tests pour tuer les mutants survivants de mod.rs et dfa.rs
- (router) add 3 targeted tests to kill extract_trailing_literal_byte mutants
- (router) add 12 mutant-killer tests for extract_trailing_literal_byte
- (ci) harden pipeline — pin tool versions, scope permissions, prune jobs
- (policies) mention decision token routing in module doc
- (e2e) add T5 HIT Gateway multi-client scenarios
- (e2e) add multi-client isolation harness T1-T4
- (docs) remove competitive intel from public docs
- (e2e) add wizard lifecycle tests and ADR-0008
- release v0.35.1 (#83)
- (claude,agents) document git flow rules and branch protection
- (auth) add doc comments to CredentialStatus fields
- disable semver_check in release-plz (binary, not a crate)
- bump version to 0.35.0
- (claude) add prek local setup instructions
- (tests) apply cargo fmt formatting
- (readme) add project structure, update install URL, normalize dashes
- (claude) add git flow and CI/CD documentation
- (router,dlp) add tests to kill surviving mutants
- add musl cross-build config, remove leftover kraft.yaml
- release v0.34.0 (#79)
- (ci) decouple test jobs from slow quality checks
0.36.0 - 2026-04-10
- (cli) affiche un hint pour grob -- claude sans exec
- (setup) permet de saisir un budget cap libre
- (setup) rend le fallback provider opt-in
- (setup) chaine l'OAuth auto_flow dans le wizard
- (policies) add decision token type for transparent agent routing
- (auth) auto-detect and setup missing credentials on start
- (security) corrige 5 alertes CodeQL/Semgrep cleartext logging
- (setup) respecte flags.yes dans chain_auto_flow
- (ci) sync-main ouvre une PR au lieu de pusher directement sur main (#105)
- (ci) shellcheck SC2086 array idiom pour SHARD_ARG
- (ci) ajoute un workflow shim pour debloquer les PR docs-only
- (ci) retire mutants du needs[] du summary required (continue-on-error deja actif)
- (ci) split shard 3 de mutation testing sur dlp/pii.rs en deux jobs paralleles
- (ci) raise mutation testing job timeout to 60 minutes
- (security) ignore RUSTSEC-2025-0134, document TLS dep status
- (security) ignore RUSTSEC-2025-0134 in cargo audit config
- (ci) use read-all global permissions baseline
- (security) close 3 policy engine drifts
- (setup,cli,security) overhaul wizard flow and fix audit issues
- (test) fix wizard W6 proxy test — use /v1 base_url for vidaimock
- (test) make wizard E2E tests pass locally
- (security,docs,ci) address 5 quick wins from issue #82
- (ci) trigger release-tag on PR merge instead of push
- (ci) split release-plz into release-pr and release-tag jobs
- (ci) remove cargo-semver-checks (binary, not a crate)
- (semver) make SpendData pub(crate) instead of non_exhaustive
- (ci) fix release flow — homebrew after release, tag push runs all jobs
- (ci) make semver-checks non-blocking (continue-on-error)
- (ci) add #[non_exhaustive] to SpendData to fix semver-checks
- (ci) remove audit-wire path dep (breaks CI), fix shellcheck SC2086
- (ci+dlp+docs) actionlint args, URL exfil request blocking, doc sync
- bump version to 0.36.0 (#114)
- corrige 12 incoherences doc-code identifiees par cli-audit-sync
- (dlp) ajoute 30+ tests pour tuer les mutants survivants de pii.rs
- (cli) reordonne KNOWN_SUBCOMMANDS alphabetiquement
- (dlp) extract token literal to kill chain_width violation
- (dlp) cargo fmt sur tests et dfa
- (dlp) ajoute 25+ tests pour tuer les mutants survivants de mod.rs et dfa.rs
- (router) add 3 targeted tests to kill extract_trailing_literal_byte mutants
- (router) add 12 mutant-killer tests for extract_trailing_literal_byte
- (ci) harden pipeline — pin tool versions, scope permissions, prune jobs
- (policies) mention decision token routing in module doc
- (e2e) add T5 HIT Gateway multi-client scenarios
- (e2e) add multi-client isolation harness T1-T4
- (docs) remove competitive intel from public docs
- (e2e) add wizard lifecycle tests and ADR-0008
- release v0.35.1 (#83)
- (claude,agents) document git flow rules and branch protection
- (auth) add doc comments to CredentialStatus fields
- disable semver_check in release-plz (binary, not a crate)
- bump version to 0.35.0
- (claude) add prek local setup instructions
- (tests) apply cargo fmt formatting
- (readme) add project structure, update install URL, normalize dashes
- (claude) add git flow and CI/CD documentation
- (router,dlp) add tests to kill surviving mutants
- add musl cross-build config, remove leftover kraft.yaml
- release v0.34.0 (#79)
- (ci) decouple test jobs from slow quality checks
0.35.1 - 2026-04-01
- (auth) auto-detect and setup missing credentials on start
- (ci) split release-plz into release-pr and release-tag jobs
- (claude,agents) document git flow rules and branch protection
- (auth) add doc comments to CredentialStatus fields
- disable semver_check in release-plz (binary, not a crate)
0.34.0 - 2026-03-31
- (ci) remove audit-wire path dep (breaks CI), fix shellcheck SC2086
- (ci+dlp+docs) actionlint args, URL exfil request blocking, doc sync
- (ci) decouple test jobs from slow quality checks
- (server) extract god functions, fix CI duplication, add spend tracking
0.33.0 - 2026-03-30
- (ci) replace archived CLA action with github-script workflow
- (ci) add Claude to CLA allowlist and force Node.js 24
- remove unikernel feature flag and related infrastructure
- add automatic stale branch cleanup workflow
- release v0.32.0 (#77)
0.32.0 - 2026-03-30
- (security) add ARM CCA (Realm) TEE backend alongside AMD SEV-SNP
- (security) add TEE attestation and FIPS enforcement modules
- (ci) add Test (ubuntu-latest) gate job for branch protection
- (ci) skip doc-tests on Windows to avoid ring linker failure
- handle missing IPv6 gracefully in test_bind_reuseport_std_ipv6
- (ci) correct cargo-hack partition syntax (M/N not count:M/N)
- add #[allow(unsafe_code)] to Windows ACL block in token_store.rs
- cast ioctl constants to libc::Ioctl for musl compatibility, bump to 0.32.0
- gate harness field with #[cfg(feature = "harness")] in all AppConfig initializers
- resolve clippy, rustfmt, and missing field errors for CI
- (security) gate TEE ioctl code behind cfg(target_os = "linux")
- Merge remote-tracking branch 'origin/claude/rust-security-hardening-snCDl' into develop
- increase feature-powerset timeout from 8 to 15 minutes
- add compile-time unsafe deny, zeroize secrets, and container hardening
0.31.1 - 2026-03-28
- guard dirs usage on feature flag
- (test) serialize env-var-dependent DLP tests with mutex
- (ci) disable jemalloc on Windows CI and add default impl for SpendTracking::provider_breakdown
0.31.0 - 2026-03-28
- (pledge) add structural tool filtering for LLM payloads (ADR-005)
- add universal tool layer v1 (injection, aliasing, capability gating)
- add unified JSON-RPC 2.0 Control Plane (Phase 1)
- (ci) move --timeout flag before -- separator in cargo-mutants
- (ci) make Codecov gate conditional on token availability
- add L2 property tests and L1 error snapshots
- add 5-layer enterprise E2E test scaffolding
- Merge feat/dlp-dynamic-names into develop
- add insta snapshots, cargo-mutants CI, and enforce coverage gate
0.30.1 - 2026-03-27
- (ci) 48/48 pipeline score — all 12 dimensions maxed
- (ci+dlp) 85% pipeline score + code audit fixes
- (ci) unified pipeline — build→test→push→e2e→release (biomimetic)
- remove wrong crates.io badge, update doc versions to v0.30.0, add property-based DLP tests
- (ci) pin cosign-installer to v4.1.1 (no v4 major tag yet)
- (ci) bump powerset timeout 5→8 min to cover setup overhead
- (ci) remove deprecated rust-cache inputs and fix shellcheck warnings
- (ci) bump GitHub Actions to latest major versions
- (ci) use rhysd/actionlint@v1 action instead of manual curl
- (ci) cargo hack group-features (not partition) + actionlint URL
- (ci) aggressive feature grouping to fix powerset timeout
- (ci) shard feature powerset into 4 parallel jobs
- (ci) use crane pull from GHCR instead of musl build in e2e
- (demo) grob foreground debug in logs pane + fresh audit tail
- (demo) grob foreground debug in logs pane + fresh audit tail
0.30.0 - 2026-03-26
- (dlp) PiiAction::Canary + fix deny.toml + clippy
- (e2e) restore clean grob-test.toml (remove config-swap pollution)
- (demo) 4-pane tmux — Claude Code + grob watch + logs + audit
- (demo) 2-pane real demo — grob exec claude + grob watch
- (demo) 4-pane tmux demo + Claude Code takeover at end
- (demo) auto-play demo + gitleaks ignore for fake AWS keys
- (ci) fix push race — scope pre-push hooks + release-plz paths filter
- (e2e) gitignore .bak files, remove tracked backup
- (deps) remove resolved advisories from deny.toml ignore list
- (e2e) S5 HIT flow script + fix config corruption
- (e2e) 100% feature coverage — output DLP + HIT + 3 VidaiMock instances
- (e2e) advanced audit/compliance tests + fix key leak in git
- (e2e) 98 hurl + fan-out/audit/compliance scripts — 90%+ coverage
- (e2e) 94 hurl tests + 12 audit scripts — full feature matrix
0.29.13 - 2026-03-26
- (ci) build static musl binary from current commit for e2e
- (ci) use crane to pull GHCR image for e2e tests
0.29.12 - 2026-03-26
- (ci) e2e tests use binary artifact from test job, not GHCR
- (ci) build grob from current commit via rust-cache, not GHCR latest
- (deps) update aws-lc-sys 0.39.0, aws-lc-rs 1.16.2, rustls 0.23.37
0.29.11 - 2026-03-26
- (cache) cache hits now pass through format translation
0.29.10 - 2026-03-26
- (e2e) relax cache-hit assertions for CI stability
0.29.9 - 2026-03-26
- (e2e) jwks_refresh_interval=5s for fast JWKS retry in CI
0.29.8 - 2026-03-26
- (ci) single e2e job using GHCR image + podman pod
0.29.7 - 2026-03-26
- (e2e) N13 health endpoint path (/healthz -> /health)
0.29.6 - 2026-03-26
- (e2e+ci) pod-based CI job, audit chain, compliance + virtual key tests
0.29.5 - 2026-03-26
- (auth+compat) JWKS EC P-256 support + OpenAI response translation
0.29.4 - 2026-03-26
- (e2e) VidaiMock + Makefile + 69 passing tests
- (e2e) black-box test suite under tests/e2e/
- cli-cycle improvements — sync, diagrams, bench split
0.29.3 - 2026-03-24
- (server) gate webhook relay on both policies + watch features
- (readme) clarify install options — brew vs curl
0.29.2 - 2026-03-24
- (bench) gate policy_rule_count behind #[cfg(feature = "policies")]
0.29.1 - 2026-03-23
- (bench) proxy+policy scenarios + fix --no-default-features CI failure
- (adr) WI-9 federated multi-enterprise HIT authorization
0.29.0 - 2026-03-23
- (policies) remove touchid (not cross-platform), scope WI-8 to yubikey + openbao
0.28.0 - 2026-03-22
- (tooling) policy benchmark, test-util mocks, EventBus no-op, HarnessConfig, otel cfg fix
- (policies) WI-7 HIT Gateway — BufferingInput, arg-pattern deny, flag_patterns, receipts, multisig/quorum, approval endpoint
- update ADRs, benchmarks v0.26.0, OpenAPI spec, README, add policies explanation
0.27.0 - 2026-03-22
- (policies) simplify merge, use enums, builder pattern
0.26.0 - 2026-03-22
- (policies) WI-5/6 quorum voting + multi-sig co-signing
- (log-export) WI-3 wire encrypted content emit in dispatch
- (policies) WI-2 wire policy evaluation into dispatch handlers
- (policies) WI-1 wire config + init for policy engine and HIT
- gitignore docs/reviews/ (generated audit reports)
- add key pool configuration to CONFIGURATION.md
- sync code→docs gaps (policies, encrypted audit, CLI commands)
0.25.3 - 2026-03-22
- (docs) sync stale versions, broken link, routing priority, LOC count
0.25.2 - 2026-03-22
- (ci) remove globset dependency from access_policy.rs
0.25.1 - 2026-03-22
- (bench) split bench.rs (1835 lines) into 5 submodules
- add # Errors sections to 5 public APIs + DLP/OAuth diagrams
- gitignore codeql-db/ and codeql-results.sarif
0.25.0 - 2026-03-22
- (hit) P4 HIT tool authorization engine + hash-chained receipts
- (policies) P3 wire policy engine into dispatch pipeline
- (log-export) P2 encrypted audit export with age envelope encryption
- P5 HIT quorum voting + multi-sig co-signing design spec
0.24.7 - 2026-03-22
- (policies) implement P1 policy engine with glob-based matching
- (adr) update 0006 with HIT tool interception, auth methods, risk matrix
- (adr) 0006 unified policy engine + encrypted audit + HIT gateway
0.24.6 - 2026-03-21
- (dlp) align docs and metrics with implementation
0.24.5 - 2026-03-21
- add brew install to README + CI homebrew test job
- (release) auto-update Homebrew tap on release
- (readme) add benchmarks link, contributing section, trim badges
- (bench) use req/s header and readable numbers in benchmark tables
- translate French to English + deduplicate diagrams
- convert 17 ASCII diagrams to Mermaid across 9 files
0.24.4 - 2026-03-21
- (ci) scope gitleaks to pushed commits only
0.24.3 - 2026-03-21
- (deps) resolve 5 security advisories + harden pre-push hooks
0.24.2 - 2026-03-21
- (ci) use gitleaks binary instead of paid org action
- add gitleaks secret scanning to CI pipeline
- (bench) add AWS benchmark results with competitor comparison
- (roadmap) clarify XDP DLP (byte scan, no JSON needed) + single-node gains
- (roadmap) upgrade Phase 4.4 with Hyperscan kernel DLP
- (roadmap) complete rewrite with Tier 4 mesh + pricing + benchmarks
0.24.1 - 2026-03-21
- (bench) align bench clients with real server optimizations
0.24.0 - 2026-03-21
- (bench) 5 payload sizes matching real tool traffic
0.23.1 - 2026-03-20
- (ci) limit feature powerset to depth 2 (66 combos instead of 1561)
0.23.0 - 2026-03-20
- (bench) escalation mode with visual bar charts
0.22.1 - 2026-03-20
- (ci) install cargo-semver-checks before running it
0.22.0 - 2026-03-20
- resolve merge conflicts (accept enhanced bench)
0.21.0 - 2026-03-19
- (cli) grob bench — self-contained performance evaluation
- clean up project tree structure
- correct benchmark headline to pure overhead (~100us)
- add direct-to-mock baseline for accurate overhead calculation
- add benchmark headline to README (227us P50 with all features)
- audit signing + proxy overhead infrastructure
0.20.1 - 2026-03-19
- (observability) x-grob-overhead-duration-ms header + DLP benchmark scenarios
0.20.0 - 2026-03-19
- multi-account key pool + config promotion pipeline
0.19.2 - 2026-03-19
- (windows) suppress clippy/dead-code warnings in Win32 FFI module
0.19.1 - 2026-03-19
- (ci) semver-checks baseline from git tag instead of crates.io
0.19.0 - 2026-03-19
- (security) mTLS client certs for providers + DLP key rotation
- (ci) add cargo-semver-checks and Semgrep SAST
0.18.0 - 2026-03-18
- security hardening + grob watch + OTel + virtual keys + log export + compliance + docs
0.17.1 - 2026-03-17
- (ux) gracefully disable providers with missing API keys instead of crashing
0.17.0 - 2026-03-16
- (security) Merkle tree batch signing for audit log + Ed25519 support
0.16.2 - 2026-03-16
- (security) resolve 21 CodeQL alerts (2 critical, 18 high, 1 medium)
0.16.1 - 2026-03-16
- (security) upgrade aws-lc-sys 0.37→0.38 and jsonwebtoken 9→10
0.16.0 - 2026-03-16
- bootstrap UX overhaul — wizard auth/compliance/budget + startup warnings
- upgrade quinn-proto 0.11.13 → 0.11.14 (RUSTSEC-2026-0037 DoS fix)
- add OWASP LLM Top 10 coverage reference
0.15.3 - 2026-03-09
- AutoMapper + memchr2 background pre-filter for router (-40%)
0.15.2 - 2026-03-09
- optimize router (-34%) and DLP pre-filter (-78% clean text)
0.15.1 - 2026-03-09
- lazy DLP regex compilation + harness mock backend fixes
0.15.0 - 2026-03-08
- rename AnthropicRequest → CanonicalRequest + add RequestExtensions
0.14.1 - 2026-03-08
- add prompt-caching-scope-2026-01-05 beta flag
0.14.0 - 2026-03-08
- add --reload flag to grob preset apply
0.13.2 - 2026-03-08
- let Release workflow be sole creator of GitHub Releases
- remove obsolete examples/oauth_login.rs
- add doc coverage gate to CI and pre-push hook
0.13.1 - 2026-03-08
- convert release to draft before asset upload to avoid immutable error
- add doc comments to all 430 undocumented public items
- add capabilities inventory and fix 3 accuracy issues
- update DCI report to v0.13.0 (score 8.4/10)
- add ~100 doc comments, curl examples, feature highlights, fix OCI license
0.13.0 - 2026-03-04
- add record & replay sandwich testing harness
- correct license badge from ELv2 to AGPL-3.0
0.12.4 - 2026-03-03
- use fast-forward for develop→main sync to avoid merge commit pollution
- fix 11 accuracy issues (stale paths, phantom modules, version bumps)
0.12.3 - 2026-03-03
- remove unsupported crane index annotation (mutate on index not supported)
0.12.2 - 2026-03-03
- upgrade crane to v0.21.2 for --annotation support in release pipeline
0.12.1 - 2026-03-03
- gate DlpPipeline trait impl behind dlp feature flag
0.12.0 - 2026-03-03
- add MCP tool matrix feature (calibration, scoring, bench engine)
- doc-forge audit — fix 9 accuracy issues, fill config gaps, update LLM layer
- add comprehensive project documentation (Diataxis + LLM layer)
0.11.2 - 2026-03-02
- add OCI annotations to container images for GHCR description
0.11.1 - 2026-03-02
- add Windows platform support via #[cfg] guards
0.11.0 - 2026-03-02
- add pass-through provider mode for wildcard model routing
0.10.3 - 2026-03-02
- extract ProviderBase, clean code audit fixes, and MS Rust guidelines
0.10.2 - 2026-03-02
- split large files to fit 200-500 line ideal zone
0.10.1 - 2026-03-02
- use -X theirs strategy in sync-main workflow for conflict resolution
0.10.0 - 2026-03-02
- trait contracts + adaptive provider scoring
- codebase hardening — dead code, JWT cache, handler dedup, feature flags, tests
- wire dead code into handlers and remove #[allow(dead_code)]
- (dx) add nextest, insta, tracing-test, coverage, cargo-chef
- enable git_only mode in release-plz for tag-based versioning
- configure release-plz to bump from git tags instead of crates.io
- use current_month() in migration test to avoid month rollover failure
- remove invalid release_branch field from release-plz.toml
- split god modules and extract submodules for maintainability
- clean code overhaul — split god modules, extract functions, add tests
- apply cargo fmt formatting
- release v0.9.0 (#5)
- add develop branch workflow and auto-merge release PRs
- enable auto-merge for release-plz PRs
0.9.0 - 2026-02-26
- wire dead code into handlers and remove #[allow(dead_code)]
- (dx) add nextest, insta, tracing-test, coverage, cargo-chef
- remove invalid release_branch field from release-plz.toml
- add develop branch workflow and auto-merge release PRs
- enable auto-merge for release-plz PRs
- Budget enforcement: global, per-provider, and per-model monthly spend limits (
[budget],budget_usd) - Spend tracking: persistent monthly spend in
~/.grob/spend.jsonwith auto-reset grob spendcommand: show current month's spend breakdown by provider and model- Spend in
grob status: shows spend summary line - Dynamic pricing: fetches model prices from OpenRouter API at startup (refreshes every 24h)
- OAuth cost tracking: OAuth/subscription requests correctly tracked as $0
- Rate limit visibility: parses and logs Anthropic rate limit headers, warns when low
- Prometheus metrics:
grob_spend_usd,grob_request_cost_usd,grob_ratelimit_hits_total,grob_ratelimit_tokens_remaining,grob_input_tokens_total,grob_output_tokens_total - CI: cargo-audit (security advisories), cargo-deny (licenses/bans), cargo-machete (unused deps)
- Security: HTML-escape OAuth callback parameters to prevent reflected XSS
- Security: Use constant-time comparison for API key authentication (
subtlecrate) - Security: Redact API keys in
/api/configJSON response - Security: Remove sensitive data from debug logs (OAuth codes, PKCE verifiers, token responses, upstream bodies)
- Bug: Default port mismatch (serde default was 3456, docs/template was 13456) -- now consistently 13456
- Bug:
auth_typevalue in default config template used"api_key"instead of correct"apikey" - Bug:
grob modelhid providers without explicitenabled = true(now usesis_enabled()) - Bug: Parse errors returned HTTP 500 instead of HTTP 400
- Bug:
SIGCONTused for process existence check instead of signal 0 (no side effects) - Docs: Removed all stale Admin UI / web UI / RapidSpec references (no admin UI exists)
- Docs: Fixed OAuth callback HTML: "admin panel" references changed to "terminal"
- Docs: Fixed default config template: removed non-existent "web UI" references
- Docs: Rewrote design-principles.md for CLI-only project (removed Admin UI sections)
- Docs: Removed Admin UI references from gemini-integration.md
- Docs: Fixed CONFIGURATION.md values: tracing path,
omit_system_promptdefault,auto_syncdefault,auth_typevalue - Docs: Added missing
project_id/locationVertex AI fields to CONFIGURATION.md - Docs: Fixed OAUTH_SETUP.md: "Future" endpoints label (already implemented), added refresh/delete endpoints
- Docs: Updated stale model names (claude-sonnet-4-5 → 4-6, claude-opus-4-1 → 4-6) across presets, configs, tests
- Docs: OpenAI streaming and tool calling marked as unsupported but were implemented
- Docs: Documented
[server.tracing],prompt_rules,inject_continuation_prompt, presetsync_interval/auto_sync - Docs: Rewrote CLAUDE.md for actual project architecture (was stale RapidSpec template)
- License: Switched from Elastic License v2 (ELv2) to AGPL-3.0 with commercial dual licensing
- Dependency:
metrics-exporter-prometheusnow useshttp-listenerfeature only (removes OpenSSL-licensedaws-lc-sys)
- Unused dependencies:
config,dashmap,oauth2,tiktoken-rs,tokio-stream,tower,tower-http
0.7.0 - 2026-02-23
- publish container image to ghcr.io on release
- PAT for release-plz, branch protection, copyright fix