v3.0.0-beta.rc2Pre-release
Paperless-ngx v3.0.0-beta.rc2
Added 7
- Support LLM timeout configuration
- Ignore diacritics and support multiple substring matching for UI filtering
- Add direct LLM language setting
- Try to respect language for AI suggestions
- Add AI LLM chunk size and context window configuration
- Support ollama embeddings
- Version-aware thumbnail etag
Changed 2
- Update to Angular v22 with zoneless and reactive architecture
- Replace LanceDB vector store with sqlite-vec
Fixed 11
- Scope ProcessedMail UID deduplication by IMAP UIDVALIDITY
- Allow setting any UID and GID when running rootless
- Fix sidebar document close button
- Include wasm assets in pdf.js-based viewer
- Fix UI labels from md5 to sha256
- Do not assign empty title in workflow with broken template
- Clamp mailrule max age before migration
- Use latest document version for bulk download
- Handle relative date with comma query
- Restore v2 (Whoosh) advanced-search query compatibility
- Apply unicode normalization to all paths and path components
paperless-ngx 3.0.0-beta.rc2
Features / Enhancements
- docker-compose(deps): bump greenmail/standalone from 2.1.8 to 2.1.9 in /docker/compose @dependabot[bot] (#13067)
- docker-compose(deps): bump gotenberg/gotenberg from 8.33 to 8.34 in /docker/compose @dependabot[bot] (#13066)
- docker-compose(deps): bump nginx from 1.31.1-alpine to 1.31.2-alpine in /docker/compose @dependabot[bot] (#13065)
- docker(deps): Bump astral-sh/uv from 0.11.19-python3.12-trixie-slim to 0.11.28-python3.12-trixie-slim @dependabot[bot] (#13070)
- Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
- Enhancement (beta): support LLM timeout config @shamoon (#13002)
- Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon (#13021)
- Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog (#12990)
- Enhancement (beta): Switch the AI vector store to LanceDB @stumpylog (#12944)
- Fixhancement (beta): tasks dismiss all @shamoon (#12949)
- Enhancement (beta): add direct LLM language setting @shamoon (#12906)
- Enhancement: try to respect language for AI suggestions @shamoon (#12894)
- Enhancement: AI LLM chunk size and context window config @shamoon (#12891)
- Chore: Further dependency security updates @stumpylog (#12780)
- Enhancement: support ollama embeddings @shamoon (#12753)
- Tweakhancment: Include the last applied 'documents' migration in the log @stumpylog (#12757)
- Enhancement: version-aware thumbnail etag @shamoon (#12754)
- Documentation: Update v3 migration docs @shamoon (#12752)
Bug Fixes
- Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY @chouquette (#12839)
- Fix: allow setting any UID and GID when running rootless @Tahvok (#13090)
- Fix (beta): fix sidebar document close button @shamoon (#13136)
- Fix: include wasm assets in pdf.js-based viewer @shamoon (#13122)
- Fix: fix ui labels from md5 to sha256 @shamoon (#13119)
- Fixhancement: dont assign empty title in workflow with broken template @shamoon (#13112)
- Fix: clamp mailrule max age before migration @shamoon (#13093)
- Fix: use latest document version for bulk download @shamoon (#13103)
- Fix (beta): handle relative date with comma query @shamoon (#13087)
- Fix (beta): fix sanity checker affected document counts @NgoQuocViet2001 (#13052)
- Fix (beta): preserve Unicode in localization prompt @shamoon (#13055)
- Fix: change tantivy token limit to title field max length @shamoon (#13046)
- Fix: include last-modified in doc etag @shamoon (#13044)
- Fix (beta): Stream chunks during compaction to prevent oom on smaller installs @stumpylog (#13014)
- Fixhancement (beta): truncate embedding queries for small chunk size @shamoon (#13028)
- Fix(beta): Workaround a Tantivy panic in more like this searching @stumpylog (#13026)
- Fix (beta): Catch consumer files created during watcher re-creations @stumpylog (#13013)
- Fix (beta): restore v2 (Whoosh) advanced-search query compatibility @stumpylog (#13010)
- Fix (beta): retry celery ping and report warning on no response @shamoon (#13012)
- Fix (beta): don't send chat message on Enter while composing with IME (CJK) @mzyy94 (#12999)
- Fix: Apply unicode normalization to all paths and path components @stumpylog (#12993)
- Fix: Handle the UTF 16 and BOM text files better @stumpylog (#12994)
- Fix (beta): avoid DRF update calling
saveon all fields @shamoon (#12992) - Fix: release pooled DB connection during AI LLM/embedding calls @stumpylog (#12983)
- Fix: health-check pooled DB connections and close the pool on worker shutdown @stumpylog (#12977)
- Fix: wrap long titles in delete confirm dialog @shamoon (#12973)
- Fix (beta): fix re-ordering in merge dialog @shamoon (#12967)
- Fix (beta): move task filtering to backend fully @shamoon (#12956)
- Fix (beta): avoid unnecessary creating new PDF with pw removal workflow @shamoon (#12948)
- Fixhancement (beta): tasks dismiss all @shamoon (#12949)
- Fix (beta): correct chat message bg color @shamoon (#12955)
- Fix (beta): respect disable state for suggest endpoint, require change perms @shamoon (#12942)
- Fix: Ensure checksum comparision is using SHA256 @stumpylog (#12939)
- Fix: Restrict the AI backend at settings configure time @stumpylog (#12903)
- Fix (beta): correctly apply i18n in suggestions dropdown @shamoon (#12905)
- Fix: Lock AI index during reading and don't index documents many times during a bulk update @stumpylog (#12899)
- Fix: Minor fixes for the AI indexing @stumpylog (#12893)
- Fix (beta): dont use tool calling with ollama @shamoon (#12896)
- Fix: Improvements for security around the AI @stumpylog (#12895)
- Fix: correctly show timestamp tooltip on history item @nathanaelhoun (#12879)
- Fix: Fold query and autocomplete terms with Tantivy's ascii_fold so special letters match @stumpylog (#12868)
- Fix: Don't store autocomplete_word, only index it @stumpylog (#12867)
- Fix: Preserve Whoosh date range swapping in Tantviy @stumpylog (#12866)
- Fix: Always release search index writer @stumpylog (#12865)
- Fix: Handle CJK title, content and metadata searching @stumpylog (#12862)
- Fix: Restrict date query rewrites to date or datetime fields only @stumpylog (#12864)
- Fix: Missing call to tanvity wait_merging_threads @stumpylog (#12863)
- Fix: Handle tanvity index lock contention @stumpylog (#12856)
- Fix (beta): better catch chat errors @shamoon (#12854)
- Security (beta): fixes for v3 beta @shamoon (#12838)
- Fix (beta): normalize long punctuation chunks to improve embedding @shamoon (#12848)
- Fix: use chord.on_error before apply_async @shamoon (#12842)
- Fix: Don't use smaller integer fields for some workflow fields @stumpylog (#12834)
- Fix: Password removal source file location @stumpylog (#12830)
- Fix (beta): use correct html button type for custom field buttons @shamoon (#12819)
- Fix: Defer password removal workflow action until the file is in place @stumpylog (#12814)
- Fix: Allow setting allauth rate limit configuration settings @stumpylog (#12798)
- Fix: Don't embed the metadata which is already embedded into the context @stumpylog (#12795)
- Fix: Sanitize dash or plus from the text search path @stumpylog (#12789)
- Fix: improve new tasks ui layout across screen sizes @shamoon (#12784)
- Fix: Update parser contract to require empty strings, not None @shamoon (#12775)
- Fix: Use a persistent, writeable location for hugging face models @stumpylog (#12771)
- Fix: create LLM_INDEX_DIR before writing meta.json on first run @pReya (#12759)
- Tweakhancment: Include the last applied 'documents' migration in the log @stumpylog (#12757)
- Fix: use response synthesizer for RAG doc chat @shamoon (#12751)
- Fix: only update modified field in notes actions @shamoon (#12750)
- Fix: Handle dash or plus operators in search queries @stumpylog (#12734)
- Fixes trash preview when a document has deleted versions @stumpylog (#12742)
- Fix: exclude versions from stats count @shamoon (#12738)
- Fixes celery chords by using Redis as our result backend @stumpylog (#12741)
- Fix: bump version.py to 3.0.0 also @shamoon (#12736)
- Fix: makes the font cache folder writeable to all users @stumpylog (#12726)
- Fixes Whoosh year only queries to be rewritten to Tantivy date syntax @stumpylog (#12725)
- Fix: pass allow parallel tool calls in LLM client @shamoon (#12718)
- Fix: Handle passwords for removal action as lists @stumpylog (#12716)
- Bumps all our versions to 3.0.0 @stumpylog (#12715)
Documentation
- Fix: clamp mailrule max age before migration @shamoon (#13093)
- Documentation (beta): Updates documentation for new v3 features @stumpylog (#13033)
- Documentation: remove duplicate words in three files @mvanhorn (#12852)
- Fix: Allow setting allauth rate limit configuration settings @stumpylog (#12798)
- Documentation: Update v3 migration docs @shamoon (#12752)
Maintenance
- Chore(deps): Bump the actions group across 1 directory with 14 updates @dependabot[bot] (#13079)
- Chore(deps): Bump the actions group across 1 directory with 12 updates @dependabot[bot] (#12909)
Dependencies
- Chore(deps): Bump the pre-commit-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13137)
- Chore(deps-dev): Bump the development group across 1 directory with 2 updates @dependabot[bot] (#13068)
- docker-compose(deps): bump greenmail/standalone from 2.1.8 to 2.1.9 in /docker/compose @dependabot[bot] (#13067)
- docker-compose(deps): bump gotenberg/gotenberg from 8.33 to 8.34 in /docker/compose @dependabot[bot] (#13066)
- docker-compose(deps): bump nginx from 1.31.1-alpine to 1.31.2-alpine in /docker/compose @dependabot[bot] (#13065)
- docker(deps): Bump astral-sh/uv from 0.11.19-python3.12-trixie-slim to 0.11.28-python3.12-trixie-slim @dependabot[bot] (#13070)
- Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
- Chore(deps): Bump the actions group across 1 directory with 14 updates @dependabot[bot] (#13079)
- Chore(deps): Bump pdfjs-dist from 5.7.284 to 6.0.227 in /src-ui @dependabot[bot] (#13080)
- Chore(deps-dev): Bump @playwright/test from 1.60.0 to 1.61.1 in /src-ui @dependabot[bot] (#13078)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13076)
- Chore(deps): Bump uuid from 14.0.0 to 14.0.1 in /src-ui @dependabot[bot] (#13077)
- Chore(deps-dev): Bump jest-preset-angular from 16.1.5 to 17.0.0 in /src-ui in the frontend-jest-dependencies group across 1 directory @dependabot[bot] (#13075)
- Chore(deps-dev): Bump @types/node from 25.9.1 to 26.0.0 in /src-ui @dependabot[bot] (#13081)
- Chore(deps): Bump the npm_and_yarn group across 1 directory with 3 updates @dependabot[bot] (#13016)
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#12995)
- Chore(deps): Bump the utilities-patch group across 1 directory with 4 updates @dependabot[bot] (#12931)
- Chore(deps-dev): Bump types-markdown from 3.10.2.20260211 to 3.10.2.20260518 @dependabot[bot] (#12927)
- Chore(deps): Bump aiohttp from 3.13.4 to 3.14.0 in the uv group across 1 directory @dependabot[bot] (#12930)
- Chore(deps): Bump the pre-commit-dependencies group across 1 directory with 2 updates @dependabot[bot] (#12923)
- docker(deps): Bump astral-sh/uv from 0.11.6-python3.12-trixie-slim to 0.11.19-python3.12-trixie-slim @dependabot[bot] (#12920)
- Chore(deps): Bump the actions group across 1 directory with 12 updates @dependabot[bot] (#12909)
- docker-compose(deps): bump apache/tika from 3.2.3.0 to 3.3.1.0 in /docker/compose @dependabot[bot] (#12912)
- docker-compose(deps): bump gotenberg/gotenberg from 8.27 to 8.33 in /docker/compose @dependabot[bot] (#12910)
- docker-compose(deps): Bump nginx from 1.29.5-alpine to 1.31.1-alpine in /docker/compose @dependabot[bot] (#12911)
- Chore(deps-dev): Bump @playwright/test from 1.59.1 to 1.60.0 in /src-ui @dependabot[bot] (#12919)
- Chore(deps-dev): Bump @types/node from 25.6.0 to 25.9.1 in /src-ui @dependabot[bot] (#12915)
- Chore(deps): Bump pdfjs-dist from 5.6.205 to 5.7.284 in /src-ui @dependabot[bot] (#12918)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#12913)
- Chore(deps-dev): Bump webpack from 5.106.2 to 5.107.2 in /src-ui @dependabot[bot] (#12917)
- Chore(deps): Bump zone.js from 0.16.1 to 0.16.2 in /src-ui @dependabot[bot] (#12916)
- Chore(deps-dev): Bump the frontend-jest-dependencies group across 1 directory with 3 updates @dependabot[bot] (#12908)
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 20 updates @dependabot[bot] (#12907)
- Chore(deps): Bump hono from 4.12.16 to 4.12.18 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12767)
- Chore(deps): Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12764)
- Chore(deps): Bump fast-uri from 3.1.1 to 3.1.2 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12763)
- Chore: Targeted dependency upgrades @stumpylog (#12731)
All App Changes
- Chore(deps-dev): Bump the development group across 1 directory with 2 updates @dependabot[bot] (#13068)
- Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY @chouquette (#12839)
- Fix (beta): fix sidebar document close button @shamoon (#13136)
- Fix: include wasm assets in pdf.js-based viewer @shamoon (#13122)
- Fix: fix ui labels from md5 to sha256 @shamoon (#13119)
- Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
- Fixhancement: dont assign empty title in workflow with broken template @shamoon (#13112)
- Fix: clamp mailrule max age before migration @shamoon (#13093)
- Fix: use latest document version for bulk download @shamoon (#13103)
- Fix (beta): handle relative date with comma query @shamoon (#13087)
- Chore(deps): Bump pdfjs-dist from 5.7.284 to 6.0.227 in /src-ui @dependabot[bot] (#13080)
- Chore(deps-dev): Bump @playwright/test from 1.60.0 to 1.61.1 in /src-ui @dependabot[bot] (#13078)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13076)
- Chore(deps): Bump uuid from 14.0.0 to 14.0.1 in /src-ui @dependabot[bot] (#13077)
- Chore(deps-dev): Bump jest-preset-angular from 16.1.5 to 17.0.0 in /src-ui in the frontend-jest-dependencies group across 1 directory @dependabot[bot] (#13075)
- Chore(deps-dev): Bump @types/node from 25.9.1 to 26.0.0 in /src-ui @dependabot[bot] (#13081)
- Fix (beta): fix sanity checker affected document counts @NgoQuocViet2001 (#13052)
- Fix (beta): preserve Unicode in localization prompt @shamoon (#13055)
- Fix: change tantivy token limit to title field max length @shamoon (#13046)
- Feature: OCR Templates @Anuril (#13043)
- Fix: include last-modified in doc etag @shamoon (#13044)
- Fix (beta): Stream chunks during compaction to prevent oom on smaller installs @stumpylog (#13014)
- Fixhancement (beta): truncate embedding queries for small chunk size @shamoon (#13028)
- Enhancement (beta): support LLM timeout config @shamoon (#13002)
- Fix(beta): Workaround a Tantivy panic in more like this searching @stumpylog (#13026)
- Chore (beta): set tool_required to openai-like llm calls @shamoon (#13025)
- Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon (#13021)
- Fix (beta): Catch consumer files created during watcher re-creations @stumpylog (#13013)
- Chore(deps): Bump the npm_and_yarn group across 1 directory with 3 updates @dependabot[bot] (#13016)
- Fix (beta): restore v2 (Whoosh) advanced-search query compatibility @stumpylog (#13010)
- Fix (beta): retry celery ping and report warning on no response @shamoon (#13012)
- Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog (#12990)
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#12995)
- Chore(deps): Bump the utilities-patch group across 1 directory with 4 updates @dependabot[bot] (#12931)
- Fix (beta): don't send chat message on Enter while composing with IME (CJK) @mzyy94 (#12999)
- Fix: Apply unicode normalization to all paths and path components @stumpylog (#12993)
- Fix: Handle the UTF 16 and BOM text files better @stumpylog (#12994)
- Fix (beta): avoid DRF update calling
saveon all fields @shamoon (#12992) - Fix: release pooled DB connection during AI LLM/embedding calls @stumpylog (#12983)
- Fix: health-check pooled DB connections and close the pool on worker shutdown @stumpylog (#12977)
- Fix: wrap long titles in delete confirm dialog @shamoon (#12973)
- Fix (beta): fix re-ordering in merge dialog @shamoon (#12967)
- Fix (beta): move task filtering to backend fully @shamoon (#12956)
- Chore(deps-dev): Bump types-markdown from 3.10.2.20260211 to 3.10.2.20260518 @dependabot[bot] (#12927)
- Chore(deps): Bump aiohttp from 3.13.4 to 3.14.0 in the uv group across 1 directory @dependabot[bot] (#12930)
- Fix (beta): avoid unnecessary creating new PDF with pw removal workflow @shamoon (#12948)
- Enhancement (beta): Switch the AI vector store to LanceDB @stumpylog (#12944)
- Fixhancement (beta): tasks dismiss all @shamoon (#12949)
- Fix (beta): correct chat message bg color @shamoon (#12955)
- Fix (beta): respect disable state for suggest endpoint, require change perms @shamoon (#12942)
- Fix: Ensure checksum comparision is using SHA256 @stumpylog (#12939)
- Fix: Restrict the AI backend at settings configure time @stumpylog (#12903)
- Enhancement (beta): add direct LLM language setting @shamoon (#12906)
- Chore(deps-dev): Bump @playwright/test from 1.59.1 to 1.60.0 in /src-ui @dependabot[bot] (#12919)
- Fix (beta): correctly apply i18n in suggestions dropdown @shamoon (#12905)
- Chore(deps-dev): Bump @types/node from 25.6.0 to 25.9.1 in /src-ui @dependabot[bot] (#12915)
- Chore(deps): Bump pdfjs-dist from 5.6.205 to 5.7.284 in /src-ui @dependabot[bot] (#12918)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#12913)
- Chore(deps-dev): Bump webpack from 5.106.2 to 5.107.2 in /src-ui @dependabot[bot] (#12917)
- Chore(deps): Bump zone.js from 0.16.1 to 0.16.2 in /src-ui @dependabot[bot] (#12916)
- Chore(deps-dev): Bump the frontend-jest-dependencies group across 1 directory with 3 updates @dependabot[bot] (#12908)
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 20 updates @dependabot[bot] (#12907)
- Fix: Lock AI index during reading and don't index documents many times during a bulk update @stumpylog (#12899)
- Fix: Minor fixes for the AI indexing @stumpylog (#12893)
- Fix (beta): dont use tool calling with ollama @shamoon (#12896)
- Enhancement: try to respect language for AI suggestions @shamoon (#12894)
- Enhancement: AI LLM chunk size and context window config @shamoon (#12891)
- Fix: Improvements for security around the AI @stumpylog (#12895)
- Fix: correctly show timestamp tooltip on history item @nathanaelhoun (#12879)
- Fix: Fold query and autocomplete terms with Tantivy's ascii_fold so special letters match @stumpylog (#12868)
- Fix: Don't store autocomplete_word, only index it @stumpylog (#12867)
- Fix: Preserve Whoosh date range swapping in Tantviy @stumpylog (#12866)
- Fix: Always release search index writer @stumpylog (#12865)
- Fix: Handle CJK title, content and metadata searching @stumpylog (#12862)
- Fix: Restrict date query rewrites to date or datetime fields only @stumpylog (#12864)
- Fix: Missing call to tanvity wait_merging_threads @stumpylog (#12863)
- Fix: Handle tanvity index lock contention @stumpylog (#12856)
- Fix (beta): better catch chat errors @shamoon (#12854)
- Performance (beta): dont re-build vector index with each chat @shamoon (#12847)
- Security (beta): fixes for v3 beta @shamoon (#12838)
- Fix (beta): normalize long punctuation chunks to improve embedding @shamoon (#12848)
- Fix: use chord.on_error before apply_async @shamoon (#12842)
- Fix: Don't use smaller integer fields for some workflow fields @stumpylog (#12834)
- Fix: Password removal source file location @stumpylog (#12830)
- Fix (beta): use correct html button type for custom field buttons @shamoon (#12819)
- Fix: Defer password removal workflow action until the file is in place @stumpylog (#12814)
- Fix: Allow setting allauth rate limit configuration settings @stumpylog (#12798)
- Fix: Don't embed the metadata which is already embedded into the context @stumpylog (#12795)
- Fix: Sanitize dash or plus from the text search path @stumpylog (#12789)
- Fix: improve new tasks ui layout across screen sizes @shamoon (#12784)
- Fix: Update parser contract to require empty strings, not None @shamoon (#12775)
- Chore: Further dependency security updates @stumpylog (#12780)
- Fix: Use a persistent, writeable location for hugging face models @stumpylog (#12771)
- Chore(deps): Bump hono from 4.12.16 to 4.12.18 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12767)
- Enhancement: support ollama embeddings @shamoon (#12753)
- Fix: create LLM_INDEX_DIR before writing meta.json on first run @pReya (#12759)
- Chore(deps): Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12764)
- Chore(deps): Bump fast-uri from 3.1.1 to 3.1.2 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12763)
- Tweakhancment: Include the last applied 'documents' migration in the log @stumpylog (#12757)
- Fix: use response synthesizer for RAG doc chat @shamoon (#12751)
- Fix: only update modified field in notes actions @shamoon (#12750)
- Enhancement: version-aware thumbnail etag @shamoon (#12754)
- Documentation: Update v3 migration docs @shamoon (#12752)
- Fix: Handle dash or plus operators in search queries @stumpylog (#12734)
- Fixes trash preview when a document has deleted versions @stumpylog (#12742)
- Fix: exclude versions from stats count @shamoon (#12738)
- Fixes celery chords by using Redis as our result backend @stumpylog (#12741)
- Fix: bump version.py to 3.0.0 also @shamoon (#12736)
- Chore: Targeted dependency upgrades @stumpylog (#12731)
- Fixes Whoosh year only queries to be rewritten to Tantivy date syntax @stumpylog (#12725)
- Fix: pass allow parallel tool calls in LLM client @shamoon (#12718)
- Fix: Handle passwords for removal action as lists @stumpylog (#12716)
- Bumps all our versions to 3.0.0 @stumpylog (#12715)