Skip to content

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, making content_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_status document-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 clamd over TCP (INSTREAM). Scanned files are stored durably but stay unavailable until a background ScanDocumentFile job records a clean verdict; downloads, previews, page images, extracted/OCR text, thumbnails, page processing, and classification all require content_available=true and return 409 Conflict while blocked. Files expose scan_status (not_required, pending, scanning, clean, infected, scan_error), scanner metadata, and a derived content_available flag. Blocked files can still be deleted and resubmitted via POST /api/v1/documents/{document_id}/files/{id}/rescan. Scanning is configured with MALWARE_SCANNER_PROVIDER, CLAMAV_HOST, CLAMAV_PORT, timeouts, and MALWARE_SCANNER_FAILURE_POLICY (fail-closed by default), enabled per site with the virus_scanning_enabled setting, and opted in per upload with the Virus scan this upload checkbox (default from virus_scan_by_default). Docker Compose includes a clamav service, 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, so docker compose up always 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 reach pandoc, soffice, weasyprint, pdftocairo, pdftotext, pdfinfo, magick, and tesseract. Secret-bearing variables remain stripped. The Helm chart now sets TMPDIR=/tmp, XDG_CACHE_HOME=/tmp/.cache, and MAGICK_TMPDIR=/tmp on the API container so tool caches stay inside the size-limited /tmp emptyDir.

[0.5.7] - 2026-09-13

Added

  • Added api.tmpDir Helm values mounting an emptyDir at /tmp in the API pod for upload buffering and document-processing scratch. api.tmpDir.sizeLimit (default 2Gi) sets the emptyDir sizeLimit; set it to "" for no limit or raise it for large MAX_UPLOAD_SIZE_MB values and concurrent jobs. Set api.tmpDir.enabled=false to 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 only PATH and HOME taken from the main process, so secrets such as DATABASE_URL, REDIS_URL, JWT_SECRET, AWS_*, and S3_BUCKET are never exposed to them.

Fixed

  • Fixed intermittent soffice conversion failures (exit status: 1 with 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 stdout and stderr (trimmed and truncated), since several tools — notably soffice — report errors on stdout. pdftocairo failures in page-image extraction and thumbnail generation now capture stderr instead of reporting only the exit status.

[0.5.6] - 2026-09-13

Added

  • Added MAX_UPLOAD_SIZE_MB environment variable (default 100) controlling the maximum single-file upload size for both POST /api/v1/documents and POST /api/v1/documents/{document_id}/files. Oversize uploads return 413 Payload Too Large with the standard JSON error body. Invalid values prevent startup.

Changed

  • Migrated from cargo nextest back to cargo 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/settings endpoint 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_count in GET /api/v1/document-types list 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/settings API for controlling app behavior, starting with an allow_user_registration toggle that blocks POST /api/v1/auth/register when 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 (apalis 1.0.0-rc.9, apalis-redis 1.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-owned JobResult error 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/ping endpoint 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/ping before 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