What changed in Paperless-ngx from 2 to 3
10 releases numbered after v2.20.15 up to and including v3.1.3, stable releases only. v2.20.15 and v3.1.3 are the newest stable releases of 2 and 3 we track; this page follows them as new ones ship.
- 1 mentions breaking changes
- 1 removes or deprecates something
125 changes across 10 releases
Added 17
- Apply AI suggestions workflow action
- Support using remote OCR engines selectively
- Websocket heartbeat
- Sync OIDC groups to superuser and staff roles
- Merge documents as versions
- Allow selection of compression type and level during export
- Customizable icons for saved views
- Add --url argument to document_fuzzy_match to improve output
- Updates remote OCR parser to respect the OCR mode setting
- Replace Whoosh with tantivy search backend
- Add document parser plugin framework
- Add document file versions
- Add sharelink bundles
- Add Paperless AI
- Add remote OCR support via Azure AI
- Allow some bulk operations with all
- Add database indexes for common query and sort patterns
Changed 24
- Show existing count for AI suggestions
- Make IMAP port required and improve error display
- Apply visual tweaks to welcome widget
- Better support long list of views in documents list
- Add count badge to versions dropdown
- Add jitter to IMAP polling schedule
- Render paperless_ai prompts via Jinja2 templates instead of f-strings
- Prefer existing tags, types, correspondents, and storage paths in AI suggestions
- Reduce memory and I/O overhead of the document exporter during zip exports
- More efficient mail fetching
- Use server side iterators during LLM index updating
- Improve sqlite-vec point-delete for document chunks
- Adjust doc details button toolbar flow
- More efficient diacritic normalization in dropdown filtering
- Pass LLM output language to chat if specified
- Prefetch notes and custom fields for LLM index text building
- Scope llm index updates to actually modified documents
- Resolve npm provenance issues with chokidar and semver
- PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT environment variable handling
- Adjust top navbar wrapping when AI chat button visible
- bump postcss from 8.5.6 to 8.5.22
- bump pyasn1 from 0.6.3 to 0.6.4
- reword Settings > Default permissions description for clarity
- Update root modified timestamp on version changes
Fixed 72
- Use the header loading indicator on tasks page
- Fix load sidebar size animating
- Wrap long words without spaces in dropdowns
- Tweak tool calling localization prompt
- Skip vector store document id filter for unrestricted chat users
- Adopt the request stream when pinning an outbound host
- Ensure apply AI suggestions always runs after document created
- Handle failures when enqueuing files for consumption
- Handle Celery mail task chord errors
- Refactor some signal-backed conversion technical debt
- Fix slim sidebar saved view dragging appearance
- Use signal-backed queries input in custom fields dropdown to reflect changes immediately under zoneless
- Use root doc metadata for filename generation
- Clean up some CSS
- Fix dark mode select disabled color and ensure disabled cursor on display mode dropdown
- Add disable to the drag-drop list component
- LLM suggestions no longer remove existing metadata from prompt and do not drop name suggestions
- Set global search earlier to avoid awaiting debounce
- Make sidebar responsive and centralize size values
- Simplify LLM suggestions schema and fix docstrings
- Ensure UI reset of suggestionsLoading when changing documents
- Always pass a non-empty API key for OpenAI-like servers
- Hide slim sidebar scrollbar in browsers with native scrollbars
- Correct sharelink bundle and document link permissions display bugs
- Immediately re-add document to index after trash restore
- Fix navbar brand anchor size and Safari position jitter
- Prevent config autocomplete craziness
- Prevent token re-use in dropdown filtering
- Exclude version documents from bulk edit all
- Accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries
- Fix edit dialog error change detection
- Key the AI suggestion cache by model and endpoint
- Validate custom field values in bulk operations
- Better handle empty fields from AI suggestions
- Normalize monetary decimal symbol by locale
- Fold overflowing path text in sanity checker
- Correct delayed add field button for custom fields
- Hide attributes collapse / show button without UI settings
- Consolidate born-digital PDF detection between archive decision and OCR
- Prevent scale vs page loop in pngx PDF viewer
- Handle hidden line breaks in email subjects when sending email
- Avoid NotSupportedError from document_importer on MariaDB
- Exclude next-period start from relative date-range filters
- Close non-atomic db connections in before_task_publish
- Fix Enter selection in search autocomplete
- Prevent pdfjs highlight scrolling from affecting the entire page
- Don't skip OCR/archive for tagged PDFs with no actual text
- Dedupe permission-visible documents when combined with multi-tag filters
- Ensure preview reload on live changes
- Clamp all out-of-range possible fields
- Add docstring to DocumentClassifierSchema for cleaner LLM tool description
- Guard build_document_node against stale FK on deleted correspondent/doc type
- Prevent search filter loss when closing document with Escape key
- Fix frontend permissions display for stats/system perms
- Preserve document fields during Gotenberg conversion to PDF
- Make email date aware as soon as possible during parsing
- Handle a plain string as Celery sometimes provides for the traceback
- Emit the torch index into the requirements.txt for people still using it
- Handle notes without a user when building the search index
- Fix broken migration in 3.0.1
- selection_data re-derives the filtered document set 5 times over
- exclude source document from its own RAG similarity results
- split mailrule maximum_age clamp into its own migration
- correct URL for W001 check
- ensure create dialog uses correct attribute type
- correct database engine from postgres to postgresql
- remove unnecessary .distinct() dominating document list queries
- wrap non-breaking words in chat messages and handle whitespace
- tag/custom-field document_count scales badly with tag count
- batch document user_can_change checks to avoid per-row N+1
- app title restoration
- handle long wrapping titles in AI chat document list
Removed 9
- Remove positional arguments from pre/post consume scripts
- Decouple OCR control from archive file control
- Drop support for API versions less than 9
- Drop support for Python 3.10
- Refactor advanced database settings to allow more user configuration
- Remove API v1 compatibility
- Remove pybzar as a barcode reader
- Remove support for document and thumbnail encryption
- Simplify and improve the consumer
Original release notes, newest first
The list above is our reading of these notes; the originals from Paperless-ngx are here, one fold per release.
v3.1.3Paperless-ngx v3.1.3
paperless-ngx 3.1.3
Bug Fixes
- Fix: use the header loading indicator on tasks page @shamoon (#13949)
- Fix: fix load sidebar size animating @shamoon (#13947)
- Fix: wrap long words without spaces in dropdowns @shamoon (#13945)
- Fix: tweak tool calling localzation prompt @shamoon (#13943)
- Fix: skip vector store document id filter for unrestricted chat users @stumpylog (#13937)
- Fix: adopt the request stream when pinning an outbound host @ThomasSteinbach (#13927)
- Fix: ensure apply ai suggestions always runs after document created @shamoon (#13940)
- Fix: Handle failures when enqueuing files for consumption @stumpylog (#13935)
- Fix: Handle Celery mail task chord errors @stumpylog (#13936)
- Fix/chore: refactor some signal-backed conversion technical debt @shamoon (#13902)
- Fix: fix slim sidebar saved view dragging appearance @shamoon (#13906)
- Fix: use signal-backed queries input in CF dropdown to reflect changes immediately under zoneless @shamoon (#13901)
- Fix: use root doc metadata for filename generation @shamoon (#13893)
- Fix: some css cleanup @shamoon (#13891)
Dependencies
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#13958)
- docker-compose(deps): bump nginx from 1.31.3-alpine to 1.31.5-alpine in /docker/compose @dependabot[bot] (#13909)
- docker-compose(deps): Bump greenmail/standalone from 2.1.11 to 2.1.13 in /docker/compose @dependabot[bot] (#13907)
- Chore(deps-dev): Bump postcss-selector-parser from 6.1.2 to 6.1.4 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13905)
- Chore(deps): Bump nltk from 3.10.0 to 3.10.3 in the data-nlp-search group across 1 directory @dependabot[bot] (#13917)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 14 updates @dependabot[bot] (#13915)
- Chore(deps): Bump djangorestframework from 3.17.1 to 3.17.2 in the uv group across 1 directory @dependabot[bot] (#13904)
All App Changes
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#13958)
- Chore(deps-dev): Bump postcss-selector-parser from 6.1.2 to 6.1.4 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13905)
- Chore(deps): Bump nltk from 3.10.0 to 3.10.3 in the data-nlp-search group across 1 directory @dependabot[bot] (#13917)
- Fix: use the header loading indicator on tasks page @shamoon (#13949)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 14 updates @dependabot[bot] (#13915)
- Chore(deps): Bump djangorestframework from 3.17.1 to 3.17.2 in the uv group across 1 directory @dependabot[bot] (#13904)
- Fix: fix load sidebar size animating @shamoon (#13947)
- Fix: wrap long words without spaces in dropdowns @shamoon (#13945)
- Fix: tweak tool calling localzation prompt @shamoon (#13943)
- Fix: skip vector store document id filter for unrestricted chat users @stumpylog (#13937)
- Fix: adopt the request stream when pinning an outbound host @ThomasSteinbach (#13927)
- Fix: ensure apply ai suggestions always runs after document created @shamoon (#13940)
- Fix: Handle failures when enqueuing files for consumption @stumpylog (#13935)
- Fix: Handle Celery mail task chord errors @stumpylog (#13936)
- Fix/chore: refactor some signal-backed conversion technical debt @shamoon (#13902)
- Security: validate remote OCR endpoint @stumpylog (#13897)
- Fix: fix slim sidebar saved view dragging appearance @shamoon (#13906)
- Security: Minor additional hardening @stumpylog (#13898)
- Chore: consolidate pickle hmac signing @shamoon (#13899)
- Fix: use signal-backed queries input in CF dropdown to reflect changes immediately under zoneless @shamoon (#13901)
- Fix: use root doc metadata for filename generation @shamoon (#13893)
- Fix: some css cleanup @shamoon (#13891)
v3.1.2Paperless-ngx v3.1.2
paperless-ngx 3.1.2
[!NOTE] This release addresses a security issue (GHSA-2jhj-xqrq-rmrq) and is recommended for all users. Our sincere thank you to the community members (and their LLMs) for reporting this.
Bug Fixes
- Fix: fix dark mode select disabled color, ensure disabled cursor on display mode dropdown @shamoon (#13881)
- Fix: add disable to the drag-drop list component @shamoon (#13880)
Documentation
- Chore: update screenshots for v3+ @shamoon (#13883)
All App Changes
v3.1.1Paperless-ngx v3.1.1
paperless-ngx 3.1.1
Bug Fixes
- Fix: 3.1.0 llm suggestions remove existing metadata from prompt, dont drop name suggestions @shamoon (#13866)
- Fix: set global search earlier to avoid awaiting debounce @shamoon (#13865)
- Fix: responsive sidebar, centralize and make sizes saner @shamoon (#13863)
- Tweak/fix: show existing count for ai suggestions @shamoon (#13861)
- Fix: 3.1.0 llm suggestions simplify schema, fix docstrings @shamoon (#13850)
- Fix: ensure ui reset of suggestionsLoading when changing docs @shamoon (#13840)
- Fix: always pass a non-empty api key for OpenAI-like servers @shamoon (#13838)
- Fix: hide slim sidebar scrollbar in browsers with stupid scrollbars @shamoon (#13837)
- Fix: correct sharelink bundle + document link permissions display bugs @shamoon (#13827)
- Fix: immediately re-add doc to index after trash restore @shamoon (#13818)
- Fix: navbar brand anchor size + Safari position jitter @shamoon (#13810)
All App Changes
- Fix: 3.1.0 llm suggestions remove existing metadata from prompt, dont drop name suggestions @shamoon (#13866)
- Fix: set global search earlier to avoid awaiting debounce @shamoon (#13865)
- Fix: responsive sidebar, centralize and make sizes saner @shamoon (#13863)
- Tweak/fix: show existing count for ai suggestions @shamoon (#13861)
- Fix: 3.1.0 llm suggestions simplify schema, fix docstrings @shamoon (#13850)
- Fixhancement: make imap port required, better error display @shamoon (#13845)
- Fix: ensure ui reset of suggestionsLoading when changing docs @shamoon (#13840)
- Fix: always pass a non-empty api key for OpenAI-like servers @shamoon (#13838)
- Fix: hide slim sidebar scrollbar in browsers with stupid scrollbars @shamoon (#13837)
- Fix: correct sharelink bundle + document link permissions display bugs @shamoon (#13827)
- Fix: immediately re-add doc to index after trash restore @shamoon (#13818)
- Fix: navbar brand anchor size + Safari position jitter @shamoon (#13810)
v3.1.0Paperless-ngx v3.1.0
paperless-ngx 3.1.0
Features / Enhancements
- Enhancement: Apply AI suggestions workflow action @shamoon (#13639)
- Enhancement: welcome widget visual tweaks @shamoon (#13794)
- Enhancement: support using remote OCR engines selectively @shamoon (#13633)
- Enhancement: websocket heartbeat @oktupol (#13739)
- Enhancement: more v3 ui tweaks @shamoon (#13774)
- Tweak: better support long list of views in documents list @shamoon (#13769)
- QoL: add count badge to versions dropdown @shamoon (#13753)
- Tweakhancement: add jitter to IMAP polling schedule @shamoon (#13734)
- Enhancement: sync OIDC groups to superuser and staff roles @BeSovereign (#13060)
- Enhancement: merge documents as versions @shamoon (#13515)
- Tweak: adjust modal proportions for small screens @shamoon (#13728)
- Refactor: render paperless_ai prompts via Jinja2 templates instead of f-strings @stumpylog (#13698)
- Tweak: small visual tweaks / improvements & fixes @shamoon (#13700)
- Enhancement: prefer existing tags, types, correspondents, and storage paths in AI suggestions @stumpylog (#13676)
- Tweak: tweak permissions menu labels for shared user-dependent views @shamoon (#13685)
- Feature: Allow selection of compression type and and level during export @stumpylog (#13661)
- Enhancement: customizable icons for saved views @shamoon (#13388)
- Enhancement: Add --url argument to document_fuzzy_match to improve output @lukyjay (#13123)
- Feature: Updates remote OCR parser to respect the OCR mode setting @stumpylog (#13408)
- Tweak: improve no ML suggestions UX @shamoon (#13621)
- Performance: reduce memory and I/O overhead of the document exporter during zip exports @stumpylog (#13490)
- QoL: make name button text on attribute pages selectable @shamoon (#13592)
- Performance: More efficient mail fetching @stumpylog (#13432)
Bug Fixes
- Fix: prevent config autocomplete craziness @shamoon (#13808)
- Fix/performance: prevent token re-use in dropdown filtering, also a perf thing @shamoon (#13804)
- Fix: exclude version documents from bulk edit "all" @shamoon (#13791)
- Fix: fix bottom mobile nav buttons on Android @shamoon (#13780)
- Fix: lazy import guardian modules to fix search language setting @shamoon (#13768)
- Fix: version indexing fixes @shamoon (#13737)
- Fix: append charset to file response for text files @shamoon (#13759)
- Chore: pin Apache Tika images to 3.3.1 @shamoon (#13758)
- Fix: align bulk edit object perms with document model @shamoon (#13757)
- Fix: use selected version for doc detail emailing @shamoon (#13738)
- Fix: hide version delete button without global perms @shamoon (#13735)
- Fix: dont re-render path template when checking collisions @shamoon (#13718)
- Fix: DocumentClassifierSchema bounds @shamoon (#13707)
- Fix: remove shadow around attribute pages @shamoon (#13696)
- Zen: correct dropdown corner radius visual defect @shamoon (#13695)
- Fix: handle Android keyboard popper overlay @shamoon (#13694)
- Fix: only show create when there is text, hide set values if no fields in cf bulk edit dropdown @shamoon (#13688)
- Fix: reopen a fresh Tantivy index per write to prevent orphaned segment files @stumpylog (#13682)
- Fix: fix validation of workflow title assignment @maxtruxa (#13659)
- Fix: dont clip search dropdown on mobile @shamoon (#13675)
- Fix: include sharelink bundle perms in WebUI @shamoon (#13664)
- Fix: add pagination to saved views management page @shamoon (#13646)
- Fix: fixes for workflow assign custom field values @shamoon (#13630)
- Fix: deny deactivated users in permission filtering and auto-login @stumpylog (#13623)
- Fix: check bulk mail delete permissions for the whole batch up front @stumpylog (#13620)
- Fix: Allow DRF to validate the maximum API key length @stumpylog (#13614)
- Fix: render PDF form values in annotation layer @shamoon (#13607)
- QoL: disable name button without perms @shamoon (#13606)
- Fix: prevent debounce overwrites in advanced search field, also improve Esc behavior @shamoon (#13602)
- Fix: raise ParseError on remote OCR failure instead of silently continuing @stumpylog (#13574)
- Fix: use selected version when creating share links @shamoon (#13571)
- Fix: reject bulk edit permissions requests without the correct key @shamoon (#13563)
- Fix: correctly serve app logo specified in env @shamoon (#13561)
- Fix: prevent workflow passwords field type error @shamoon (#13552)
- Fix: correct Firefox print regression @shamoon (#13543)
- Fix: hide some saved view operations on management page without permissions @shamoon (#13542)
- Fix: disable pdfjs selection rendering @shamoon (#13538)
- Fix: hide sidebar drag grips with insufficient permissions @shamoon (#13536)
- Fix: don't re-queue a consume-folder file that is already queued and awaiting consumption @stumpylog (#13526)
- Fix: correct multi-search non-adjacent queries @shamoon (#13504)
- Fix: Content-Disposition filename normalization @shamoon (#13514)
- Fix: prevent duplicated text query with multiple date queries @shamoon (#13522)
- Fix: crash filtering document link custom fields with an unset or unrelated field present @ggouzi (#13518)
- Fix: parse unpadded yyyy-mm-dd date input regardless of locale @Se1foo (#13501)
Documentation
- Documentation: clarify default OCR mode changes in v3 @shamoon (#13666)
- Fix: fixes for workflow assign custom field values @shamoon (#13630)
- Documentation: add wiki links for AI stuff and parser plugins @shamoon (#13626)
Maintenance
- Chore(deps): Bump the actions group across 1 directory with 20 updates @dependabot[bot] (#13481)
Dependencies
- Chore: Upgrade Docker image to Python 3.14 @stumpylog (#13721)
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#13709)
- Chore: update, reorg some npm deps @shamoon (#13716)
- Chore: update fpdf2 to 2.8.8 @shamoon (#13629)
- Chore: update pnpm, add blockExoticSubdeps @shamoon (#13628)
- Chore(deps): Bump h2 from 4.3.0 to 4.4.1 in the uv group across 1 directory @dependabot[bot] (#13593)
- Chore(deps): Bump pdfjs-dist from 6.1.200 to 6.2.108 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#13594)
- Chore(deps): Bump cryptography from 48.0.1 to 50.0.0 in the uv group across 1 directory @dependabot[bot] (#13588)
- Chore(deps): Bump the utilities-patch group across 1 directory with 6 updates @dependabot[bot] (#13539)
- Chore(deps): Bump the utilities-minor group across 1 directory with 20 updates @dependabot[bot] (#13535)
- Chore(deps): Bump aiohttp from 3.14.1 to 3.14.3 in the uv group across 1 directory @dependabot[bot] (#13537)
- Chore(deps-dev): Bump zensical from 0.0.47 to 0.0.51 in the development group across 1 directory @dependabot[bot] (#13533)
- Chore(deps-dev): Bump postcss from 8.5.22 to 8.5.25 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13534)
- Chore(deps): Bump the pre-commit-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13532)
- Chore: ruff 0.16 upgrade @stumpylog (#13531)
- Chore(deps): Bump the actions group across 1 directory with 20 updates @dependabot[bot] (#13481)
- docker(deps): bump astral-sh/uv from 0.11.28-python3.12-trixie-slim to 0.11.32-python3.12-trixie-slim @dependabot[bot] (#13472)
- docker-compose(deps): bump nginx from 1.31.2-alpine to 1.31.3-alpine in /docker/compose @dependabot[bot] (#13470)
- docker-compose(deps): Bump greenmail/standalone from 2.1.9 to 2.1.11 in /docker/compose @dependabot[bot] (#13469)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 18 updates @dependabot[bot] (#13476)
- Chore(deps-dev): Bump @playwright/test from 1.61.1 to 1.62.0 in /src-ui @dependabot[bot] (#13480)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13477)
- Chore(deps-dev): Bump @types/node from 26.1.0 to 26.1.1 in /src-ui @dependabot[bot] (#13479)
All App Changes
- Fix: prevent config autocomplete craziness @shamoon (#13808)
- Fix/performance: prevent token re-use in dropdown filtering, also a perf thing @shamoon (#13804)
- Enhancement: Apply AI suggestions workflow action @shamoon (#13639)
- Fix: exclude version documents from bulk edit "all" @shamoon (#13791)
- Enhancement: welcome widget visual tweaks @shamoon (#13794)
- Performance: fetch note authors with prefetch instead of one query each @shamoon (#13790)
- Tweak: more misc UI tweaks @shamoon (#13783)
- Enhancement: support using remote OCR engines selectively @shamoon (#13633)
- Fix: fix bottom mobile nav buttons on Android @shamoon (#13780)
- Enhancement: websocket heartbeat @oktupol (#13739)
- Fix: lazy import guardian modules to fix search language setting @shamoon (#13768)
- Enhancement: more v3 ui tweaks @shamoon (#13774)
- Chore: add some missing UI accessibility labels @shamoon (#13772)
- Chore: refactor permission checkbox live changes @shamoon (#13771)
- Tweak: better support long list of views in documents list @shamoon (#13769)
- Fix: version indexing fixes @shamoon (#13737)
- Fix: append charset to file response for text files @shamoon (#13759)
- Fix: align bulk edit object perms with document model @shamoon (#13757)
- QoL: add count badge to versions dropdown @shamoon (#13753)
- Tweakhancement: add jitter to IMAP polling schedule @shamoon (#13734)
- Fix: use selected version for doc detail emailing @shamoon (#13738)
- Fix: hide version delete button without global perms @shamoon (#13735)
- Enhancement: sync OIDC groups to superuser and staff roles @BeSovereign (#13060)
- Enhancement: merge documents as versions @shamoon (#13515)
- Tweak: adjust modal proportions for small screens @shamoon (#13728)
- Refactor: render paperless_ai prompts via Jinja2 templates instead of f-strings @stumpylog (#13698)
- Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#13709)
- Fix: dont re-render path template when checking collisions @shamoon (#13718)
- Chore: update, reorg some npm deps @shamoon (#13716)
- Fix: DocumentClassifierSchema bounds @shamoon (#13707)
- Tweak: small visual tweaks / improvements & fixes @shamoon (#13700)
- Fix: remove shadow around attribute pages @shamoon (#13696)
- Zen: correct dropdown corner radius visual defect @shamoon (#13695)
- Fix: handle Android keyboard popper overlay @shamoon (#13694)
- Enhancement: prefer existing tags, types, correspondents, and storage paths in AI suggestions @stumpylog (#13676)
- Fix: only show create when there is text, hide set values if no fields in cf bulk edit dropdown @shamoon (#13688)
- Fix: reopen a fresh Tantivy index per write to prevent orphaned segment files @stumpylog (#13682)
- Tweak: tweak permissions menu labels for shared user-dependent views @shamoon (#13685)
- Fix: fix validation of workflow title assignment @maxtruxa (#13659)
- Feature: Allow selection of compression type and and level during export @stumpylog (#13661)
- Fix: dont clip search dropdown on mobile @shamoon (#13675)
- Fix: include sharelink bundle perms in WebUI @shamoon (#13664)
- Enhancement: customizable icons for saved views @shamoon (#13388)
- Enhancement: Add --url argument to document_fuzzy_match to improve output @lukyjay (#13123)
- Feature: Updates remote OCR parser to respect the OCR mode setting @stumpylog (#13408)
- Performance: pass document chat queries as a QuerySet instead of a materialized.list @stumpylog (#13638)
- Fix: add pagination to saved views management page @shamoon (#13646)
- Fix: fixes for workflow assign custom field values @shamoon (#13630)
- Fix: deny deactivated users in permission filtering and auto-login @stumpylog (#13623)
- Chore: update fpdf2 to 2.8.8 @shamoon (#13629)
- Chore: update pnpm, add blockExoticSubdeps @shamoon (#13628)
- Fix: check bulk mail delete permissions for the whole batch up front @stumpylog (#13620)
- Tweak: improve no ML suggestions UX @shamoon (#13621)
- Fix: Allow DRF to validate the maximum API key length @stumpylog (#13614)
- Performance: unify permission-filtering backends, fixes Correspondent/Tag list slowness @stumpylog (#13601)
- Performance: generalize permitted_document_ids into permitted_object_ids for any model @stumpylog (#13578)
- Fix: render PDF form values in annotation layer @shamoon (#13607)
- QoL: disable name button without perms @shamoon (#13606)
- Fix: prevent debounce overwrites in advanced search field, also improve Esc behavior @shamoon (#13602)
- Performance: reduce memory and I/O overhead of the document exporter during zip exports @stumpylog (#13490)
- Chore(deps): Bump h2 from 4.3.0 to 4.4.1 in the uv group across 1 directory @dependabot[bot] (#13593)
- Chore(deps): Bump pdfjs-dist from 6.1.200 to 6.2.108 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#13594)
- QoL: make name button text on attribute pages selectable @shamoon (#13592)
- Fix: raise ParseError on remote OCR failure instead of silently continuing @stumpylog (#13574)
- Fix: use selected version when creating share links @shamoon (#13571)
- Chore: specify AI chat refine template @shamoon (#13564)
- Fix: reject bulk edit permissions requests without the correct key @shamoon (#13563)
- Fix: correctly serve app logo specified in env @shamoon (#13561)
- Fix: prevent workflow passwords field type error @shamoon (#13552)
- Chore(deps): Bump the utilities-patch group across 1 directory with 6 updates @dependabot[bot] (#13539)
- Chore(deps): Bump the utilities-minor group across 1 directory with 20 updates @dependabot[bot] (#13535)
- Performance: More efficient mail fetching @stumpylog (#13432)
- Performance: eliminate per-document guardian permission-check causing high CPU on document lists @stumpylog (#13505)
- Fix: correct Firefox print regression @shamoon (#13543)
- Fix: hide some saved view operations on management page without permissions @shamoon (#13542)
- Chore(deps): Bump aiohttp from 3.14.1 to 3.14.3 in the uv group across 1 directory @dependabot[bot] (#13537)
- Chore(deps-dev): Bump zensical from 0.0.47 to 0.0.51 in the development group across 1 directory @dependabot[bot] (#13533)
- Fix: disable pdfjs selection rendering @shamoon (#13538)
- Fix: hide sidebar drag grips with insufficient permissions @shamoon (#13536)
- Chore(deps-dev): Bump postcss from 8.5.22 to 8.5.25 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13534)
- Chore: ruff 0.16 upgrade @stumpylog (#13531)
- Fix: don't re-queue a consume-folder file that is already queued and awaiting consumption @stumpylog (#13526)
- Fix: correct multi-search non-adjacent queries @shamoon (#13504)
- Fix: Content-Disposition filename normalization @shamoon (#13514)
- Fix: prevent duplicated text query with multiple date queries @shamoon (#13522)
- Fix: crash filtering document link custom fields with an unset or unrelated field present @ggouzi (#13518)
- Fix: parse unpadded yyyy-mm-dd date input regardless of locale @Se1foo (#13501)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 18 updates @dependabot[bot] (#13476)
- Chore(deps-dev): Bump @playwright/test from 1.61.1 to 1.62.0 in /src-ui @dependabot[bot] (#13480)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13477)
- Chore(deps-dev): Bump @types/node from 26.1.0 to 26.1.1 in /src-ui @dependabot[bot] (#13479)
v3.0.5Paperless-ngx v3.0.5
paperless-ngx 3.0.5
Bug Fixes
- Fix: accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries @stumpylog (#13486)
- Fix: fix edit dialog error change detection @shamoon (#13483)
- Fix: key the AI suggestion cache by model and endpoint @lunetics (#13449)
- Fix: validate custom field values in bulk operations @shamoon (#13457)
- Fixhancement: better handle empty fields from AI suggestions @shamoon (#13454)
- Fix: normalize monetary decimal symbol by locale @shamoon (#13427)
- Fix: fold overflowing path text in sanity checker @stumpylog (#13426)
- Fix: correct delayed add field button for custom fields @shamoon (#13424)
- Fix: hide attributes collapse / show button without UI settings @shamoon (#13425)
- Fix: consolidate born-digital PDF detection between archive decision and OCR @stumpylog (#13409)
- Fix: prevent scale vs page loop in pngx PDF viewer @shamoon (#13406)
- Fix: handle hidden line breaks in email subjects when sending email @shamoon (#13402)
- Fix: avoid NotSupportedError from document_importer on MariaDB @stumpylog (#13400)
- Fix: exclude next-period start from relative date-range filters @stumpylog (#13381)
- Fix: close non-atomic db connections in before_task_publish @shamoon (#13366)
- Chore/fix: refactor frontend task service @shamoon (#13365)
- Fix: fix Enter selection in search autocomplete @shamoon (#13361)
Documentation
- Documentation: PAPERLESS_CONSUMER_IGNORE_PATTERNS clarifications @shamoon (#13489)
- Documentation: Add Password Removal workflow action documentation @stumpylog (#13377)
Dependencies
- Chore(deps): Bump pymdown-extensions from 10.21.3 to 11.0 in the uv group across 1 directory @dependabot[bot] (#13378)
All App Changes
- Fix: accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries @stumpylog (#13486)
- Fix: fix edit dialog error change detection @shamoon (#13483)
- Performance: sqlite-vec point-delete for document chunks @stumpylog (#13438)
- Fix: key the AI suggestion cache by model and endpoint @lunetics (#13449)
- Fix: validate custom field values in bulk operations @shamoon (#13457)
- Fixhancement: better handle empty fields from AI suggestions @shamoon (#13454)
- Performance: Use server side iterators during LLM index updating @stumpylog (#13430)
- Fix: normalize monetary decimal symbol by locale @shamoon (#13427)
- Fix: fold overflowing path text in sanity checker @stumpylog (#13426)
- Fix: correct delayed add field button for custom fields @shamoon (#13424)
- Fix: hide attributes collapse / show button without UI settings @shamoon (#13425)
- Fix: consolidate born-digital PDF detection between archive decision and OCR @stumpylog (#13409)
- Fix: prevent scale vs page loop in pngx PDF viewer @shamoon (#13406)
- Fix: handle hidden line breaks in email subjects when sending email @shamoon (#13402)
- Fix: avoid NotSupportedError from document_importer on MariaDB @stumpylog (#13400)
- Tweak: adjust doc details button toolbar flow @shamoon (#13382)
- Fix: exclude next-period start from relative date-range filters @stumpylog (#13381)
- Chore(deps): Bump pymdown-extensions from 10.21.3 to 11.0 in the uv group across 1 directory @dependabot[bot] (#13378)
- Fix: close non-atomic db connections in before_task_publish @shamoon (#13366)
- Chore/fix: refactor frontend task service @shamoon (#13365)
- Fix: fix Enter selection in search autocomplete @shamoon (#13361)
v3.0.4Paperless-ngx v3.0.4
paperless-ngx 3.0.4
Bug Fixes
- Fix: prevent pdfjs highlight scrolling from affecting the entire page @shamoon (#13355)
- Fix: don't skip OCR/archive for tagged PDFs with no actual text @stumpylog (#13351)
- Performance: more efficient diacritic normalization in dropdown filtering @shamoon (#13347)
- Fix: dedupe permission-visible documents when combined with multi-tag filters @stumpylog (#13345)
- Fixhancement: pass LLM output language to chat if specified @shamoon (#13340)
- Fix: ensure preview reload on live changes @shamoon (#13321)
- Fix: clamp all out out-of-range possible fields @stumpylog (#13316)
- Fix: add docstring to DocumentClassifierSchema for cleaner LLM tool description @stumpylog (#13315)
- Fix: guard build_document_node against stale FK on deleted correspondent/doc type @stumpylog (#13318)
- Fix: prevent search filter loss when closing document with Escape key @shamoon (#13317)
- Fix: fix frontend permissions display for stats/system perms @shamoon (#13305)
Documentation
- Documentation: fix PAPERLESS_AI_LLM_OUTPUT_LANGUAGE heading level @SuperSandro2000 (#13341)
Dependencies
- Chore: resolve npm provenance issues with chokidar and semver @shamoon (#13323)
All App Changes
- Fix: prevent pdfjs highlight scrolling from affecting the entire page @shamoon (#13355)
- Fix: don't skip OCR/archive for tagged PDFs with no actual text @stumpylog (#13351)
- Performance: more efficient diacritic normalization in dropdown filtering @shamoon (#13347)
- Performance: prefetch notes and custom fields for LLM index text building @stumpylog (#13350)
- Fix: dedupe permission-visible documents when combined with multi-tag filters @stumpylog (#13345)
- Performance: Scope llm index updates to actually modified documents @stumpylog (#13322)
- Fixhancement: pass LLM output language to chat if specified @shamoon (#13340)
- Chore: resolve npm provenance issues with chokidar and semver @shamoon (#13323)
- Fix: ensure preview reload on live changes @shamoon (#13321)
- Fix: clamp all out out-of-range possible fields @stumpylog (#13316)
- Fix: add docstring to DocumentClassifierSchema for cleaner LLM tool description @stumpylog (#13315)
- Fix: guard build_document_node against stale FK on deleted correspondent/doc type @stumpylog (#13318)
- Fix: prevent search filter loss when closing document with Escape key @shamoon (#13317)
- Fix: fix frontend permissions display for stats/system perms @shamoon (#13305)
v3.0.3Paperless-ngx v3.0.3
paperless-ngx 3.0.3
Bug Fixes
- Fixhancement: PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT @shamoon (#13281)
- Fix: preserve document fields during Gotenberg conversion to PDF @stumpylog (#13271)
- Fix: Makes the email date aware as soon as possible during parsing @stumpylog (#13266)
- Fix: Handle a plain string as Celery sometimes provides for the traceback @stumpylog (#13267)
- Fix: Emit the torch index into the requirements.txt for people still using it @stumpylog (#13265)
- Fix: handle notes without a user when building the search index @matthiasmast (#13260)
Documentation
- Docs: warn bare-metal users about stale files when upgrading @stumpylog (#13296)
- Documentation: Add the NumPy CPU baseline increase to the migration guide @stumpylog (#13269)
Maintenance
- Fix: Emit the torch index into the requirements.txt for people still using it @stumpylog (#13265)
All App Changes
- Fixhancement: PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT @shamoon (#13281)
- Tweak: adjust top navbar wrapping when AI chat button visible @shamoon (#13280)
- Fix: preserve document fields during Gotenberg conversion to PDF @stumpylog (#13271)
- Fix: Makes the email date aware as soon as possible during parsing @stumpylog (#13266)
- Fix: Handle a plain string as Celery sometimes provides for the traceback @stumpylog (#13267)
- Fix: handle notes without a user when building the search index @matthiasmast (#13260)
v3.0.2Paperless-ngx v3.0.2
v3.0.1Paperless-ngx v3.0.1
[!WARNING] An issue with database migrations prevents v3.0.1 from running, users should upgrade to v3.0.2
paperless-ngx 3.0.1
Bug Fixes
- Fix: selection_data re-derives the filtered document set 5 times over @stumpylog (#13229)
- Fix: exclude source document from its own RAG similarity results @stumpylog (#13233)
- Fix: split mailrule maximum_age clamp into its own migration @stumpylog (#13231)
- Chore: mark yes in confirm button for translation @shamoon (#13225)
- Fix: correct URL for W001 check @shamoon (#13220)
- Fix: ensure create dialog uses correct attribute type @shamoon (#13221)
- Fix: correct database engine from postgres to postgresql @OberstVonGatow (#13213)
- Fix: remove unnecessary .distinct() dominating document list queries @stumpylog (#13205)
- Fix: also wrap non-breaking words in chat messages, handle whitespace @shamoon (#13211)
- Fix: tag/custom-field document_count scales badly with tag count @stumpylog (#13203)
- Fix: batch document user_can_change checks to avoid per-row N+1 @stumpylog (#13204)
- Fix: fix app title restoration @shamoon (#13208)
- Fix: handle long wrapping titles in AI chat document list @shamoon (#13206)
Dependencies
- Chore(deps-dev): Bump postcss from 8.5.6 to 8.5.22 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13236)
- Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @dependabot[bot] (#13237)
- Chore(deps): Bump the uv group across 1 directory with 8 updates @dependabot[bot] (#13189)
All App Changes
- Chore(deps-dev): Bump postcss from 8.5.6 to 8.5.22 in /src/paperless_mail/templates in the npm_and_yarn group across 1 directory @dependabot[bot] (#13236)
- Fix: selection_data re-derives the filtered document set 5 times over @stumpylog (#13229)
- Chore: reword "Settings > Default permissions" description for clarity @NotaInutilis (#13232)
- Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @dependabot[bot] (#13237)
- Chore(deps): Bump the uv group across 1 directory with 8 updates @dependabot[bot] (#13189)
- Fix: exclude source document from its own RAG similarity results @stumpylog (#13233)
- Fix: split mailrule maximum_age clamp into its own migration @stumpylog (#13231)
- Chore: mark yes in confirm button for translation @shamoon (#13225)
- Fix: correct URL for W001 check @shamoon (#13220)
- Fix: ensure create dialog uses correct attribute type @shamoon (#13221)
- Fix: correct database engine from postgres to postgresql @OberstVonGatow (#13213)
- Fix: remove unnecessary .distinct() dominating document list queries @stumpylog (#13205)
- Fix: also wrap non-breaking words in chat messages, handle whitespace @shamoon (#13211)
- Fix: tag/custom-field document_count scales badly with tag count @stumpylog (#13203)
- Fix: batch document user_can_change checks to avoid per-row N+1 @stumpylog (#13204)
- Fix: fix app title restoration @shamoon (#13208)
- Fix: handle long wrapping titles in AI chat document list @shamoon (#13206)
v3.0.0Paperless-ngx v3.0.0
paperless-ngx 3.0.0
Breaking Changes
- [BREAKING] Remove the positional arguments from the pre/post consume scripts @stumpylog (#12573)
- [BREAKING] Decouple OCR control from archive file control @stumpylog (#12448)
- [BREAKING] Chore: drop support for api versions < 9 @shamoon (#12284)
- [BREAKING] Chore: Drop support for Python 3.10 @stumpylog (#12234)
- [BREAKING] Chore: Refactor advanced database settings to allow more user configuration @stumpylog (#12165)
- [BREAKING] Remove API v1 compatability @stumpylog (#12166)
- [BREAKING] Remove pybzar as a barcode reader @stumpylog (#12065)
- [BREAKING] Remove support for document and thumbnail encryption @stumpylog (#11850)
- [BREAKING] Feature: Simplify and improve the consumer @stumpylog (#11753)
Notable Changes
- Feature: Replace Whoosh with tantivy search backend @stumpylog (#12471)
- Feature: document parser plugin framework @stumpylog (#12294)
- Feature: document file versions @shamoon (#12061)
- Feature: sharelink bundles @shamoon (#11682)
- Feature: Paperless AI @shamoon (#10319)
- Feature: Remote OCR (Azure AI) @shamoon (#10320)
Features / Enhancements
- [Beta] Paperless-ngx v3.0.0 Beta @shamoon (#12713)
- Tweakhancement (beta): allow some bulk operations with all @shamoon (#13193)
- Security (beta): enforce current permissions in autocomplete @shamoon (#13188)
- Security (beta): bound email linkification @shamoon (#13187)
- Change: update root modified timestamp on version changes @shamoon (#13170)
- Performance: add DB indexes for common query/sort patterns @stumpylog (#13167)
- Performance: use NgOptimizedImage for thumbnail lazy loading @shamoon (#13169)
- Performance: Tantivy indexing optimization @Merinorus (#13053)
- 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)
- 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)
- Feature: Further reduce document importer memory usage @stumpylog (#12707)
- Tweakhancement: use fixed position instead of display none for printing @shamoon (#12706)
- Enhancement: Paperless-ngx v3 Logo @shamoon (#12673)
- Tweakhancement: localize some more task result messages @shamoon (#12672)
- Enhancement: chat message document links @shamoon (#12670)
- Tweakhancement: make upload notification open an anchor link @shamoon (#12659)
- Tweakhancement: tweak tasks UI, make open doc an anchor @shamoon (#12658)
- Enhancement: show small task summary in system status @shamoon (#12634)
- Enhancement: new Tasks UI @shamoon (#12614)
- Feature: Allow monitoring access to tasks summary @stumpylog (#12624)
- Tweak: remove stale index warning @shamoon (#12616)
- Enhancement: add highlighting to title + content searches @shamoon (#12593)
- Feature: Redesign the task system @stumpylog (#12584)
- Feature: Tune SQLite default settings for increased speed @stumpylog (#12580)
- Feature: Document fuzzy match improvements @stumpylog (#12579)
- Enhancement: validate and sanitize uploaded logos @shamoon (#12551)
- Enhancement: add view_global_statistics and view_system_status permissions @shamoon (#12530)
- Fixhancement: include sharelinks + bundles in export/import @shamoon (#12479)
- Enhancement: unify text search to use tantivy @shamoon (#12485)
- Feature: Consumer logging correlation @stumpylog (#12510)
- Security enhancement: allow opt-in blocking internal mail hosts @shamoon (#12502)
- Feature: Replace Whoosh with tantivy search backend @stumpylog (#12471)
- Fixhancement: include trashed documents in document exporter/importer @JanKleine (#12425)
- Tweakhancement: show file extension in StoragePath test @shamoon (#12452)
- Feature: Transition all checksums to use SHA256 @stumpylog (#12432)
- Enhancement: auto-hide the search bar on mobile @shamoon (#12404)
- Change: sort custom fields alphabetically by default @shamoon (#12358)
- Feature: Add progress information to the classifier training for a better ux @stumpylog (#12331)
- Feature: document parser plugin framework @stumpylog (#12294)
- Enhancement: Make the StatusConsumer truly async @stumpylog (#12298)
- Feature: Migrate import/export to rich progress @stumpylog (#12260)
- Enhancement: Show more document details in merge dialog @svenstaro (#12271)
- Enhancement: saved view sharing @shamoon (#12142)
- Enhancement: “live” document updates @shamoon (#12141)
- Enhancement: Improve the retagger output using rich @stumpylog (#12194)
- Enhancement: Transition sanity check to rich and improve output @stumpylog (#12182)
- Enhancement: Switch all indexing to use rich @stumpylog (#12193)
- Feature: Switch progress bar library to rich @stumpylog (#12169)
- Enhancment: Formatted filename for single document downloads @JanKleine (#12095)
- Feature: document file versions @shamoon (#12061)
- Enhancement: prevent duplicate mail processing across rules @shamoon (#12159)
- Feature: move to trash action for workflows @JanKleine (#11176)
- Tweakhancement: reset to page 1 on reset filters @shamoon (#12143)
- Enhancement: consolidate management lists into document attributes section @shamoon (#12045)
- Enhancement: option to stop processing further mail rules @shamoon (#12053)
- Tweak: improve 2-digit year parsing @shamoon (#12044)
- Enhancement: pngx pdf viewer @shamoon (#12043)
- Fixhancement: improve ASN handling with PDF operations @shamoon (#11689)
- Feature: Enable users to customize date parsing via plugins @stumpylog (#11931)
- Feature: password removal workflow action @shamoon (#11665)
- Enhancement: per-type object page sizing @shamoon (#11977)
- Enhancement: improve filter drop-down performance with virtual scrolling @shamoon (#11973)
- Tweakhancement: tweak bulk delete text @shamoon (#11967)
- Feature: support split documents based on tag barcodes @schober-ch (#11645)
- Enhancement: Add setting for default PDF Editor mode @JanKleine (#11927)
- Fixhancement: auto-queue llm index if needed @shamoon (#11891)
- Feature: sharelink bundles @shamoon (#11682)
- Enhancement: user control of doc details fields @shamoon (#11906)
- Enhancement: improve relative dates in date filter @JanKleine (#11899)
- Enhancement: allow duplicates with warnings, UI for discovery @shamoon (#11815)
- Enhancement: configurable SSO groups claim @Gabgobie (#11841)
- Enhancement: support select all for management lists @shamoon (#11889)
- Tweakhancement: display document id, with copy @shamoon (#11896)
- Enhancement: Add support for app oidc @paulgessinger (#11756)
- Enhancement: Add 'any of' workflow trigger filters @shamoon (#11683)
- Enhancement: support doc_id placeholder in workflow templates @shamoon (#11847)
- Performance: improve treenode inefficiencies @shamoon (#11606)
- Feature: Remote OCR (Azure AI) @shamoon (#10320)
- Feature: password removal action @shamoon (#11656)
- Tweakhancement: use anchor element for management list quick filter buttons @shamoon (#11692)
- Feature: Indonesian translation @shamoon (#11641)
Bug Fixes
- Fix (beta): prevent pdfjs offsetParent warning @shamoon (#13197)
- Fix (beta): dont include hidden buttons in virtual scroll container height @shamoon (#13194)
- Fix (beta): fix custom field bulk editing for 'all' @shamoon (#13191)
- Security (beta): two small permission check fixes @shamoon (#13186)
- Fix (beta): short-circuit ObjectOwnedOrGrantedPermissionsFilter for superusers @stumpylog (#13183)
- Fix (beta): compute num_notes via a subquery instead of Count()+distinct @stumpylog (#13182)
- Fix: prevent tag assignment from reverting other pending workflow assignments @stumpylog (#13178)
- Fix(beta): cache per-request effective-document resolution for thumb/metadata/preview @stumpylog (#13166)
- Fix: fallback from archive version for share links @shamoon (#13163)
- Fix: better handle saved view errors in dashboard widgets @shamoon (#13164)
- Fix (beta): convert chat component to signal-backed Angular @shamoon (#13152)
- Fix: HTTP 500 filtering documents by tags + custom field query on MariaDB @stumpylog (#13143)
- 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)
- Fix: avoid unnecessary close_old_connections in Celery task dispatch @stumpylog (#12701)
- Fix: apply tag changes directly to document in db @shamoon (#12664)
- Fix: Use FileResponse for file API responses @stumpylog (#12638)
- Fix: Changes bare metal webserver to use uvloop @stumpylog (#12626)
- Fixhancement: Exact custom field monetary exact searching @stumpylog (#12592)
- Fix: relative added date check visibility @shamoon (#12600)
- Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type @ggouzi (#12597)
- Fix: reject invalid requests to API notes endpoint @ggouzi (#12582)
- Fixhancement: include sharelinks + bundles in export/import @shamoon (#12479)
- Fix: Respect workflow change_groups during consumption @stumpylog (#12431)
- Fix: Don't try to update the user when running as non-root @stumpylog (#12365)
- Fix: use maxsplit=1 in Redis URL parsing to handle URLs with multiple colons @cryptomilk (#12239)
- Fixhancement: show sequential + id version labels, fix padding @shamoon (#12196)
- Fix: correct user dropdown button icon styling @shamoon (#12092)
- Fix: Handle an OOM kill of celery workers in the task handler @stumpylog (#12040)
- Fix: re-run ASN check after barcode detection @shamoon (#11681)
- Fix: prevent infinite loading crash in mail component @shamoon (#11978)
- Fix: fix broken docker create_classifier command in 2.20.6 @shamoon (#11965)
- Fix: ensure css color-scheme for dark mode @shamoon (#11855)
- Fix: fix tag list horizontal scroll, again @shamoon (#11839)
- Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent @shamoon (#11811)
- Fix: use explicit order field for workflow actions @shamoon (#11781)
- Fix: fix recurring workflow to respect latest run time @shamoon (#11735)
- Fixhancement: add error handling and retry when opening index @shamoon (#11731)
- Fix: validate cf integer values within PostgreSQL range @shamoon (#11666)
- Fix: support ordering by storage path name @shamoon (#11661)
- Fix: propagate metadata override created value @shamoon (#11659)
- Fix: prevent ASN collisions for merge operations @shamoon (#11634)
Documentation
- [Beta] Paperless-ngx v3.0.0 Beta @shamoon (#12713)
- Fix: clamp mailrule max age before migration @shamoon (#13093)
- Documentation (beta): Updates documentation for new v3 features @stumpylog (#13033)
- Documentation: fix PAPERLESS_DATE_PARSER_LANGUAGES formatting @shamoon (#12997)
- 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)
- Enhancement: Paperless-ngx v3 Logo @shamoon (#12673)
- Chore: separate actions from bulk edit endpoint @shamoon (#12286)
- Chore: Switches to use prek in place of pre-commit @stumpylog (#12002)
- Chore: upgrade to node v24 @shamoon (#11747)
Maintenance
- [Beta] Paperless-ngx v3.0.0 Beta @shamoon (#12713)
- 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)
- Chore(deps): Bump the actions group across 1 directory with 17 updates @dependabot[bot] (#12686)
- Chore(deps): Bump the actions group across 1 directory with 4 updates @dependabot[bot] (#12538)
- Chore(deps-dev): Bump @playwright/test from 1.58.2 to 1.59.0 in /src-ui @dependabot[bot] (#12537)
- Chore: address more zizmor flags @shamoon (#12529)
- Chore: Resolves some zizmor reported code scan findings @stumpylog (#12516)
- Chore(deps): Bump the actions group across 1 directory with 9 updates @dependabot[bot] (#12490)
- Chore(deps): Bump the actions group with 2 updates @dependabot[bot] (#12377)
- Chore(deps): Bump the actions group with 3 updates @dependabot[bot] (#12322)
- Chore: Don't upload digets file as a zip @stumpylog (#12264)
- Chore(deps): Bump the actions group across 1 directory with 6 updates @dependabot[bot] (#12224)
- Chore(deps): Bump j178/prek-action from 1.1.0 to 1.1.1 in the actions group @dependabot[bot] (#12033)
- Chore: Switches to use prek in place of pre-commit @stumpylog (#12002)
- Chore: Enable mypy checking in CI @stumpylog (#11991)
- Chore(deps): Bump the actions group with 2 updates @dependabot[bot] (#11966)
- Chore: upgrade to node v24 @shamoon (#11747)
- Performance: pre-compress static files on ARM64 @stumpylog (#11721)
- Chore(deps): Bump the actions group with 4 updates @dependabot[bot] (#11695)
- Feature: Indonesian translation @shamoon (#11641)
Dependencies
Removed for character
All App Changes
- [Beta] Paperless-ngx v3.0.0 Beta @shamoon (#12713)
- Chore (beta): mark first batch of thumbnails as priorty for LCP warning @shamoon (#13196)
- Fix (beta): prevent pdfjs offsetParent warning @shamoon (#13197)
- Fix (beta): dont include hidden buttons in virtual scroll container height @shamoon (#13194)
- Tweakhancement (beta): allow some bulk operations with all @shamoon (#13193)
- Fix (beta): fix custom field bulk editing for 'all' @shamoon (#13191)
- Security (beta): enforce current permissions in autocomplete @shamoon (#13188)
- Security (beta): bound email linkification @shamoon (#13187)
- Security (beta): two small permission check fixes @shamoon (#13186)
- Fix (beta): short-circuit ObjectOwnedOrGrantedPermissionsFilter for superusers @stumpylog (#13183)
- Fix (beta): compute num_notes via a subquery instead of Count()+distinct @stumpylog (#13182)
- Change: update root modified timestamp on version changes @shamoon (#13170)
- Fix: prevent tag assignment from reverting other pending workflow assignments @stumpylog (#13178)
- Performance: add DB indexes for common query/sort patterns @stumpylog (#13167)
- Performance: use NgOptimizedImage for thumbnail lazy loading @shamoon (#13169)
- Fix(beta): cache per-request effective-document resolution for thumb/metadata/preview @stumpylog (#13166)
- Fix: fallback from archive version for share links @shamoon (#13163)
- Fix: better handle saved view errors in dashboard widgets @shamoon (#13164)
- Fix (beta): convert chat component to signal-backed Angular @shamoon (#13152)
- Fix: HTTP 500 filtering documents by tags + custom field query on MariaDB @stumpylog (#13143)
- Performance: Tantivy indexing optimization @Merinorus (#13053)
- 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)
- 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)
- Feature: Further reduce document importer memory usage @stumpylog (#12707)
- Chore(deps-dev): Bump @playwright/test from 1.59.0 to 1.59.1 in /src-ui @dependabot[bot] (#12692)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#12689)
- Chore(deps-dev): Bump @codecov/webpack-plugin from 1.9.1 to 2.0.1 in /src-ui @dependabot[bot] (#12691)
- Chore(deps-dev): Bump the frontend-jest-dependencies group across 1 directory with 2 updates @dependabot[bot] (#12685)
- Chore(deps-dev): Bump @types/node from 25.5.0 to 25.6.0 in /src-ui @dependabot[bot] (#12690)
- Chore(deps-dev): Bump webpack from 5.105.3 to 5.106.2 in /src-ui @dependabot[bot] (#12693)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 15 updates @dependabot[bot] (#12684)
- Tweakhancement: use fixed position instead of display none for printing @shamoon (#12706)
- Fix: avoid unnecessary close_old_connections in Celery task dispatch @stumpylog (#12701)
- Chore(deps): Bump the utilities-patch group across 1 directory with 7 updates @dependabot[bot] (#12702)
- Chore(deps): Bump the utilities-minor group across 1 directory with 9 updates @dependabot[bot] (#12696)
- Chore(deps): Bump ocrmypdf from 17.4.0 to 17.4.2 in the document-processing group across 1 directory @dependabot[bot] (#12687)
- Chore(deps-dev): Bump the development group with 2 updates @dependabot[bot] (#12683)
- Enhancement: Paperless-ngx v3 Logo @shamoon (#12673)
- Tweakhancement: localize some more task result messages @shamoon (#12672)
- Enhancement: chat message document links @shamoon (#12670)
- Fix: apply tag changes directly to document in db @shamoon (#12664)
- Tweakhancement: make upload notification open an anchor link @shamoon (#12659)
- Tweakhancement: tweak tasks UI, make open doc an anchor @shamoon (#12658)
- Fix: Use FileResponse for file API responses @stumpylog (#12638)
- Chore: Paginate the task listing @stumpylog (#12633)
- Enhancement: show small task summary in system status @shamoon (#12634)
- Security: Don't allow the example secret key as a secret key @stumpylog (#12630)
- Chore(deps): Bump uuid from 13.0.0 to 14.0.0 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12627)
- Enhancement: new Tasks UI @shamoon (#12614)
- Feature: Allow monitoring access to tasks summary @stumpylog (#12624)
- Chore(deps): Bump lxml from 6.0.2 to 6.1.0 in the uv group across 1 directory @dependabot[bot] (#12619)
- Performance: Increases workflow related M2M prefetching @stumpylog (#12618)
- Tweak: remove stale index warning @shamoon (#12616)
- Fixhancement: Exact custom field monetary exact searching @stumpylog (#12592)
- Performance: Resolves another N+1 query related to custom fields @stumpylog (#12617)
- Enhancement: add highlighting to title + content searches @shamoon (#12593)
- Feature: Redesign the task system @stumpylog (#12584)
- Fix: relative added date check visibility @shamoon (#12600)
- Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type @ggouzi (#12597)
- Chore(deps): Bump hono from 4.12.12 to 4.12.14 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12585)
- Feature: Tune SQLite default settings for increased speed @stumpylog (#12580)
- Feature: Document fuzzy match improvements @stumpylog (#12579)
- Fix: reject invalid requests to API notes endpoint @ggouzi (#12582)
- [BREAKING] Remove the positional arguments from the pre/post consume scripts @stumpylog (#12573)
- Chore(deps): Bump follow-redirects from 1.15.11 to 1.16.0 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12575)
- Chore(deps): Bump pillow from 12.1.1 to 12.2.0 in the uv group across 1 directory @dependabot[bot] (#12574)
- Chore(deps-dev): Bump pytest from 9.0.2 to 9.0.3 in the uv group across 1 directory @dependabot[bot] (#12568)
- Enhancement: validate and sanitize uploaded logos @shamoon (#12551)
- Chore(deps): Bump the utilities-minor group across 1 directory with 19 updates @dependabot[bot] (#12540)
- Chore(deps): Bump cryptography from 46.0.6 to 46.0.7 in the uv group across 1 directory @dependabot[bot] (#12546)
- Chore(deps-dev): Bump types-python-dateutil from 2.9.0.20260305 to 2.9.0.20260323 @dependabot[bot] (#12542)
- Chore(deps-dev): Bump types-pytz from 2025.2.0.20251108 to 2026.1.1.20260304 @dependabot[bot] (#12541)
- Chore(deps): Bump django-guardian from 3.3.0 to 3.3.1 in the utilities-patch group across 1 directory @dependabot[bot] (#12539)
- Chore(deps-dev): Bump zensical from 0.0.29 to 0.0.31 in the development group across 1 directory @dependabot[bot] (#12532)
- Chore(deps): Bump pdfjs-dist from 5.4.624 to 5.6.205 in /src-ui @dependabot[bot] (#12536)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 3 updates @dependabot[bot] (#12535)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 5 updates @dependabot[bot] (#12533)
- Chore(deps-dev): Bump jest-preset-angular from 16.1.1 to 16.1.2 in /src-ui in the frontend-jest-dependencies group across 1 directory @dependabot[bot] (#12534)
- Chore(deps-dev): Bump @playwright/test from 1.58.2 to 1.59.0 in /src-ui @dependabot[bot] (#12537)
- Enhancement: add view_global_statistics and view_system_status permissions @shamoon (#12530)
- Chore(deps): Bump the npm_and_yarn group across 1 directory with 2 updates @dependabot[bot] (#12531)
- [BREAKING] Decouple OCR control from archive file control @stumpylog (#12448)
- Fixhancement: include sharelinks + bundles in export/import @shamoon (#12479)
- Chore: Better typed status manager messages @stumpylog (#12509)
- Enhancement: unify text search to use tantivy @shamoon (#12485)
- Feature: Consumer logging correlation @stumpylog (#12510)
- Chore(deps): Bump djangorestframework from 3.16.1 to 3.17.1 in the django-ecosystem group across 1 directory @dependabot[bot] (#12488)
- Chore(deps): Bump the document-processing group across 1 directory with 3 updates @dependabot[bot] (#12489)
- Chore(deps): Bump the utilities-patch group across 1 directory with 5 updates @dependabot[bot] (#12499)
- Security: Sign the Celery pickled tasks @stumpylog (#12504)
- Security enhancement: allow opt-in blocking internal mail hosts @shamoon (#12502)
- Feature: Replace Whoosh with tantivy search backend @stumpylog (#12471)
- Chore(deps): Bump aiohttp from 3.13.3 to 3.13.4 in the uv group across 1 directory @dependabot[bot] (#12486)
- Chore(deps): Bump lodash from 4.17.23 to 4.18.1 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12498)
- Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 20 updates @dependabot[bot] (#12491)
- Chore(deps-dev): Bump @types/node from 25.4.0 to 25.5.0 in /src-ui @dependabot[bot] (#12494)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @dependabot[bot] (#12493)
- Performance: support bulk edit without id lists @shamoon (#12355)
- Performance: deprecate and remove usage of
allin API results @shamoon (#12309) - Performance: support passing selection data with filtered document requests @shamoon (#12300)
- Chore(deps): Bump cryptography from 46.0.5 to 46.0.6 in the uv group across 1 directory @dependabot[bot] (#12458)
- Tweakhancement: show file extension in StoragePath test @shamoon (#12452)
- Feature: Transition all checksums to use SHA256 @stumpylog (#12432)
- Chore(deps): Bump requests from 2.32.5 to 2.33.0 in the uv group across 1 directory @dependabot[bot] (#12441)
- Enhancement: auto-hide the search bar on mobile @shamoon (#12404)
- Chore: logger, response and template sanitization cleanup @shamoon (#12439)
- Fix: Respect workflow change_groups during consumption @stumpylog (#12431)
- Security: prevent prototype pollution in frontend settings and list view @shamoon (#12438)
- Chore(deps): Bump cbor2 from 5.8.0 to 5.9.0 in the uv group across 1 directory @dependabot[bot] (#12424)
- Chore(deps): Bump tinytag from 2.2.0 to 2.2.1 in the uv group across 1 directory @dependabot[bot] (#12396)
- Chore(deps): Bump ujson from 5.11.0 to 5.12.0 @dependabot[bot] (#12387)
- Chore(deps): Bump pyasn1 from 0.6.2 to 0.6.3 @dependabot[bot] (#12370)
- Chore(deps): Bump the utilities-patch group across 1 directory with 2 updates @dependabot[bot] (#12382)
- Chore(deps): Bump openai from 2.24.0 to 2.26.0 in the utilities-minor group @dependabot[bot] (#12379)
- Chore(deps-dev): Bump types-python-dateutil from 2.9.0.20260124 to 2.9.0.20260305 @dependabot[bot] (#12380)
- Chore(deps): Update django-allauth[mfa,socialaccount] requirement from ~=65.14.0 to ~=65.15.0 @dependabot[bot] (#12381)
- Chore(deps-dev): Bump the frontend-jest-dependencies group in /src-ui with 2 updates @dependabot[bot] (#12374)
- Chore(deps): Bump @ng-select/ng-select from 21.4.1 to 21.5.2 in /src-ui in the frontend-angular-dependencies group @dependabot[bot] (#12373)
- Chore(deps-dev): Bump @types/node from 25.3.3 to 25.4.0 in /src-ui @dependabot[bot] (#12376)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @dependabot[bot] (#12375)
- Chore: Reduce system status test times @stumpylog (#12354)
- Chore(deps): Bump pyopenssl from 25.3.0 to 26.0.0 @dependabot[bot] (#12363)
- Chore(deps): Bump pyjwt from 2.10.1 to 2.12.0 @dependabot[bot] (#12335)
- Change: sort custom fields alphabetically by default @shamoon (#12358)
- Feature: Add progress information to the classifier training for a better ux @stumpylog (#12331)
- Chore: bump Angular dependencies to 21.2.x @shamoon (#12338)
- Bump ocrmypdf from 16.13.0 to 17.3.0 in the document-processing group @dependabot[bot] (#12267)
- Feature: document parser plugin framework @stumpylog (#12294)
- Chore(deps): Bump tornado from 6.5.4 to 6.5.5 @dependabot[bot] (#12327)
- Enhancement: Make the StatusConsumer truly async @stumpylog (#12298)
- Chore(deps): Bump the utilities-minor group across 1 directory with 5 updates @dependabot[bot] (#12324)
- Chore: mark document detail email action as deprecated @shamoon (#12308)
- Chore: separate actions from bulk edit endpoint @shamoon (#12286)
- [BREAKING] Chore: drop support for api versions < 9 @shamoon (#12284)
- Chore(deps): Bump the utilities-patch group across 1 directory with 6 updates @dependabot[bot] (#12291)
- Performance: Stream JSON during import for memory improvements @stumpylog (#12276)
- Feature: Migrate import/export to rich progress @stumpylog (#12260)
- Enhancement: Show more document details in merge dialog @svenstaro (#12271)
- Performance: Further export memory improvements @stumpylog (#12273)
- Chore: pytest style paperless tests @stumpylog (#12254)
- Chore: update ESLint to v10 @shamoon (#12256)
- Bump django-allauth from 65.14.0 to 65.14.1 @dependabot[bot] (#12253)
- Bump django from 5.2.11 to 5.2.12 @dependabot[bot] (#12249)
- [BREAKING] Chore: Drop support for Python 3.10 @stumpylog (#12234)
- Performance: Improve exporter memory efficiency @stumpylog (#12236)
- Enhancement: saved view sharing @shamoon (#12142)
- Fix: use maxsplit=1 in Redis URL parsing to handle URLs with multiple colons @cryptomilk (#12239)
- Enhancement: “live” document updates @shamoon (#12141)
- Enhancement: Improve the retagger output using rich @stumpylog (#12194)
- Enhancement: Transition sanity check to rich and improve output @stumpylog (#12182)
- Enhancement: Switch all indexing to use rich @stumpylog (#12193)
- Chore(deps): Bump whitenoise from 6.11.0 to 6.12.0 in the django-ecosystem group @dependabot[bot] (#12192)
- Fixhancement: show sequential + id version labels, fix padding @shamoon (#12196)
- [BREAKING] Chore: Refactor advanced database settings to allow more user configuration @stumpylog (#12165)
- Chore(deps): Bump the utilities-patch group across 1 directory with 11 updates @dependabot[bot] (#12179)
- Feature: Switch progress bar library to rich @stumpylog (#12169)
- Chore(deps): Bump nltk from 3.9.2 to 3.9.3 @dependabot[bot] (#12177)
- Enhancment: Formatted filename for single document downloads @JanKleine (#12095)
- Chore(deps): Bump the utilities-minor group across 1 directory with 7 updates @dependabot[bot] (#12174)
- Feature: document file versions @shamoon (#12061)
- [BREAKING] Remove API v1 compatability @stumpylog (#12166)
- Enhancement: prevent duplicate mail processing across rules @shamoon (#12159)
- Feature: move to trash action for workflows @JanKleine (#11176)
- Tweakhancement: reset to page 1 on reset filters @shamoon (#12143)
- Fix: correct user dropdown button icon styling @shamoon (#12092)
- Enhancement: consolidate management lists into document attributes section @shamoon (#12045)
- Enhancement: option to stop processing further mail rules @shamoon (#12053)
- [BREAKING] Remove pybzar as a barcode reader @stumpylog (#12065)
- Chore(deps): Bump pillow from 12.1.0 to 12.1.1 @dependabot[bot] (#12064)
- Chore(deps): Bump cryptography from 46.0.3 to 46.0.5 @dependabot[bot] (#12060)
- Chore: Optimizes the integer fields for choice types @stumpylog (#12057)
- Chore(deps): Bump the utilities-patch group across 1 directory with 3 updates @dependabot[bot] (#12051)
- Tweak: improve 2-digit year parsing @shamoon (#12044)
- Enhancement: pngx pdf viewer @shamoon (#12043)
- Fix: Handle an OOM kill of celery workers in the task handler @stumpylog (#12040)
- Chore(deps-dev): Bump @playwright/test from 1.58.1 to 1.58.2 in /src-ui @dependabot[bot] (#12032)
- Chore(deps): Bump the utilities-minor group across 1 directory with 2 updates @dependabot[bot] (#12020)
- Fixhancement: improve ASN handling with PDF operations @shamoon (#11689)
- Upgrade: Bump @types/node from 25.2.0 to 25.2.1 in /src-ui @dependabot[bot] (#12008)
- Upgrade: Bump webpack from 5.103.0 to 5.105.0 in /src-ui @dependabot[bot] (#12007)
- Chore: bump Angular to 21.1.3, ngx-ui-tour-ng-bootstrap to v18 @shamoon (#12015)
- Chore: Switches to use prek in place of pre-commit @stumpylog (#12002)
- Chore(deps): Bump the utilities-patch group with 3 updates @dependabot[bot] (#11981)
- Chore(deps): Bump the utilities-minor group across 1 directory with 6 updates @dependabot[bot] (#11993)
- Chore(deps): Bump drf-spectacular-sidecar from 2025.10.1 to 2026.1.1 @dependabot[bot] (#11985)
- Chore(deps): Update django-allauth[mfa,socialaccount] requirement from ~=65.13.1 to ~=65.14.0 @dependabot[bot] (#11984)
- Chore(deps): Update granian[uvloop] requirement from ~=2.6.0 to ~=2.7.0 @dependabot[bot] (#11983)
- Chore(deps): Bump django from 5.2.10 to 5.2.11 @dependabot[bot] (#11988)
- Feature: Enable users to customize date parsing via plugins @stumpylog (#11931)
- Chore: Fix further test flakiness @stumpylog (#11987)
- Feature: password removal workflow action @shamoon (#11665)
- Fix: re-run ASN check after barcode detection @shamoon (#11681)
- Fix: prevent infinite loading crash in mail component @shamoon (#11978)
- Enhancement: per-type object page sizing @shamoon (#11977)
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 22 updates @dependabot[bot] (#11968)
- Chore(deps): Bump zone.js from 0.15.1 to 0.16.0 in /src-ui @dependabot[bot] (#11970)
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @dependabot[bot] (#11969)
- Chore(deps-dev): Bump @types/node from 24.10.1 to 25.2.0 in /src-ui @dependabot[bot] (#11972)
- Chore(deps-dev): Bump @playwright/test from 1.57.0 to 1.58.1 in /src-ui @dependabot[bot] (#11971)
- Enhancement: improve filter drop-down performance with virtual scrolling @shamoon (#11973)
- Tweakhancement: tweak bulk delete text @shamoon (#11967)
- Feature: support split documents based on tag barcodes @schober-ch (#11645)
- Chore: Bulk backend updates @stumpylog (#11543)
- Tweak: increase minimum screen width before inserting padding @JanKleine (#11926)
- Enhancement: Add setting for default PDF Editor mode @JanKleine (#11927)
- Fixhancement: auto-queue llm index if needed @shamoon (#11891)
- Feature: sharelink bundles @shamoon (#11682)
- Enhancement: user control of doc details fields @shamoon (#11906)
- Enhancement: improve relative dates in date filter @JanKleine (#11899)
- Performance: faster statistics panel on dashboard @Merinorus (#11760)
- Enhancement: allow duplicates with warnings, UI for discovery @shamoon (#11815)
- Enhancement: configurable SSO groups claim @Gabgobie (#11841)
- Enhancement: support select all for management lists @shamoon (#11889)
- Tweakhancement: display document id, with copy @shamoon (#11896)
- Enhancement: Add support for app oidc @paulgessinger (#11756)
- Enhancement: Add 'any of' workflow trigger filters @shamoon (#11683)
- [BREAKING] Remove support for document and thumbnail encryption @stumpylog (#11850)
- Fix: ensure css color-scheme for dark mode @shamoon (#11855)
- Enhancement: support doc_id placeholder in workflow templates @shamoon (#11847)
- [BREAKING] Feature: Simplify and improve the consumer @stumpylog (#11753)
- Fix: fix tag list horizontal scroll, again @shamoon (#11839)
- Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent @shamoon (#11811)
- Chore(deps): Bump the utilities-patch group across 1 directory with 7 updates @dependabot[bot] (#11793)
- Chore(deps): Bump the utilities-minor group across 1 directory with 10 updates @dependabot[bot] (#11799)
- Chore(deps): Bump pyasn1 from 0.6.1 to 0.6.2 @dependabot[bot] (#11801)
- Chore(deps): Bump torch from 2.7.1 to 2.8.0 @dependabot[bot] (#11800)
- Chore(deps): Bump brotli from 1.1.0 to 1.2.0 @dependabot[bot] (#11796)
- Chore(deps): Bump transformers from 4.51.3 to 4.53.0 @dependabot[bot] (#11797)
- Chore(deps): Bump django from 5.2.7 to 5.2.9 @dependabot[bot] (#11794)
- Chore(deps): Bump the llama-index group @dependabot[bot] (#11798)
- Chore(deps): Bump marshmallow from 3.26.1 to 3.26.2 @dependabot[bot] (#11790)
- Chore(deps): Bump uv from 0.9.3 to 0.9.6 @dependabot[bot] (#11795)
- Chore(deps): Bump aiohttp from 3.11.18 to 3.13.3 @dependabot[bot] (#11789)
- Chore(deps): Bump urllib3 from 2.5.0 to 2.6.3 @dependabot[bot] (#11792)
- Chore(deps): Bump virtualenv from 20.34.0 to 20.36.1 @dependabot[bot] (#11774)
- Fix: use explicit order field for workflow actions @shamoon (#11781)
- Chore(deps): Bump azure-core from 1.33.0 to 1.38.0 @dependabot[bot] (#11776)
- Feature: Paperless AI @shamoon (#10319)
- Performance: improve treenode inefficiencies @shamoon (#11606)
- Chore: upgrade to node v24 @shamoon (#11747)
- Chore: upgrade to Angular v21 @shamoon (#11746)
- Feature: Remote OCR (Azure AI) @shamoon (#10320)
- Feature: password removal action @shamoon (#11656)
- Fix: fix recurring workflow to respect latest run time @shamoon (#11735)
- Fixhancement: add error handling and retry when opening index @shamoon (#11731)
- Tweakhancement: use anchor element for management list quick filter buttons @shamoon (#11692)
- Fix: validate cf integer values within PostgreSQL range @shamoon (#11666)
- Fix: support ordering by storage path name @shamoon ([#116