github lfnovo/open-notebook v1.10.0

12 hours ago

Highlights: LaTeX rendering in chat, per-type bulk chat-context controls, Turkish UI, a security fix, and a batch of ingestion/search reliability fixes.

Upgrade note: this release adds database migration 15 (a flexible config object on the credential table), applied automatically on API startup.

🔒 Security

  • Bumped Starlette → 1.2.1 and FastAPI → 0.136.3 to address CVE-2026-48710 ("BadHost") (#859)

✨ Added

  • LaTeX math rendering in chat — inline $...$ and display $$...$$ via KaTeX (#606)
  • Bulk chat-context actions in the Sources and Notes column headers — sources: insights only / full content / exclude all; notes: include / exclude all — translated across all 14 locales (#223)
  • Turkish (tr-TR) localization (#871)
  • NEXT_PUBLIC_API_TIMEOUT_MS to configure the frontend API request timeout (#880)

🔧 Changed

  • Prominent "Retry processing" button on failed source cards (#726)
  • Docker base image → Debian trixie + Node.js 22.x (#914)

🐛 Fixed

  • Sources that fail to ingest are now marked failed (so the retry button actually appears) instead of being saved as completed with the extraction error as their body (#726)
  • Podcast generation now uses the notebook's real content via Notebook.get_context() (#864)
  • PUT profile handlers use model_dump(exclude_unset=True) so partial updates don't wipe unset fields (#860)
  • OpenRouter embedding modality is now exposed (#842)
  • POST /sources/{id}/retry: no longer returns 400 for every source (#861), and no longer 500 from a double-prefixed command id
  • GET /sources/{id} returns 404 (not 500) for a missing or deleted source
  • Text search falls back to vector search on a search::highlight "position overflow" (#648)
  • POST /api/search rejects a non-positive limit with 422 (#863)
  • Ollama num_ctx override is now persisted via a flexible config object (migration 15) (#875)
  • Worker drains legacy embedding jobs via command aliases (#695, #876)
  • Updated AI provider configuration docs (#873)

⚡ Performance

  • Memoized the notebook source list and stopped polling completed sources (#503)

📚 Docs

  • Code of Conduct (#856), local quickstart + worker step (#900), export_docs.py Table of Contents (#865)

📦 Dependencies

  • Multiple dependency bumps, including cryptography 46→48, langchain 1.2→1.3, langchain-anthropic, aiohttp, tornado, and frontend dev dependencies.

🙌 Contributors

Thanks to everyone who shipped a PR in this release: @aaronjmars, @doganreis, @Federicorao, @fboudra, @krataratha, @ltianyi992, @mvanhorn, @royfrancis, @zichen0116, and @lfnovo.

Full Changelog: v1.9.0...v1.10.0

Don't miss a new open-notebook release

NewReleases is sending notifications on new releases.