Skip to content

Commit ae5c849

Browse files
authored
chore(release): cut v1.13.0 (#1126)
Bump version to 1.13.0 and date the changelog section. Also close the two remaining changelog gaps for changes merged since v1.12.0: - #1058: podcast generation honors speaker_profile in generate_podcast_command - #999: transformation create works from the empty state
1 parent 2279f3f commit ae5c849

3 files changed

Lines changed: 6 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.13.0] - 2026-07-13
11+
1012
### Added
1113
- **Opt-in heavy extraction runtimes.** Docling (layout parsing + OCR + image sources) and local Crawl4AI (JavaScript rendering) are now **opt-in**, installed automatically on first container startup when enabled — instead of being bundled into (or missing from) every image. Set `OPEN_NOTEBOOK_ENABLE_DOCLING=true` and/or `OPEN_NOTEBOOK_ENABLE_CRAWL4AI=true`; the downloads are cached on the `/app/data` volume so only the first boot is slow, and a failed install degrades gracefully (the app still starts, the engine is reported unavailable) with loud logs. A new `GET /api/capabilities` probe reports what's actually installed, and Settings → Content Processing disables the Docling engine, the Crawl4AI engine and the OCR toggle (with an env-var hint) until their runtime is available — so the UI never advertises an engine that isn't there. This keeps the default image lean (no Chromium, no multi-GB ML stack) while making both runtimes available on demand. A remote Crawl4AI server via `CRAWL4AI_API_URL` needs no local install. New hint strings added across all 14 locales; recorded as ADR-007 (#1122)
1214
- **OCR toggle** in Settings → Content Processing: a new "Enable OCR" checkbox controls whether the Docling engine runs OCR on scanned PDFs and images. It's on by default (matching content-core's behavior); turn it off to speed up processing of text-native documents. The setting is passed to content-core's `docling_ocr` config, and the label/help are translated across all 14 locales. OCR only runs through Docling, so the toggle takes effect once Docling is enabled (see #1122) (#1104)
@@ -33,6 +35,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3335
- `docker-compose.yml` now uses the YAML list (exec) form for the SurrealDB `command`, so `SURREAL_USER` / `SURREAL_PASSWORD` values containing spaces are passed as single arguments instead of being split; the mirrored snippets in the installation docs and README (which had drifted — no credential interpolation, SurrealDB port published on all interfaces) are back in sync with the shipped file (#1093)
3436
- zh-CN and zh-TW podcast toast descriptions (speaker/episode profile created/updated/deleted/duplicated) now include the profile name via the `{{name}}` placeholder, matching the other 12 locales (#1084)
3537
- Docker images now force the Next.js frontend to bind to `0.0.0.0` in the supervisord command itself, so container runtimes that inject `HOSTNAME` (e.g. Podman pods, where it resolves to `127.0.1.1`) can no longer make the UI unreachable. The `HOSTNAME` variable is no longer honored as a frontend bind override — set the new `FRONTEND_BIND_HOST` variable instead (#994)
38+
- Podcast generation now honors an explicitly supplied `speaker_profile` all the way into `generate_podcast_command`. The v1.12 fix stopped at the API boundary — the command still re-derived the speaker from the episode profile's `speaker_config` and silently dropped the override, so a direct caller's valid profile was ignored and generation failed when the episode profile pointed at a renamed/deleted speaker. The command now resolves `speaker_profile or episode_profile.speaker_config`, and the persisted episode plus the retry path reflect the actually-resolved profile (#1058)
39+
- Creating a transformation from the empty state works again: after deleting every transformation, the empty-state "New Transformation" button did nothing because the editor dialog was only mounted in the non-empty branch. The dialog is now rendered in both branches so the create flow works with zero existing transformations (#999)
3640

3741
## [1.12.0] - 2026-07-12
3842

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "open-notebook"
3-
version = "1.12.0"
3+
version = "1.13.0"
44
description = "An open source implementation of a research assistant, inspired by Google Notebook LM"
55
authors = [
66
{name = "Luis Novo", email = "lfnovo@gmail.com"}

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)