Files
gh-christianlouis-docuelevate/CHANGELOG.md
T
semantic-release f3eedce835 0.135.4
Automatically generated by python-semantic-release
2026-03-14 22:39:49 +00:00

120 KiB
Raw Blame History

Changelog

All notable changes to DocuElevate will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

This CHANGELOG is automatically generated and maintained by python-semantic-release. Do not edit it manually. New entries are prepended automatically on every merge to main that triggers a version bump.

v0.135.4 (2026-03-14)

Bug Fixes

  • mobile: Fix expo doctor dependency version mismatches for SDK 54 (f6e955a)

v0.135.3 (2026-03-14)

Bug Fixes

  • mobile: Update iOS build image from macos-sequoia-15.1-xcode-16.2 to macos-sequoia-15.3-xcode-16.2 (fe66e51)

v0.135.2 (2026-03-14)

Bug Fixes

  • mobile: Add missing assets and EAS workflow for automatic builds (1aa02ae)

  • mobile: Sync app.json and eas.json to expo.dev project credentials (5f3d134)

  • mobile: Sync app.json slug and owner to expo.dev project (7633cdf)

  • mobile: Use org.docuelevate.mobile as app identifier (4f38075)

v0.135.1 (2026-03-14)

Bug Fixes

  • mobile: Resolve EAS CI build failures wrap app.json, update deps, pin Xcode image (3bf9589)

v0.135.0 (2026-03-14)

Features

  • ui: Add i18n support to privacy page (e1941ad)

v0.134.5 (2026-03-14)

Bug Fixes

  • mobile: Update react to 19.2.4 and add package-lock.json to fix npm ERESOLVE build failure (8653247)

Chores

  • Initial plan for mobile npm peer dep fix (0cb2f6c)

  • i18n: Auto-update translations via LLM (c664220)

  • i18n: Auto-update translations via LLM (31218c8)

Documentation

  • changelog: Update changelog [skip ci] (ef4c513)

Unreleased

Chores

  • i18n: Auto-update translations via LLM (c664220)

  • i18n: Auto-update translations via LLM (31218c8)

v0.134.4 (2026-03-14)

Bug Fixes

  • mobile: Bump Node to 20.19.4 and fix react-navigation peer dependency (4c6596b)

v0.134.3 (2026-03-14)

Bug Fixes

  • mobile: Add expo-dev-client, pin Node version, and fix EAS build config (6834f3e)

  • mobile: Add owner field to app.json to match EAS project owner (492b2c6)

v0.134.2 (2026-03-14)

Bug Fixes

  • mobile: Upgrade Expo SDK from 51 to 54 and fix EAS project ID (f148785)

v0.134.1 (2026-03-14)

Bug Fixes

  • mobile: Relax Node.js engine constraint to >=18.0.0 (fb5d494)

  • mobile: Remove expo-sharing from plugins and align .nvmrc with Node 18 LTS (8f9405b)

v0.134.0 (2026-03-14)

Bug Fixes

  • i18n: Replace fragment translation keys with placeholder-based complete sentences (eaa5337)

  • ui: Restore missing template x-if tag and fix Nextcloud URL label key (08853e8)

Features

  • ui: Internationalize profile, subscription, integrations templates and user menu JS (5a02557)

v0.133.7 (2026-03-14)

Bug Fixes

  • mobile: Fix EAS build Node.js version incompatibility for iOS and Android (8717538)

v0.133.6 (2026-03-14)

Bug Fixes

  • database: Quote identifiers in index management queries to prevent SQL injection (120002b)

Code Style

  • Apply ruff auto-fix (0b064b9)

  • Use Annotated pattern in audit_logs.py to resolve Ruff B008 (f96fcbe)

Testing

  • Add error path tests for API token revocation (fdf5053)

  • Clarify caller cleanup responsibility in _make_unauthenticated_client docstring (751b16d)

  • Exercise real auth path in test_revoke_token_unauthenticated (96ef7d4)

  • Strengthen test_revoke_token_database_error to verify rollback is called (9e9b1fb)

  • database: Add unit test for quoted identifier in filehash index drop (33eded0)

v0.133.5 (2026-03-14)

Bug Fixes

  • ui: Add 22 missing help page translation keys to en.json (48a9303)

v0.133.4 (2026-03-14)

Bug Fixes

  • i18n: Add noqa comment to intentionally broad exception in hydration helper (f41ecc9)

  • i18n: Persist language preference server-side, fix dropdown rendering and avatar 404 (1416d90)

Chores

  • i18n: Auto-update translations via LLM (d09227b)

Documentation

  • changelog: Update changelog [skip ci] (01739e8)

Unreleased

Chores

  • i18n: Auto-update translations via LLM (d09227b)

v0.133.3 (2026-03-14)

Bug Fixes

  • i18n: Add missing index page translation keys to en.json (1f24b1b)

v0.133.2 (2026-03-14)

Bug Fixes

  • ui: Add missing suggested_languages global to error templates (0592c59)

Code Style

v0.133.1 (2026-03-14)

Bug Fixes

  • test: Remove tests that check specific translation content (08fabe1)

Chores

  • i18n: Auto-update translations via LLM (0cb6017)

Documentation

  • changelog: Update changelog [skip ci] (971d450)

Unreleased

Chores

  • i18n: Auto-update translations via LLM (0cb6017)

v0.133.0 (2026-03-14)

Features

  • ui: Smart compact language selector with search and flags (3557590)

v0.132.1 (2026-03-14)

Bug Fixes

  • security: Prevent potential SQL injection in database migration (82b1f89)

Chores

  • i18n: Auto-update translations via LLM (8e86518)

  • i18n: Auto-update translations via LLM (9a480e3)

Documentation

  • changelog: Update changelog [skip ci] (4a46f37)

Testing

  • i18n: Remove translation content assertion from test_translate_with_kwargs_german (9b32cbc)

Unreleased

Chores

  • i18n: Auto-update translations via LLM (8e86518)

  • i18n: Auto-update translations via LLM (9a480e3)

v0.132.0 (2026-03-13)

Features

  • i18n: Update language support to 77 languages (59d8512)

v0.131.0 (2026-03-13)

Documentation

  • changelog: Update changelog [skip ci] (bd35cdd)

  • changelog: Update changelog [skip ci] (bb71f0a)

  • i18n: Add comment on Welsh subdivision flag Unicode representation (ce4e797)

Features

  • i18n: Expand supported languages from 31 to 49 with flags and locale formats (87d8562)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (bb71f0a)

Unreleased

v0.130.0 (2026-03-13)

Features

  • i18n: Add complete Catalan (ca) translation (217217d)

v0.129.0 (2026-03-13)

Bug Fixes

  • i18n: Use plain plural form for files.files_selected in fr.json (bb2c3ac)

Features

  • i18n: Add complete French translations to fr.json (5de7e01)

v0.128.0 (2026-03-13)

Features

  • i18n: Add missing Polish translations to pl.json (f737f29)

v0.127.0 (2026-03-13)

v0.126.0 (2026-03-13)

Documentation

  • changelog: Update changelog [skip ci] (fd4ea5c)

  • changelog: Update changelog [skip ci] (95af9ff)

  • changelog: Update changelog [skip ci] (ca88d7d)

  • routing: Add routing rules documentation to API.md and UserGuide.md (e95693d)

Features

  • routing: Add conditional routing rules for document-to-pipeline assignment (40d56f0)

Refactoring

  • routing: Address code review feedback - simplify list filter, fix docs example (1e5e35a)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (95af9ff)

  • changelog: Update changelog [skip ci] (ca88d7d)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (ca88d7d)

Unreleased

v0.125.1 (2026-03-12)

Bug Fixes

  • i18n: Sync de.json keys with en.json — add 26 missing keys to en.json and all language files (d3349e6)

v0.125.0 (2026-03-12)

Bug Fixes

  • profile: Address code review feedback - early size check, CSRF helper, test constants (9583d6d)

  • tests: Pass mock db to whoami_handler in test_api_auth_enabled.py (270e1a5)

Features

  • profile: Add user self-service profile settings page and API (b0d6f1a)

v0.124.0 (2026-03-12)

Bug Fixes

  • i18n: Register _ in all Jinja2 template instances, sync translation files, fix pipelines.html (b483ed1)

v0.123.1 (2026-03-12)

Bug Fixes

  • tests: Fix two failing tests - missing DB table and MagicMock IP address (be6b49c)

Code Style

  • Fix ruff formatting in tests/test_imap_profiles.py (8060a79)

v0.123.0 (2026-03-12)

Bug Fixes

  • imap: Address code review feedback on ingestion profiles (2e08773)

Features

  • imap: Add attachment type filter for IMAP ingestion (554bb21)

  • imap: Add ImapIngestionProfile model, API, migration and UI (c9f5544)

v0.122.0 (2026-03-12)

Documentation

  • storage: Document explicit enable/disable flags in ConfigurationGuide and .env.demo (fd75961)

Features

  • storage: Add explicit enable/disable flag for each global storage destination (b72ab3b)

v0.121.1 (2026-03-12)

Bug Fixes

  • Remove duplicate Audit Logs nav entry and add login/logout audit log events (1e8f433)

Documentation

  • changelog: Update changelog [skip ci] (50ef607)

Testing

  • notifications: Improve coverage for user_notification.py to 100% (78204c2)

Unreleased

Testing

  • notifications: Improve coverage for user_notification.py to 100% (78204c2)

v0.121.0 (2026-03-12)

Bug Fixes

  • auth: Address code review feedback - sanitize error messages, remove unused import (5d716ad)

Documentation

  • changelog: Update changelog [skip ci] (04cde33)

Features

  • auth: Add social login support for Google, Microsoft, Apple, and Dropbox (ac6e052)

Testing

  • Improve coverage for app/utils/audit_service.py from 59% to 100% (7438551)

  • auth: Add tests for social login and fix existing config validator tests (9c26d41)

Unreleased

Testing

  • Improve coverage for app/utils/audit_service.py from 59% to 100% (7438551)

v0.120.0 (2026-03-12)

Bug Fixes

  • Remove accidental pip artifact file and update docs for iCloud Drive (ca84a11)

  • Remove accidental pip artifact file and update docs for iCloud Drive (528f0a6)

  • tests: Add iCloud mocks to all test files and address code review feedback (50af0ea)

Features

  • storage: Add Apple iCloud Drive storage provider (82d67c5)

  • storage: Add Apple iCloud Drive storage provider (30f06e0)

Testing

  • tasks: Add _should_upload_to_icloud mock to send_to_all tests (6e50c61)

  • tasks: Add _should_upload_to_icloud mock to send_to_all tests (9bc23aa)

v0.119.0 (2026-03-12)

v0.118.0 (2026-03-11)

Features

  • api: Add GraphQL endpoint at /graphql with Strawberry (a41ded5)

v0.117.1 (2026-03-11)

Bug Fixes

  • Resolve all 47 failing tests in main (df4c91a)

v0.117.0 (2026-03-11)

Continuous Integration

  • Opt into Node.js 24 for all GitHub Actions workflows (c306d80)

Documentation

  • changelog: Update changelog [skip ci] (ab19ae5)

  • changelog: Update changelog [skip ci] (c5b67fe)

  • changelog: Update changelog [skip ci] (eb22a58)

Unreleased

Continuous Integration

  • Opt into Node.js 24 for all GitHub Actions workflows (c306d80)

Documentation

  • changelog: Update changelog [skip ci] (c5b67fe)

  • changelog: Update changelog [skip ci] (eb22a58)

Unreleased

Continuous Integration

  • Opt into Node.js 24 for all GitHub Actions workflows (c306d80)

Documentation

  • changelog: Update changelog [skip ci] (eb22a58)

Unreleased

Continuous Integration

  • Opt into Node.js 24 for all GitHub Actions workflows (c306d80)

v0.116.0 (2026-03-11)

Documentation

  • changelog: Update changelog [skip ci] (d6fb787)

Testing

  • views: Add comprehensive coverage tests for 11 view modules (c8987d9)

  • views: Boost coverage for 11 view modules toward 100% (6fb1df1)

Unreleased

Testing

  • views: Add comprehensive coverage tests for 11 view modules (c8987d9)

  • views: Boost coverage for 11 view modules toward 100% (6fb1df1)

v0.115.0 (2026-03-10)

v0.114.1 (2026-03-10)

Bug Fixes

  • db: Add migration to create shared_links table for databases that skipped 025 (289dcc3)

v0.114.0 (2026-03-09)

Bug Fixes

  • 100% coverage, WCAG accessibility fixes, and documentation updates for per-user OAuth wizards (0529ae5)

  • templates: Remove orphan in google_drive.html causing HTML accessibility lint failure (256d9cb)

Features

  • integrations: Add per-user OAuth wizard with user-mode for Dropbox, OneDrive, Google Drive (c71f33a)

Testing

  • views: Add user-mode coverage tests and fix dashboard helper duplication (2d01e71)

v0.113.0 (2026-03-09)

Bug Fixes

  • Code standards audit — 100% coverage, Pydantic v2 model_config, asyncio.run(), targeted edge-case tests (ec77c51)

Features

  • tasks: Add 5 additional scheduled jobs (expire_shared_links, prune_processing_logs, prune_old_notifications, backfill_missing_metadata, sync_search_index) (5bc1fac)

  • tasks: Add scheduled batch processing infrastructure (model, migration, tasks, API, view, template) (c2d56d7)

v0.112.0 (2026-03-09)

Bug Fixes

  • Address code review feedback - fix type hint and rename test (4acad71)

  • imap: Normalize CRLF line endings to LF in imap_tasks.py (9a342af)

Documentation

  • integrations: Update UserGuide and ConfigurationGuide for new IMAP and Watch Folder features (8c62a6b)

Features

  • integrations: Add IMAP Gmail labels/delete and Watch Folder cloud source support (e7d1289)

Testing

  • Add tests for gmail_apply_labels=False and cloud source type dispatching (79fc11b)

  • integrations: Add tests for gmail_apply_labels and cloud watch folder dispatch (8c62a6b)

  • tasks: Add comprehensive tests for per-user cloud scan functions and gmail_apply_labels (1741ab1)

v0.111.1 (2026-03-09)

Bug Fixes

  • migrations: Resolve duplicate Alembic heads causing test failures (c374ba3)

v0.111.0 (2026-03-09)

Bug Fixes

  • tasks: Address code review - SMTP TLS cert validation, rclone input validation, consolidated test fixture (01a9511)

  • tasks: Register upload_to_user_integration in celery_worker and add handler tests (5fb11b9)

Features

  • tasks: Dynamic routing to user-specific destination integrations (89bf07d)

v0.110.1 (2026-03-08)

Bug Fixes

  • sentry: Initialize Sentry after DB settings are loaded in lifespan (5864a4e)

Code Style

v0.110.0 (2026-03-08)

Code Style

v0.109.0 (2026-03-08)

Bug Fixes

  • ocr: Address code review feedback on multi-language OCR (0b29199)

Features

  • ocr: Add multi-language OCR support with per-pipeline language override (a2a4c6f)

v0.108.0 (2026-03-08)

Chores

  • Remove accidentally committed =8.0.0 file (a92bf8e)

Features

  • cli: Add docuelevate CLI tool for power users (a3fd74f)

v0.107.0 (2026-03-08)

Documentation

  • Add per-user notification system documentation to ConfigurationGuide.md (ae07590)

Features

  • notifications: Add per-user notification system with inbox, email, and webhook targets (fcefd09)

  • notifications: Build per-user notification system (email, webhook, in-app) (d48e368)

v0.106.0 (2026-03-08)

Features

  • observability: Add Sentry error and performance monitoring integration (58af9e5)

v0.105.0 (2026-03-08)

Continuous Integration

  • Restore javascript-typescript CodeQL config alongside javascript (1fe6f86)

Documentation

  • changelog: Update changelog [skip ci] (289eb42)

Features

  • ci: Integrate Codecov for test coverage analysis and reporting (6d533aa)

Unreleased

Continuous Integration

  • Restore javascript-typescript CodeQL config alongside javascript (1fe6f86)

v0.104.0 (2026-03-08)

Bug Fixes

  • Correct token_prefix comment to match implementation (12 chars) (2f95feb)

  • security: Address CodeQL clear-text logging and weak hashing alerts (a7eff2c)

Code Style

Documentation

  • Add API tokens and webhook ingestion documentation (a982959)

Features

  • api: Add personal API tokens and enhance webhook integration UI (c3bb93c)

v0.103.0 (2026-03-08)

Bug Fixes

  • ui: Correct OAuth setup page links in integrations dashboard (ba387b8)

Documentation

  • config: Document per-user IMAP and watch folder integration polling (fc453be)

Features

  • auth: Make OAuth credentials user-specific via UserIntegration records (cfc52fd)

  • auth: Save OAuth credentials per-user to UserIntegration records (73119e0)

  • tasks: Refactor IMAP and watch folder polling to support multi-tenant user attribution (019807d)

Testing

  • tasks: Add comprehensive tests for multi-tenant polling functions (4f9f458)

v0.102.0 (2026-03-08)

Features

  • support: Auto-fill Zammad chat and ticket widgets with user context (209e82f)

Testing

  • support: Improve Zammad user context tests with meaningful assertions (8098856)

v0.101.0 (2026-03-08)

Features

  • ui: Add unified Sources & Destinations integrations dashboard (2c652dc)

  • ui: Replace Email Ingestion nav with unified Integrations link (0edb941)

Refactoring

  • ui: Address code review - optimize queries, extract helpers, improve error handling (e27bace)

v0.100.0 (2026-03-08)

Bug Fixes

  • Update docs endpoint test and add Zammad settings metadata (351d6f3)

  • security: Add SRI to jQuery CDN, escape chat ID, use server-side hostname (883f123)

Features

  • help: Restructure /help as user-facing Help Center with Zammad integration (af3eed4)

v0.99.0 (2026-03-08)

Bug Fixes

  • billing: Address code review - remove duplicate mode logic, accessibility improvements, robust test assertions (002cdf3)

  • billing: Cast plan.name to str to fix mypy typeddict-item error (9627667)

Features

  • billing: Expose Stripe price IDs in plan API, add Stripe Setup Wizard and sync endpoints (223539b)

v0.98.0 (2026-03-08)

Bug Fixes

  • integrations: Sanitize error messages and add SSRF protection for WebDAV test (c4b4643)

Documentation

  • api: Add integrations quota enforcement and test endpoint documentation (71350f2)

Features

  • integrations: Add quota enforcement, connection test, and quota endpoint (35abdb0)

v0.97.0 (2026-03-08)

Features

  • status: Restrict status page to admin-only and move to admin menu (feea051)

v0.96.0 (2026-03-08)

Bug Fixes

  • ui: Move IMAP modals inside Alpine.js x-data scope so create/edit/delete buttons work (8aa8a93)

Features

  • models: Add UserIntegration model, encrypt IMAP passwords, add integrations API (743627e)

v0.95.0 (2026-03-08)

Bug Fixes

  • auth: Cache request body in CSRF middleware to prevent login failures (087f3c1)

  • imap: Address code review feedback - named constants, error context in JS, security docs (73727dc)

Features

  • imap: Add per-user IMAP ingestion accounts with quota enforcement (43bcfe5)

v0.94.0 (2026-03-08)

Documentation

  • changelog: Update changelog [skip ci] (e68bf13)

  • changelog: Update changelog [skip ci] (195febf)

  • changelog: Update changelog [skip ci] (cc6acc1)

Features

  • auth: Add comprehensive debug logging for local login failures (c5b330c)

Testing

  • Increase backup_tasks.py coverage to 99.79% (9a95d5c)

  • Increase watch_folder_tasks coverage from 37% to 98% (3ac5a97)

  • backup: Add comprehensive unit tests for app/views/backup.py (19b4ea4)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (195febf)

  • changelog: Update changelog [skip ci] (cc6acc1)

Testing

  • Increase backup_tasks.py coverage to 99.79% (9a95d5c)

  • Increase watch_folder_tasks coverage from 37% to 98% (3ac5a97)

  • backup: Add comprehensive unit tests for app/views/backup.py (19b4ea4)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (cc6acc1)

Testing

  • Increase backup_tasks.py coverage to 99.79% (9a95d5c)

  • backup: Add comprehensive unit tests for app/views/backup.py (19b4ea4)

Unreleased

Testing

  • Increase backup_tasks.py coverage to 99.79% (9a95d5c)

v0.93.1 (2026-03-08)

Bug Fixes

  • auth: Activate account on password reset and fix is_active check order (86f9f5f)

Documentation

  • changelog: Update changelog [skip ci] (be0a092)

  • changelog: Update changelog [skip ci] (5a11f14)

  • changelog: Update changelog [skip ci] (53f7ab3)

  • changelog: Update changelog [skip ci] (754ea99)

  • changelog: Update changelog [skip ci] (8db0093)

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/tasks/subscription_tasks.py to 100% (a580527)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

  • Increase coverage for app/views/subscriptions.py to 100% (e96ddc7)

  • Increase url_upload.py test coverage to 100% (afe4227)

  • subscriptions: Add comprehensive API tests reaching 100% coverage (cd19ac6)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (5a11f14)

  • changelog: Update changelog [skip ci] (53f7ab3)

  • changelog: Update changelog [skip ci] (754ea99)

  • changelog: Update changelog [skip ci] (8db0093)

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/tasks/subscription_tasks.py to 100% (a580527)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

  • Increase coverage for app/views/subscriptions.py to 100% (e96ddc7)

  • Increase url_upload.py test coverage to 100% (afe4227)

  • subscriptions: Add comprehensive API tests reaching 100% coverage (cd19ac6)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (53f7ab3)

  • changelog: Update changelog [skip ci] (754ea99)

  • changelog: Update changelog [skip ci] (8db0093)

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

  • Increase coverage for app/views/subscriptions.py to 100% (e96ddc7)

  • Increase url_upload.py test coverage to 100% (afe4227)

  • subscriptions: Add comprehensive API tests reaching 100% coverage (cd19ac6)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (754ea99)

  • changelog: Update changelog [skip ci] (8db0093)

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

  • Increase url_upload.py test coverage to 100% (afe4227)

  • subscriptions: Add comprehensive API tests reaching 100% coverage (cd19ac6)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (8db0093)

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

  • Increase url_upload.py test coverage to 100% (afe4227)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (2be09ef)

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

Unreleased

Testing

  • Increase app/api/google_drive.py coverage to 100% (14c9432)

  • Increase coverage for app/views/pipelines.py to 100% (344d20e)

v0.93.0 (2026-03-08)

Features

  • tests: Increase test coverage for app/views/onboarding.py to 100% (ade7c9a)

Testing

  • local_auth: Increase coverage for app/utils/local_auth.py to 100% (25c31a6)

v0.92.1 (2026-03-08)

v0.92.0 (2026-03-08)

Bug Fixes

  • admin-users: Restore missing @router.get decorator on get_user endpoint (9b8eb91)

Chores

  • Update plan to include forgot-username and login label clarification (44ea43f)

Continuous Integration

  • Fix CodeQL javascript language identifier mismatch (3f8a95d)

Documentation

  • changelog: Update changelog [skip ci] (f2d2aaa)

Features

  • auth: Password reset, forgot username, and admin user management for local accounts (d36ba88)

v0.91.0 (2026-03-08)

Features

  • backup: Extend backup and restore to PostgreSQL and MySQL/MariaDB (a0f5ba1)

v0.90.3 (2026-03-08)

Bug Fixes

  • email: Create missing email template and decouple email destination settings (58c9b5d)

v0.90.2 (2026-03-08)

Bug Fixes

  • tasks: Remove erroneous in_progress log that regressed finalize_document_storage status when PDF/A archival is enabled (ff1310c)

v0.90.1 (2026-03-08)

Bug Fixes

  • auth: Return 401 for API paths in require_login to prevent wrong post-login redirect (3aa5364)

v0.90.0 (2026-03-08)

Features

  • watch-folders: Add cloud provider watch folders (Dropbox, Drive, OneDrive, Nextcloud, S3, WebDAV) (9a9efae)

  • watch-folders: Add local/FTP/SFTP watch folder ingest with settings, tasks, tests, docs (bdb67de)

v0.89.1 (2026-03-08)

Bug Fixes

  • ui: Replace Tailwind v3-only peer toggles with Alpine.js-driven toggles in admin users modal (56f346a)

v0.89.0 (2026-03-08)

Bug Fixes

  • backup: Address code review feedback - accessibility, CSRF, docs, imports (1877fc0)

Features

  • backup: Add database backup/restore with scheduled retention and admin dashboard (2dd1ca0)

v0.88.2 (2026-03-08)

Bug Fixes

  • auth: Prevent None==None admin credential bypass creating phantom admin user (b95f552)

v0.88.1 (2026-03-08)

Bug Fixes

  • ui: Make pricing page CTAs link to /signup when local signup is enabled (db5f3d5)

v0.88.0 (2026-03-07)

Bug Fixes

  • subscriptions: Address code review feedback (72f96e3)

Features

  • notifications: Admin push notifications and webhooks for user signup, plan changes, and payment issues (fdc48c7)

  • subscriptions: Add subscription change management with upgrade/downgrade scheduling (231f983)

v0.87.0 (2026-03-07)

Bug Fixes

  • docs: Improve security and accessibility in help section (fe8e1c4)

  • ui: Move Help nav link outside auth conditional so it shows for all visitors (6390584)

Features

  • docs: Add built-in help section with How-To guides embedded in app (46b2f17)

v0.86.0 (2026-03-07)

Bug Fixes

  • ui: Address code review feedback on complimentary badge and aria attributes (064ba72)

Features

  • auth: Auto-create admin user profiles with highest tier and complimentary flag (97f85ce)

v0.85.0 (2026-03-07)

Bug Fixes

  • auth: Restore get_user function body lost in refactor; fix button period placement (19c1ccb)

  • ui: Update plan descriptions to reflect per-user pricing (9d11d74)

Features

  • auth: Enable local user signup without SMTP, add admin user creation (aa6e2fe)

v0.84.0 (2026-03-07)

Features

  • ui: Show marketing landing page for unauthenticated multi-user visitors (68e8af9)

v0.83.0 (2026-03-07)

Bug Fixes

  • tests: Correct OCR subtask retry test to patch process_with_ocr instead of azure module (c485d44)

Code Style

Features

  • ui: Redesign navigation for multi-user SaaS UX with pre/post-login visibility (dc1ee0e)

v0.82.0 (2026-03-07)

Bug Fixes

  • Address code review feedback (6a96705)

  • Gate LocalUser machinery on multi_user_enabled for single-user backward compat (b5b285e)

  • Pricing page toggle and user auto-creation on OAuth login (dd207ee)

  • Resolve merge conflict with main, fix test failures (b1ce28f)

  • auth: Add WCAG 2.5.8 min-height to signup form inputs (43f3f6b)

  • tests: Set multi_user_enabled=False in auth module tests that call auth() directly (6f197e6)

Documentation

  • changelog: Update changelog [skip ci] (2317595)

  • changelog: Update changelog [skip ci] (fa78a71)

Features

  • Add multi-step user onboarding wizard (e0de0fd)

  • auth: Add local user signup, email verification, and Stripe billing (52e3852)

  • onboarding: Add multi-step user onboarding wizard (99df081)

Testing

  • Improve coverage for app/api/plans.py from 38% to 100% (ac10ada)

  • views: Add 100% coverage tests for app/views/admin_users.py (7cebb82)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (fa78a71)

Testing

  • Improve coverage for app/api/plans.py from 38% to 100% (ac10ada)

  • views: Add 100% coverage tests for app/views/admin_users.py (7cebb82)

Unreleased

Testing

  • views: Add 100% coverage tests for app/views/admin_users.py (7cebb82)

v0.81.0 (2026-03-07)

Bug Fixes

  • pipelines: Seed standard processing pipeline as system default on startup (d318110)

Features

  • files: Show assigned pipeline info on file status and detail views (a644efe)

  • pipelines: Add custom processing pipeline engine (89e0c2f)

Refactoring

  • pipelines: Address code review - shared get_current_user_id, aria-live, deduplicate user ID logic (1203a4b)

v0.80.0 (2026-03-07)

Bug Fixes

  • Add subscription_overage_percent to SETTING_METADATA and docs (9853a27)

  • Resolve mypy and djlint CI failures (ab532b5)

  • api: Move quota check before file write in ui-upload endpoint (45949f3)

  • subscriptions: Address code review feedback (7f521eb)

Chores

  • Plan dynamic plan designer feature (d439d9a)

  • Plan pricing/limits overhaul with cost analysis (5351d82)

Continuous Integration

  • Merge quick and integration tests into a single test step (9670e84)

Documentation

  • changelog: Update changelog [skip ci] (4277e5e)

Features

  • subscriptions: Add SaaS subscription tiers, pricing page, and enforced upload quotas (179f612)

  • subscriptions: Database-backed plan designer with admin CRUD and overage buffer (ea7fffa)

Unreleased

Continuous Integration

  • Merge quick and integration tests into a single test step (9670e84)

v0.79.0 (2026-03-06)

Bug Fixes

  • ui: Apply code review feedback on admin_users template accessibility (a00e67b)

Documentation

  • changelog: Update changelog [skip ci] (17b0f37)

  • changelog: Update changelog [skip ci] (299ae98)

  • changelog: Update changelog [skip ci] (158b113)

Features

  • auth: Add admin user management dashboard (56f7f23)

Testing

  • Improve coverage for app/views/files.py from 59.67% to 99.35% (aab1c5f)

  • Improve coverage for extract_metadata_with_gpt to 100% (b901576)

  • Improve test coverage for app/utils/step_manager.py (ed404b4)

  • similarity: Improve test coverage for app/utils/similarity.py to 100% (7acac42)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (299ae98)

  • changelog: Update changelog [skip ci] (158b113)

Testing

  • Improve coverage for app/views/files.py from 59.67% to 99.35% (aab1c5f)

  • Improve coverage for extract_metadata_with_gpt to 100% (b901576)

  • Improve test coverage for app/utils/step_manager.py (ed404b4)

  • similarity: Improve test coverage for app/utils/similarity.py to 100% (7acac42)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (158b113)

Testing

  • Improve coverage for app/views/files.py from 59.67% to 99.35% (aab1c5f)

  • Improve coverage for extract_metadata_with_gpt to 100% (b901576)

  • Improve test coverage for app/utils/step_manager.py (ed404b4)

  • similarity: Improve test coverage for app/utils/similarity.py to 100% (7acac42)

Unreleased

Testing

  • Improve coverage for extract_metadata_with_gpt to 100% (b901576)

v0.78.1 (2026-03-06)

Bug Fixes

  • views: Resolve mypy TemplateResponse typing and owner fallback (575b4e0)

v0.78.0 (2026-03-06)

Bug Fixes

  • Address code review feedback (507c333)

  • Address code review — use modern type hints and Callable annotation (c8bc4af)

  • tests: Add missing mock settings attrs in test_original_filename_preservation (f4b793e)

Chores

  • Plan general autocomplete widget for settings (3fd2bb3)

Code Style

Documentation

  • database: Add wizard and migration tool documentation (cb3bf80)

  • database: Update configuration guides with wizard cross-references, clean up review feedback (7dae15f)

Features

  • database: Add database configuration wizard and migration tool (f6fcaae)

  • database: Integrate wizard into settings page, improve accessibility and test coverage (174e489)

  • multi-user: Add multi-user feature flag, owner_id model field, and user-scoped queries (71f437e)

  • multi-user: Add unclaimed doc visibility, claim/assign-owner endpoints, default_owner_id (5722252)

  • settings: Add dynamic autocomplete for AWS/Azure regions, OCR langs, and embedding models (62d7ad7)

  • ui: Add user autocomplete widget for default_owner_id, user search API, and documentation (3601e2c)

Refactoring

  • multi-user: Address code review - module imports, explicit false(), string length (a8d44b1)

Testing

  • multi-user: Add comprehensive tests for multi-user isolation and feature flag (d7b7f14)

v0.77.2 (2026-03-02)

Bug Fixes

  • upload: Fix upload progress counter showing done count always as 0 (3be1fa5)

v0.77.1 (2026-03-02)

Bug Fixes

  • tasks: Register missing Celery tasks in celery_worker.py (14adbee)

v0.77.0 (2026-03-02)

Bug Fixes

  • ui: Address code review feedback for settings page (b8bd049)

Features

  • ui: Redesign settings page with modern UX improvements (6ff1da2)

v0.76.0 (2026-03-02)

Documentation

  • settings: Update SettingsManagement.md with new categories and setting types (3080e37)

Features

  • settings: Add all missing config settings to settings page with enhanced UX (a259262)

v0.75.0 (2026-03-02)

Code Style

v0.74.0 (2026-03-02)

Bug Fixes

  • similarity: Address code review - column-only queries, configurable batch size, WCAG touch targets (55543be)

  • similarity: Truncate text to fit embedding model context window, fix step tracking (8e955f3)

Features

  • similarity: Add embedding pipeline, debug endpoints, backfill task, and scalable similarity search (8d7c8e7)

  • similarity: Add similarity pairs dashboard, step tracking, and fix tests for pre-computed embeddings (c724b8d)

v0.73.0 (2026-03-02)

Features

  • duplicates: Add duplicate document detection and management (ebea83a)

v0.72.1 (2026-03-02)

Bug Fixes

  • database: Skip create_all for Alembic-tracked databases to prevent OperationalError on webhook_configs (b87dd60)

v0.72.0 (2026-03-02)

Bug Fixes

  • migrations: Resolve multiple Alembic heads causing CI test crash (f7cf7e2)

Continuous Integration

  • Optimize pipeline for fail-fast feedback loop (ea0f7fb)

Documentation

  • changelog: Update changelog [skip ci] (744a433)

  • changelog: Update changelog [skip ci] (fe9f84a)

  • changelog: Update changelog [skip ci] (3d38813)

  • changelog: Update changelog [skip ci] (ed85797)

  • similarity: Add API documentation and fix template accessibility (b7c7817)

Features

  • similarity: Add document similarity detection with embeddings and cosine similarity (9748103)

Unreleased

Continuous Integration

  • Optimize pipeline for fail-fast feedback loop (ea0f7fb)

Documentation

  • changelog: Update changelog [skip ci] (fe9f84a)

  • changelog: Update changelog [skip ci] (3d38813)

  • changelog: Update changelog [skip ci] (ed85797)

Unreleased

Continuous Integration

  • Optimize pipeline for fail-fast feedback loop (ea0f7fb)

Documentation

  • changelog: Update changelog [skip ci] (3d38813)

  • changelog: Update changelog [skip ci] (ed85797)

Unreleased

Continuous Integration

  • Optimize pipeline for fail-fast feedback loop (ea0f7fb)

Documentation

  • changelog: Update changelog [skip ci] (ed85797)

Unreleased

v0.71.0 (2026-03-01)

Documentation

  • webhooks: Add webhook API and configuration documentation (a953b72)

  • webhooks: Fix spelling - Behaviour to Behavior (a85992e)

Features

  • webhooks: Add webhook support for external integrations (e609141)

v0.70.0 (2026-03-01)

Features

  • release: Add named release anchors with codenames and roadmap integration (d18c109)

Refactoring

  • test: Simplify test patches per code review feedback (61d7639)

v0.69.0 (2026-03-01)

Documentation

  • changelog: Update changelog [skip ci] (32ea0c8)

  • changelog: Update changelog [skip ci] (1775c4e)

Features

  • api: Add GET /api/diagnostic/health endpoint for monitoring (85da309)

  • tasks: Add retry logic with exponential backoff and jitter (5ff7b72)

Testing

  • Increase code coverage for app/views/wizard.py to 100% (bf337a1)

  • status: Increase code coverage for app/views/status.py to 100% (1095b41)

Unreleased

Documentation

  • changelog: Update changelog [skip ci] (1775c4e)

Testing

  • Increase code coverage for app/views/wizard.py to 100% (bf337a1)

  • status: Increase code coverage for app/views/status.py to 100% (1095b41)

Unreleased

v0.68.0 (2026-03-01)

Features

  • api: Implement proper pagination for file list API (af34ce8)

v0.67.3 (2026-03-01)

Bug Fixes

  • docker: Copy migrations directory and alembic.ini into Docker image (3d71d2b)

v0.67.2 (2026-03-01)

Bug Fixes

  • Address code review feedback - use specific exceptions, dynamic revision IDs in tests (8d81ed6)

  • ci: Add pytest-timeout, fix hanging test, split CI into quick + integration stages (6c643e9)

  • ci: Increase quick test job timeout to 15 minutes for CI runner headroom (6a21adc)

Documentation

  • Update CI workflow and integration test documentation for two-stage pipeline (c100250)

Refactoring

  • database: Enforce Alembic-only database migrations, deprecate manual schema migrations (87d1b9d)

v0.67.1 (2026-03-01)

Bug Fixes

  • Add type: ignore for redis.scan() mypy false positive in cache.py (d45d0a4)

  • db: Check column existence before creating performance indexes (febdf41)

Code Style

  • Fix spelling (British to American English) (ce87b53)

Documentation

  • Add Performance & Caching section to ConfigurationGuide (d5a95e9)

Performance Improvements

  • db: Add indexes on query-hot columns and Redis caching layer (b79ba81)

v0.67.0 (2026-03-01)

Features

  • imap: Add IMAP_READONLY_MODE feature flag to safeguard shared mailboxes (f8c5dd5)

v0.66.0 (2026-03-01)

Code Style

  • search: Address code review - use const/let, fix date timezone, deduplicate filter keys (68857c1)

Documentation

  • Update API and User Guide with search filters and saved searches (de09dba)

Features

  • search: Add content-finding filters, saved searches, and text quality to Search view (5bf0a4c)

v0.65.0 (2026-03-01)

Features

  • Add bulk download, cloud OCR, and basic OCR quality filter (705b970)

  • Persist ocr_quality_score and use it for numeric filtering (83c3405)

v0.64.1 (2026-03-01)

Bug Fixes

  • Append new drops to upload queue instead of overwriting it (81c08ed)

v0.64.0 (2026-03-01)

Features

  • api: Default download endpoint to processed file version (7b5494b)

v0.63.0 (2026-03-01)

Bug Fixes

  • api: Address code review feedback - logging, wildcard escaping, UX (d5884f6)

  • db: Add saved_searches table to runtime schema migrations (82f7113)

Documentation

  • api: Document advanced filtering and saved searches endpoints (cc9fd1a)

Features

  • api: Add advanced filtering and saved searches (e5a4c6c)

v0.62.0 (2026-03-01)

Bug Fixes

  • Address code review feedback on tests and placeholder messages (d095e30)

  • ui: Preview modal falls back to original version when processed unavailable (c814af1)

Features

  • ui: Add pdf.js viewer, image zoom/pan, text preview, and preview modal (372e8cd)

Testing

  • preview: Add 23 tests for document preview features (7a8ccba)

v0.61.0 (2026-02-28)

Continuous Integration

  • a11y: Add djlint HTML accessibility lint to CI pipeline (1968a0e)

Documentation

  • a11y: Add comprehensive AccessibilityGuide.md (1f48503)

Features

  • ui: Add accessibility foundations to base.html and styles.css (364ff93)

  • ui: Add ARIA attributes for accessibility improvements (0969436)

  • ui: Fix accessibility in upload, search, files, and login templates (bf6bbe3)

v0.60.4 (2026-02-28)

Bug Fixes

  • api: Use processed_file_path from DB in upload retry path resolution (bb98afa)

Testing

  • Improve upload retry tests with legacy path assertions and priority verification (2f442b0)

v0.60.3 (2026-02-28)

Bug Fixes

  • Address code review feedback - restrict terminal step check to success only, add test assertions (4fdb1b8)

  • tasks: Resolve files stuck in Pending status despite completed processing (2c55f07)

v0.60.2 (2026-02-27)

Bug Fixes

  • upload: Fix multi-file drag-and-drop only uploading one file (dc9aec2)

v0.60.1 (2026-02-27)

Bug Fixes

  • status: Prevent false Completed status when mandatory pipeline steps have not run (e6dd39c)

  • status: Simplify terminal step guard condition in get_step_summary (baa412b)

Testing

  • Add send_to_all_destinations step to test_status_filter_completed (aba47af)

  • Update 3 tests broken by terminal-step completed guard (9795ca0)

v0.60.0 (2026-02-27)

Features

  • queue: Add queue monitoring dashboard and pending banner on files page (c7c5718)

Refactoring

  • queue: Address code review feedback — extract constants and sync refresh interval (4dd018f)

v0.59.1 (2026-02-27)

Bug Fixes

  • api: Use stored file paths for preview and download endpoints (cded734)

v0.59.0 (2026-02-26)

Bug Fixes

  • test: Update drop overlay text assertion to match new directory-upload message (4a251fd)

Features

  • upload: Adaptive 429 backoff, full Gotenberg file types, directory traversal (a05690b)

  • upload: Add directory traversal, queue throttling, and upload config settings (35d2ed0)

v0.58.0 (2026-02-26)

Bug Fixes

  • search: Correct file detail page URL in search results (da865b5)

Features

  • views: Add document-centric view at /files/{id} (c540dd4)

v0.57.4 (2026-02-26)

Bug Fixes

  • tests: Fix OAuth integration tests failing due to Docker registry timeout (36b6680)

  • tests: Fix test_save_settings_outer_exception in OneDrive coverage tests (b4e93c0)

  • tests: Fix TestGetFullConfigException using PropertyMock on module-level settings (44dcabd)

v0.57.3 (2026-02-26)

Bug Fixes

  • tests: Correct mock patch targets in google_drive coverage tests (096aedb)

  • tests: Use targeted settings mock instead of broad getattr patch (c6ac6b5)

Testing

  • coverage: Add celery_worker coverage and remove dead config_validator.py (ffa0e1e)

v0.57.2 (2026-02-26)

Bug Fixes

  • ui: Prevent search input from clearing on each keystroke and add dedicated /search page (09a6337)

  • ui: Sanitize Meilisearch HTML output, use event delegation, improve error messages (483a5b7)

Documentation

  • search: Update UserGuide with search page documentation and fix import order (e9dd3ef)

v0.57.1 (2026-02-26)

Bug Fixes

  • Regenerate logo PNGs from SVG to fix DocuNova → DocuElevate branding (d83dfb1)

Code Style

Documentation

  • changelog: Update changelog [skip ci] (d86dda9)

  • changelog: Update changelog [skip ci] (62e4521)

Testing

  • Improve coverage for process_with_ocr, api/settings, and settings_service to 90%+ (d9abbc1)

  • coverage: Add coverage tests for app/api/onedrive.py and app/api/google_drive.py (e3cd687)

  • coverage: Add tests to push coverage above 95% for 11 target files (759647f)

Unreleased

Code Style

Documentation

  • changelog: Update changelog [skip ci] (62e4521)

Testing

  • Improve coverage for process_with_ocr, api/settings, and settings_service to 90%+ (d9abbc1)

  • coverage: Add coverage tests for app/api/onedrive.py and app/api/google_drive.py (e3cd687)

  • coverage: Add tests to push coverage above 95% for 11 target files (759647f)

Unreleased

Testing

  • Improve coverage for process_with_ocr, api/settings, and settings_service to 90%+ (d9abbc1)

  • coverage: Add tests to push coverage above 95% for 11 target files (759647f)

v0.57.0 (2026-02-25)

Features

  • privacy: Implement GDPR and global privacy compliance (0821e2f)

v0.56.2 (2026-02-25)

Bug Fixes

  • database: Add runtime migrations for ocr_text, ai_metadata, document_title columns (db581ba)

Documentation

  • Add missing docs to mkdocs nav and README index (6e78e9e)

  • changelog: Update changelog [skip ci] (3dced5e)

Unreleased

Documentation

  • Add missing docs to mkdocs nav and README index (6e78e9e)

v0.56.1 (2026-02-25)

Bug Fixes

  • mypy: Add missing type annotations in meilisearch_client.py (07e7b49)

Documentation

  • Add Setup Wizard, Production Readiness, Database, K8s, and Licensing guides (139e23c)

v0.56.0 (2026-02-25)

Features

  • ui: Add dark mode support with system preference detection and localStorage persistence (c428a7e)

v0.55.0 (2026-02-25)

Bug Fixes

Code Style

Features

  • helm: Add Helm chart for Kubernetes deployment and update DeploymentGuide (a08bfb9)

v0.54.0 (2026-02-25)

Features

  • ocr: Fine-tune OCR quality criteria with stricter threshold and head-to-head comparison (89d5df7)

v0.53.1 (2026-02-25)

Bug Fixes

  • ocr: Sync workflow steps with process_with_ocr replacing legacy azure step (37a3f7a)

Testing

  • Fix test_retry_azure_ocr_success to patch process_with_ocr instead of legacy azure task (44c9f6d)

v0.53.0 (2026-02-24)

Bug Fixes

  • ocr: Address code review: add model fallback default, remove unused variable (0c500e1)

Documentation

  • changelog: Update changelog [skip ci] (b5fb7da)

Features

  • ocr: Add AI-based embedded text quality check with automatic OCR fallback (b03bfb5)

Testing

  • Achieve 90%+ code coverage across codebase (02ad558)

Unreleased

Testing

  • Achieve 90%+ code coverage across codebase (02ad558)

v0.52.2 (2026-02-24)

Bug Fixes

  • ocr: Ensure Tesseract language data for embed_text_layer regardless of active OCR provider (2b2a97c)

v0.52.1 (2026-02-24)

Bug Fixes

  • ui: Resolve merge conflict markers in settings.html and add CI guard (66a4570)

v0.52.0 (2026-02-24)

Features

  • ocr: Auto-install Tesseract/EasyOCR languages from settings (8a2a4dc)

v0.51.0 (2026-02-24)

Bug Fixes

  • ocr: Address code review - add subprocess security comment and type hints in tests (50573ec)

Features

  • ocr: Embed searchable text layer for providers without native PDF output (fec0326)

v0.50.1 (2026-02-24)

Bug Fixes

  • ocr: Rewrite MistralOCRProvider to use native Mistral OCR API (c742383)

v0.50.0 (2026-02-24)

Code Style

  • tests: Rename _SESSION_SECRET to TEST_SESSION_SECRET; tighten non-admin redirect assertions to == 302 (1f080a8)

Features

  • tests: Increase code coverage from 89.28% to 92.15% (a1b9ac1)

v0.49.0 (2026-02-24)

Code Style

Features

  • api: Remove redundant /env and /api/diagnostic/settings endpoints (f9d849f)

v0.48.0 (2026-02-23)

Bug Fixes

  • tests: Update process_document test patches to use process_with_ocr (8828b71)

  • tests: Update process_with_azure patch target in test_storage_reorganization (7fdd8a4)

v0.47.0 (2026-02-23)

Documentation

  • changelog: Update changelog [skip ci] (d70fffd)

  • copilot: Checkpoint before comprehensive instructions overhaul (dbea61d)

  • copilot: Overhaul instructions — Ruff toolchain, 100% coverage, agent workflow, modern Python (156e0ba)

Features

  • ai: Handle temperature incompatibility for gpt-5 and o-series models, add model picker UI (a94b52e)

Unreleased

Documentation

  • copilot: Checkpoint before comprehensive instructions overhaul (dbea61d)

  • copilot: Overhaul instructions — Ruff toolchain, 100% coverage, agent workflow, modern Python (156e0ba)

v0.46.0 (2026-02-23)

Bug Fixes

  • api: Swap parameter order in test_ai_extraction to fix 500 error (ce4700a)

Features

  • ui: Add copy button to text modals in file detail view (219e03e)

v0.45.0 (2026-02-23)

Chores

  • Add example.com and smtp.example.com to copilot agent network allowlist (d93cd96)

Documentation

  • changelog: Update changelog [skip ci] (d5e4a74)

Features

  • api: Add POST /api/ai/test-extraction endpoint and Test Extraction UI button (ce73f23)

Testing

  • api: Add comprehensive tests for AI extraction endpoint reaching 100% coverage (3262d65)

Unreleased

Chores

  • Add example.com and smtp.example.com to copilot agent network allowlist (d93cd96)

v0.44.0 (2026-02-23)

Code Style

Features

  • Add AI provider abstraction layer with OpenAI, Azure, Anthropic, Gemini, Ollama, OpenRouter, LiteLLM support (d4c7fb2)

  • Add Portkey provider support and null-content guard to AI abstraction layer (dcdef44)

  • Update all OpenAI/ChatGPT refs + settings dropdown for fixed-value fields (044da0f)

v0.43.0 (2026-02-23)

Features

  • ui: Implement responsive mobile interface (d08e175)

v0.42.2 (2026-02-23)

Bug Fixes

  • api: Pass base_url to OpenAI client in test endpoint to prevent UnsupportedProtocol error (d885b63)

v0.42.1 (2026-02-23)

Bug Fixes

  • Fix automatic changelog creation with PSR v10 (7f3e831)

0.40.0 - 2026-02-23

Retroactive summary. Releases v0.6.0 through v0.40.0 were cut automatically by python-semantic-release from conventional commits, but the CHANGELOG was not updated at the time due to a configuration bug (autoescape = true). This section documents all known changes made after v0.5.0.

Added

Security Middleware Stack

  • CSRF Protection (app/middleware/csrf.py): Per-session cryptographic tokens validated on all state-changing requests (POST/PUT/DELETE/PATCH). Token delivered via X-CSRF-Token header or csrf_token form field. No-op when AUTH_ENABLED=False.
  • Rate Limiting (app/middleware/rate_limit.py): SlowAPI + Redis-backed rate limiting. Configurable defaults: 100 req/min (API), 600 req/min (uploads), 10 req/min (auth). Falls back to in-memory for development.
  • Rate Limit Decorators (app/middleware/rate_limit_decorators.py): Convenience @limit("N/period") decorators for per-endpoint overrides.
  • Security Headers (app/middleware/security_headers.py): Configurable HSTS, CSP, X-Frame-Options, and X-Content-Type-Options headers. Each header individually togglable for reverse-proxy deployments.
  • Audit Logging (app/middleware/audit_log.py): Per-request structured log entries with sensitive-value masking. Elevated [SECURITY] log level for 401/403/login/5xx events.
  • Request Size Limiting (app/middleware/request_size_limit.py): Separate limits for JSON/form bodies (MAX_REQUEST_BODY_SIZE, default 1 MB) and file upload multipart bodies (MAX_UPLOAD_SIZE, default 1 GB). Returns HTTP 413 immediately without reading the full body.
  • CORS (main.py): Configurable CORS policy via CORS_ENABLED, CORS_ALLOWED_ORIGINS, CORS_ALLOW_CREDENTIALS, CORS_ALLOWED_METHODS, and CORS_ALLOWED_HEADERS.

New Storage Providers

  • Amazon S3 (app/tasks/upload_to_s3.py): Upload to S3-compatible buckets. Configured via AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, and S3_BUCKET_NAME.
  • SFTP (app/tasks/upload_to_sftp.py): Secure file transfer with password or private-key authentication. Supports SFTP_DISABLE_HOST_KEY_VERIFICATION flag.
  • FTP/FTPS (app/tasks/upload_to_ftp.py): FTP with automatic FTPS upgrade attempt; plaintext fallback configurable via FTP_ALLOW_PLAINTEXT.
  • WebDAV (app/tasks/upload_to_webdav.py): HTTP Basic auth, configurable SSL verification (WEBDAV_VERIFY_SSL).
  • Email/SMTP (app/tasks/upload_to_email.py): Send processed documents as email attachments. Supports TLS, configurable sender, and default recipient.
  • rclone (app/tasks/upload_with_rclone.py): Delegate uploads to a locally configured rclone binary, enabling support for any of rclone's 40+ cloud providers.

File Processing Improvements

  • PDF Page Rotation (app/tasks/rotate_pdf_pages.py): Detects and corrects skewed pages using Azure Document Intelligence angle metadata.
  • Metadata Embedding (app/tasks/embed_metadata_into_pdf.py): Writes GPT-extracted metadata as PDF document properties using pypdf.
  • PDF Splitting (app/utils/file_splitting.py): Splits oversized PDFs at page boundaries into chunks ≤ MAX_SINGLE_FILE_SIZE bytes. Each chunk is a valid, readable PDF.
  • Document Deduplication: SHA-256 hash-based duplicate detection. Controlled by ENABLE_DEDUPLICATION and SHOW_DEDUPLICATION_STEP settings.
  • Forced Cloud OCR: force_cloud_ocr flag on process_document task to bypass local text extraction and always use Azure Document Intelligence. Useful for reprocessing.
  • pypdf migration: Replaced PyPDF2 with pypdf (actively maintained fork); fixes CVE-2023-36464.

Processing Status Tracking (Dual-Table Architecture)

  • FileProcessingStep model: New DB table; single row per (file, step) pair tracking current state (pending, in_progress, success, failure, skipped). Replaces log-scanning for status queries.
  • Step Manager (app/utils/step_manager.py): Initialises, updates, and queries processing steps. Supports ENABLE_DEDUPLICATION conditional step inclusion.
  • Step Timeout Detection (app/utils/step_timeout.py): Marks steps stuck in in_progress as failure after configurable STEP_TIMEOUT seconds (default 600).
  • Stalled Step Monitor (app/tasks/monitor_stalled_steps.py): Periodic Celery task (runs every minute) that calls the timeout detection logic.
  • Log Migration Utility (app/utils/migrate_logs_to_steps.py): Back-fills FileProcessingStep from existing ProcessingLog entries for files processed before the new table existed.

New API Endpoints

  • POST /api/upload-from-url (app/api/url_upload.py): Upload a document from a remote URL. Includes SSRF protection (blocks private IPs and loopback addresses).
  • GET /api/logs (app/api/logs.py): Paginated, filterable list of ProcessingLog entries; filterable by file_id and task_name.
  • GET /api/diagnostic/settings (app/api/diagnostic.py): Admin-only endpoint that dumps non-sensitive configuration to logs and returns summary info.
  • GET /api/whoami (app/api/user.py): Returns session user info including a Gravatar URL derived from the authenticated user's email.

Notification System

  • Apprise integration (app/utils/notification.py): Multi-channel notifications via the Apprise library (70+ services: Slack, email, Telegram, PushOver, etc.). Configured via NOTIFICATION_URLS.
  • Configurable triggers: NOTIFY_ON_TASK_FAILURE, NOTIFY_ON_CREDENTIAL_FAILURE, NOTIFY_ON_STARTUP, NOTIFY_ON_SHUTDOWN, NOTIFY_ON_FILE_PROCESSED.
  • Uptime Kuma integration (app/tasks/uptime_kuma_tasks.py): Periodic heartbeat ping to a configured Uptime Kuma push URL (UPTIME_KUMA_URL, UPTIME_KUMA_PING_INTERVAL).

Admin & Operations

  • Admin File Manager (app/views/filemanager.py): Three-pane admin view at /filemanager:
    • Filesystem view: Browse workdir tree with DB cross-reference per file.
    • Database view: List all FileRecord rows with on-disk existence flag.
    • Reconcile view: Delta view showing orphan disk files and ghost DB records.
  • Credential Checker Task (app/tasks/check_credentials.py): Periodic Celery task that validates all configured provider credentials (OpenAI, Azure, Dropbox, Google Drive, OneDrive) and sends a notification on failure.
  • Settings Audit Log (ApplicationSettings + SettingsAuditLog models): Every settings change is recorded with timestamp, user, and before/after values.
  • ProcessAll Throttling: Configurable PROCESSALL_THROTTLE_THRESHOLD and PROCESSALL_THROTTLE_DELAY to prevent flooding the task queue during bulk reprocessing.
  • Worker Settings Sync (app/utils/settings_sync.py): Publishes a version token to Redis whenever settings change; Celery workers reload settings from DB before each task, ensuring config changes propagate without a restart.

Browser Extension (v1.1.0)

  • Send files and web pages from the browser directly to DocuElevate with one click.
  • Context menu integration on links, images, and pages.
  • Manifest v3 compatible; works with Chrome, Firefox, Edge, and Chromium-based browsers.
  • In-browser notifications for upload status.

OpenAI Customization

  • OPENAI_BASE_URL setting (default https://api.openai.com/v1): Enables use of OpenAI-compatible endpoints (Azure OpenAI, local models, etc.).
  • OPENAI_MODEL setting (default gpt-4o-mini): Model selection without code changes.

Configuration & Developer Experience

  • Config Loader (app/utils/config_loader.py): Hot-reload of settings from DB without service restart.
  • Config Validator (app/utils/config_validator/): Modular validation with provider status, masked display, and per-provider readiness checks.
  • Input Validation (app/utils/input_validation.py): Centralised validators for sort fields, sort order, search query length, task ID format (UUID v4), and settings key format.
  • Filename Utilities (app/utils/filename_utils.py): sanitize_filename, get_unique_filename, and extract_remote_path helpers shared across upload tasks.
  • OAuth Helper (app/utils/oauth_helper.py): Shared token-exchange logic reused by Dropbox, Google Drive, and OneDrive OAuth flows.
  • Retry Configuration (app/tasks/retry_config.py): BaseTaskWithRetry base class with auto-retry (3 attempts, 10 s initial delay, exponential backoff) shared by all upload tasks.
  • HTTP Request Timeout: Configurable HTTP_REQUEST_TIMEOUT (default 120 s) to handle large file operations gracefully.
  • File Deletion Toggle: ALLOW_FILE_DELETE setting to prevent accidental deletions in production.

Changed

  • Docker image renamed from christianlouis/document-processor to christianlouis/docuelevate
  • app/routes/ deprecated; all endpoints migrated to app/api/ and app/views/
  • FileRecord status now derived from FileProcessingStep rows instead of scanning ProcessingLog
  • Settings changes now propagated to Celery workers via Redis version key (no restart required)
  • Dependency scanner switched from safety to pip-audit in CI pipeline
  • CI pipeline streamlined: removed redundant DeepSource integration (4050% faster CI runs)
  • app/utils/logging.py introduced as canonical import point for log_task_progress

Fixed

  • Critical: Path Traversal via GPT Metadata Filename — GPT-extracted filename metadata was used directly in file path construction. Fixed by running all GPT-suggested filenames through sanitize_filename before use.
  • Medium: Path Traversal in File APIfile_path query parameters sanitised to block ../ sequences.
  • Medium: Unvalidated Sort Parameters — sort field and order inputs in file list endpoint now validated against an allowlist.
  • OAuth admin group detection now correctly handles groups list from Authentik userinfo response.
  • Session secret validation raises a clear error at startup instead of silently using an insecure default.
  • Redirect loop for logged-in non-admin users on /settings route resolved.

Security

  • CSRF protection added to all state-changing endpoints
  • Rate limiting prevents brute-force and DoS attacks on auth and upload endpoints
  • Security response headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options) enabled by default
  • Audit log records all HTTP requests with sensitive-value masking
  • Request body size limits prevent memory-exhaustion attacks
  • Path traversal vulnerabilities in file path handling remediated (see security audit docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md)
  • Host key verification enforced for SFTP by default (SFTP_DISABLE_HOST_KEY_VERIFICATION=False)
  • FTPS attempted by default for FTP connections; plaintext requires explicit opt-in
  • SSRF protection on URL-upload endpoint (blocks private IP ranges and loopback)
  • Input validation on all user-controlled sort/search/key parameters

Documentation

  • Added docs/RateLimitingStrategy.md — rate limiting configuration guide
  • Added docs/FileProcessingStatusArchitecture.md — dual-table architecture explanation
  • Added docs/NotificationsSetup.md — Apprise notification setup guide
  • Added docs/StorageArchitecture.md — document storage directory layout
  • Added docs/AuthenticationSetup.md — OAuth2 / Basic Auth configuration
  • Added docs/AmazonS3Setup.md, docs/DropboxSetup.md, docs/GoogleDriveSetup.md, docs/OneDriveSetup.md — per-provider setup guides
  • Added docs/CredentialRotationGuide.md — how to rotate API keys and credentials
  • Added docs/ConfigurationTroubleshooting.md — common configuration problems
  • Added docs/security/PATH_TRAVERSAL_AUDIT_2026-02-10.md — security audit findings
  • Added docs/BrowserExtension.md — browser extension installation and usage
  • Added docs/CIToolsGuide.md and docs/CIWorkflow.md — CI pipeline documentation
  • Added docs/BuildMetadata.md — build metadata file documentation
  • CI de-duplication summary archived in docs/CI_DEDUPLICATION_SUMMARY.md
  • OAuth testing summary archived in OAUTH_IMPLEMENTATION_SUMMARY.md
  • WebDAV testing summary archived in WEBDAV_TESTING_SUMMARY.md

0.5.0 - 2026-02-08

Added

  • Settings Management System: Database-backed configuration management with web UI
    • Admin-only settings page at /settings with 102 settings across 10 categories
    • REST API endpoints: GET/POST /api/settings/{key}, POST /api/settings/bulk-update, DELETE /api/settings/{key}
    • Settings organized by category: Core, Authentication, AI Services, Storage Providers, Email, IMAP, Monitoring, Processing, Notifications, Feature Flags
    • Form pre-filled with current values, all fields optional for flexible editing
    • Bulk update support for changing multiple settings at once
  • Encryption for Sensitive Settings: Fernet symmetric encryption for database storage
    • Automatic encryption/decryption for passwords, API keys, tokens, and secrets
    • Encryption key derived from SESSION_SECRET via SHA256
    • Values prefixed with enc: in database to identify encrypted data
    • Graceful fallback if cryptography library unavailable (logs warning)
    • Lock icon (🔒) in UI indicates encrypted fields
  • Setup Wizard: First-time configuration wizard for fresh installations
    • 3-step wizard: Infrastructure → Security → AI Services
    • Auto-detects missing critical settings and redirects from homepage
    • Beautiful UI with progress indicators and step navigation
    • Auto-generate option for session secrets
    • Skippable for advanced users
    • Settings saved encrypted to database
  • Settings Precedence System: Clear resolution order with visual indicators
    • Precedence: Database > Environment Variables > Defaults
    • Color-coded badges in UI: 🟢 DB (green), 🔵 ENV (blue), DEFAULT (gray)
    • Source detection for each setting shows where value originates
    • Info section explaining precedence order
  • OAuth Admin Support: Enhanced authentication for settings access
    • Admin flag set from OAuth group membership (admin or administrators)
    • Proper decorator pattern for admin access control
    • Session-based authorization with redirect on unauthorized access

Changed

  • Updated requirements.txt to include cryptography>=41.0.0 for encryption
  • Enhanced settings service to auto-encrypt/decrypt sensitive values transparently
  • Improved /settings route with proper admin decorator (fixes redirect loop)
  • Updated settings template with enhanced UI: source badges, encryption indicators, show/hide toggles
  • Modified app/views/general.py to redirect to wizard when setup required

Fixed

  • Fixed /settings endpoint returning 301 redirect to / (converted to proper decorator)
  • Resolved redirect loop for logged-in non-admin users
  • Fixed OAuth users not receiving admin privileges from group membership

Documentation

Technical Details

  • New files:
    • app/utils/encryption.py - Fernet encryption utilities
    • app/utils/setup_wizard.py - Wizard detection and logic
    • app/views/wizard.py - Wizard routes (GET/POST /setup)
    • frontend/templates/setup_wizard.html - Wizard UI
    • frontend/templates/settings.html - Enhanced settings page
  • Modified files:
    • app/utils/settings_service.py - Encryption integration, 102 setting metadata
    • app/views/settings.py - Fixed decorator, source detection
    • app/auth.py - OAuth admin support
    • app/api/settings.py - Enhanced admin checks
    • tests/test_settings.py - Comprehensive test coverage

Security

  • Sensitive settings encrypted at rest in database using Fernet (AES-128-CBC + HMAC)
  • Encryption key derived from SESSION_SECRET (minimum 32 characters required)
  • Admin-only access enforced on all settings operations
  • Visual masking of sensitive values in UI by default
  • CodeQL security scan: 0 alerts

0.3.3 - 2026-02-08

Added

  • Drag-and-drop file upload on Files page: You can now drag and drop files anywhere on the Files view (/files) to upload them, making it more convenient to add documents without navigating to the dedicated Upload page
  • Visual drop overlay that appears when dragging files over the Files page
  • Upload progress modal in bottom-right corner showing real-time upload status
  • Reusable upload.js module extracted from upload page for better code maintainability
  • Tests for drag-and-drop functionality presence in Files view
  • Enhanced visual feedback with animations and improved styling

Changed

  • Refactored upload functionality into a shared JavaScript module (/static/js/upload.js)
  • Updated Upload page to use the new shared upload module
  • Improved drop zone visual styling with better colors and animations

Security

  • Continued security improvements from v0.3.2 (authlib, starlette updates)

0.3.2 - 2026-02-06

Added

  • Comprehensive test infrastructure with pytest
  • Security scanning workflows (CodeQL, Bandit)
  • SECURITY_AUDIT.md documentation
  • ROADMAP.md and MILESTONES.md planning documents
  • API integration tests and configuration validation tests
  • Pre-commit hooks configuration

Changed

  • Updated authlib to 1.6.5+ (security fix)
  • Updated starlette to 0.49.1+ (DoS vulnerability fix)
  • Improved SESSION_SECRET validation and handling
  • Enhanced .gitignore for security
  • Updated README with improved documentation structure

Fixed

  • Critical security vulnerabilities in dependencies
  • Session security issues

0.3.1 - 2026-01-15

Added

  • Files view with sorting and filtering capabilities
  • Bulk operations (delete, reprocess) for multiple files
  • File detail view with processing history
  • Processing flow visualization

Changed

  • Improved UI responsiveness
  • Enhanced error handling and user feedback

Fixed

  • Various bug fixes in file processing pipeline

0.3.0 - 2025-12-20

Added

  • OAuth2 authentication support with Authentik
  • Multi-provider storage support (Dropbox, Google Drive, OneDrive, S3, Nextcloud)
  • Azure Document Intelligence integration for OCR
  • OpenAI metadata extraction
  • Gotenberg PDF conversion service integration
  • IMAP integration for email attachment processing
  • REST API with FastAPI
  • Web UI for document management
  • Celery task queue for asynchronous processing

Changed

  • Major architectural improvements
  • Database schema optimizations

0.2.0 - 2025-11-01

Added

  • Basic document upload functionality
  • Simple storage integration
  • Basic metadata extraction

0.1.0 - 2025-10-01

Added

  • Initial release
  • Core document processing framework
  • Basic file handling

Note: Tags v0.3.1, v0.3.2, v0.3.3, v0.5.0, and the retroactive v0.40.0 summary do not correspond one-to-one with formal GitHub Releases from that period. Going forward all releases have corresponding GitHub Releases and tags created automatically by python-semantic-release.