Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
Fixed¶
- Blocked deleting the default Unspecified document type from the document types list page.
[0.6.3] - 2026-10-03¶
Fixed¶
- Scoped the document action Remove Tag and Remove from Cabinet dialogs to only show tags and cabinets assigned to the selected documents.
- Fix document metadata migration handling of blank or null dates
[0.6.2] - 2026-10-02¶
Changed¶
- Breaking API Change: Split the document metadata value field into string_value, number_value and date_value. Updated the backend and frontend code accordingly.
Fixed¶
- Improved mobile view of some list pages
- Fixed race conditions by enqueuing job processing after the transaction commits
Security¶
- Updated various dependencies
[0.6.1] - 2026-09-16¶
Added¶
- Added an admin-only Bypass Scan action for non-infected blocked document files. The action confirms before marking the file
not_required, clearing scan metadata, makingcontent_available=true, and queueing normal page and thumbnail processing. Infected files remain blocked and cannot be bypassed. - Added an advanced document search filter for file virus-scan status. The
file_scan_statusdocument-list query parameter narrows results to documents with at least one file in the selected scan status.
[0.6.0] - 2026-09-14¶
Added¶
- Added optional virus scanning for document uploads backed by ClamAV
clamdover TCP (INSTREAM). Scanned files are stored durably but stay unavailable until a backgroundScanDocumentFilejob records acleanverdict; downloads, previews, page images, extracted/OCR text, thumbnails, page processing, and classification all requirecontent_available=trueand return409 Conflictwhile blocked. Files exposescan_status(not_required,pending,scanning,clean,infected,scan_error), scanner metadata, and a derivedcontent_availableflag. Blocked files can still be deleted and resubmitted viaPOST /api/v1/documents/{document_id}/files/{id}/rescan. Scanning is configured withMALWARE_SCANNER_PROVIDER,CLAMAV_HOST,CLAMAV_PORT, timeouts, andMALWARE_SCANNER_FAILURE_POLICY(fail-closed by default), enabled per site with thevirus_scanning_enabledsetting, and opted in per upload with theVirus scan this uploadcheckbox (default fromvirus_scan_by_default). Docker Compose includes aclamavservice, and the Helm chart bundles the Wiremind ClamAV chart by default (clamav.enabled=true,virusScanning.provider=clamav).
Changed¶
- Docker Compose now runs valkey instead of redis for background jobs
- Docker Compose services now use
pull_policy: always, sodocker compose upalways fetches the latest published images
Fixed¶
- Child document-processing commands now also inherit non-secret path overrides (
TMPDIR,TEMP,TMP,XDG_CACHE_HOME,MAGICK_TMPDIR,FONTCONFIG_PATH,FONTCONFIG_FILE) from the API process, so temp/cache locations configured on the container actually reachpandoc,soffice,weasyprint,pdftocairo,pdftotext,pdfinfo,magick, andtesseract. Secret-bearing variables remain stripped. The Helm chart now setsTMPDIR=/tmp,XDG_CACHE_HOME=/tmp/.cache, andMAGICK_TMPDIR=/tmpon the API container so tool caches stay inside the size-limited/tmpemptyDir.
[0.5.7] - 2026-09-13¶
Added¶
- Added
api.tmpDirHelm values mounting anemptyDirat/tmpin the API pod for upload buffering and document-processing scratch.api.tmpDir.sizeLimit(default2Gi) sets theemptyDirsizeLimit; set it to""for no limit or raise it for largeMAX_UPLOAD_SIZE_MBvalues and concurrent jobs. Setapi.tmpDir.enabled=falseto disable the mount.
Security¶
- External document-processing tools (
pandoc,soffice,weasyprint,pdftocairo,pdftotext,pdfinfo,magick,tesseract) no longer inherit the API process environment. Child commands run with a sanitized environment containing onlyPATHandHOMEtaken from the main process, so secrets such asDATABASE_URL,REDIS_URL,JWT_SECRET,AWS_*, andS3_BUCKETare never exposed to them.
Fixed¶
- Fixed intermittent
sofficeconversion failures (exit status: 1with no output) when the file-pages and thumbnail jobs convert the same office document concurrently. Each conversion now uses an isolated LibreOffice user profile (-env:UserInstallation), so concurrent runs no longer fight over the shared profile lock. - Failed external-process errors now include both
stdoutandstderr(trimmed and truncated), since several tools — notablysoffice— report errors onstdout.pdftocairofailures in page-image extraction and thumbnail generation now capturestderrinstead of reporting only the exit status.
[0.5.6] - 2026-09-13¶
Added¶
- Added
MAX_UPLOAD_SIZE_MBenvironment variable (default100) controlling the maximum single-file upload size for bothPOST /api/v1/documentsandPOST /api/v1/documents/{document_id}/files. Oversize uploads return413 Payload Too Largewith the standard JSON error body. Invalid values prevent startup.
Changed¶
- Migrated from
cargo nextestback tocargo test. - Optimized integration tests by sharing a DB server with TestContainers, and by merging test binaries.
- Refactored API layer to move database calls and business logic into the application layer.
[0.5.5] - 2026-09-13¶
Added¶
- Added configurable frontend date and date/time display formats, including date metadata editing/display and timestamp display.
- Added basic password strength measurement
Fixed¶
- Fixed minor style issue with document list paginator
[0.5.4] - 2026-09-12¶
Changed¶
- Change pandoc PDF engine to weasyprint
Security¶
- Remove texlive package
[0.5.3] - 2026-09-12¶
Security¶
- Migrate UI container to alpine from debian
- Always upgrade base image software
[0.5.2] - 2026-09-12¶
Changed¶
- Migrate to cargo-nextest for Rust test execution
Fixed¶
- Fixed openapi job in release workflow
[0.5.1] - 2026-09-12¶
Fixed¶
- Fixed openapi job in release workflow
- Fixed attestation job in release workflow
[0.5.0] - 2026-09-12¶
Changed¶
- Implemented OpenAPI for all routes
Security¶
- Fix uncontrolled allocation size (#33)
[0.4.14] - 2026-09-12¶
Changed¶
- helm / docker compose: Update rustfs chart to 1.0.0-rc6
- helm: Update valkey chart to 0.12.0
[0.4.13] - 2026-09-12¶
Added¶
- Add chart metadata for artifacthub.io
[0.4.12] - 2026-09-11¶
Fixed¶
- Keep cabinet, tag, and document index scopes applied when searching documents, and clarify advanced document search grouping.
[0.4.11] - 2026-09-11¶
Changed¶
- Adjust the layout of the quick filter controls on the documents list page.
- Adjust the paginator on the documents list page
- Soft-delete users, hide deleted users by default, and support restoring deleted users from administration.
- Re-registering with a deleted user's email now restores that user when the requested username is available.
[0.4.10] - 2026-09-11¶
Added¶
- Add autocomplete for metadata value editing.
- Add a public sign-up page linked from the login page, with a success message directing new users to wait for an administrator to enable their account.
- Add an unauthenticated
GET /api/v1/public/settingsendpoint exposing the user-registration flag so the UI can show or hide sign-up accordingly.
Fixed¶
- Blank metadata values are now properly deleted from the document.
[0.4.9] - 2026-09-10¶
Changed¶
- Adjust the layout of the quick filter controls on the documents list page.
- Migrated documentation to Zensical
Fixed¶
- Refresh tag, cabinet, and document type document counts after adding/removing documents to/from tags or cabinets, changing a document's type, or deleting a document.
[0.4.8] - 2026-09-10¶
Added¶
- Show document counts in the advanced search tag, cabinet, and document type dropdowns, with counts right-aligned.
- Add compact Tags, Cabinets, and Document Type quick-filter dropdowns to the main documents list header, after the Advanced Search link.
- Add a document count column to the document types list page and include
document_countinGET /api/v1/document-typeslist responses.
Changed¶
- Use a hierarchical cabinet tree selector on advanced search, showing unjoined cabinet names with document counts.
- Adjust the layout of the controls on the documents list page.
[0.4.7] - 2026-09-09¶
Added¶
- Support adding scratch values as classifier pattern metadata conditions.
- Add Download to Actions menu, supporting multi-file downloads.
Changed¶
- Changed to bootstrap dark blue theme.
[0.4.6] - 2026-09-08¶
Added¶
- Add an admin-only Settings page and
/api/v1/settingsAPI for controlling app behavior, starting with anallow_user_registrationtoggle that blocksPOST /api/v1/auth/registerwhen disabled. - Add user enabled/disabled status, require admins to enable newly registered users, and block login or token refresh for disabled users.
Changed¶
- Improve read-only detail page presentation with a shared responsive description-list layout for users, document types, metadata types, and about information.
- Upgrade background job processing to Apalis 1.0 (
apalis1.0.0-rc.9,apalis-redis1.0.0-rc.8) and Redis client 1.x, migrating worker registration to the 1.0 factory-based APIs while keeping job handlers on the project-ownedJobResulterror type.
Fixed¶
- Cancel document file page processing when the document file is deleted mid-job to avoid repeated retry noise.
- Cancel thumbnail generation when the document file is deleted mid-job to avoid repeated retry noise.
[0.4.5] - 2026-09-08¶
Added¶
- Automate cutting and reopening CHANGELOG.md release sections in
make release. - Add read-only detail pages for document types and metadata types, including linked metadata type chips and usage indicators.
- Add an authenticated
GET /api/v1/pingendpoint for checking whether credentials are still valid.
Changed¶
- Restrict document type, metadata type, and document type metadata association administration to admin users while preserving read access for regular users.
Fixed¶
- Prevent users from deleting their own account in both the API and UI.
- Check authentication with
GET /api/v1/pingbefore document and document-file uploads so expired access tokens can refresh before file transfer starts.
[0.4.4] - 2026-09-07¶
Changed¶
- Initial documented release notes for automated GitHub releases.
- Disable metadata type deletion when the type has document metadata values.
[0.4.3] - 2026-09-07¶
Changed¶
- Prevent deleting metadata types in-use by a document type