# Paperless-ngx: what changed from 2 to 3 - Product: Paperless-ngx (https://whatsnew.fyi/product/paperless-ngx) - Vendor: Paperless-ngx - Range: changelog entries numbered after v2.20.15 up to and including v3.1.3, stable releases only - Entries below: 10 releases (newest first) - Resolved: 2 is v2.20.15 and 3 is v3.1.3, the newest stable release of each major we track - Carrying security changes: 2 · CVEs mentioned: 0 · Mentioning breaking changes: 1 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/paperless-ngx/compare/2...3 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. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (125 changes, grouped by kind) ### Added #### v3.1.0 (2026-08-27) - 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 (2026-07-22) - 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 #### v3.1.1 (2026-08-31) - Show existing count for AI suggestions - Make IMAP port required and improve error display #### v3.1.0 (2026-08-27) - 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 (2026-08-01) - 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 (2026-07-28) - 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 (2026-07-25) - PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT environment variable handling - Adjust top navbar wrapping when AI chat button visible #### v3.0.1 (2026-07-23) - 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 (2026-07-22) - Update root modified timestamp on version changes ### Fixed #### v3.1.3 (2026-09-04) - 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 (2026-09-01) - 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 (2026-08-31) - 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 (2026-08-27) - Prevent config autocomplete craziness - Prevent token re-use in dropdown filtering - Exclude version documents from bulk edit all #### v3.0.5 (2026-08-01) - 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 (2026-07-28) - 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 (2026-07-25) - 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 (2026-07-24) - Fix broken migration in 3.0.1 #### v3.0.1 (2026-07-23) - 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 #### v3.0.0 (2026-07-22) - 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 #### v3.1.2 (2026-09-01) - Address security issue GHSA-2jhj-xqrq-rmrq #### v3.0.0 (2026-07-22) - Enforce current permissions in autocomplete - Bound email linkification ## Release notes ### v3.1.3 — Paperless-ngx v3.1.3 - Date: 2026-09-04 - Version: v3.1.3 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.3 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.1.3 - **fixed** — Use the header loading indicator on tasks page - **fixed** — Fix load sidebar size animating - **fixed** — Wrap long words without spaces in dropdowns - **fixed** — Tweak tool calling localization prompt - **fixed** — Skip vector store document id filter for unrestricted chat users - **fixed** — Adopt the request stream when pinning an outbound host - **fixed** — Ensure apply AI suggestions always runs after document created - **fixed** — Handle failures when enqueuing files for consumption - **fixed** — Handle Celery mail task chord errors - **fixed** — Refactor some signal-backed conversion technical debt - **fixed** — Fix slim sidebar saved view dragging appearance - **fixed** — Use signal-backed queries input in custom fields dropdown to reflect changes immediately under zoneless - **fixed** — Use root doc metadata for filename generation - **fixed** — Clean up some CSS ##### paperless-ngx 3.1.3 ###### Bug Fixes - Fix: use the header loading indicator on tasks page @shamoon ([#13949](https://github.com/paperless-ngx/paperless-ngx/pull/13949)) - Fix: fix load sidebar size animating @shamoon ([#13947](https://github.com/paperless-ngx/paperless-ngx/pull/13947)) - Fix: wrap long words without spaces in dropdowns @shamoon ([#13945](https://github.com/paperless-ngx/paperless-ngx/pull/13945)) - Fix: tweak tool calling localzation prompt @shamoon ([#13943](https://github.com/paperless-ngx/paperless-ngx/pull/13943)) - Fix: skip vector store document id filter for unrestricted chat users @stumpylog ([#13937](https://github.com/paperless-ngx/paperless-ngx/pull/13937)) - Fix: adopt the request stream when pinning an outbound host @ThomasSteinbach ([#13927](https://github.com/paperless-ngx/paperless-ngx/pull/13927)) - Fix: ensure apply ai suggestions always runs after document created @shamoon ([#13940](https://github.com/paperless-ngx/paperless-ngx/pull/13940)) - Fix: Handle failures when enqueuing files for consumption @stumpylog ([#13935](https://github.com/paperless-ngx/paperless-ngx/pull/13935)) - Fix: Handle Celery mail task chord errors @stumpylog ([#13936](https://github.com/paperless-ngx/paperless-ngx/pull/13936)) - Fix/chore: refactor some signal-backed conversion technical debt @shamoon ([#13902](https://github.com/paperless-ngx/paperless-ngx/pull/13902)) - Fix: fix slim sidebar saved view dragging appearance @shamoon ([#13906](https://github.com/paperless-ngx/paperless-ngx/pull/13906)) - Fix: use signal-backed queries input in CF dropdown to reflect changes immediately under zoneless @shamoon ([#13901](https://github.com/paperless-ngx/paperless-ngx/pull/13901)) - Fix: use root doc metadata for filename generation @shamoon ([#13893](https://github.com/paperless-ngx/paperless-ngx/pull/13893)) - Fix: some css cleanup @shamoon ([#13891](https://github.com/paperless-ngx/paperless-ngx/pull/13891)) ###### Dependencies
7 changes - Chore(deps): Bump the uv group across 1 directory with 2 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13958](https://github.com/paperless-ngx/paperless-ngx/pull/13958)) - docker-compose(deps): bump nginx from 1.31.3-alpine to 1.31.5-alpine in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#13909](https://github.com/paperless-ngx/paperless-ngx/pull/13909)) - docker-compose(deps): Bump greenmail/standalone from 2.1.11 to 2.1.13 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#13907](https://github.com/paperless-ngx/paperless-ngx/pull/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]](https://github.com/apps/dependabot) ([#13905](https://github.com/paperless-ngx/paperless-ngx/pull/13905)) - Chore(deps): Bump nltk from 3.10.0 to 3.10.3 in the data-nlp-search group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13917](https://github.com/paperless-ngx/paperless-ngx/pull/13917)) - Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 14 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13915](https://github.com/paperless-ngx/paperless-ngx/pull/13915)) - Chore(deps): Bump djangorestframework from 3.17.1 to 3.17.2 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13904](https://github.com/paperless-ngx/paperless-ngx/pull/13904))
###### All App Changes
22 changes - Chore(deps): Bump the uv group across 1 directory with 2 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13958](https://github.com/paperless-ngx/paperless-ngx/pull/13958)) - Chore(deps-dev): Bump postcss-selector-parser from 6.1.2 to 6.1.4 in /src/paperless\_mail/templates in the n _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.3]_ ### v3.1.2 — Paperless-ngx v3.1.2 - Date: 2026-09-01 - Version: v3.1.2 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.2 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.1.2 - **fixed** — Fix dark mode select disabled color and ensure disabled cursor on display mode dropdown - **fixed** — Add disable to the drag-drop list component - **security** — Address security issue GHSA-2jhj-xqrq-rmrq ##### 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](https://github.com/paperless-ngx/paperless-ngx/pull/13881)) - Fix: add disable to the drag-drop list component @shamoon ([#13880](https://github.com/paperless-ngx/paperless-ngx/pull/13880)) ###### Documentation - Chore: update screenshots for v3+ @shamoon ([#13883](https://github.com/paperless-ngx/paperless-ngx/pull/13883)) ###### All App Changes
2 changes - Fix: fix dark mode select disabled color, ensure disabled cursor on display mode dropdown @shamoon ([#13881](https://github.com/paperless-ngx/paperless-ngx/pull/13881)) - Fix: add disable to the drag-drop list component @shamoon ([#13880](https://github.com/paperless-ngx/paperless-ngx/pull/13880))
### v3.1.1 — Paperless-ngx v3.1.1 - Date: 2026-08-31 - Version: v3.1.1 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.1 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.1.1 - **fixed** — LLM suggestions no longer remove existing metadata from prompt and do not drop name suggestions - **fixed** — Set global search earlier to avoid awaiting debounce - **fixed** — Make sidebar responsive and centralize size values - **changed** — Show existing count for AI suggestions - **fixed** — Simplify LLM suggestions schema and fix docstrings - **changed** — Make IMAP port required and improve error display - **fixed** — Ensure UI reset of suggestionsLoading when changing documents - **fixed** — Always pass a non-empty API key for OpenAI-like servers - **fixed** — Hide slim sidebar scrollbar in browsers with native scrollbars - **fixed** — Correct sharelink bundle and document link permissions display bugs - **fixed** — Immediately re-add document to index after trash restore - **fixed** — Fix navbar brand anchor size and Safari position jitter ##### paperless-ngx 3.1.1 ###### Bug Fixes - Fix: 3.1.0 llm suggestions remove existing metadata from prompt, dont drop name suggestions @shamoon ([#13866](https://github.com/paperless-ngx/paperless-ngx/pull/13866)) - Fix: set global search earlier to avoid awaiting debounce @shamoon ([#13865](https://github.com/paperless-ngx/paperless-ngx/pull/13865)) - Fix: responsive sidebar, centralize and make sizes saner @shamoon ([#13863](https://github.com/paperless-ngx/paperless-ngx/pull/13863)) - Tweak/fix: show existing count for ai suggestions @shamoon ([#13861](https://github.com/paperless-ngx/paperless-ngx/pull/13861)) - Fix: 3.1.0 llm suggestions simplify schema, fix docstrings @shamoon ([#13850](https://github.com/paperless-ngx/paperless-ngx/pull/13850)) - Fix: ensure ui reset of suggestionsLoading when changing docs @shamoon ([#13840](https://github.com/paperless-ngx/paperless-ngx/pull/13840)) - Fix: always pass a non-empty api key for OpenAI-like servers @shamoon ([#13838](https://github.com/paperless-ngx/paperless-ngx/pull/13838)) - Fix: hide slim sidebar scrollbar in browsers with stupid scrollbars @shamoon ([#13837](https://github.com/paperless-ngx/paperless-ngx/pull/13837)) - Fix: correct sharelink bundle + document link permissions display bugs @shamoon ([#13827](https://github.com/paperless-ngx/paperless-ngx/pull/13827)) - Fix: immediately re-add doc to index after trash restore @shamoon ([#13818](https://github.com/paperless-ngx/paperless-ngx/pull/13818)) - Fix: navbar brand anchor size + Safari position jitter @shamoon ([#13810](https://github.com/paperless-ngx/paperless-ngx/pull/13810)) ###### All App Changes
12 changes - Fix: 3.1.0 llm suggestions remove existing metadata from prompt, dont drop name suggestions @shamoon ([#13866](https://github.com/paperless-ngx/paperless-ngx/pull/13866)) - Fix: set global search earlier to avoid awaiting debounce @shamoon ([#13865](https://github.com/paperless-ngx/paperless-ngx/pull/13865)) - Fix: responsive sidebar, centralize and make sizes saner @shamoon ([#13863](https://github.com/paperless-ngx/paperless-ngx/pull/13863)) - Tweak/fix: show existing count for ai suggestions @shamoon ([#13861](https://github.com/paperless-ngx/paperless-ngx/pull/13861)) - Fix: 3.1.0 llm suggestions simplify schema, fix docstrings @shamoon ([#13850](https://github.com/paperless-ngx/paperless-ngx/pull/13850)) - Fixhancement: make imap port required, better error display @shamoon ([#13845](https://github.com/paperless-ngx/paperless-ngx/pull/13845)) - Fix: ensure ui reset of suggestionsLoading when changing docs @shamoon ([#13840](https://github.com/paperless-ngx/paperless-ngx/pull/13840)) - Fix: always pass a non-empty api key for OpenAI-like servers @shamoon ([#13838](https://github.com/paperless-ngx/paperless-ngx/pull/13838)) - Fix: hide slim sidebar scrollbar in browsers with stupid scrollbars @shamoon ([#13837](https://github.com/paperless-ngx/paperless-ngx/pull/13837)) - Fix: correct sharelink bundle + document link permissions display bugs @shamoon ([#13827](https://github.com/paperless-ngx/paperless-ngx/pull/13827)) - Fix: immediately re-add doc to index after trash restore @shamoon ([#13818](https://github.com/paperless-ngx/paperless-ngx/pull/13818)) - Fix: navbar brand anchor size + Safari position jitter @shamoon ([#13810](https://github.com/paperless-ngx/paperless-ngx/pull/13810))
### v3.1.0 — Paperless-ngx v3.1.0 - Date: 2026-08-27 - Version: v3.1.0 - Original notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.0 - Permalink: https://whatsnew.fyi/product/paperless-ngx/releases/v3.1.0 - **added** — Apply AI suggestions workflow action - **added** — Support using remote OCR engines selectively - **added** — Websocket heartbeat - **added** — Sync OIDC groups to superuser and staff roles - **added** — Merge documents as versions - **added** — Allow selection of compression type and level during export - **added** — Customizable icons for saved views - **added** — Add --url argument to document_fuzzy_match to improve output - **added** — Updates remote OCR parser to respect the OCR mode setting - **changed** — Apply visual tweaks to welcome widget - **changed** — Better support long list of views in documents list - **changed** — Add count badge to versions dropdown - **changed** — Add jitter to IMAP polling schedule - **changed** — Render paperless_ai prompts via Jinja2 templates instead of f-strings - **changed** — Prefer existing tags, types, correspondents, and storage paths in AI suggestions - **changed** — Reduce memory and I/O overhead of the document exporter during zip exports - **changed** — More efficient mail fetching - **fixed** — Prevent config autocomplete craziness - **fixed** — Prevent token re-use in dropdown filtering - **fixed** — Exclude version documents from bulk edit all ##### paperless-ngx 3.1.0 ###### Features / Enhancements - Enhancement: Apply AI suggestions workflow action @shamoon ([#13639](https://github.com/paperless-ngx/paperless-ngx/pull/13639)) - Enhancement: welcome widget visual tweaks @shamoon ([#13794](https://github.com/paperless-ngx/paperless-ngx/pull/13794)) - Enhancement: support using remote OCR engines selectively @shamoon ([#13633](https://github.com/paperless-ngx/paperless-ngx/pull/13633)) - Enhancement: websocket heartbeat @oktupol ([#13739](https://github.com/paperless-ngx/paperless-ngx/pull/13739)) - Enhancement: more v3 ui tweaks @shamoon ([#13774](https://github.com/paperless-ngx/paperless-ngx/pull/13774)) - Tweak: better support long list of views in documents list @shamoon ([#13769](https://github.com/paperless-ngx/paperless-ngx/pull/13769)) - QoL: add count badge to versions dropdown @shamoon ([#13753](https://github.com/paperless-ngx/paperless-ngx/pull/13753)) - Tweakhancement: add jitter to IMAP polling schedule @shamoon ([#13734](https://github.com/paperless-ngx/paperless-ngx/pull/13734)) - Enhancement: sync OIDC groups to superuser and staff roles @BeSovereign ([#13060](https://github.com/paperless-ngx/paperless-ngx/pull/13060)) - Enhancement: merge documents as versions @shamoon ([#13515](https://github.com/paperless-ngx/paperless-ngx/pull/13515)) - Tweak: adjust modal proportions for small screens @shamoon ([#13728](https://github.com/paperless-ngx/paperless-ngx/pull/13728)) - Refactor: render paperless\_ai prompts via Jinja2 templates instead of f-strings @stumpylog ([#13698](https://github.com/paperless-ngx/paperless-ngx/pull/13698)) - Tweak: small visual tweaks / improvements \& fixes @shamoon ([#13700](https://github.com/paperless-ngx/paperless-ngx/pull/13700)) - Enhancement: prefer existing tags, types, correspondents, and storage paths in AI suggestions @stumpylog ([#13676](https://github.com/paperless-ngx/paperless-ngx/pull/13676)) - Tweak: tweak permissions menu labels for shared user-dependent views @shamoon ([#13685](https://github.com/paperless-ngx/paperless-ngx/pull/13685)) - Feature: Allow selection of compression type and and level during export @stumpylog ([#13661](https://github.com/paperless-ngx/paperless-ngx/pull/13661)) - Enhancement: customizable icons for saved views @shamoon ([#13388](https://github.com/paperless-ngx/paperless-ngx/pull/13388)) - Enhancement: Add --url argument to document\_fuzzy\_match to improve output @lukyjay ([#13123](https://github.com/paperless-ngx/paperless-ngx/pull/13123)) - Feature: Updates remote OCR parser to respect the OCR mode setting @stumpylog ([#13408](https://github.com/paperless-ngx/paperless-ngx/pull/13408)) - Tweak: improve no ML suggestions UX @shamoon ([#13621](https://github.com/paperless-ngx/paperless-ngx/pull/13621)) - Performance: reduce memory and I/O overhead of the document exporter during zip exports @stumpylog ([#13490](https://github.com/paperless-ngx/paperless-ngx/pull/13490)) - QoL: make name button text on attribute pages selectable @shamoon ([#13592](https://github.com/paperless-ngx/paperless-ngx/pull/13592)) - Performance: More efficient mail fetching @stumpylog ([#13432](https://github.com/paperless-ngx/paperless-ngx/pull/13432)) ###### Bug Fixes - Fix: prevent config autocomplete craziness @shamoon ([#13808](https://github.com/paperless-ngx/paperless-ngx/pull/13808)) - Fix/performance: prevent token re-use in dropdown filtering, also a perf thing @shamoon ([#13804](https://github.com/paperless-ngx/paperless-ngx/pull/13804)) - Fix: exclude version documents from bulk edit "all" @shamoon ([#13791](https://github.com/paperless-ngx/paperless-ngx/pull/13791)) - Fix: fix bottom mobile nav buttons on Android @shamoon ([#13780](https://github.com/paperless-ngx/paperless-ngx/pull/13780)) - Fix: lazy import guardian modules to fix search language setting @shamoon ([#13768](https://github.com/paperless-ngx/paperless-ngx/pull/13768)) - Fix: version indexing fixes @shamoon ([#13737](https _[Truncated at 4000 characters — full notes: https://github.com/paperless-ngx/paperless-ngx/releases/tag/v3.1.0]_ ### 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]_