Paperless-ngx logo

Paperless-ngx

Community-supported document management system to scan, index and archive all your documents

Alternative to: evernote, docuware, m-files

Paperless-ngx screenshot

About Versions (100)

v3.0.0-beta.rc1

2026-05-05

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)