Security release — we recommend all users upgrade. v1.15.1 closes gaps in how sources are processed and requires content-core 2.2.1, which hardens URL fetching. It also ships the documentation rewrite and a handful of small fixes. Validated with the backend and frontend suites and a hands-on pass over the published 1.15.1 image.
🔒 Security
- Source processing now enforces the uploads-directory and URL checks in the background worker itself, so they apply on every path that processes a source, not only when a source is created.
- Requires
content-core2.2.1 or later, which refuses link-local and cloud-metadata addresses on every redirect hop when fetching URLs. POST /api/commands/jobs, the generic "submit any background command" endpoint, is removed. Nothing in Open Notebook used it; every operation has its own endpoint. Job status (GET /api/commands/jobs/{job_id}) is unchanged.
Security advisories with the details will be published on this repository.
📚 Documentation
Every page under docs/ was checked against v1.15.0 and rewritten where it described an older or imagined product (#1458, #1459, #1460, #1461): one canonical install path built on the shipped docker-compose.yml, a first-run flow that ends in a working chat, a complete environment-variable reference, troubleshooting keyed on the exact error messages the app shows, and development docs rewritten from the code.
🐛 Notable fixes
- Timeouts no longer read as connection failures: a model that doesn't answer within
ESPERANTO_LLM_TIMEOUTnow says the provider took too long and how to raise the limit - Error hints point to screens that exist (Manage → Models, Podcasts → Profiles) (#1457)
- Italian is selectable in the language menu, with dates formatted in Italian (#1457)
make start-allstarts SurrealDB again; the legacySURREAL_ADDRESS/SURREAL_PORTfallback builds a valid database URL (#1457)- Docs no longer recommend settings that do nothing (
API_CLIENT_TIMEOUT, editing.envplusdocker compose restart) (#1456)
⚠️ Behavior changes for self-hosters
- Anything that called
POST /api/commands/jobsdirectly will now get405 Method Not Allowed. Use the specific endpoints (for examplePOST /api/sources) instead. - A source whose file is outside the uploads directory, or whose URL targets a link-local or cloud-metadata address, now fails with a permanent error instead of being processed. Private and loopback addresses (Ollama, LM Studio, other local services) are still allowed.
Full changelog: v1.15.0...v1.15.1