Paperless-ngx

Productivity

A document management system that indexes your scans.

Latest v3.0.5 · by Paperless-ngxWebsitepaperless-ngx/paperless-ngx

Release activity

Release activity — 10 releases across 10 days since Apr 14, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Apr 14, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on Apr 20, 20261 release on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 20261 release on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 20261 release on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 20261 release on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 23, 2026No releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 20261 release on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on Apr 24, 2026No releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 20261 release on Jul 17, 20261 release on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 20261 release on Jul 25, 20261 release on Aug 1, 2026

10 releases since Apr 14, 2026

Changelog

v3.0.5

Paperless-ngx v3.0.5

Changed 3
  • Use server side iterators during LLM index updating
  • Improve sqlite-vec point-delete for document chunks
  • Adjust doc details button toolbar flow
Fixed 16
  • 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
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
How v3.0.5 went
v3.0.4

Paperless-ngx v3.0.4

Changed 5
  • 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
Fixed 9
  • 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
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
How v3.0.4 went
v3.0.3

Paperless-ngx v3.0.3

Changed 2
  • PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT environment variable handling
  • Adjust top navbar wrapping when AI chat button visible
Fixed 5
  • 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
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
How v3.0.3 went
v3.0.2

Paperless-ngx v3.0.2

Fixed 1
  • Fix broken migration in 3.0.1
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
How v3.0.2 went
v3.0.1

Paperless-ngx v3.0.1

Changed 3
  • 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
Fixed 12
  • 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

[!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
How v3.0.1 went
v3.0.0

Paperless-ngx v3.0.0

Added 8
  • 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 1
  • Update root modified timestamp on version changes
Removed 9
  • Remove positional arguments from pre/post consume scripts
  • Decouple OCR control from archive file control
  • Drop support for API versions less than 9
  • Drop support for Python 3.10
  • Refactor advanced database settings to allow more user configuration
  • Remove API v1 compatibility
Security 2
  • Enforce current permissions in autocomplete
  • Bound email linkification
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
How v3.0.0 went
v3.0.0-beta.rc2Pre-release

Paperless-ngx v3.0.0-beta.rc2

Added 7
  • Support LLM timeout configuration
  • Ignore diacritics and support multiple substring matching for UI filtering
  • Add direct LLM language setting
  • Try to respect language for AI suggestions
  • Add AI LLM chunk size and context window configuration
  • Support ollama embeddings
  • Version-aware thumbnail etag
Changed 2
  • Update to Angular v22 with zoneless and reactive architecture
  • Replace LanceDB vector store with sqlite-vec
Fixed 11
  • Scope ProcessedMail UID deduplication by IMAP UIDVALIDITY
  • Allow setting any UID and GID when running rootless
  • Fix sidebar document close button
  • Include wasm assets in pdf.js-based viewer
  • Fix UI labels from md5 to sha256
  • Do not assign empty title in workflow with broken template
paperless-ngx 3.0.0-beta.rc2
Features / Enhancements
  • docker-compose(deps): bump greenmail/standalone from 2.1.8 to 2.1.9 in /docker/compose @dependabot[bot] (#13067)
  • docker-compose(deps): bump gotenberg/gotenberg from 8.33 to 8.34 in /docker/compose @dependabot[bot] (#13066)
  • docker-compose(deps): bump nginx from 1.31.1-alpine to 1.31.2-alpine in /docker/compose @dependabot[bot] (#13065)
  • docker(deps): Bump astral-sh/uv from 0.11.19-python3.12-trixie-slim to 0.11.28-python3.12-trixie-slim @dependabot[bot] (#13070)
  • Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
  • Enhancement (beta): support LLM timeout config @shamoon (#13002)
  • Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon (#13021)
  • Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog (#12990)
  • Enhancement (beta): Switch the AI vector store to LanceDB @stumpylog (#12944)
  • Fixhancement (beta): tasks dismiss all @shamoon (#12949)
  • Enhancement (beta): add direct LLM language setting @shamoon (#12906)
  • Enhancement: try to respect language for AI suggestions @shamoon (#12894)
  • Enhancement: AI LLM chunk size and context window config @shamoon (#12891)
  • Chore: Further dependency security updates @stumpylog (#12780)
  • Enhancement: support ollama embeddings @shamoon (#12753)
  • Tweakhancment: Include the last applied 'documents' migration in the log @stumpylog (#12757)
  • Enhancement: version-aware thumbnail etag @shamoon (#12754)
  • Documentation: Update v3 migration docs @shamoon (#12752)
Bug Fixes
  • Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY @chouquette (#12839)
  • Fix: allow setting any UID and GID when running rootless @Tahvok (#13090)
  • Fix (beta): fix sidebar document close button @shamoon (#13136)
  • Fix: include wasm assets in pdf.js-based viewer @shamoon (#13122)
  • Fix: fix ui labels from md5 to sha256 @shamoon (#13119)
  • Fixhancement: dont assign empty title in workflow with broken template @shamoon (#13112)
  • Fix: clamp mailrule max age before migration @shamoon (#13093)
  • Fix: use latest document version for bulk download @shamoon (#13103)
  • Fix (beta): handle relative date with comma query @shamoon (#13087)
  • Fix (beta): fix sanity checker affected document counts @NgoQuocViet2001 (#13052)
  • Fix (beta): preserve Unicode in localization prompt @shamoon (#13055)
  • Fix: change tantivy token limit to title field max length @shamoon (#13046)
  • Fix: include last-modified in doc etag @shamoon (#13044)
  • Fix (beta): Stream chunks during compaction to prevent oom on smaller installs @stumpylog (#13014)
  • Fixhancement (beta): truncate embedding queries for small chunk size @shamoon (#13028)
  • Fix(beta): Workaround a Tantivy panic in more like this searching @stumpylog (#13026)
  • Fix (beta): Catch consumer files created during watcher re-creations @stumpylog (#13013)
  • Fix (beta): restore v2 (Whoosh) advanced-search query compatibility @stumpylog (#13010)
  • Fix (beta): retry celery ping and report warning on no response @shamoon (#13012)
  • Fix (beta): don't send chat message on Enter while composing with IME (CJK) @mzyy94 (#12999)
  • Fix: Apply unicode normalization to all paths and path components @stumpylog (#12993)
  • Fix: Handle the UTF 16 and BOM text files better @stumpylog (#12994)
  • Fix (beta): avoid DRF update calling 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)
Documentation
  • Fix: clamp mailrule max age before migration @shamoon (#13093)
  • Documentation (beta): Updates documentation for new v3 features @stumpylog (#13033)
  • Documentation: remove duplicate words in three files @mvanhorn (#12852)
  • Fix: Allow setting allauth rate limit configuration settings @stumpylog (#12798)
  • Documentation: Update v3 migration docs @shamoon (#12752)
Maintenance
Dependencies
  • Chore(deps): Bump the pre-commit-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13137)
  • Chore(deps-dev): Bump the development group across 1 directory with 2 updates @dependabot[bot] (#13068)
  • docker-compose(deps): bump greenmail/standalone from 2.1.8 to 2.1.9 in /docker/compose @dependabot[bot] (#13067)
  • docker-compose(deps): bump gotenberg/gotenberg from 8.33 to 8.34 in /docker/compose @dependabot[bot] (#13066)
  • docker-compose(deps): bump nginx from 1.31.1-alpine to 1.31.2-alpine in /docker/compose @dependabot[bot] (#13065)
  • docker(deps): Bump astral-sh/uv from 0.11.19-python3.12-trixie-slim to 0.11.28-python3.12-trixie-slim @dependabot[bot] (#13070)
  • Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
  • Chore(deps): Bump the actions group across 1 directory with 14 updates @dependabot[bot] (#13079)
  • Chore(deps): Bump pdfjs-dist from 5.7.284 to 6.0.227 in /src-ui @dependabot[bot] (#13080)
  • Chore(deps-dev): Bump @playwright/test from 1.60.0 to 1.61.1 in /src-ui @dependabot[bot] (#13078)
  • Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13076)
  • Chore(deps): Bump uuid from 14.0.0 to 14.0.1 in /src-ui @dependabot[bot] (#13077)
  • Chore(deps-dev): Bump jest-preset-angular from 16.1.5 to 17.0.0 in /src-ui in the frontend-jest-dependencies group across 1 directory @dependabot[bot] (#13075)
  • Chore(deps-dev): Bump @types/node from 25.9.1 to 26.0.0 in /src-ui @dependabot[bot] (#13081)
  • Chore(deps): Bump the npm_and_yarn group across 1 directory with 3 updates @dependabot[bot] (#13016)
  • Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#12995)
  • Chore(deps): Bump the utilities-patch group across 1 directory with 4 updates @dependabot[bot] (#12931)
  • Chore(deps-dev): Bump types-markdown from 3.10.2.20260211 to 3.10.2.20260518 @dependabot[bot] (#12927)
  • Chore(deps): Bump aiohttp from 3.13.4 to 3.14.0 in the uv group across 1 directory @dependabot[bot] (#12930)
  • Chore(deps): Bump the pre-commit-dependencies group across 1 directory with 2 updates @dependabot[bot] (#12923)
  • docker(deps): Bump astral-sh/uv from 0.11.6-python3.12-trixie-slim to 0.11.19-python3.12-trixie-slim @dependabot[bot] (#12920)
  • Chore(deps): Bump the actions group across 1 directory with 12 updates @dependabot[bot] (#12909)
  • docker-compose(deps): bump apache/tika from 3.2.3.0 to 3.3.1.0 in /docker/compose @dependabot[bot] (#12912)
  • docker-compose(deps): bump gotenberg/gotenberg from 8.27 to 8.33 in /docker/compose @dependabot[bot] (#12910)
  • docker-compose(deps): Bump nginx from 1.29.5-alpine to 1.31.1-alpine in /docker/compose @dependabot[bot] (#12911)
  • Chore(deps-dev): Bump @playwright/test from 1.59.1 to 1.60.0 in /src-ui @dependabot[bot] (#12919)
  • Chore(deps-dev): Bump @types/node from 25.6.0 to 25.9.1 in /src-ui @dependabot[bot] (#12915)
  • Chore(deps): Bump pdfjs-dist from 5.6.205 to 5.7.284 in /src-ui @dependabot[bot] (#12918)
  • Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#12913)
  • Chore(deps-dev): Bump webpack from 5.106.2 to 5.107.2 in /src-ui @dependabot[bot] (#12917)
  • Chore(deps): Bump zone.js from 0.16.1 to 0.16.2 in /src-ui @dependabot[bot] (#12916)
  • Chore(deps-dev): Bump the frontend-jest-dependencies group across 1 directory with 3 updates @dependabot[bot] (#12908)
  • Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 20 updates @dependabot[bot] (#12907)
  • Chore(deps): Bump hono from 4.12.16 to 4.12.18 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12767)
  • Chore(deps): Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12764)
  • Chore(deps): Bump fast-uri from 3.1.1 to 3.1.2 in /src-ui in the npm_and_yarn group across 1 directory @dependabot[bot] (#12763)
  • Chore: Targeted dependency upgrades @stumpylog (#12731)
All App Changes
  • Chore(deps-dev): Bump the development group across 1 directory with 2 updates @dependabot[bot] (#13068)
  • Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY @chouquette (#12839)
  • Fix (beta): fix sidebar document close button @shamoon (#13136)
  • Fix: include wasm assets in pdf.js-based viewer @shamoon (#13122)
  • Fix: fix ui labels from md5 to sha256 @shamoon (#13119)
  • Chorehancement: update to Angular v22, 'zoneless' / 'reactive' @shamoon (#13114)
  • Fixhancement: dont assign empty title in workflow with broken template @shamoon (#13112)
  • Fix: clamp mailrule max age before migration @shamoon (#13093)
  • Fix: use latest document version for bulk download @shamoon (#13103)
  • Fix (beta): handle relative date with comma query @shamoon (#13087)
  • Chore(deps): Bump pdfjs-dist from 5.7.284 to 6.0.227 in /src-ui @dependabot[bot] (#13080)
  • Chore(deps-dev): Bump @playwright/test from 1.60.0 to 1.61.1 in /src-ui @dependabot[bot] (#13078)
  • Chore(deps-dev): Bump the frontend-eslint-dependencies group across 1 directory with 4 updates @dependabot[bot] (#13076)
  • Chore(deps): Bump uuid from 14.0.0 to 14.0.1 in /src-ui @dependabot[bot] (#13077)
  • Chore(deps-dev): Bump jest-preset-angular from 16.1.5 to 17.0.0 in /src-ui in the frontend-jest-dependencies group across 1 directory @dependabot[bot] (#13075)
  • Chore(deps-dev): Bump @types/node from 25.9.1 to 26.0.0 in /src-ui @dependabot[bot] (#13081)
  • Fix (beta): fix sanity checker affected document counts @NgoQuocViet2001 (#13052)
  • Fix (beta): preserve Unicode in localization prompt @shamoon (#13055)
  • Fix: change tantivy token limit to title field max length @shamoon (#13046)
  • Feature: OCR Templates @Anuril (#13043)
  • Fix: include last-modified in doc etag @shamoon (#13044)
  • Fix (beta): Stream chunks during compaction to prevent oom on smaller installs @stumpylog (#13014)
  • Fixhancement (beta): truncate embedding queries for small chunk size @shamoon (#13028)
  • Enhancement (beta): support LLM timeout config @shamoon (#13002)
  • Fix(beta): Workaround a Tantivy panic in more like this searching @stumpylog (#13026)
  • Chore (beta): set tool_required to openai-like llm calls @shamoon (#13025)
  • Enhancement: ignore diacritics, support multiple substring matching for UI filtering @shamoon (#13021)
  • Fix (beta): Catch consumer files created during watcher re-creations @stumpylog (#13013)
  • Chore(deps): Bump the npm_and_yarn group across 1 directory with 3 updates @dependabot[bot] (#13016)
  • Fix (beta): restore v2 (Whoosh) advanced-search query compatibility @stumpylog (#13010)
  • Fix (beta): retry celery ping and report warning on no response @shamoon (#13012)
  • Enhancement(beta): replace LanceDB vector store with sqlite-vec @stumpylog (#12990)
  • Chore(deps): Bump the uv group across 1 directory with 2 updates @dependabot[bot] (#12995)
  • Chore(deps): Bump the utilities-patch group across 1 directory with 4 updates @dependabot[bot] (#12931)
  • Fix (beta): don't send chat message on Enter while composing with IME (CJK) @mzyy94 (#12999)
  • Fix: Apply unicode normalization to all paths and path components @stumpylog (#12993)
  • Fix: Handle the UTF 16 and BOM text files better @stumpylog (#12994)
  • Fix (beta): avoid DRF update calling 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)
View originalPermalink
How v3.0.0-beta.rc2 went
v3.0.0-beta.rc1Pre-release

Paperless-ngx v3.0.0-beta.rc1

Added 11
  • Paperless AI feature
  • Remote OCR using Azure AI
  • Sharelink bundles
  • Document file versions
  • Document parser plugin framework
  • Move to trash action for workflows
Changed 3
  • Replace Whoosh with tantivy search backend
  • Simplify and improve the consumer
  • Decouple OCR control from archive file control
Removed 6
  • Support for document and thumbnail encryption
  • Pybzar as a barcode reader
  • API v1 compatibility
  • Support for Python 3.10
  • Support for API versions before version 9
  • Positional arguments from the pre/post consume scripts
paperless-ngx 3.0.0-beta.rc1
Notable Changes
  • Feature: Paperless AI @shamoon (#10319)
  • Feature: Remote OCR (Azure AI) @shamoon (#10320)
  • Feature: sharelink bundles @shamoon (#11682)
  • Feature: document file versions @shamoon (#12061)
  • Feature: document parser plugin framework @stumpylog (#12294)
  • Feature: Replace Whoosh with tantivy search backend @stumpylog (#12471)
Breaking Changes
  • [BREAKING] Feature: Simplify and improve the consumer @stumpylog (#11753)
  • [BREAKING] Chore: Remove support for document and thumbnail encryption @stumpylog (#11850)
  • [BREAKING] Chore: Remove old migrations and re-create them fresh for v3 @stumpylog (#11854)
  • [BREAKING] Chore: Remove pybzar as a barcode reader @stumpylog (#12065)
  • [BREAKING] Chore: Refactor advanced database settings to allow more user configuration @stumpylog (#12165)
  • [BREAKING] Chore: Remove API v1 compatibility @stumpylog (#12166)
  • [BREAKING] Enhancement: saved view sharing @shamoon (#12142)
  • [BREAKING] Chore: Drop support for Python 3.10 @stumpylog (#12234)
  • [BREAKING] Chore: drop support for api versions < 9 @shamoon (#12284)
  • Breaking: Decouple OCR control from archive file control @stumpylog (#12448)
  • Breaking: Remove the positional arguments from the pre/post consume scripts @stumpylog (#12573)
Features / Enhancements
  • Feature: move to trash action for workflows @JanKleine (#11176)
  • Feature: password removal action @shamoon (#11656)
  • Feature: password removal workflow action @shamoon (#11665)
  • Enhancement: Add 'any of' workflow trigger filters @shamoon (#11683)
  • Fixhancement: improve ASN handling with PDF operations @shamoon (#11689)
  • Tweakhancement: use anchor element for management list quick filter buttons @shamoon (#11692)
  • Enhancement: Add support for app oidc @paulgessinger (#11756)
  • Enhancement: allow duplicates with warnings, UI for discovery @shamoon (#11815)
  • Enhancement: configurable SSO groups claim @Gabgobie (#11841)
  • Enhancement: support doc_id placeholder in workflow templates @shamoon (#11847)
  • Enhancement: support select all for management lists @shamoon (#11889)
  • Fixhancement: auto-queue llm index if needed @shamoon (#11891)
  • Tweakhancement: display document id, with copy @shamoon (#11896)
  • Enhancement: improve relative dates in date filter @JanKleine (#11899)
  • Enhancement: user control of doc details fields @shamoon (#11906)
  • Enhancement: Add setting for default PDF Editor mode @JanKleine (#11927)
  • Feature: Enable users to customize date parsing via plugins @stumpylog (#11931)
  • Tweakhancement: tweak bulk delete text @shamoon (#11967)
  • Enhancement: improve filter drop-down performance with virtual scrolling @shamoon (#11973)
  • Enhancement: per-type object page sizing @shamoon (#11977)
  • Enhancement: pngx pdf viewer @shamoon (#12043)
  • Tweak: improve 2-digit year parsing @shamoon (#12044)
  • Enhancement: consolidate management lists into document attributes section @shamoon (#12045)
  • Enhancement: option to stop processing further mail rules @shamoon (#12053)
  • Enhancment: Formatted filename for single document downloads @JanKleine (#12095)
  • Tweakhancement: reset to page 1 on reset filters @shamoon (#12143)
  • Enhancement: prevent duplicate mail processing across rules @shamoon (#12159)
  • Feature: Switch progress bar library to rich @stumpylog (#12169)
  • Enhancement: Transition sanity check to rich and improve output @stumpylog (#12182)
  • Enhancement: add version label filename placeholder @JanKleine (#12185)
  • Enhancement: Switch all indexing to use rich @stumpylog (#12193)
  • Enhancement: Improve the retagger output using rich @stumpylog (#12194)
  • Tweak: Ignore version documents for workflows, trigger updated on root when versions change @shamoon (#12217)
  • Enhancement: version added workflow trigger @shamoon (#12219)
  • Change: use explicit create instead of cloning for versions @shamoon (#12226)
  • Fixhancement: support version-specific edits @shamoon (#12233)
  • Feature: Migrate import/export to rich progress @stumpylog (#12260)
  • Enhancement: Show more document details in merge dialog @svenstaro (#12271)
  • Enhancement: Make the StatusConsumer truly async @stumpylog (#12298)
  • Feature: Add progress information to the classifier training for a better ux @stumpylog (#12331)
  • Feature: Convert Tika parser to the plugin system @stumpylog (#12333)
  • Feature: Convert remote AI parser to plugin system @stumpylog (#12334)
  • Change: sort custom fields alphabetically by default @shamoon (#12358)
  • Chore: Convert mail parser to plugin style @stumpylog (#12397)
  • Chore: Convert Tesseract parser to plugin style @stumpylog (#12403)
  • Enhancement: auto-hide the search bar on mobile @shamoon (#12404)
  • Chore: Drop old signal and unneeded apps, transition to parser registry instead @stumpylog (#12405)
  • Fixhancement: default mail-created correspondent matching to exact @shamoon (#12414)
  • Feature: Transition all checksums to use SHA256 @stumpylog (#12432)
  • Tweakhancement: show file extension in StoragePath test @shamoon (#12452)
  • Fixhancement: include sharelinks + bundles in export/import @shamoon (#12479)
  • Enhancement: unify text search to use tantivy @shamoon (#12485)
  • Security enhancement: allow opt-in blocking internal mail hosts @shamoon (#12502)
  • Feature: Consumer logging correlation @stumpylog (#12510)
  • Enhancement: add view_global_statistics and view_system_status permissions @shamoon (#12530)
  • Enhancement: validate and sanitize uploaded logos @shamoon (#12551)
  • Feature: Document fuzzy match improvements @stumpylog (#12579)
  • Feature: Tune SQLite default settings for increased speed @stumpylog (#12580)
  • Enhancement: add highlighting to title + content searches @shamoon (#12593)
  • Tweak: remove stale index warning @shamoon (#12616)
  • Feature: Allow monitoring access to tasks summary @stumpylog (#12624)
  • Feature: Redesign the task system @stumpylog (#12584)
  • Enhancement: new Tasks UI @shamoon (#12614)
  • Enhancement: show small task summary in system status @shamoon (#12634)
  • Tweakhancement: tweak tasks UI, make open doc an anchor @shamoon (#12658)
  • Tweakhancement: make upload notification open an anchor link @shamoon (#12659)
  • Enhancement: chat message document links @shamoon (#12670)
  • Tweakhancement: localize some more task result messages @shamoon (#12672)
  • Enhancement: Paperless-ngx v3 Logo @shamoon (#12673)
  • Change: separate llm suggestions endpoint @shamoon (#12675)
  • Tweakhancement: use fixed position instead of display none for printing @shamoon (#12706)
  • Feature: Further reduce document importer memory usage @stumpylog (#12707)
  • Tweak: add icons to ai suggestion dropdown @shamoon (#12708)
  • Fixhancement: include trashed documents in document exporter/importer @JanKleine (#12425)
  • Enhancement: Paperless-ngx v3 Logo @shamoon (#12673)
  • Enhancement: saved view sharing @shamoon (#12142)
  • Chore: separate actions from bulk edit endpoint @shamoon (#12286)
Performance Improvements
  • Performance: improve treenode inefficiencies @shamoon (#11606)
  • Performance: pre-compress static files on ARM64 @stumpylog (#11721)
  • Performance: faster statistics panel on dashboard @Merinorus (#11760)
  • Performance fix: use subqueries to improve object retrieval in large installs @shamoon (#11950)
  • Performance: Improve exporter memory efficiency @stumpylog (#12236)
  • Performance: Further export memory improvements @stumpylog (#12273)
  • Lazy imports of the heavy AI modules @stumpylog (#12275)
  • Performance: Stream JSON during import for memory improvements @stumpylog (#12276)
  • Performance: support passing selection data with filtered document requests @shamoon (#12300)
  • Performance: deprecate and remove usage of all in API results @shamoon (#12309)
  • Performance: support bulk edit without id lists @shamoon (#12355)
  • Performance: Increases workflow related M2M prefetching @stumpylog (#12618)
  • Performance: Resolves another N+1 query related to custom fields @stumpylog (#12617)
Bug Fixes
  • Fix: re-run ASN check after barcode detection @shamoon (#11681)
  • Fix: use explicit order field for workflow actions @shamoon (#11781)
  • Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent @shamoon (#11811)
  • Fix: fix tag list horizontal scroll, again @shamoon (#11839)
  • Fix: ensure css color-scheme for dark mode @shamoon (#11855)
  • Fix: use correct field id for overrides @shamoon (#11869)
  • Fix: Running management scripts under rootless could fail @stumpylog (#11870)
  • Fixhancement: change date calculation for 'this year' to include future documents @shamoon (#11884)
  • Fix: extract all ids for nested tags @shamoon (#11888)
  • Fix: fix broken docker create_classifier command in 2.20.6 @shamoon (#11965)
  • Fix: prevent infinite loading crash in mail component @shamoon (#11978)
  • Fix: Handle an OOM kill of celery workers in the task handler @stumpylog (#12040)
  • Fix(dev): history causing infinite requests @shamoon (#12059)
  • Fix: correct user dropdown button icon styling @shamoon (#12092)
  • Fix: unify POSTs when toggling sidebar to prevent db lock @shamoon (#12129)
  • Fix: pass api_base to OpenAIEmbedding @shamoon (#12151)
  • Fix: correct page count by separating display vs collection sizes for tags @shamoon (#12170)
  • Fixhancement: config option reset @shamoon (#12176)
  • Fixhancement: show sequential + id version labels, fix padding @shamoon (#12196)
  • Fix: correct doc version filename handling @shamoon (#12223)
  • Fix: enforce path limit for db filename fields @shamoon (#12235)
  • Fix: apply ordering after annotating tag document count @shamoon (#12238)
  • Fix: use maxsplit=1 in Redis URL parsing to handle URLs with multiple colons @cryptomilk (#12239)
  • Fix: support string coercion in filepath jinja templates @shamoon (#12244)
  • Fix (dev): Add saved view compatibility in API version 9 @shamoon (#12280)
  • Fix: prevent stale db filename during workflow actions @shamoon (#12289)
  • Fix: use effective content for matching and suggestion content @shamoon (#12293)
  • Fix: prevent wrapping with larger amounts of tags on small cards, reset moreTags setting to correct count @shamoon (#12302)
  • Fix: Removes the double exec that prevented migrations from running @stumpylog (#12317)
  • Fixhancement: clear descendant selections in dropdown when parent toggled @shamoon (#12326)
  • Fix: correct dropdown list active color in dark mode @shamoon (#12328)
  • Fixhancement: only offer basic auth for appropriate requests @shamoon (#12362)
  • Fix: Don't try to update the user when running as non-root @stumpylog (#12365)
  • Fix: fix file button hover color in dark mode @shamoon (#12367)
  • Fix: remove pagination from document notes api spec @shamoon (#12388)
  • Fix: avoid moving files if already moved @shamoon (#12389)
  • Fix: Scope the workflow saves to prevent clobbering filename/archive_filename @stumpylog (#12390)
  • Fix: don't try to usermod/groupmod when non-root + update docs @stumpylog (#12391)
  • Fix: validate date CF value in serializer @shamoon (#12410)
  • Fix: Respect workflow change_groups during consumption @stumpylog (#12431)
  • Fix: add fallback ordering for documents by id after created @shamoon (#12440)
  • Fix: limit share link viewset actions @shamoon (#12461)
  • Fix: dont defer tag change application in workflows @shamoon (#12478)
  • Fix: prevent duplicate parent tag IDs @shamoon (#12522)
  • Fix: do not submit permissions for non-owners @shamoon (#12571)
  • Fix: reject invalid requests to API notes endpoint @ggouzi (#12582)
  • Fixhancement: Exact custom field monetary exact searching @stumpylog (#12592)
  • Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type @ggouzi (#12597)
  • Fix: relative added date check visibility @shamoon (#12600)
  • Fix: Changes bare metal webserver to use uvloop @stumpylog (#12626)
  • Fix: correctly scope mail account enumeration @shamoon (#12636)
  • Fix: Use FileResponse for file API responses @stumpylog (#12638)
  • Fix: use only allauth login/logout endpoints @shamoon (#12639)
  • Fix: apply tag changes directly to document in db @shamoon (#12664)
  • Fix: fix a minor pdf viewer uncaught error @shamoon (#12669)
  • Fix: avoid unnecessary close_old_connections in Celery task dispatch @stumpylog (#12701)
  • Fix (dev): return empty list for non-positive search limit @shamoon (#12703)
  • Fix (dev): resolve tantivy search-filtered documents in bulk edit @shamoon (#12705)
  • Fix: Don't try to update the user when running as non-root @stumpylog (#12365)
Security
  • Chore: Manually upgrades allauth to resolve a security issue with it @stumpylog (#11853)
  • Security: prevent prototype pollution in frontend settings and list view @shamoon (#12438)
  • Security: Sign the Celery pickled tasks @stumpylog (#12504)
  • Security: Don't allow the example secret key as a secret key @stumpylog (#12630)
Maintenance
  • Chore: Switches to use prek in place of pre-commit @stumpylog (#12002)
  • Chore: Re-work CI into multiple workflows @stumpylog (#11719)
  • Chore: Build the ARM64 image using the native ARM64 runner @stumpylog (#11720)
  • Chore: upgrade to Angular v21 @shamoon (#11746)
  • Chore: upgrade to node v24 @shamoon (#11747)
  • Chore: Bulk backend updates @stumpylog (#11543)
  • Chore: remove deprecated Angular method @philipgullickson (#11919)
  • Chore: Http interceptors refactor @philipgullickson (#11923)
  • Chore: Fix further test flakiness @stumpylog (#11987)
  • Chore: Enable mypy checking in CI @stumpylog (#11991)
  • Chore: bump Angular to 21.1.3, ngx-ui-tour-ng-bootstrap to v18 @shamoon (#12015)
  • Chore: Optimizes the integer fields for choice types @stumpylog (#12057)
  • Chore: Pngx pdf viewer fixes @shamoon (#12083)
  • Chore: Improve user migration path @stumpylog (#12232)
  • Chore: pytest style paperless tests @stumpylog (#12254)
  • Chore: update ESLint to v10 @shamoon (#12256)
  • Chore: Finish settings refactor @stumpylog (#12263)
  • Chore: Don't upload digests file as a zip @stumpylog (#12264)
  • Chore: mark document detail email action as deprecated @shamoon (#12308)
  • Chore: Disables the system checks for management commands in tests and when unnecessary @stumpylog (#12332)
  • Chore: Reduce system status test times @stumpylog (#12354)
  • Chore: Instead of manual temporary directory management, use a context manager @stumpylog (#12430)
  • Chore: logger, response and template sanitization cleanup @shamoon (#12439)
  • Chore: Better typed status manager messages @stumpylog (#12509)
  • Chore: Resolves some zizmor reported code scan findings @stumpylog (#12516)
  • Chore: address more zizmor flags @shamoon (#12529)
  • Chore: Paginate the task listing @stumpylog (#12633)
Translations
  • New Crowdin translations by GitHub Action (#11627)
  • Feature: Indonesian translation @trismawan25 (#11641)
View originalPermalink
How v3.0.0-beta.rc1 went
v2.20.15

Paperless-ngx v2.20.15

Fixed 2
  • Prevent intermediate change event when CustomFieldQueryAtom operator changes type
  • Reject invalid requests to API notes endpoint
Security 2
  • Use only allauth login/logout endpoints to address security issue GHSA-8c6x-pfjq-9gr7
  • Correctly scope mail account enumeration
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)
  • Fix: correctly scope mail account enumeration @shamoon (#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
  • Fix: use only allauth login/logout endpoints @shamoon (#12639)
  • Fix: correctly scope mail account enumeration @shamoon (#12636)
  • Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type (#12597)
  • Fix: reject invalid requests to API notes endpoint (#12582)
View originalPermalink
How v2.20.15 went
v2.20.14

Paperless-ngx v2.20.14

Changed 1
  • Default mail-created correspondent matching to exact
Fixed 6
  • Do not submit permissions for non-owners
  • Prevent duplicate parent tag IDs
  • Do not defer tag change application in workflows
  • Limit share link viewset actions
  • Add fallback ordering for documents by id after created
  • Validate date custom field value in serializer
paperless-ngx 2.20.14
Bug Fixes
  • Fix: do not submit permissions for non-owners @shamoon (#12571)
  • Fix: prevent duplicate parent tag IDs @shamoon (#12522)
  • Fix: dont defer tag change application in workflows @shamoon (#12478)
  • Fix: limit share link viewset actions @shamoon (#12461)
  • Fix: add fallback ordering for documents by id after created @shamoon (#12440)
  • Fixhancement: default mail-created correspondent matching to exact @shamoon (#12414)
  • Fix: validate date CF value in serializer @shamoon (#12410)
All App Changes
  • Fix: do not submit permissions for non-owners @shamoon (#12571)
  • Fix: prevent duplicate parent tag IDs @shamoon (#12522)
  • Fix: dont defer tag change application in workflows @shamoon (#12478)
  • Fix: limit share link viewset actions @shamoon (#12461)
  • Fix: add fallback ordering for documents by id after created @shamoon (#12440)
  • Fixhancement: default mail-created correspondent matching to exact @shamoon (#12414)
  • Fix: validate date CF value in serializer @shamoon (#12410)
View originalPermalink
How v2.20.14 went
View all

Discussion