133 KiB
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
mainthat triggers a version bump.
Unreleased
v0.147.0 (2026-03-16)
Code Style
- Apply ruff auto-fix
(
80a0ddc)
Documentation
Features
-
config: Add JSON structured logging and syslog forwarding for application logs (
6da1e6f) -
config: Add LOG_LEVEL setting and configure root logging at startup (
18c49c6)
Refactoring
- main: Move JSON formatter imports to module level per code review
(
df1fa51)
Testing
- Add 500 error test for saved search deletion
(
ae9ed6e)
Unreleased
Code Style
- Apply ruff auto-fix
(
80a0ddc)
Documentation
- changelog: Update changelog [skip ci]
(
8f8e11c)
Testing
- Add 500 error test for saved search deletion
(
ae9ed6e)
Unreleased
Code Style
- Apply ruff auto-fix
(
80a0ddc)
Testing
- Add 500 error test for saved search deletion
(
ae9ed6e)
v0.146.0 (2026-03-16)
Code Style
-
Apply ruff auto-fix (
522cefa) -
Apply ruff auto-fix (
c76e513) -
Apply ruff auto-fix (
cc2a07b) -
Apply ruff auto-fix (
8bb6457) -
Apply ruff auto-fix (
275a5ad) -
Apply ruff auto-fix (
ac35c5e) -
Apply ruff auto-fix (
705c801) -
Apply ruff auto-fix (
0425d46) -
Apply ruff auto-fix (
b4118f6) -
Format app/database.py to fix CI failure (
fbd4f83)
Features
-
Extract embedded PDF metadata using pypdf in upload_to_email (
726e4df) -
Extract embedded PDF metadata using pypdf in upload_to_email (
df64aec)
Performance Improvements
-
Optimize dropbox token refresh by replacing blocking requests with httpx (
84c6e1c) -
api: Optimize reorder_plans to prevent N+1 queries (
d8372c6) -
duplicates: Fix N+1 query in group listing (
e4e3ac4)
Testing
-
Add missing error tests for updating saved searches (
d18c05c) -
Improve coverage for notify_settings_updated error handling (
d8906ae)
v0.145.3 (2026-03-16)
Bug Fixes
- tests: Resolve ruff import sorting issue in benchmark test
(
fa9b037)
Code Style
Documentation
- changelog: Update changelog [skip ci]
(
fa36ec6)
Performance Improvements
- api: Fix n+1 query issue in user notification preferences update
(
fe20e02)
Unreleased
Code Style
- Apply ruff auto-fix
(
2cfbea2)
v0.145.2 (2026-03-15)
Bug Fixes
- auth: Case-insensitive login + mobile auth debug logging
(
f58b894)
v0.145.1 (2026-03-15)
Bug Fixes
- mobile: Suppress Node.js url.parse() deprecation and document Apple session fix
(
dd02ff5)
Documentation
- changelog: Update changelog [skip ci]
(
4de5743)
Testing
- Fix webdav localhost assertion to match actual error message
(
fe48e2a)
Unreleased
Testing
- Fix webdav localhost assertion to match actual error message
(
fe48e2a)
v0.145.0 (2026-03-15)
Features
- i18n: Localize admin files page (filemanager.html)
(
2bb47e7)
v0.144.0 (2026-03-15)
Bug Fixes
- i18n: Fix overage buffer sentence spacing in admin_plans template
(
de8922b)
Documentation
- Rewrite README.md and update UserGuide and Troubleshooting docs
(
fcf2452)
Features
- i18n: Localize admin plans page
(
36aef73)
v0.143.1 (2026-03-15)
Bug Fixes
-
auth: Expo Go support via Linking.createURL; safe token URL construction; clean up return type annotation (
1428556) -
auth: Store mobile_redirect_uri in session and redirect to deep-link after SSO; fix SafeAreaView deprecation (
5c373e7)
v0.143.0 (2026-03-15)
Features
- i18n: Localize admin users page
(
3fc0d52)
v0.142.0 (2026-03-15)
Features
- i18n: Localize terms and conditions page
(
8c18f0d)
v0.141.2 (2026-03-15)
Bug Fixes
- mobile: Align React version with react-native-renderer to fix version mismatch crash
(
0736278)
Chores
- Initial plan placeholder
(
c5b08e7)
v0.141.1 (2026-03-15)
Bug Fixes
-
mobile: Correct asset logo path depth and add expo-router app/ routes for web support (
82d90b4) -
mobile: Update Node.js minimum requirement to 20.19.4 (
b4b50e8)
v0.141.0 (2026-03-15)
Features
- ui: Localize status page with i18n translations
(
e46dadb)
v0.140.0 (2026-03-15)
Features
- i18n: Localize attribution page
(
246ef70)
v0.139.0 (2026-03-15)
Features
- ui: Localize license page with i18n translation keys
(
9c73ab8)
v0.138.0 (2026-03-15)
Features
- i18n: Localize cookies policy page
(
182868c)
v0.137.1 (2026-03-15)
Bug Fixes
-
mobile: Add missing react@19.2.4 integrity hash to package-lock.json (
ca962f8) -
mobile: Fix iOS TurboModule crash and npm install peer dep conflict (
f983b20)
Chores
- Initial plan for npm install lockfile fix
(
0181143)
v0.137.0 (2026-03-15)
Chores
- mobile: Update iOS build image to Xcode 26 for iOS 26 SDK compliance
(
69664ec)
Documentation
Features
- ui: Localize imprint page
(
1f6a3a5)
Unreleased
Chores
- mobile: Update iOS build image to Xcode 26 for iOS 26 SDK compliance
(
69664ec)
Documentation
- changelog: Update changelog [skip ci]
(
02c3992)
Unreleased
v0.136.1 (2026-03-15)
Bug Fixes
- mobile: Resolve iOS build errors by enabling buildReactNativeFromSource for Expo SDK 54
(
3372a93)
Code Style
- Apply ruff auto-fix
(
b7a195d)
v0.136.0 (2026-03-14)
Features
- mobile: Update DocuElevate mobile app branding with original logo and UX
(
971e578)
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
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
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
- Apply ruff auto-fix
(
de0b674)
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
Documentation
- changelog: Update changelog [skip ci]
(
4a46f37)
Testing
- i18n: Remove translation content assertion from test_translate_with_kwargs_german
(
9b32cbc)
Unreleased
Chores
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
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
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
- Apply ruff auto-fix
(
b22f9a6)
v0.110.0 (2026-03-08)
Code Style
- Apply ruff auto-fix
(
e5d4f8b)
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
- Apply ruff auto-fix
(
fc9caf4)
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
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
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
- Apply ruff auto-fix
(
650a992)
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
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
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
- Apply ruff auto-fix
(
330c3ae)
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
- Apply ruff auto-fix
(
fea8f5c)
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
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
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
- Apply ruff auto-fix
(
69cb16c)
Documentation
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
- Apply ruff auto-fix
(
69cb16c)
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
- config: Default meilisearch_url to http://meilisearch:7700 for Docker/K8s service discovery
(
ff96340)
Code Style
- Apply ruff auto-fix
(
0930765)
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
- Apply ruff auto-fix
(
0827b6e)
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
- Apply ruff auto-fix
(
724d7d8)
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-releasefrom 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 viaX-CSRF-Tokenheader orcsrf_tokenform field. No-op whenAUTH_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, andX-Content-Type-Optionsheaders. 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 viaCORS_ENABLED,CORS_ALLOWED_ORIGINS,CORS_ALLOW_CREDENTIALS,CORS_ALLOWED_METHODS, andCORS_ALLOWED_HEADERS.
New Storage Providers
- Amazon S3 (
app/tasks/upload_to_s3.py): Upload to S3-compatible buckets. Configured viaAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_REGION, andS3_BUCKET_NAME. - SFTP (
app/tasks/upload_to_sftp.py): Secure file transfer with password or private-key authentication. SupportsSFTP_DISABLE_HOST_KEY_VERIFICATIONflag. - FTP/FTPS (
app/tasks/upload_to_ftp.py): FTP with automatic FTPS upgrade attempt; plaintext fallback configurable viaFTP_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 configuredrclonebinary, 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_SIZEbytes. Each chunk is a valid, readable PDF. - Document Deduplication: SHA-256 hash-based duplicate detection. Controlled by
ENABLE_DEDUPLICATIONandSHOW_DEDUPLICATION_STEPsettings. - Forced Cloud OCR:
force_cloud_ocrflag onprocess_documenttask 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)
FileProcessingStepmodel: 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. SupportsENABLE_DEDUPLICATIONconditional step inclusion. - Step Timeout Detection (
app/utils/step_timeout.py): Marks steps stuck inin_progressasfailureafter configurableSTEP_TIMEOUTseconds (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-fillsFileProcessingStepfrom existingProcessingLogentries 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 ofProcessingLogentries; filterable byfile_idandtask_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 viaNOTIFICATION_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
workdirtree with DB cross-reference per file. - Database view: List all
FileRecordrows with on-disk existence flag. - Reconcile view: Delta view showing orphan disk files and ghost DB records.
- Filesystem view: Browse
- 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+SettingsAuditLogmodels): Every settings change is recorded with timestamp, user, and before/after values. - ProcessAll Throttling: Configurable
PROCESSALL_THROTTLE_THRESHOLDandPROCESSALL_THROTTLE_DELAYto 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_URLsetting (defaulthttps://api.openai.com/v1): Enables use of OpenAI-compatible endpoints (Azure OpenAI, local models, etc.).OPENAI_MODELsetting (defaultgpt-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, andextract_remote_pathhelpers 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):BaseTaskWithRetrybase 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_DELETEsetting to prevent accidental deletions in production.
Changed
- Docker image renamed from
christianlouis/document-processortochristianlouis/docuelevate app/routes/deprecated; all endpoints migrated toapp/api/andapp/views/FileRecordstatus now derived fromFileProcessingSteprows instead of scanningProcessingLog- Settings changes now propagated to Celery workers via Redis version key (no restart required)
- Dependency scanner switched from
safetytopip-auditin CI pipeline - CI pipeline streamlined: removed redundant DeepSource integration (40–50% faster CI runs)
app/utils/logging.pyintroduced as canonical import point forlog_task_progress
Fixed
- Critical: Path Traversal via GPT Metadata Filename — GPT-extracted
filenamemetadata was used directly in file path construction. Fixed by running all GPT-suggested filenames throughsanitize_filenamebefore use. - Medium: Path Traversal in File API —
file_pathquery 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
/settingsroute 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.mdanddocs/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
/settingswith 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
- Admin-only settings page at
- 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_SECRETvia 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 (
adminoradministrators) - Proper decorator pattern for admin access control
- Session-based authorization with redirect on unauthorized access
- Admin flag set from OAuth group membership (
Changed
- Updated
requirements.txtto includecryptography>=41.0.0for encryption - Enhanced settings service to auto-encrypt/decrypt sensitive values transparently
- Improved
/settingsroute with proper admin decorator (fixes redirect loop) - Updated settings template with enhanced UI: source badges, encryption indicators, show/hide toggles
- Modified
app/views/general.pyto redirect to wizard when setup required
Fixed
- Fixed
/settingsendpoint 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
- Added docs/SettingsManagement.md - Comprehensive user guide
- Added SETTINGS_IMPLEMENTATION.md - Technical documentation
- Added FRAMEWORK_ANALYSIS.md - Research on existing frameworks
- Added IMPLEMENTATION_CHECKLIST.md - Feature tracking
- Updated TODO.md with completed features
- Updated MILESTONES.md with release details
Technical Details
- New files:
app/utils/encryption.py- Fernet encryption utilitiesapp/utils/setup_wizard.py- Wizard detection and logicapp/views/wizard.py- Wizard routes (GET/POST /setup)frontend/templates/setup_wizard.html- Wizard UIfrontend/templates/settings.html- Enhanced settings page
- Modified files:
app/utils/settings_service.py- Encryption integration, 102 setting metadataapp/views/settings.py- Fixed decorator, source detectionapp/auth.py- OAuth admin supportapp/api/settings.py- Enhanced admin checkstests/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.jsmodule 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
Historical Release Links
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.