Zum Inhalt

Changelog

All notable changes to this project are documented in this file.

Unreleased

1.1.0 (2026-10-17)

Features

  • Dashboard: the widget New in Paperless lists the newest Paperless documents that you can open, each with the preview of its file, the day that Paperless added it, its correspondent and its type, and opens a document's file in Files. Paperless gets one request a minute for the dashboards of all users.
  • Try it in three minutes: bash demo/seed.sh starts a real Paperless-ngx and a real Nextcloud in Docker on your own machine, gives Paperless five synthetic documents, sets up Paperless Sync and this app, and ends with a search that finds the documents, so you can see the app at work without touching your own servers. demo/README.md says what to try.

1.0.1 (2026-10-17)

Fixed

  • The checks before a push no longer commit into the repository that runs them. bash scripts/check.sh tests the scripts of the end-to-end tests in throwaway Git repositories. When GIT_DIR was set, as Git sets it for the hook before a push in a worktree and as an agent sets it for a worktree in a container, those tests made their commits in the repository that ran them instead: git init rewrote its configuration, such as core.filemode, and its branch got a commit "The base branch" by E2E <e2e@example.com>. Now the tests clear these variables of Git before their first git, and scripts/check-project.sh runs them with GIT_DIR set to a repository of their own and fails if they change its commits, branches, configuration or checkout.

1.0.0 (2026-10-14)

Added

  • Search results show a preview of the document, its date in your language, its correspondent and its type. Every Paperless result had the same icon of the app and its date as Paperless writes it, such as 2026-08-12, so documents were hard to tell apart at a glance. Now each result shows the preview of its file, or the icon of its type, as the results of Files do, and below its title the date in your language, such as Aug 12, 2026 or 12.08.2026, the correspondent and the type of the document, and the words around your term. A search that found the term only in a note, such as notes:transfer, shows the words of the note. The names of correspondents and types cost one request to Paperless per kind and are kept for ten minutes; the account of the API token needs the permission to view them, and without it the results show without the names. Text of a document in angle brackets, such as <GmbH>, now shows as < GmbH>, so that no part of a result can act as HTML.
  • Set up and test the app with occ, see its health in the administration overview, and ask occ why a document doesn't show for a user. Ansible, Docker and other scripts now connect the app without a browser: occ paperless_unified_search:setup --url=… --token-stdin tests the connection and saves the settings as Test connection and save does, and takes the API token from the standard input or an environment variable, never from the command line. occ paperless_unified_search:test tests the connection for monitoring, and occ paperless_unified_search:check also checks the archive account and counts how many Paperless documents have a file, such as 1,180 of 1,234. When a user doesn't find a document that Paperless finds, occ paperless_unified_search:search jamie invoice --explain names the reason for each one: its file isn't shared with jamie, it belongs to another account, or no file has its marker yet. And Administration settings → Overview now warns when the search shows no Paperless documents, for a token that can't be decrypted, a missing archive account or a search that keeps failing, with a link to the settings of the app.
  • The date filter of Nextcloud's search now narrows Paperless results by document date. Picking a span such as Last 30 days or a custom range in Nextcloud's search left the Paperless results out of the filtered list, under Partial matches and searched without the dates, so an invoice of last month could not be told from all the others. Now Paperless finds only the documents whose date lies within the span, counted in whole days in your timezone, and the results stay in the filtered list. Scripts and AI assistants that use Nextcloud's search API narrow the results the same way with since and until.
  • Try a search in the settings shows why a Paperless document is or isn't shown to a user. Administrators of a managed Nextcloud without a shell could not answer the most common question, "why don't I see this document?": the search leaves out a document without a file that the user can open, without a trace. Now Try a search at the end of Administration settings → Paperless Unified Search searches Paperless as the user you name and lists the first 20 documents with their IDs and titles, each shown or with its reason: not shared with the user, not a file of the archive account, or no file with its marker such as [P412], the same answers as occ paperless_unified_search:search --explain. It shows the titles alone, never the content or the files of the documents, and the audit log of the app Auditing / Logging (admin_audit) records which administrator tried a search as which user, whatever the log level.

Changed

  • The app asks Paperless for version 9 of its API, and needs Paperless-ngx 2.16 or newer. So far, the app took whatever version of its API Paperless answered in by default, which a new release of Paperless raises, as Paperless-ngx 3 did, and a new version may change what a field holds, as version 9 did with the date of a document. Now every request names version 9, which Paperless-ngx 2.16 and newer and every Paperless-ngx 3 speak, so a new release of Paperless can no longer change the results unnoticed: tests against real Paperless-ngx 2.20 and 3.x check every week and with every new release of Paperless that the fields, dates and excerpts of the search stay as the app reads them. A Paperless older than 2.16 answers HTTP 406; Test connection and save and occ paperless_unified_search:test then say that Paperless is older than 2.16 and that updating Paperless-ngx fixes it.
  • The first stable version, 1.0.0. The app now does what it was built for: the full-text search of Paperless-ngx in the search of Nextcloud and in its smart picker, narrowed by the date filter, with a preview, the date, the correspondent and the type of each document, set up and explained with occ and with Try a search in the settings, and documented for administrators from the installation to the troubleshooting. From now on, a release that asks more of your server, such as a newer Nextcloud, PHP or Paperless-ngx, or that changes the occ commands of the app in a way that breaks a script, is a new major version, so that an update within 1.x never needs more than the update itself.

Fixed

  • A search that is still being typed in Paperless's advanced syntax finds the documents of its words in Paperless 3. Since 0.5.1, Paperless 3 gets such a search, such as invoice created:[2026 to, in its simple mode, but with the unfinished range of dates, which no document matches, so it found nothing, as tests against a real Paperless-ngx 3.3 showed. Now the simple mode gets only the plain words, such as invoice, and finds their documents while you finish typing the range.

0.5.1 (2026-10-14)

Fixed

  • A search that is still being typed in Paperless's advanced syntax no longer shows as a failed search, and a Paperless that hangs no longer makes every search wait twice. Paperless 3 refuses a query that it can't parse yet, such as created:[2026 to while you type the range of dates, and the search showed nothing for it while Search problems in the settings filled up with failed searches that were none, pushing real problems out of the list. Now such a search finds the documents of its words in the simple search of Paperless 3, and neither it nor a page past the last result shows up as a problem. A request that waited in vain for a Paperless that accepts connections but doesn't answer, as while it consumes documents or rebuilds its index, was sent a second time, so every keystroke waited 20 seconds and Paperless got every request twice; now only a request that never reached Paperless is tried again. During an outage, also one that comes and goes, Search problems notes a failure at most once in 30 seconds, with every problem still counted; a search term with letters such as ä is now left out of its messages also where they are capitals, such as Ä; and the requests tell Paperless and its proxies the real version of the app instead of 0.1.
  • The test of the connection says what went wrong, in your language. Saving the settings answered every failure with the same English sentence, "Could not connect to Paperless. Check the URL, API token, and Nextcloud outbound connection policy.", and logged nothing, whether Paperless refused the token, the path was wrong, the host didn't resolve, Nextcloud refused a local address or didn't trust the certificate. Now the message names the cause and what to correct, such as a refused token, a wrong address, a blocked local address or an untrusted certificate, and the log of Nextcloud has the error, without the token. Every message of the settings is now translated, and the app speaks formal German to accounts set to Deutsch (Förmlich: Sie), which saw it in English so far; its description on the Apps page no longer addresses them informally either.
  • The settings page shows clear, coloured feedback, keeps Disconnect off until something is configured, and works on phones. In maintenance mode, as during every upgrade, or behind a proxy whose Nextcloud didn't answer, saving showed the whole HTML page of the error as its message, and a lost connection showed "Failed to fetch". Now each of them, and an expired session, gets one short sentence in your language. A failed first save no longer turns on Disconnect, which then wiped the URL you had typed, and after a save the URL field shows the URL as it was stored. Success and error messages have their colours in the light and the dark theme again, which Nextcloud's grey had covered, and an icon, so that they don't rest on colour alone. All fields are equally wide, each checkbox stands in front of its label, the problems of the search are readable cards on a phone, the icon of the section no longer turns pink when it is active, and screen readers read the hints of the token and of Always include Paperless in global search with their fields.

0.5.0 (2026-10-13)

Added

  • Find a Paperless document by its text from the smart picker in Talk, Text, Deck and Mail and insert a link to it. Type / in Text or Collectives, or open the smart picker in Talk, Deck or Mail, choose Paperless documents and search as in Nextcloud's search: the picker lists the documents whose file you can open and inserts the link to the file you pick. Everyone who can open that file sees its preview; anyone else sees only the bare link. Your term reaches Paperless only after you chose Paperless documents in the picker.
  • A Paperless in your local network or in Docker works with one switch, without lowering Nextcloud's protection for other apps. Nextcloud refuses addresses such as 192.168.1.20 or the name of a Docker service, and so far only allow_local_remote_servers in config.php helped, which lifts that protection for every app and every URL that users enter. Select Paperless runs in my local network in the settings, and Nextcloud reaches this Paperless, and nothing else, at such an address; without it, saving now says that this switch is missing instead of only that the connection failed. The Paperless URL may now also name a Docker service with an underscore, such as http://paperless_ngx:8000, or an internationalized name. If you set allow_local_remote_servers for Paperless, first select the switch and save, and only then remove it from config.php.

Fixed

  • Paperless results no longer go missing in the web search when documents you can't open rank first, and Load more results works. The search asked Paperless for exactly as many documents as Nextcloud wanted to show, 5 in the web search, and then left out those whose file you can't open: when the first five were all such documents, Nextcloud showed no Paperless results at all, however many further down you could open, and with only some of them it never offered Load more results. The search now goes on through the next pages of Paperless until the page of results is full, up to 100 documents or 3 seconds per search, and the Nextcloud apps page through the results without repeating or skipping one.
  • Changing the Paperless server asks for the API token again. Saving the settings with a new URL and a blank token sent the stored token to the new server, so whoever could use the session of an administrator could collect it with a server of their own, or read it on its way over plain HTTP. The stored token now goes only to the server it was saved for, with the same scheme, host and port, and never to another server: for another one, the settings ask for the token again, and the token field says so as soon as the URL changes. Another path on the same server keeps the stored token.
  • The settings page and the search keep working when the stored token can no longer be decrypted. After a move or a restore of Nextcloud with another secret in config.php, the settings page failed to open, so the token couldn't even be entered again, and every search failed. Now the page says that the token can't be decrypted and asks for it again, and until then the search shows no Paperless documents.
  • An archive account typed in another case finds its files. Nextcloud accepts Archive for the account archive, but the search then showed no Paperless documents, also when Paperless Sync named its account so. The settings now store the account as Nextcloud spells it, the search finds the files in either case, and the settings warn when the archive account doesn't exist.

Changed

  • Searches answer faster and transfer far less data from Paperless. Paperless sent the whole OCR text of every document it found, with its notes and permissions, often hundreds of kilobytes per document, although a result shows only its title, its date and an excerpt; the search now asks Paperless only for what a result shows. And the files of the documents of a page are now found with one search in Nextcloud instead of one per document, each of which read the names of all files of the user. A file that can't be read now leaves out only its own result instead of all of them.
  • Saving the settings and Disconnect ask for the password. As for Nextcloud's own settings of this kind, they ask for the password of the administrator when it wasn't confirmed in the last 30 minutes.

0.4.1 (2026-10-12)

Fixed

  • The settings stand right below those of Paperless Sync. In the navigation of the administration settings, Flow came between the sections of Paperless Sync and Paperless Unified Search when both apps are installed. The section of the app now has the priority of Paperless Sync, so that both stand together.

0.4.0 (2026-10-09)

Added

  • The settings keep a history of the problems of the search. Under Search problems, the administration settings now count the failed searches and the requests to Paperless that only their second try answered, and list the latest 20 of them, newest first, with the time, the step, the error and how long it took, along with the last failed search and since when searches work again. A request that its second try saves no longer goes unnoticed, so problems of the connection show before searches fail. The history leaves out the API token, the search term and the query of every URL.

Changed

  • Saving the settings keeps the history. Only Disconnect and the new button Clear history forget it. The history replaces the last failed search of version 0.3.0.

0.3.0 (2026-10-08)

Added

  • The settings show the last failed search. A failed search shows the users no Paperless documents and no error, and some hosters of managed Nextcloud don't let administrators read the log of Nextcloud. The administration settings now show when the last search failed, whether it failed asking Paperless or looking for the files in Nextcloud, with the kind of error, its message and how long it took, and since when searches work again. The message leaves out the API token, the search term and the query of every URL. Saving the settings and Disconnect forget it.

Fixed

  • A request to Paperless without an answer gets a second try. When a request to Paperless gets no answer at all, because the name of its host doesn't resolve or the connection fails or times out, the app sends it once more before the search gives up. Such failures often pass within a moment. An answer of Paperless, whatever its status, gets no second try.

0.2.1 (2026-10-08)

Fixed

  • The icon of the app shows its magnifier in the dark theme too. Next to every Paperless result and in the menu of the administration settings, the dark magnifier of the icon disappeared on a dark background, so that only a white dot remained. A white edge now keeps it visible in either theme.

0.2.0 (2026-10-08)

Changed

  • The settings have a section of their own. The administration settings now list Paperless Unified Search as a section of its own with the app's icon, as Paperless Sync does, instead of placing the form under Additional settings.

0.1.12 (2026-10-08)

Fixed

  • Only the files of the archive account count. A search result now comes only from a file that belongs to the archive account, the Nextcloud account that owns the synchronized files: the user sees a document when that account shares its file with them. A file that only carries a marker such as [P123] in its name no longer counts. With Paperless Sync installed, its account is the archive account; otherwise enter it under Archive account in the settings. Without an archive account, the search shows no Paperless documents.

0.1.11 - 2026-10-07

Fixed

  • Saving and resetting the administration settings no longer fails with empty request URLs when Nextcloud renders the settings page before it has loaded the app (#25). The app now declares its routes as attributes on the controller, which Nextcloud 29 and later register for every enabled app.

What's Changed

Dependencies

Fixes

Other changes

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.10...v0.1.11

0.1.10 - 2026-10-05

What's Changed

Dependencies

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.9...v0.1.10

0.1.9 - 2026-10-05

What's Changed

Dependencies

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.8...v0.1.9

0.1.8 - 2026-09-28

What's Changed

Dependencies

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.7...v0.1.8

0.1.7 - 2026-09-21

What's Changed

Dependencies

Other changes

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.6...v0.1.7

0.1.6 - 2026-09-19

  • Publish checked, signed Nextcloud maintenance releases automatically after merged Dependabot updates.
  • Generate categorized release notes, with an optional maintainer introduction for manual releases.
  • Require successful PR and main checks on the exact release commit, without cancelling other CI runs.
  • Resume interrupted GitHub and App Store publication without duplicate versions or replacing public assets.

What's Changed

Dependencies

Other changes

Full Changelog: https://github.com/Dennis-Otto/paperless-unified-search/compare/v0.1.5...v0.1.6

0.1.5 - 2026-08-27

  • Protect main behind required CI, E2E, secret-scan, linear-history, and pull-request rules, including release version commits.
  • Add weekly grouped Dependabot updates with protected automatic squash merges for patch and minor changes while keeping major updates subject to maintainer approval.
  • Add CodeQL analysis and continuous SPDX SBOM generation.
  • Publish detached signatures, SBOMs, and public Sigstore provenance with releases.
  • Test Nextcloud 33 and 34 in parallel and document project governance, conduct, and support.

0.1.4 - 2026-08-26

  • Automate semantic version selection, consistency checks, signing, tagging, and publishing in a single release workflow.
  • Build release archives from committed version metadata before atomically publishing the commit and tag.
  • Pin GitHub Actions to current immutable Node 24-compatible revisions.
  • Add reproducible Docker end-to-end coverage for the real Nextcloud search API, access filtering, trusted-service mode, and browser, iOS, and Android response contracts.
  • Verify translation catalogs and production-package boundaries automatically in CI and during releases.
  • Document mobile compatibility checks, contribution requirements, and the security support policy.
  • Recommend the companion Paperless Sync app for native structured document synchronization.

0.1.3 - 2026-08-26

  • Open search results inside the official Nextcloud iOS and Android apps.
  • Add native Nextcloud file metadata for Android and an iOS deep link while preserving the web viewer route for browsers.
  • Add regression coverage for browser, iOS, and Android result links.

0.1.2 - 2026-08-26

  • Add professional English and German App Store descriptions.
  • Add real Nextcloud screenshots for unified search, the PDF viewer, and administration settings.

0.1.1 - 2026-08-26

  • Add an explicit administrator opt-in to include the trusted Paperless server in every global search without requiring the connected-services switch.
  • Keep trusted-service mode disabled by default and document that it applies to every Nextcloud user.

0.1.0 - 2026-08-25

  • Add Paperless-ngx OCR and full-text results to Nextcloud unified search.
  • Open synchronized documents directly in Nextcloud's file viewer.
  • Filter results against the current user's accessible Nextcloud files.
  • Store the Paperless API token in Nextcloud's server-side credentials manager.
  • Add an administrator connection test and configuration page.
  • Add automated tests, static analysis, style checks, and secret scanning.