Skip to content

v0.1.2

Choose a tag to compare

@Rick1330 Rick1330 released this 27 Jul 10:32
bb610e2

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.