Releases
v0.1.2
Compare
Sorry, something went wrong.
No results found
0.1.2 (2026-07-27)
Features
clickhouse: typed batch writer for llm_traces (m2.5.2) (#381 ) (f883e79 )
db: directives and directive_versions schema (m2.3.1) (#356 ) (0a4f366 )
db: sessions and checkpoints schema (m2.4.1) (#366 ) (cc85307 )
infra: clickhouse llm_traces table schema (m2.5.1) (#378 ) (3536d1e )
proxy,auth: token revocation propagation via Redis pub/sub (m2.2.2) (#353 ) (3434a08 )
proxy: async trace emitter — ClickHouse integration in LLM handler (m2.5.3) (#383 ) (95783d7 )
proxy: auth cache — bloom filter + in-process LRU for token validation (m2.2.1) (#350 ) (fe8b3b0 )
proxy: centralise provider error mapping to stable envelope (m2.1.5) (#348 ) (086ad61 )
proxy: directive resolver with Redis cache and Postgres fallback (m2.3.2) (#360 ) (2bf5dcb )
proxy: idempotency-key Redis dedupe for provider retries (m2.1.6) (#388 ) (985dc90 )
proxy: m2.1.3 OpenAI SSE streaming dual-write forwarder (#342 ) (e94d3b0 )
proxy: provider routing middleware — selects provider by model (m2.1.4) (#345 ) (d38acab )
proxy: session idle-timeout sweeper marks abandoned sessions (m2.4.4) (#375 ) (6fe142c )
proxy: session lifecycle management in LLM request handler (m2.4.3) (#372 ) (a754dc9 )
proxy: session store — create, checkpoint, close (m2.4.2) (#368 ) (67fa0da )
proxy: system prompt injection with configurable strategy (m2.3.3) (#363 ) (fb43000 )
Bug Fixes
ci: changelog deploy, daily benches, faster profiles (#294 ) (a431a49 )
ci: exclude CI-only lockfiles from Syft SBOM for Grype (#324 ) (28bb255 )
ci: resolve SonarQube workflow security hotspots (#320 ) (808799e )
deps: override js-yaml to clear GHSA-52cp-r559-cp3m (#311 ) (7206f73 )
security: grpc bump, CodeQL alignment, dependabot go-git ignore (#326 ) (977685e )
web: show desktop theme segmented control on cold load (#297 ) (c8f0ffa )
0.1.1 (2026-07-19)
Features
web: paper/ink landing, blog, changelog, and roadmap redesign (#280 ) (62ebbea )
web: redesign changelog page with curated release notes (#243 ) (636bdd7 )
Bug Fixes
ci: repair Tagged Release workflow_dispatch startup (#240 ) (3973c83 )
ci: resolve tagged release job outputs from step context (#242 ) (86f7f82 )
ci: run version release on merge to create release tag (#238 ) (b9cd249 )
ci: skip DCO on merge commits; strip CR in PR tracking (#275 ) (71026a3 )
ci: split tagged release docker job to fix workflow_dispatch (#246 ) (0d47fac )
ci: stop Vitest hang from blocking web deploy (#282 ) (2e57189 )
ci: use cosign bundle format for SBOM signing (#247 ) (769a998 )
ci: weekly bench publish, every-PR comments, cosign sigstore upload (#248 ) (06c8e8c )
web: restore landing marquee and fix mobile overflow (#286 ) (3ebe885 )
0.1.0 (2026-07-13)
Features
auth: token creation and management (m1.1.4) (#47 ) (0ada899 )
auth: validate PAT against Postgres (m1.1.3) (#16 ) (5691dd8 )
bench: build world-class benchmark pipeline and IBEX dashboard (c7343de )
bench: data pipeline and docs benchmarks section (#176 ) (08474f8 )
db: users and agents schema, token FK constraints (m1.1.7) (#57 ) (59e7e04 )
docs: apply Matte Graphite design tokens (D.2.2) (#104 ) (e20d165 )
docs: ASCII text-only Mermaid diagrams (#129 ) (901ec09 )
docs: bootstrap Fumadocs app at docs/app (D.2.1) (#101 ) (fe58260 )
docs: MDX component catalogue (D.2.3) (#108 ) (1d317f8 )
docs: migrate to Cloudflare Pages static export (#143 ) (a6d9269 )
docs: navigation shell (D.2.7) (#106 ) (37c134d )
docs: unified landing and docs on ibexharness.com (#189 ) (1aab5d2 )
docs: wave 14 mobile nav, perf, and mermaid ASCII fix (#137 ) (e2040f1 )
docs: Wave 4-5 milestones (D.2.4-D.3.1) (#114 ) (3265689 )
infra: graceful shutdown with connection draining for auth and proxy (m1.2.7) (#68 ) (716565e )
proxy: add llm provider interface and registry (m2.1.1) (0841d4a )
proxy: agent identity verification via gRPC ValidateAgent (m1.2.5) (#64 ) (6d244cf )
proxy: auth gRPC client (m1.2.1) (42ac2f9 )
proxy: input validation and stable error envelope (m1.2.3) (#55 ) (0762f8b )
proxy: openai non-streaming HTTP client (m2.1.2) (#211 ) (9d2c383 )
proxy: rate limit skeleton (m1.2.4) (#62 ) (b4a1aa5 )
proxy: request ID generation and context correlation middleware (m1.2.6) (#66 ) (b5653fb )
proxy: request normalization (m1.2.2) (26a727e )
web: restore warm landing visuals site-wide (#195 ) (45c1323 )
Bug Fixes
auth: correct ListTokens keyset cursor pagination (6563132 )
bench: deploy dashboard via GitHub Actions Pages (#175 ) (970d80e )
bench: k6 v0.53 parsing, real proxy benches, and Matte Graphite dashboard (bfc0a75 )
bench: pre-PR benchmark publish and static docs embed (b953161 )
bench: resolve baseline_sha from published history when schema unset (#179 ) (461c8a2 )
bench: secure benchmark bot integration and fix dispatch payload (#178 ) (a33daca )
bench: show sub-ms stage latencies and validate go microbench data (#184 ) (fdd0caa )
bench: unblock k6 export and CI load profile (#173 ) (401ba71 )
ci: allow .github markdown in repo layout guard (6f00382 )
ci: complete workflow hardening and Sonar review fixes (#158 ) (20c4772 )
ci: correct codecov pin and gitleaks allowlist for test fixture (bc62f73 )
ci: drop production HTTP smoke from docs deploy (#148 ) (1629673 )
ci: exclude infra from handwritten coverage gate scope (a41dd45 )
ci: harden version release workflow reporting (#230 ) (41d80e9 )
ci: improve workflow visibility and standardize release flow (#169 ) (22fc040 )
ci: make codecov upload non-blocking and annotate integration grpc tests (41c1384 )
ci: post semantic-pr-title on version release PRs (#234 ) (ea3004c )
ci: repair action SHAs, Scorecard permissions, and pin guard (#167 ) (b53fc48 )
ci: repair SBOM Grype install and OpenSSF scorecard gaps (#213 ) (5a4ea4f )
ci: resolve release PR number from release-please pr JSON (#236 ) (3d91716 )
ci: run gitleaks full-repo scan to avoid root-commit range error (9766982 )
ci: stabilize docker-publish and benchmark history (#168 ) (4a78127 )
ci: stabilize integration coverage and resolve lint/secrets (5d9fdae )
ci: stabilize SEC4 rate-limit probe; sync CURRENT_STATE after #92 (#93 ) (c729453 )
ci: unblock proxy config tests, lower coverage gate to 80% (17da8ed )
ci: use valid gocovmerge pseudo-version (b90e25f )
docker: bump golang build image to 1.25.12 for CVE-2026-39822 (#198 ) (657a142 )
docs: deploy with Node 22 and pnpm wrangler on main (#131 ) (82ed7a1 )
docs: hoisted pnpm for OpenNext Workers runtime (#132 ) (b19f3a2 )
docs: move fumadocs CSS import before Tailwind directives (#103 ) (e218db8 )
docs: repair Cmd+K search and cut over domain to Pages (#144 ) (06d0336 )
docs: repair static export Cmd+K search on Pages (#146 ) (4c669fe )
docs: restore 3-column layout broken by page-enter wrapper (#119 ) (bca974d )
docs: route brand to marketing site and align cross-domain SEO (#153 ) (8ec859f )
docs: scan JS chunks in deploy smoke for search index URL (#145 ) (0eba96d )
docs: serve search index as static public asset (#142 ) (45028db )
docs: skip filesystem mtime on Cloudflare Workers (#133 ) (ded5ccd )
docs: unblock deploy, order CI jobs, optimize nav logo (#147 ) (61b0bda )
docs: use static Orama search for Cloudflare Workers (d131878 )
docs: wave 14 quality gates remediation (re-land #137 ) (#139 ) (cc18484 )
dx: local dev smoke, db-seed on Windows, and migration repair (m1.4.1) (60ace91 )
move integration helpers into repository_test; gofmt chat cases (4de673c )
proxy: close burst probe bodies and serialize integration tests in CI (cdcb647 )
release: enforce pre-1.0 versioning standard (c961e06 )
remove unused authMessageTestCases helper (9a51b49 )
remove unused field from uuid test cases (196ec52 )
test: remove hanging run test and cover config nil pointer redaction (e5ffdc7 )
use full semgrep nosemgrep id for test gRPC servers (aa16c8d )
web: sanitize RSC prefetch txt files on static export (#197 ) (775ad1f )
Performance Improvements
docs: reduce CLS and enforce static doc pages (#116 ) (c9031be )
[Unreleased]
Added
Idempotency-Key Redis dedupe for non-streaming chat (m2.1.6): optional Idempotency-Key header, idempotency:{org_id}:{key} claim/commit in packages/idempotency, replay on hit, 409 IDEMPOTENCY_KEY_REUSE / IDEMPOTENCY_IN_PROGRESS, fail-open on Redis errors (ADR-0035 )
Proxy overhead latency benchmark (m2.6.1): real warm-path Go stage microbenches, BenchmarkProxyChatOverhead with mockllm, ADR-0034, auth/provider duration histograms, k6 full profile chat path (K6_USE_CHAT=1), pinned baseline.json
In-process mock LLM provider (packages/provider/mockllm): IBEX_LLM_MODE=mock returns immediate OpenAI-shaped JSON (smoke/chat 200 without OpenAI)
Async trace emitter (m2.5.3): proxy assembleTrace + post-response bounded-pool emit into ClickHouse Writer (success, incomplete stream, provider failure); auth/directive stage latency on context; never blocks LLM response on CH errors
ClickHouse client (packages/clickhouse, m2.5.2): concurrent batched Writer for ibex.llm_traces (clickhouse-go/v2, defaults batch 500 / flush 200ms), flush metrics, optional proxy shutdown drain when CLICKHOUSE_DSN is set
ClickHouse ibex.llm_traces schema (m2.5.1): golang-migrate runner under infra/migrations/clickhouse, 90-day TTL MergeTree, ADR-0033, compose-test ClickHouse, make clickhouse-migrate
Session idle-timeout sweeper (m2.4.4): proxy ticker marks stale active sessions abandoned under service-account RLS with advisory-lock multi-replica safety, Redis cache invalidation, metrics ibex_proxy_session_sweeper_*, and partial index idx_sessions_active_updated_at (migration 000011)
Proxy session lifecycle (m2.4.3): resolve/mint X-IBEX-Session-ID as sticky external_id before LLM forward; Redis session-state cache; response header on stream + non-stream; async non-dropping AppendCheckpoint pool drained on shutdown
Session store (packages/session): Postgres GetOrCreate / AppendCheckpoint / Complete with org RLS; proxy constructs store when POSTGRES_DSN is set; metrics ibex_proxy_session_* (milestone 2.4.2)
Sessions and checkpoints schema (ibex_core.sessions + checkpoints): Phase 2 subset with FORCE RLS, composite tenant FKs, append-only checkpoints, and extraction index (ADR-0032 ; migration 000010; milestone 2.4.1)
System prompt injection (packages/injection): pure Inject for system_first / system_append / user_prepend; proxy applies resolved directive to provider.Request.Messages before Complete (ADR-0031 ; milestone 2.3.3)
Directive resolver (packages/directive): Redis cache keyed {org_id}:directive:{agent_id} with Postgres fallback and pub/sub invalidation on directive_updates:{org_id}; proxy middleware resolves after agent verify (content stashed on context for 2.3.3 injection); metrics ibex_proxy_directive_*
Directive schema (ibex_core.directives + directive_versions): immutable versions with active_version_id pointer, org RLS, 32KB content cap (ADR-0030 ; migration 000009)
Auth cache revoke hardening: tombstone installed before index removal; LRU lookup re-checks revocation before serving cached claims
Token revocation propagation (packages/revocation): auth PUBLISH + proxy SUBSCRIBE on ibex:token:revocations with token_id events and InvalidateByTokenID (ADR-0029 ); metrics ibex_auth_revocation_publish_total, ibex_proxy_revocation_invalidate_total
Auth cache (packages/authcache): in-process invalid-token bloom + claims LRU for proxy ValidateToken (ADR-0028 ); metrics ibex_proxy_auth_cache_*; header X-IBEX-Auth-Cached on LRU hits
PR push hygiene Cursor rule (.cursor/rules/32-pr-push-hygiene.mdc) encoding #350 CI/merge lessons
Provider error mapping (provider.MapError / MapProviderError => apierror.Error) with sanitized details and Retry-After on upstream 429 (ADR-0026 )
Provider routing middleware (ChatParse + ProviderRouting) extracts model => provider lookup from the chat handler (ADR-0025 )
OpenAI streaming SSE dual-write forwarder (stream=true) with StreamAccumulator, flush-per-event, and stream metrics (ADR-0027 )
OpenAI non-streaming provider adapter (packages/provider/openai) and proxy wiring for POST /v1/chat/completions
Public API reference documentation at ibexharness.com/docs/api-reference
Cosign-signed SBOM assets on tagged GitHub Releases
OpenSSF Best Practices enrollment documentation and evidence map
Changed
Version release pipeline renamed to IBEX Version Release PR workflow (user-facing naming)
Canonical changelog moved to repository root for release tooling and badge scanners
Fixed
SBOM workflow Grype install (pinned version, checksum verify, fail-closed DB update retries)
Branch protection: required_linear_history on main
Security
Private vulnerability reporting documented in .github/SECURITY.md
Grype/Syft SBOM generation on main and release tags
Changelog discipline
Every version release PR must update this file.
Security-sensitive exploit details are not disclosed before patch adoption.
Breaking changes require a MAJOR bump or new REST API version plus a migration guide.
You can’t perform that action at this time.