Image performance
- Asset photos in lists and cards now load a small WebP thumbnail (up to 640px). It is generated on first request and cached next to the original, so existing photos need no migration.
- Detail pages and the printed report still use the full-size photo.
- Photos now lazy-load.
- Asset photos are cached for a year and revalidated by ETag (304). Files are streamed instead of read fully into memory.
- Replacing or deleting a photo also removes its thumbnail.
- New dependency: sharp.
Paperless-ngx integration (optional, off by default)
- New admin settings section, "Paperless-ngx". It has the server URL, an encrypted API token, a "who can import" selector (everyone or admins only), a schedule (off, daily or weekly), "Test connection" and "Check now".
- "Choose from Paperless" appears beside attachment uploads and in Intake. It offers text search, tag and document-type filters, thumbnails and a paste-a-link option.
- Importing copies the original file and Papinter to the document, and skips local OCRfor those rows.
- A scheduled check replaces your copy when Paperless has a new version and shows "Updated from Paperless on ".
- A document that is gone is marked "Paperley is kept. An outage or rejected token nevermarks anything broken.
- "Re-extract all" and "Clear text" no longer overwrite Paperless OCR text. After "Clear text", the next check
re-copies it. - New Paperless API routes for search, tags, document types, thumbnails and import. They are gated by the feature switch and the access setting.
- The token is carried through backup and restore
- Database migration 20261104120000_paperless_import: new PaperlessSettings table and Paperless fields on Attachment.
- README: new "Paperless-ngx (optional)" sece by design".
Fixes and small changes
- Dev mode no longer logs server action arguyped tokens in the console.
- The upload route's validation moved into a shared helper. Its behaviour is unchanged.
- The Paperless picker's Tag and Type dropdowns now follow the theme colours.