# Paperless-ngx changelog > A document management system that indexes your scans. - Vendor: Paperless-ngx - Category: Productivity - Official site: https://docs.paperless-ngx.com - Tracked by: What's New (https://whatsnew.fyi/product/paperless-ngx) - Harvested from: GitHub (paperless-ngx/paperless-ngx) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v3.0.5 — Paperless-ngx v3.0.5 - Date: 2026-08-01 - Version: v3.0.5 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.5 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.5 - **fixed** — Accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries - **fixed** — Fix edit dialog error change detection - **fixed** — Key the AI suggestion cache by model and endpoint - **fixed** — Validate custom field values in bulk operations - **fixed** — Better handle empty fields from AI suggestions - **fixed** — Normalize monetary decimal symbol by locale - **fixed** — Fold overflowing path text in sanity checker - **fixed** — Correct delayed add field button for custom fields - **fixed** — Hide attributes collapse / show button without UI settings - **fixed** — Consolidate born-digital PDF detection between archive decision and OCR - **fixed** — Prevent scale vs page loop in pngx PDF viewer - **fixed** — Handle hidden line breaks in email subjects when sending email - **fixed** — Avoid NotSupportedError from document_importer on MariaDB - **fixed** — Exclude next-period start from relative date-range filters - **fixed** — Close non-atomic db connections in before_task_publish - **fixed** — Fix Enter selection in search autocomplete - **changed** — Use server side iterators during LLM index updating - **changed** — Improve sqlite-vec point-delete for document chunks - **changed** — Adjust doc details button toolbar flow ##### paperless-ngx 3.0.5 ###### Bug Fixes - Fix: accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries @stumpylog ([#13486](https://github.com/paperless-ngx/paperless-ngx/pull/13486)) - Fix: fix edit dialog error change detection @shamoon ([#13483](https://github.com/paperless-ngx/paperless-ngx/pull/13483)) - Fix: key the AI suggestion cache by model and endpoint @lunetics ([#13449](https://github.com/paperless-ngx/paperless-ngx/pull/13449)) - Fix: validate custom field values in bulk operations @shamoon ([#13457](https://github.com/paperless-ngx/paperless-ngx/pull/13457)) - Fixhancement: better handle empty fields from AI suggestions @shamoon ([#13454](https://github.com/paperless-ngx/paperless-ngx/pull/13454)) - Fix: normalize monetary decimal symbol by locale @shamoon ([#13427](https://github.com/paperless-ngx/paperless-ngx/pull/13427)) - Fix: fold overflowing path text in sanity checker @stumpylog ([#13426](https://github.com/paperless-ngx/paperless-ngx/pull/13426)) - Fix: correct delayed add field button for custom fields @shamoon ([#13424](https://github.com/paperless-ngx/paperless-ngx/pull/13424)) - Fix: hide attributes collapse / show button without UI settings @shamoon ([#13425](https://github.com/paperless-ngx/paperless-ngx/pull/13425)) - Fix: consolidate born-digital PDF detection between archive decision and OCR @stumpylog ([#13409](https://github.com/paperless-ngx/paperless-ngx/pull/13409)) - Fix: prevent scale vs page loop in pngx PDF viewer @shamoon ([#13406](https://github.com/paperless-ngx/paperless-ngx/pull/13406)) - Fix: handle hidden line breaks in email subjects when sending email @shamoon ([#13402](https://github.com/paperless-ngx/paperless-ngx/pull/13402)) - Fix: avoid NotSupportedError from document\_importer on MariaDB @stumpylog ([#13400](https://github.com/paperless-ngx/paperless-ngx/pull/13400)) - Fix: exclude next-period start from relative date-range filters @stumpylog ([#13381](https://github.com/paperless-ngx/paperless-ngx/pull/13381)) - Fix: close non-atomic db connections in before\_task\_publish @shamoon ([#13366](https://github.com/paperless-ngx/paperless-ngx/pull/13366)) - Chore/fix: refactor frontend task service @shamoon ([#13365](https://github.com/paperless-ngx/paperless-ngx/pull/13365)) - Fix: fix Enter selection in search autocomplete @shamoon ([#13361](https://github.com/paperless-ngx/paperless-ngx/pull/13361)) ###### Documentation - Documentation: PAPERLESS\_CONSUMER\_IGNORE\_PATTERNS clarifications @shamoon ([#13489](https://github.com/paperless-ngx/paperless-ngx/pull/13489)) - Documentation: Add Password Removal workflow action documentation @stumpylog ([#13377](https://github.com/paperless-ngx/paperless-ngx/pull/13377)) ###### Dependencies - Chore(deps): Bump pymdown-extensions from 10.21.3 to 11.0 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13378](https://github.com/paperless-ngx/paperless-ngx/pull/13378)) ###### All App Changes
21 changes - Fix: accept Whoosh-era abbreviated relative-date units (yrs, mos, wks, etc) in search queries @stumpylog ([#13486](https://github.com/paperless-ngx/paperless-ngx/pull/13486)) - Fix: fix edit dialog error change detection @shamoon ([#13483](https://github.com/paperless-ngx/paperless-ngx/pull/13483)) - Performance: sqlite-vec point-delete for document chunks @stumpylog ([#13438](https://github.com/paperless-ngx/paperless-ngx/pull/13438)) - Fix: key the AI suggestion cache by model and endpoint @lunetics ([#13449](https://github.com/paperless-ngx/paperless-ngx/pull/13449)) - Fix: validate custom field values in bulk operations @shamoon ([#13457](https://github.com/paperless-ngx/paperless-ngx/pull/13457)) - Fixhancement: better handle empty fields from AI suggestions @shamoon ([#13454](https://github.com/paperless-ngx/paperless-ngx/pull/13454)) - Performance: Use server side iterators during LLM index updating @stumpylog ([# _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.5]_ ### v3.0.4 — Paperless-ngx v3.0.4 - Date: 2026-07-28 - Version: v3.0.4 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.4 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.4 - **fixed** — Prevent pdfjs highlight scrolling from affecting the entire page - **fixed** — Don't skip OCR/archive for tagged PDFs with no actual text - **changed** — More efficient diacritic normalization in dropdown filtering - **fixed** — Dedupe permission-visible documents when combined with multi-tag filters - **changed** — Pass LLM output language to chat if specified - **fixed** — Ensure preview reload on live changes - **fixed** — Clamp all out-of-range possible fields - **fixed** — Add docstring to DocumentClassifierSchema for cleaner LLM tool description - **fixed** — Guard build_document_node against stale FK on deleted correspondent/doc type - **fixed** — Prevent search filter loss when closing document with Escape key - **fixed** — Fix frontend permissions display for stats/system perms - **changed** — Prefetch notes and custom fields for LLM index text building - **changed** — Scope llm index updates to actually modified documents - **changed** — Resolve npm provenance issues with chokidar and semver ##### paperless-ngx 3.0.4 ###### Bug Fixes - Fix: prevent pdfjs highlight scrolling from affecting the entire page @shamoon ([#13355](https://github.com/paperless-ngx/paperless-ngx/pull/13355)) - Fix: don't skip OCR/archive for tagged PDFs with no actual text @stumpylog ([#13351](https://github.com/paperless-ngx/paperless-ngx/pull/13351)) - Performance: more efficient diacritic normalization in dropdown filtering @shamoon ([#13347](https://github.com/paperless-ngx/paperless-ngx/pull/13347)) - Fix: dedupe permission-visible documents when combined with multi-tag filters @stumpylog ([#13345](https://github.com/paperless-ngx/paperless-ngx/pull/13345)) - Fixhancement: pass LLM output language to chat if specified @shamoon ([#13340](https://github.com/paperless-ngx/paperless-ngx/pull/13340)) - Fix: ensure preview reload on live changes @shamoon ([#13321](https://github.com/paperless-ngx/paperless-ngx/pull/13321)) - Fix: clamp all out out-of-range possible fields @stumpylog ([#13316](https://github.com/paperless-ngx/paperless-ngx/pull/13316)) - Fix: add docstring to DocumentClassifierSchema for cleaner LLM tool description @stumpylog ([#13315](https://github.com/paperless-ngx/paperless-ngx/pull/13315)) - Fix: guard build\_document\_node against stale FK on deleted correspondent/doc type @stumpylog ([#13318](https://github.com/paperless-ngx/paperless-ngx/pull/13318)) - Fix: prevent search filter loss when closing document with Escape key @shamoon ([#13317](https://github.com/paperless-ngx/paperless-ngx/pull/13317)) - Fix: fix frontend permissions display for stats/system perms @shamoon ([#13305](https://github.com/paperless-ngx/paperless-ngx/pull/13305)) ###### Documentation - Documentation: fix PAPERLESS\_AI\_LLM\_OUTPUT\_LANGUAGE heading level @SuperSandro2000 ([#13341](https://github.com/paperless-ngx/paperless-ngx/pull/13341)) ###### Dependencies - Chore: resolve npm provenance issues with chokidar and semver @shamoon ([#13323](https://github.com/paperless-ngx/paperless-ngx/pull/13323)) ###### All App Changes
14 changes - Fix: prevent pdfjs highlight scrolling from affecting the entire page @shamoon ([#13355](https://github.com/paperless-ngx/paperless-ngx/pull/13355)) - Fix: don't skip OCR/archive for tagged PDFs with no actual text @stumpylog ([#13351](https://github.com/paperless-ngx/paperless-ngx/pull/13351)) - Performance: more efficient diacritic normalization in dropdown filtering @shamoon ([#13347](https://github.com/paperless-ngx/paperless-ngx/pull/13347)) - Performance: prefetch notes and custom fields for LLM index text building @stumpylog ([#13350](https://github.com/paperless-ngx/paperless-ngx/pull/13350)) - Fix: dedupe permission-visible documents when combined with multi-tag filters @stumpylog ([#13345](https://github.com/paperless-ngx/paperless-ngx/pull/13345)) - Performance: Scope llm index updates to actually modified documents @stumpylog ([#13322](https://github.com/paperless-ngx/paperless-ngx/pull/13322)) - Fixhancement: pass LLM output language to chat if specified @shamoon ([#13340](https://github.com/paperless-ngx/paperless-ngx/pull/13340)) - Chore: resolve npm provenance issues with chokidar and semver @shamoon ([#13323](https://github.com/paperless-ngx/paperless-ngx/pull/13323)) - Fix: ensure preview reload on live changes @shamoon ([#13321](https://github.com/paperless-ngx/paperless-ngx/pull/13321)) - Fix: clamp all out out-of-range possible fields @stumpylog ([#13316](https://github.com/paperless-ngx/paperless-ngx/pull/13316)) - Fix: add docstring to DocumentClassifierSchema for cleaner LLM tool description @stumpylog ([#13315](https://github.com/paperless-ngx/paperless-ngx/pull/13315)) - Fix: guard build\_document\_node against stale FK on deleted correspondent/doc type @stumpylog ([#13318](https://github.com/paperless-ngx/paperless-ngx/pull/13318)) - Fix: prevent search filter loss when closing document with Escape key @shamoon ([#13317](https://github.com/paperles _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.4]_ ### v3.0.3 — Paperless-ngx v3.0.3 - Date: 2026-07-25 - Version: v3.0.3 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.3 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.3 - **fixed** — Preserve document fields during Gotenberg conversion to PDF - **fixed** — Make email date aware as soon as possible during parsing - **fixed** — Handle a plain string as Celery sometimes provides for the traceback - **fixed** — Emit the torch index into the requirements.txt for people still using it - **fixed** — Handle notes without a user when building the search index - **changed** — PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT environment variable handling - **changed** — Adjust top navbar wrapping when AI chat button visible ##### paperless-ngx 3.0.3 ###### Bug Fixes - Fixhancement: PAPERLESS\_ALLAUTH\_TRUSTED\_PROXY\_COUNT @shamoon ([#13281](https://github.com/paperless-ngx/paperless-ngx/pull/13281)) - Fix: preserve document fields during Gotenberg conversion to PDF @stumpylog ([#13271](https://github.com/paperless-ngx/paperless-ngx/pull/13271)) - Fix: Makes the email date aware as soon as possible during parsing @stumpylog ([#13266](https://github.com/paperless-ngx/paperless-ngx/pull/13266)) - Fix: Handle a plain string as Celery sometimes provides for the traceback @stumpylog ([#13267](https://github.com/paperless-ngx/paperless-ngx/pull/13267)) - Fix: Emit the torch index into the requirements.txt for people still using it @stumpylog ([#13265](https://github.com/paperless-ngx/paperless-ngx/pull/13265)) - Fix: handle notes without a user when building the search index @matthiasmast ([#13260](https://github.com/paperless-ngx/paperless-ngx/pull/13260)) ###### Documentation - Docs: warn bare-metal users about stale files when upgrading @stumpylog ([#13296](https://github.com/paperless-ngx/paperless-ngx/pull/13296)) - Documentation: Add the NumPy CPU baseline increase to the migration guide @stumpylog ([#13269](https://github.com/paperless-ngx/paperless-ngx/pull/13269)) ###### Maintenance - Fix: Emit the torch index into the requirements.txt for people still using it @stumpylog ([#13265](https://github.com/paperless-ngx/paperless-ngx/pull/13265)) ###### All App Changes
6 changes - Fixhancement: PAPERLESS\_ALLAUTH\_TRUSTED\_PROXY\_COUNT @shamoon ([#13281](https://github.com/paperless-ngx/paperless-ngx/pull/13281)) - Tweak: adjust top navbar wrapping when AI chat button visible @shamoon ([#13280](https://github.com/paperless-ngx/paperless-ngx/pull/13280)) - Fix: preserve document fields during Gotenberg conversion to PDF @stumpylog ([#13271](https://github.com/paperless-ngx/paperless-ngx/pull/13271)) - Fix: Makes the email date aware as soon as possible during parsing @stumpylog ([#13266](https://github.com/paperless-ngx/paperless-ngx/pull/13266)) - Fix: Handle a plain string as Celery sometimes provides for the traceback @stumpylog ([#13267](https://github.com/paperless-ngx/paperless-ngx/pull/13267)) - Fix: handle notes without a user when building the search index @matthiasmast ([#13260](https://github.com/paperless-ngx/paperless-ngx/pull/13260))
### v3.0.2 — Paperless-ngx v3.0.2 - Date: 2026-07-24 - Version: v3.0.2 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.2 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.2 - **fixed** — Fix broken migration in 3.0.1 ##### paperless-ngx 3.0.2 ###### Bug Fixes - Fix: fix broken migration in 3.0.1 @shamoon ([#13242](https://github.com/paperless-ngx/paperless-ngx/pull/13242)) ###### All App Changes - Fix: fix broken migration in 3.0.1 @shamoon ([#13242](https://github.com/paperless-ngx/paperless-ngx/pull/13242)) ### v3.0.1 — Paperless-ngx v3.0.1 - Date: 2026-07-23 - Version: v3.0.1 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.1 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.1 - **fixed** — selection_data re-derives the filtered document set 5 times over - **fixed** — exclude source document from its own RAG similarity results - **fixed** — split mailrule maximum_age clamp into its own migration - **fixed** — correct URL for W001 check - **fixed** — ensure create dialog uses correct attribute type - **fixed** — correct database engine from postgres to postgresql - **fixed** — remove unnecessary .distinct() dominating document list queries - **fixed** — wrap non-breaking words in chat messages and handle whitespace - **fixed** — tag/custom-field document_count scales badly with tag count - **fixed** — batch document user_can_change checks to avoid per-row N+1 - **fixed** — app title restoration - **fixed** — handle long wrapping titles in AI chat document list - **changed** — bump postcss from 8.5.6 to 8.5.22 - **changed** — bump pyasn1 from 0.6.3 to 0.6.4 - **changed** — reword Settings > Default permissions description for clarity > [!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](https://github.com/paperless-ngx/paperless-ngx/pull/13229)) - Fix: exclude source document from its own RAG similarity results @stumpylog ([#13233](https://github.com/paperless-ngx/paperless-ngx/pull/13233)) - Fix: split mailrule maximum\_age clamp into its own migration @stumpylog ([#13231](https://github.com/paperless-ngx/paperless-ngx/pull/13231)) - Chore: mark yes in confirm button for translation @shamoon ([#13225](https://github.com/paperless-ngx/paperless-ngx/pull/13225)) - Fix: correct URL for W001 check @shamoon ([#13220](https://github.com/paperless-ngx/paperless-ngx/pull/13220)) - Fix: ensure create dialog uses correct attribute type @shamoon ([#13221](https://github.com/paperless-ngx/paperless-ngx/pull/13221)) - Fix: correct database engine from postgres to postgresql @OberstVonGatow ([#13213](https://github.com/paperless-ngx/paperless-ngx/pull/13213)) - Fix: remove unnecessary .distinct() dominating document list queries @stumpylog ([#13205](https://github.com/paperless-ngx/paperless-ngx/pull/13205)) - Fix: also wrap non-breaking words in chat messages, handle whitespace @shamoon ([#13211](https://github.com/paperless-ngx/paperless-ngx/pull/13211)) - Fix: tag/custom-field document\_count scales badly with tag count @stumpylog ([#13203](https://github.com/paperless-ngx/paperless-ngx/pull/13203)) - Fix: batch document user\_can\_change checks to avoid per-row N+1 @stumpylog ([#13204](https://github.com/paperless-ngx/paperless-ngx/pull/13204)) - Fix: fix app title restoration @shamoon ([#13208](https://github.com/paperless-ngx/paperless-ngx/pull/13208)) - Fix: handle long wrapping titles in AI chat document list @shamoon ([#13206](https://github.com/paperless-ngx/paperless-ngx/pull/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]](https://github.com/apps/dependabot) ([#13236](https://github.com/paperless-ngx/paperless-ngx/pull/13236)) - Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13237](https://github.com/paperless-ngx/paperless-ngx/pull/13237)) - Chore(deps): Bump the uv group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13189](https://github.com/paperless-ngx/paperless-ngx/pull/13189)) ###### All App Changes
17 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]](https://github.com/apps/dependabot) ([#13236](https://github.com/paperless-ngx/paperless-ngx/pull/13236)) - Fix: selection\_data re-derives the filtered document set 5 times over @stumpylog ([#13229](https://github.com/paperless-ngx/paperless-ngx/pull/13229)) - Chore: reword "Settings > Default permissions" description for clarity @NotaInutilis ([#13232](https://github.com/paperless-ngx/paperless-ngx/pull/13232)) - Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13237](https://github.com/paperless-ngx/paperless-ngx/pull/13237)) - Chore(deps): Bump the uv group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13189](https://github.com/paperless-ngx/paperless-ngx/pull/13189)) - Fix: exclude source document from its own RAG similarity results @stumpylog ([#13233](https://github.com/paperless-ngx/paperless-ngx/pull/13233)) - Fix: split mailrule maximum\_age clamp into its own migration @stumpylog ([#13231](https://github.com/paperless-ngx/pa _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.1]_ ### v3.0.0 — Paperless-ngx v3.0.0 - Date: 2026-07-22 - Version: v3.0.0 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.0 - **removed** — Remove positional arguments from pre/post consume scripts - **removed** — Decouple OCR control from archive file control - **removed** — Drop support for API versions less than 9 - **removed** — Drop support for Python 3.10 - **removed** — Refactor advanced database settings to allow more user configuration - **removed** — Remove API v1 compatibility - **removed** — Remove pybzar as a barcode reader - **removed** — Remove support for document and thumbnail encryption - **removed** — Simplify and improve the consumer - **added** — Replace Whoosh with tantivy search backend - **added** — Add document parser plugin framework - **added** — Add document file versions - **added** — Add sharelink bundles - **added** — Add Paperless AI - **added** — Add remote OCR support via Azure AI - **added** — Allow some bulk operations with all - **security** — Enforce current permissions in autocomplete - **security** — Bound email linkification - **changed** — Update root modified timestamp on version changes - **added** — Add database indexes for common query and sort patterns ##### paperless-ngx 3.0.0 ###### Breaking Changes - [BREAKING] Remove the positional arguments from the pre/post consume scripts @stumpylog ([#12573](https://github.com/paperless-ngx/paperless-ngx/pull/12573)) - [BREAKING] Decouple OCR control from archive file control @stumpylog ([#12448](https://github.com/paperless-ngx/paperless-ngx/pull/12448)) - [BREAKING] Chore: drop support for api versions \< 9 @shamoon ([#12284](https://github.com/paperless-ngx/paperless-ngx/pull/12284)) - [BREAKING] Chore: Drop support for Python 3.10 @stumpylog ([#12234](https://github.com/paperless-ngx/paperless-ngx/pull/12234)) - [BREAKING] Chore: Refactor advanced database settings to allow more user configuration @stumpylog ([#12165](https://github.com/paperless-ngx/paperless-ngx/pull/12165)) - [BREAKING] Remove API v1 compatability @stumpylog ([#12166](https://github.com/paperless-ngx/paperless-ngx/pull/12166)) - [BREAKING] Remove pybzar as a barcode reader @stumpylog ([#12065](https://github.com/paperless-ngx/paperless-ngx/pull/12065)) - [BREAKING] Remove support for document and thumbnail encryption @stumpylog ([#11850](https://github.com/paperless-ngx/paperless-ngx/pull/11850)) - [BREAKING] Feature: Simplify and improve the consumer @stumpylog ([#11753](https://github.com/paperless-ngx/paperless-ngx/pull/11753)) ###### Notable Changes - Feature: Replace Whoosh with tantivy search backend @stumpylog ([#12471](https://github.com/paperless-ngx/paperless-ngx/pull/12471)) - Feature: document parser plugin framework @stumpylog ([#12294](https://github.com/paperless-ngx/paperless-ngx/pull/12294)) - Feature: document file versions @shamoon ([#12061](https://github.com/paperless-ngx/paperless-ngx/pull/12061)) - Feature: sharelink bundles @shamoon ([#11682](https://github.com/paperless-ngx/paperless-ngx/pull/11682)) - Feature: Paperless AI @shamoon ([#10319](https://github.com/paperless-ngx/paperless-ngx/pull/10319)) - Feature: Remote OCR (Azure AI) @shamoon ([#10320](https://github.com/paperless-ngx/paperless-ngx/pull/10320)) ###### Features / Enhancements - [Beta] Paperless-ngx v3.0.0 Beta @shamoon ([#12713](https://github.com/paperless-ngx/paperless-ngx/pull/12713)) - Tweakhancement (beta): allow some bulk operations with all @shamoon ([#13193](https://github.com/paperless-ngx/paperless-ngx/pull/13193)) - Security (beta): enforce current permissions in autocomplete @shamoon ([#13188](https://github.com/paperless-ngx/paperless-ngx/pull/13188)) - Security (beta): bound email linkification @shamoon ([#13187](https://github.com/paperless-ngx/paperless-ngx/pull/13187)) - Change: update root modified timestamp on version changes @shamoon ([#13170](https://github.com/paperless-ngx/paperless-ngx/pull/13170)) - Performance: add DB indexes for common query/sort patterns @stumpylog ([#13167](https://github.com/paperless-ngx/paperless-ngx/pull/13167)) - Performance: use NgOptimizedImage for thumbnail lazy loading @shamoon ([#13169](https://github.com/paperless-ngx/paperless-ngx/pull/13169)) - Performance: Tantivy indexing optimization @Merinorus ([#13053](https://github.com/paperless-ngx/paperless-ngx/pull/13053)) - Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon ([#13114](https://github.com/paperless-ngx/paperless-ngx/pull/13114)) - Enhancement (beta): support LLM timeout config @shamoon ([#13002](https://github.com/paperless-ngx/paperless-ngx/pull/13002)) - Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon ([#13021](https://github.com/paperless-ngx/paperless-ngx/pull/13021)) - Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog ([#12990](https://github.com/paperless-ngx/paperless-ngx/pull/12990)) - Enhancement (beta): Switch the AI vector store to LanceDB @stumpylog ([#12944](https://github.com/paperless-ngx/paperless-ngx/pull/12944)) - Fixhancement (beta): tasks dismiss all @shamoon ([#12949](https://github.com/paperless-n _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0]_ ### v3.0.0-beta.rc2 — Paperless-ngx v3.0.0-beta.rc2 - Date: 2026-07-17 - Version: v3.0.0-beta.rc2 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0-beta.rc2 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.0-beta.rc2 - Labels: Pre-release - **changed** — Update to Angular v22 with zoneless and reactive architecture - **added** — Support LLM timeout configuration - **added** — Ignore diacritics and support multiple substring matching for UI filtering - **changed** — Replace LanceDB vector store with sqlite-vec - **added** — Add direct LLM language setting - **added** — Try to respect language for AI suggestions - **added** — Add AI LLM chunk size and context window configuration - **added** — Support ollama embeddings - **added** — Version-aware thumbnail etag - **fixed** — Scope ProcessedMail UID deduplication by IMAP UIDVALIDITY - **fixed** — Allow setting any UID and GID when running rootless - **fixed** — Fix sidebar document close button - **fixed** — Include wasm assets in pdf.js-based viewer - **fixed** — Fix UI labels from md5 to sha256 - **fixed** — Do not assign empty title in workflow with broken template - **fixed** — Clamp mailrule max age before migration - **fixed** — Use latest document version for bulk download - **fixed** — Handle relative date with comma query - **fixed** — Restore v2 (Whoosh) advanced-search query compatibility - **fixed** — Apply unicode normalization to all paths and path components ##### paperless-ngx 3.0.0-beta.rc2 ###### Features / Enhancements - docker-compose(deps): bump greenmail/standalone from 2.1.8 to 2.1.9 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#13067](https://github.com/paperless-ngx/paperless-ngx/pull/13067)) - docker-compose(deps): bump gotenberg/gotenberg from 8.33 to 8.34 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#13066](https://github.com/paperless-ngx/paperless-ngx/pull/13066)) - docker-compose(deps): bump nginx from 1.31.1-alpine to 1.31.2-alpine in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#13065](https://github.com/paperless-ngx/paperless-ngx/pull/13065)) - docker(deps): Bump astral-sh/uv from 0.11.19-python3.12-trixie-slim to 0.11.28-python3.12-trixie-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#13070](https://github.com/paperless-ngx/paperless-ngx/pull/13070)) - Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon ([#13114](https://github.com/paperless-ngx/paperless-ngx/pull/13114)) - Enhancement (beta): support LLM timeout config @shamoon ([#13002](https://github.com/paperless-ngx/paperless-ngx/pull/13002)) - Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon ([#13021](https://github.com/paperless-ngx/paperless-ngx/pull/13021)) - Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog ([#12990](https://github.com/paperless-ngx/paperless-ngx/pull/12990)) - Enhancement (beta): Switch the AI vector store to LanceDB @stumpylog ([#12944](https://github.com/paperless-ngx/paperless-ngx/pull/12944)) - Fixhancement (beta): tasks dismiss all @shamoon ([#12949](https://github.com/paperless-ngx/paperless-ngx/pull/12949)) - Enhancement (beta): add direct LLM language setting @shamoon ([#12906](https://github.com/paperless-ngx/paperless-ngx/pull/12906)) - Enhancement: try to respect language for AI suggestions @shamoon ([#12894](https://github.com/paperless-ngx/paperless-ngx/pull/12894)) - Enhancement: AI LLM chunk size and context window config @shamoon ([#12891](https://github.com/paperless-ngx/paperless-ngx/pull/12891)) - Chore: Further dependency security updates @stumpylog ([#12780](https://github.com/paperless-ngx/paperless-ngx/pull/12780)) - Enhancement: support ollama embeddings @shamoon ([#12753](https://github.com/paperless-ngx/paperless-ngx/pull/12753)) - Tweakhancment: Include the last applied 'documents' migration in the log @stumpylog ([#12757](https://github.com/paperless-ngx/paperless-ngx/pull/12757)) - Enhancement: version-aware thumbnail etag @shamoon ([#12754](https://github.com/paperless-ngx/paperless-ngx/pull/12754)) - Documentation: Update v3 migration docs @shamoon ([#12752](https://github.com/paperless-ngx/paperless-ngx/pull/12752)) ###### Bug Fixes - Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY @chouquette ([#12839](https://github.com/paperless-ngx/paperless-ngx/pull/12839)) - Fix: allow setting any UID and GID when running rootless @Tahvok ([#13090](https://github.com/paperless-ngx/paperless-ngx/pull/13090)) - Fix (beta): fix sidebar document close button @shamoon ([#13136](https://github.com/paperless-ngx/paperless-ngx/pull/13136)) - Fix: include wasm assets in pdf.js-based viewer @shamoon ([#13122](https://github.com/paperless-ngx/paperless-ngx/pull/13122)) - Fix: fix ui labels from md5 to sha256 @shamoon ([#13119](https://github.com/paperless-ngx/paperless-ngx/pull/13119)) - Fixhancement: dont assign empty title in workflow with broken template @shamoon ([#13112](https://github.com/paperless-ngx/paperless-ngx/pull/13112)) - Fix: clamp mailrule max age before migration @shamoon ([#13093](https://github.com/paperless-ngx/paperless-ngx/pull/13093)) - Fix: use latest document version for bulk download @shamoon ([#13103](https://github.com/paperless-ngx/paperless-ngx/pull/13103)) - Fix (beta): handle relative date with co _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0-beta.rc2]_ ### v3.0.0-beta.rc1 — Paperless-ngx v3.0.0-beta.rc1 - Date: 2026-05-05 - Version: v3.0.0-beta.rc1 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0-beta.rc1 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.0.0-beta.rc1 - Labels: Pre-release - **added** — Paperless AI feature - **added** — Remote OCR using Azure AI - **added** — Sharelink bundles - **added** — Document file versions - **added** — Document parser plugin framework - **changed** — Replace Whoosh with tantivy search backend - **changed** — Simplify and improve the consumer - **removed** — Support for document and thumbnail encryption - **removed** — Pybzar as a barcode reader - **removed** — API v1 compatibility - **removed** — Support for Python 3.10 - **removed** — Support for API versions before version 9 - **removed** — Positional arguments from the pre/post consume scripts - **changed** — Decouple OCR control from archive file control - **added** — Move to trash action for workflows - **added** — Password removal action - **added** — Password removal workflow action - **added** — Any of workflow trigger filters - **added** — Support for app OIDC - **added** — Allow duplicates with warnings and UI for discovery ##### paperless-ngx 3.0.0-beta.rc1 ###### Notable Changes - Feature: Paperless AI @shamoon ([#10319](https://github.com/paperless-ngx/paperless-ngx/pull/10319)) - Feature: Remote OCR (Azure AI) @shamoon ([#10320](https://github.com/paperless-ngx/paperless-ngx/pull/10320)) - Feature: sharelink bundles @shamoon ([#11682](https://github.com/paperless-ngx/paperless-ngx/pull/11682)) - Feature: document file versions @shamoon ([#12061](https://github.com/paperless-ngx/paperless-ngx/pull/12061)) - Feature: document parser plugin framework @stumpylog ([#12294](https://github.com/paperless-ngx/paperless-ngx/pull/12294)) - Feature: Replace Whoosh with tantivy search backend @stumpylog ([#12471](https://github.com/paperless-ngx/paperless-ngx/pull/12471)) ###### Breaking Changes - [BREAKING] Feature: Simplify and improve the consumer @stumpylog ([#11753](https://github.com/paperless-ngx/paperless-ngx/pull/11753)) - [BREAKING] Chore: Remove support for document and thumbnail encryption @stumpylog ([#11850](https://github.com/paperless-ngx/paperless-ngx/pull/11850)) - [BREAKING] Chore: Remove old migrations and re-create them fresh for v3 @stumpylog ([#11854](https://github.com/paperless-ngx/paperless-ngx/pull/11854)) - [BREAKING] Chore: Remove pybzar as a barcode reader @stumpylog ([#12065](https://github.com/paperless-ngx/paperless-ngx/pull/12065)) - [BREAKING] Chore: Refactor advanced database settings to allow more user configuration @stumpylog ([#12165](https://github.com/paperless-ngx/paperless-ngx/pull/12165)) - [BREAKING] Chore: Remove API v1 compatibility @stumpylog ([#12166](https://github.com/paperless-ngx/paperless-ngx/pull/12166)) - [BREAKING] Enhancement: saved view sharing @shamoon ([#12142](https://github.com/paperless-ngx/paperless-ngx/pull/12142)) - [BREAKING] Chore: Drop support for Python 3.10 @stumpylog ([#12234](https://github.com/paperless-ngx/paperless-ngx/pull/12234)) - [BREAKING] Chore: drop support for api versions < 9 @shamoon ([#12284](https://github.com/paperless-ngx/paperless-ngx/pull/12284)) - Breaking: Decouple OCR control from archive file control @stumpylog ([#12448](https://github.com/paperless-ngx/paperless-ngx/pull/12448)) - Breaking: Remove the positional arguments from the pre/post consume scripts @stumpylog ([#12573](https://github.com/paperless-ngx/paperless-ngx/pull/12573)) ###### Features / Enhancements - Feature: move to trash action for workflows @JanKleine ([#11176](https://github.com/paperless-ngx/paperless-ngx/pull/11176)) - Feature: password removal action @shamoon ([#11656](https://github.com/paperless-ngx/paperless-ngx/pull/11656)) - Feature: password removal workflow action @shamoon ([#11665](https://github.com/paperless-ngx/paperless-ngx/pull/11665)) - Enhancement: Add 'any of' workflow trigger filters @shamoon ([#11683](https://github.com/paperless-ngx/paperless-ngx/pull/11683)) - Fixhancement: improve ASN handling with PDF operations @shamoon ([#11689](https://github.com/paperless-ngx/paperless-ngx/pull/11689)) - Tweakhancement: use anchor element for management list quick filter buttons @shamoon ([#11692](https://github.com/paperless-ngx/paperless-ngx/pull/11692)) - Enhancement: Add support for app oidc @paulgessinger ([#11756](https://github.com/paperless-ngx/paperless-ngx/pull/11756)) - Enhancement: allow duplicates with warnings, UI for discovery @shamoon ([#11815](https://github.com/paperless-ngx/paperless-ngx/pull/11815)) - Enhancement: configurable SSO groups claim @Gabgobie ([#11841](https://github.com/paperless-ngx/paperless-ngx/pull/11841)) - Enhancement: support doc_id placeholder in workflow templates @shamoon ([#11847](https://github.com/paperless-ngx/paperless-ngx/pull/11847)) - Enhancement: support select all for management lists @shamoon ([#11889](https://github.com/paperless-ngx/paperless-ngx/pull/11889)) - Fixhancement: auto-queue llm index if needed @shamoon ([#11891](https://github.com/paperless-ngx/paperless-ngx/pull/1189 _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.0.0-beta.rc1]_ ### v2.20.15 — Paperless-ngx v2.20.15 - Date: 2026-04-27 - Version: v2.20.15 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v2.20.15 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v2.20.15 - **security** — Use only allauth login/logout endpoints to address security issue GHSA-8c6x-pfjq-9gr7 - **security** — Correctly scope mail account enumeration - **fixed** — Prevent intermediate change event when CustomFieldQueryAtom operator changes type - **fixed** — Reject invalid requests to API notes endpoint ##### paperless-ngx 2.20.15 > [!NOTE] > This release addresses a security issue (GHSA-8c6x-pfjq-9gr7) and is recommended for all users. Our sincere thank you to the community members who reported this. ###### Bug Fixes - Fix: use only allauth login/logout endpoints @shamoon ([#12639](https://github.com/paperless-ngx/paperless-ngx/pull/12639)) - Fix: correctly scope mail account enumeration @shamoon ([#12636](https://github.com/paperless-ngx/paperless-ngx/pull/12636)) - Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type @ggouzi (#12597) - Fix: reject invalid requests to API notes endpoint @ggouzi (#12582) ###### All App Changes
4 changes - Fix: use only allauth login/logout endpoints @shamoon ([#12639](https://github.com/paperless-ngx/paperless-ngx/pull/12639)) - Fix: correctly scope mail account enumeration @shamoon ([#12636](https://github.com/paperless-ngx/paperless-ngx/pull/12636)) - Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type (#12597) - Fix: reject invalid requests to API notes endpoint (#12582)
### v2.20.14 — Paperless-ngx v2.20.14 - Date: 2026-04-14 - Version: v2.20.14 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v2.20.14 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v2.20.14 - **fixed** — Do not submit permissions for non-owners - **fixed** — Prevent duplicate parent tag IDs - **fixed** — Do not defer tag change application in workflows - **fixed** — Limit share link viewset actions - **fixed** — Add fallback ordering for documents by id after created - **changed** — Default mail-created correspondent matching to exact - **fixed** — Validate date custom field value in serializer ##### paperless-ngx 2.20.14 ###### Bug Fixes - Fix: do not submit permissions for non-owners @shamoon ([#12571](https://github.com/paperless-ngx/paperless-ngx/pull/12571)) - Fix: prevent duplicate parent tag IDs @shamoon ([#12522](https://github.com/paperless-ngx/paperless-ngx/pull/12522)) - Fix: dont defer tag change application in workflows @shamoon ([#12478](https://github.com/paperless-ngx/paperless-ngx/pull/12478)) - Fix: limit share link viewset actions @shamoon ([#12461](https://github.com/paperless-ngx/paperless-ngx/pull/12461)) - Fix: add fallback ordering for documents by id after created @shamoon ([#12440](https://github.com/paperless-ngx/paperless-ngx/pull/12440)) - Fixhancement: default mail-created correspondent matching to exact @shamoon ([#12414](https://github.com/paperless-ngx/paperless-ngx/pull/12414)) - Fix: validate date CF value in serializer @shamoon ([#12410](https://github.com/paperless-ngx/paperless-ngx/pull/12410)) ###### All App Changes
7 changes - Fix: do not submit permissions for non-owners @shamoon ([#12571](https://github.com/paperless-ngx/paperless-ngx/pull/12571)) - Fix: prevent duplicate parent tag IDs @shamoon ([#12522](https://github.com/paperless-ngx/paperless-ngx/pull/12522)) - Fix: dont defer tag change application in workflows @shamoon ([#12478](https://github.com/paperless-ngx/paperless-ngx/pull/12478)) - Fix: limit share link viewset actions @shamoon ([#12461](https://github.com/paperless-ngx/paperless-ngx/pull/12461)) - Fix: add fallback ordering for documents by id after created @shamoon ([#12440](https://github.com/paperless-ngx/paperless-ngx/pull/12440)) - Fixhancement: default mail-created correspondent matching to exact @shamoon ([#12414](https://github.com/paperless-ngx/paperless-ngx/pull/12414)) - Fix: validate date CF value in serializer @shamoon ([#12410](https://github.com/paperless-ngx/paperless-ngx/pull/12410))