Automatically generated by python-semantic-release
47 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.
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.