Tags: lfnovo/open-notebook
Tags
fix(podcasts): clarify episode max_tokens field and fix empty-state e… …rror (#1197) The episode profile "Max output tokens" field (#991) confused users: nothing explained what it controls, and whether it was a per-conversation, per-turn, or per-call limit. An empty field also showed "Must be a positive integer" — a scary error on an optional field — because a transient/empty number-input state produced NaN, which slipped past the nullable() guard into the positive() rule. - Add help text (all 14 locales) stating it caps output tokens per generation step — the outline and the full transcript, not a per-turn or conversation limit — and that blank uses the built-in defaults (3000 outline / 5000 transcript, from podcast-creator). - Add a placeholder ("Leave blank for defaults") so the empty field reads as intentionally optional rather than unfilled. - Map empty and NaN inputs to null in setValueAs, so an empty or half-typed value reads as "unset" and never trips the positive-integer rule. Genuinely invalid entries (0, negatives, decimals) still error. Field stays an optional override — no behavior change to generation. Verified in the browser: help renders, placeholder shows, empty field has no error, zero console errors. Frontend lint/test/build green.
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
chore(release): prepare v1.10.0 (#923) * chore(release): prepare v1.10.0 * style: fix import ordering flagged by ruff * fix(sources): return 404 for missing source and fix retry 500 from double-prefixed command id - GET /sources/{id} mapped NotFoundError to a generic 500; now returns 404 - POST /sources/{id}/retry double-prefixed the command id (command:command:...), raising 'too many values to unpack' after queuing; align with the create path - update retry test mock to realistic prefixed command id + guard against double-prefix; add 404 regression test * fix(sources): mark failed extraction as failed so retry surfaces (#726) content-core signals soft failures (unreachable/invalid URL) by returning title=Error + 'Failed to extract content:' body instead of raising, and the process_source command swallowed permanent ValueErrors into a success=False result. Since surreal-commands marks a job completed when the function returns, failed ingests showed status 'completed' and never offered the retry button. - source graph: detect the content-core failure sentinel and raise - process_source_command: re-raise ValueError (stop_on already prevents retry) so the job is marked failed and the source becomes retryable * feat(notebook): per-type bulk context actions for sources and notes (#223) - Sources context menu now offers 'insights only' (sources without insights are excluded rather than forced to full), 'full content', and 'exclude all' - Add the same bulk Context menu to the Notes column (include all / exclude all) - Bulk choices propagate to items loaded later via pagination - New locale keys (includeAllInsights/includeAllFull) across all 14 locales - Unit tests for the new bulk modes and note context helpers
fix(docker): retry npm ci to survive transient registry ECONNRESETs (#… …840) The multi-arch build runs `npm ci` for the arm64 image under QEMU emulation, which is slow and prone to transient `ECONNRESET` errors from the npm registry (exit code 152) — this broke the Development Build after a recent merge while the amd64 leg succeeded. Add npm fetch-retry settings and wrap `npm ci` in a retry loop (up to 5 attempts) in both Dockerfile and Dockerfile.single so a single network blip no longer fails the whole multi-arch build (incl. the release build).
feat: use token-based sizing for embedding chunking (#749) * feat: make chunk sizing token-based with 512-token default * fix: defer embedding debug token metrics * chore: lower default chunk size to 400 tokens and document rationale The previous 512-token default matched exactly the context window of BERT-family embedders like mxbai-embed-large, leaving no margin for: - tokenizer mismatch between our o200k_base measurement and the embedder's own WordPiece tokenizer - occasional splitter overshoot (RecursiveCharacterTextSplitter can emit chunks slightly above chunk_size when separators are sparse) - special tokens ([CLS], [SEP]) that consume context-window budget 400 tokens keeps ~20% headroom below 512 while still being a large improvement over the old character-based default for most content. Users with larger-context embedders can raise OPEN_NOTEBOOK_CHUNK_SIZE via env var. Also adds a CHANGELOG entry for the full PR behavior change. * chore: move chunking changelog entry under 1.8.5 Target release is 1.8.5 — moving the Changed section out of Unreleased. --------- Co-authored-by: Luis Novo <lfnovo@gmail.com>
chore: bump version to 1.8.2 and update changelog and provider docs - Bump version from 1.8.1 to 1.8.2 - Add changelog entry for DashScope and MiniMax provider support - Update provider counts across README and docs (16+ → 18+, 15+ → 17+) - Add DashScope and MiniMax to README provider support matrix
PreviousNext