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.

125 changes across 10 releases

Added 17

v3.1.0

  • 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

v3.0.0

  • 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

v3.1.1

  • Show existing count for AI suggestions
  • Make IMAP port required and improve error display

v3.1.0

  • 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

v3.0.5

  • Use server side iterators during LLM index updating
  • Improve sqlite-vec point-delete for document chunks
  • Adjust doc details button toolbar flow

v3.0.4

  • 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

v3.0.3

  • PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT environment variable handling
  • Adjust top navbar wrapping when AI chat button visible

v3.0.1

  • 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

v3.0.0

  • Update root modified timestamp on version changes
Fixed 72

v3.1.3

  • 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

v3.1.2

  • Fix dark mode select disabled color and ensure disabled cursor on display mode dropdown
  • Add disable to the drag-drop list component

v3.1.1

  • 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

v3.1.0

  • Prevent config autocomplete craziness
  • Prevent token re-use in dropdown filtering
  • Exclude version documents from bulk edit all

v3.0.5

  • 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

v3.0.4

  • 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

v3.0.3

  • 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

v3.0.2

  • Fix broken migration in 3.0.1

v3.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

v3.0.0

  • 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
Security 3

v3.1.2

  • Address security issue GHSA-2jhj-xqrq-rmrq

v3.0.0

  • Enforce current permissions in autocomplete
  • Bound email linkification

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)

View originalPermalink

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
  • 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)

View originalPermalink

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)

View originalPermalink

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
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)

View originalPermalink

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)

View originalPermalink

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)

View originalPermalink

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)

View originalPermalink

v3.0.2Paperless-ngx v3.0.2
paperless-ngx 3.0.2
Bug Fixes
  • Fix: fix broken migration in 3.0.1 @shamoon (#13242)
All App Changes
  • Fix: fix broken migration in 3.0.1 @shamoon (#13242)

View originalPermalink

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)

View originalPermalink

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 save on 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 save on 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 all in 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

View originalPermalink