Skip to content

v1.12.0 — Maintainability & Correctness

Latest

Choose a tag to compare

@lfnovo lfnovo released this 12 Jul 11:24
cd40f03

We recommend all users upgrade. v1.12.0 is a maintainability and correctness release: a full-repo cleanup (20+ focused PRs) that removed ~3,000 lines of dead code, fixed real user-facing bugs along the way, and turned on the quality gates that keep them fixed — validated end-to-end by the release test process (full suites, API+UI smoke, fresh-install and upgrade tests on the real images).

✨ New features

  • Live Anthropic model discovery — "Discover models" for Anthropic credentials now queries Anthropic's models API instead of a hardcoded 2024-era list, so new Claude models appear as soon as they ship (#1070)
  • GET /api/providers — new endpoint exposing provider metadata (modalities, docs, env-configured status) from a single backend registry (#1075)
  • Math rendering in chat — prompts now steer models to emit $$...$$/$...$ so formulas render via KaTeX instead of raw LaTeX code blocks (#1051)

🐛 Notable fixes

  • Errors now tell you what's wrong: a missing/misconfigured model returns a clear 422 with guidance (and not-found resources a 404) instead of a generic "Internal Server Error" — across all API routes (#1078)
  • Translations interpolate correctly in all 14 languages: counters, names and plurals no longer risk showing literal {count}/{name} placeholders; eight podcast toasts that always showed {name} are fixed (#1074, #1077)
  • Podcast dialog: rapid source toggling no longer causes a request storm with flickering token counts, and the dialog closes deterministically after the episode list refreshes (#1067)

🧹 Code health (why this release exists)

  • ~3,000 lines of dead code removed, including the entire leftover Streamlit-era service layer (#1053, #1054, #1056)
  • CI now gates every PR on ruff, ESLint, the frontend production build and mypy at zero errors (was: 197 baseline errors, not enforced) (#1062, #1068, #1076)
  • One provider registry drives env config, modalities, connection tests and discovery — adding a provider went from ~6 hand-synced locations to 2, both test-enforced (#1075)
  • Heavy copy-paste deduplicated across the chat routers, sources router, embedding commands and model discovery (#1069#1072)
  • Both Docker images are now built from a single multi-stage Dockerfile, eliminating drift between the regular and single-container variants — published image names and tags are unchanged (#1066)
  • Dependency diet: unused langchain-community and langchain-deepseek removed, upper bounds on the langchain family, and an undeclared transitive dependency made explicit (#1073)

⚠️ Behavior changes for self-hosters

  1. API error codes are now accurate — if you script against the API and matched on 500 for configuration mistakes, update your handling: configuration errors return 422, missing resources 404, provider rate limits 429, upstream provider failures 502 (#1078).
  2. POST /api/notebooks/{id}/context was removed — it duplicated POST /api/chat/context and had no known callers. If you used it, switch to POST /api/chat/context with body {notebook_id, context_config} (#1079).
  3. Upgrading from a version older than 1.6 with embedding jobs still queued: drain the queue on a 1.x release before upgrading past this version — the pre-1.6 job compatibility shims were removed (#1056).

🙏 Thanks

This cycle was a focused maintenance sprint by the core team, but it stands on the community's shoulders: thank you to everyone who reported the issues that shaped the cleanup backlog and the release checklist — your reports are what turned a "refactor" into a list of real bugs to fix. Special mention to the contributors whose earlier security work (#1042, #1046, #1049) set the quality bar this release enforces in CI.

Full details in the CHANGELOG.