Skip to content

v0.5.0

Choose a tag to compare

@devin-ai-integration devin-ai-integration released this 25 Sep 17:33
· 61 commits to main since this release

Prebuilt cauce binaries. Fully self-contained (engines + UI + AI + archive compiled in). macOS: xattr -d com.apple.quarantine ./cauce after untarring. The ddgs exec engine needs a source checkout + python3 (uv sync --project sdk/python --extra ddgs) — custom builds only.

What's Changed

  • chore(repo): license split, DCO, repo hygiene by @espetro in #70
  • feat(workspace): cargo workspace, mise validate gate, CI, pre-push by @espetro in #71
  • feat(core): oxe-core domain types and traits (parent 4.2) by @espetro in #72
  • feat(engines): exec runtime, python SDK, ddgs_auto.py (W0-07) by @espetro in #73
  • feat(engines): replay engine, cassettes, and oxe record (W0-06) by @espetro in #74
  • feat(store-sqlite): schema, migrations, Store impl (W0-04) by @espetro in #75
  • feat(server): observability foundation (W0-05) by @espetro in #76
  • feat(core): config loader, interpolation, XDG dirs, resource-adaptive defaults (W0-11) by @espetro in #77
  • feat(core): SearchPipeline v0 (W0-08) by @espetro in #78
  • feat(server): axum JSON routes and the routes-table test (W0-09) by @espetro in #79
  • feat(server): HTMX search page and results partial (W0-10) by @espetro in #80
  • W0-12: golden path, budget and live gates by @espetro in #81
  • Wave-0 whole-wave review fixes by @espetro in #91
  • chore(infra): cut worktree target/ footprint ~60% and document the pattern by @espetro in #93
  • feat(core): HttpClient, Egress trait, token bucket, UA policy by @espetro in #94
  • feat(core): tier-2 FTS5 lexical cache (W1-10) by @espetro in #96
  • W1-07 Admission: singleflight, bounded queue, stale/429 by @espetro in #97
  • feat(engines): declarative YAML runtime + oxe engine test by @espetro in #101
  • feat(server): W1-13 loopback request guard and non-loopback bind refusal by @espetro in #102
  • feat(server,cli): MCP server over streamable HTTP and stdio (W1-08) by @espetro in #98
  • W1-06 Engine health: EWMA and circuit breaker, persisted by @espetro in #100
  • feat(cli): oxe tail JSONL pretty-printer (W2-09) by @espetro in #105
  • fix(core): validate CacheKey on deserialization by @espetro in #104
  • feat(engines): bing declarative spec and fixtures (W1-03) by @espetro in #106
  • fix(core): redact secret config paths regardless of value origin by @espetro in #103
  • feat(engines): wikipedia OpenSearch spec with fixtures (W1-05) by @espetro in #108
  • feat(engines): brave declarative spec and recorded fixtures (W1-04) by @espetro in #107
  • feat(metrics): W1-09 OTel registry, /metrics, /api/stats extension by @espetro in #99
  • chore(server): bump CURRENT_WAVE to 1 by @espetro in #112
  • feat: oxe serve --headless modes + cargo feature gates (W1-12) by @espetro in #111
  • fix(engines): eager exec spawn and re-warm after deadline kill by @espetro in #114
  • fix: wave-1 whole-review findings — mcp pipeline parity, redacted PUT, metrics label by @espetro in #115
  • feat(cli,docs): W1-11 cutover — live smoke canary, install + agent docs by @espetro in #113
  • fix(server): let *.localhost hosts reach /mcp by @espetro in #116
  • docs(install): OXE_ENGINES cannot pin embedded specs; disable ddgs in config by @espetro in #117
  • docs(agents): wave-1 cutover notes by @espetro in #118
  • refactor!: rename project oxe to cauce (crates, binary, env, paths, metrics) by @espetro in #124
  • fix(server): vendor htmx-2 json-enc extension by @espetro in #125
  • fix(engines): normalize empty Ok responses to NoResults + ddgs emits no_results by @espetro in #126
  • fix(search): strict 400 unknown_engines for pins naming unknown ids by @espetro in #127
  • fix: #89 polish batch — help exit code, blank-query 400, raw query in history by @espetro in #129
  • fix(server): serve embedded favicon at GET /favicon.ico by @espetro in #130
  • feat(w2-11): OpenSearch descriptor and cauce search CLI formats by @espetro in #132
  • feat(engines): exec protocol v2 forwards safesearch/time_range/params by @espetro in #128
  • feat(server): /cache admin page (W2-04) by @espetro in #133
  • feat(ui): add settings page and model picker by @espetro in #134
  • feat(server): /audit page and /trace/{id} timeline page (W2-06) by @espetro in #131
  • fix(ui): /audit + /trace accessibility and responsive follow-ups by @espetro in #139
  • feat(search): stream engine results over SSE by @espetro in #137
  • feat(ui): dashboard page by @espetro in #136
  • fix(ui): /settings loop findings (oob ids, cache deletes, contrast) by @espetro in #140
  • feat(ui): history page with nested clicks and cache state by @espetro in #135
  • feat(server): engines page at /engines (W2-05) by @espetro in #138
  • feat(ui): shared header, theme toggle, mobile nav (W2-08) by @espetro in #142
  • feat(core): open breaker on consecutive Parse/Transport errors (W3-07) by @espetro in #143
  • fix(config): engine id charset validation + injective fe_id (issue #141) by @espetro in #144
  • fix: reject invalid persisted engine ids in stats + reset (issue #145) by @espetro in #146
  • refactor(core): decompose pipeline.rs into a module directory (W3-08) by @devin-ai-integration[bot] in #153
  • refactor(server): decompose handlers.rs into a module directory by @devin-ai-integration[bot] in #162
  • refactor(store-sqlite): decompose store.rs into domain modules + escaping proptests by @devin-ai-integration[bot] in #165
  • test(engines): proptest declarative redirect/parse boundaries by @devin-ai-integration[bot] in #168
  • test(server): shared tests/support harness, routes.rs domain split, case tables by @devin-ai-integration[bot] in #169
  • refactor(server): extract Exa wire adapter from mcp.rs + boundary proptests by @devin-ai-integration[bot] in #164
  • refactor(server): decompose html.rs into page-domain modules by @devin-ai-integration[bot] in #163
  • refactor(core): decompose conformance.rs into domain modules by @devin-ai-integration[bot] in #167
  • docs(agents): MEMORY note — W3-08 follow-through hygiene batch by @devin-ai-integration[bot] in #170
  • refactor(core): decompose config.rs into a module directory by @devin-ai-integration[bot] in #166
  • feat(merge): configurable RRF k, reliability weights, host collapse + AMP URL folds (W3-03) by @devin-ai-integration[bot] in #171
  • feat(core): stale-while-revalidate tier-1 serve with cache hygiene (W3-02) by @devin-ai-integration[bot] in #172
  • feat(config): health.* pins for the W3-07 degraded breaker by @devin-ai-integration[bot] in #173
  • feat: engine relevance evals (W3-05) by @devin-ai-integration[bot] in #174
  • fix(engines): evaluate detect.blocked only on zero-match responses (#109) by @devin-ai-integration[bot] in #175
  • feat(server): serve GET /api/suggest for OpenSearch suggestions by @devin-ai-integration[bot] in #176
  • feat(engines): request.market lang→market map and {market} token (#110) by @devin-ai-integration[bot] in #177
  • feat(engines): nightly --live drift canary over shipped specs (W3-06) by @devin-ai-integration[bot] in #178
  • feat(core): ai::openai SSE chat client with tool-call assembly (W4-01) by @devin-ai-integration[bot] in #182
  • docs(plans): lift the W2-10 gate on W4-01 by @devin-ai-integration[bot] in #179
  • chore: scrub Bifrost references from codebase by @devin-ai-integration[bot] in #181
  • feat(core): ai::answer grounded-answer tool loop (W4-02) by @devin-ai-integration[bot] in #183
  • feat(server): POST /api/answer SSE route and /answer page (W4-03) by @devin-ai-integration[bot] in #184
  • feat(evals): offline AI answer evals + CI smoke gate (W4-04) by @devin-ai-integration[bot] in #185
  • feat(ai): Anthropic Messages-protocol provider (W4-05) by @devin-ai-integration[bot] in #186
  • feat(archive): fetch-and-index pipeline, /api/pages, click beacon, MCP fetch_and_index (W5-01) by @devin-ai-integration[bot] in #187
  • Add archive click-beacon e2e tactics to testing-cauce-serve skill by @devin-ai-integration[bot] in #188
  • feat(archive): /archive page, GET /api/archive, DELETE /api/pages/{url} (W5-02) by @devin-ai-integration[bot] in #191
  • fix(archive): block private/reserved egress targets in fetcher by @devin-ai-integration[bot] in #190
  • chore(release): GitHub-release pipeline + v0.5.0 prep by @devin-ai-integration[bot] in #192
  • feat(archive): search_archive hybrid RRF over pages_fts + cache_fts (W5-03) by @devin-ai-integration[bot] in #193
  • fix(ci): run x86_64-apple-darwin leg on macos-15-intel by @devin-ai-integration[bot] in #195

New Contributors

Full Changelog: https://github.com/espetro/cauce/commits/v0.5.0