github-actions[bot]
5d5784f069
chore(release): update build metadata files [skip ci]
2026-03-09 21:30:44 +00:00
semantic-release
91549c8f5e
0.113.0
...
Automatically generated by python-semantic-release
2026-03-09 21:30:41 +00:00
Christian Krakau-Louis
4555cdb7df
Merge pull request #576 from christianlouis/copilot/add-scheduled-batch-processing
...
feat: scheduled batch processing — 8 admin-managed jobs, DB-driven beat schedule, 100% coverage
2026-03-09 22:30:20 +01:00
copilot-swe-agent[bot]
ec77c51cb5
fix: code standards audit — 100% coverage, Pydantic v2 model_config, asyncio.run(), targeted edge-case tests
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 19:00:13 +00:00
copilot-swe-agent[bot]
5bc1fac79c
feat(tasks): add 5 additional scheduled jobs (expire_shared_links, prune_processing_logs, prune_old_notifications, backfill_missing_metadata, sync_search_index)
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 18:25:26 +00:00
copilot-swe-agent[bot]
c2d56d7475
feat(tasks): add scheduled batch processing infrastructure (model, migration, tasks, API, view, template)
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 18:01:34 +00:00
copilot-swe-agent[bot]
07d90758b8
Initial plan
2026-03-09 17:52:43 +00:00
github-actions[bot]
04d51bab22
chore(release): update build metadata files [skip ci]
2026-03-09 12:01:14 +00:00
semantic-release
8fa3e9bc4a
0.112.0
...
Automatically generated by python-semantic-release
2026-03-09 12:01:11 +00:00
Christian Krakau-Louis
2132e7e8d1
Merge pull request #575 from christianlouis/copilot/fix-imap-integration-ui-issues
...
feat(integrations): IMAP Gmail labels/delete controls, Watch Folder cloud sources, and comprehensive test coverage
2026-03-09 13:00:50 +01:00
copilot-swe-agent[bot]
9a342af609
fix(imap): normalize CRLF line endings to LF in imap_tasks.py
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 09:42:20 +00:00
copilot-swe-agent[bot]
1741ab1011
test(tasks): add comprehensive tests for per-user cloud scan functions and gmail_apply_labels
...
Add 68 new unit tests covering:
- _scan_user_s3_folder: 10 tests (bucket config, credentials, client creation,
pagination, download, cache, file types, delete, error handling)
- _scan_user_dropbox_folder: 9 tests (credentials, folder path, auth, listing,
download, cache, non-file entries, delete, download failure)
- _scan_user_google_drive_folder: 8 tests (credentials JSON, folder ID, auth,
download, cache, delete, download/listing failures)
- _scan_user_onedrive_folder: 10 tests (credentials, folder path, token exchange,
download, folders, cache, download URL, delete, download/listing failures)
- _scan_user_nextcloud_folder: 9 tests (settings, PROPFIND, XML parse, download,
self-entry, cache, delete, download failure, absolute href)
- _scan_user_webdav_folder: 9 tests (URL config, PROPFIND, XML parse, download,
directories, cache, delete, download failure, absolute href)
- Dispatch tests for google_drive, onedrive, nextcloud, webdav source types
- gmail_apply_labels forwarding and default-to-true in IMAP integration
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-09 09:29:43 +00:00
copilot-swe-agent[bot]
4acad71c8f
fix: address code review feedback - fix type hint and rename test
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 02:38:50 +00:00
copilot-swe-agent[bot]
8c62a6b714
test(integrations): add tests for gmail_apply_labels and cloud watch folder dispatch
...
docs(integrations): update UserGuide and ConfigurationGuide for new IMAP and Watch Folder features
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 02:35:30 +00:00
copilot-swe-agent[bot]
79fc11b452
test: add tests for gmail_apply_labels=False and cloud source type dispatching
...
Add test_gmail_labels_disabled_when_gmail_apply_labels_false to verify
that Gmail star/label operations are skipped when gmail_apply_labels=False.
Add four tests to TestPullUserIntegrationWatchFolders for cloud source
type dispatching: S3, Dropbox, unknown provider, and explicit local type.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-09 02:26:10 +00:00
copilot-swe-agent[bot]
e7d1289f1b
feat(integrations): add IMAP Gmail labels/delete and Watch Folder cloud source support
...
- Add delete_after_process and gmail_apply_labels checkboxes to IMAP integration UI
- Add source_type selector (Local/S3/Dropbox/Google Drive/OneDrive/Nextcloud/WebDAV) to Watch Folder UI
- Add per-source-type config and credential fields for watch folders
- Add delete_after_process checkbox to Watch Folder settings
- Fix field name mismatch (path → folder_path) in Watch Folder UI
- Update pull_inbox() to accept and respect gmail_apply_labels parameter
- Update _pull_user_integration_imap() to read gmail_apply_labels from config
- Add per-user cloud scanning functions for S3, Dropbox, Google Drive, OneDrive, Nextcloud, WebDAV
- Update _pull_user_integration_watch_folders() to dispatch based on source_type
- Update IMAP and WATCH_FOLDER config shape documentation in models.py
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 02:15:03 +00:00
copilot-swe-agent[bot]
61e402f785
Initial plan
2026-03-09 01:52:58 +00:00
github-actions[bot]
5f548e29fa
chore(release): update build metadata files [skip ci]
2026-03-09 01:47:12 +00:00
semantic-release
aea9e227db
0.111.1
...
Automatically generated by python-semantic-release
2026-03-09 01:47:09 +00:00
Christian Krakau-Louis
b71b18d184
Merge pull request #574 from christianlouis/copilot/fix-cors-header-test-error
...
fix(migrations): resolve duplicate Alembic heads causing test INTERNALERROR
2026-03-09 02:46:51 +01:00
copilot-swe-agent[bot]
c374ba3ae9
fix(migrations): resolve duplicate Alembic heads causing test failures
...
Two migration files (025_add_shared_links and 025_add_user_notifications)
both had down_revision pointing to 024_add_api_tokens, creating multiple
migration heads. This caused alembic stamp/upgrade head to fail with
'Multiple heads are present; please specify a single target revision'
whenever init_db() ran (e.g. in TestClient fixtures).
Fix: chain 025_add_user_notifications from 025_add_shared_links so the
migration history is linear:
024_add_api_tokens → 025_add_shared_links → 025_add_user_notifications
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-09 01:11:26 +00:00
copilot-swe-agent[bot]
32e73727ad
Initial plan
2026-03-09 00:47:56 +00:00
github-actions[bot]
e4157e3373
chore(release): update build metadata files [skip ci]
2026-03-09 00:06:00 +00:00
semantic-release
708962b6a7
0.111.0
...
Automatically generated by python-semantic-release
2026-03-09 00:05:57 +00:00
Christian Krakau-Louis
0b9bba7158
Merge pull request #562 from christianlouis/copilot/refactor-dynamic-routing-user-destinations
...
fix(tasks): register upload_to_user_integration in Celery and add handler coverage
2026-03-09 01:05:36 +01:00
github-actions[bot]
39150cb9ab
chore(release): update build metadata files [skip ci]
2026-03-08 23:46:58 +00:00
semantic-release
ea2e927054
0.110.1
...
Automatically generated by python-semantic-release
2026-03-08 23:46:54 +00:00
Christian Krakau-Louis
e916001e08
Merge pull request #573 from christianlouis/copilot/fix-sentry-settings-startup
...
fix(sentry): initialize Sentry after DB settings load in lifespan
2026-03-09 00:46:36 +01:00
github-actions[bot]
b22f9a6af6
style: apply ruff auto-fix
...
- Auto-formatted code with ruff format
- Applied ruff linting fixes with --fix
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-08 22:40:15 +00:00
copilot-swe-agent[bot]
5fb11b978c
fix(tasks): register upload_to_user_integration in celery_worker and add handler tests
...
- Add `from app.tasks.upload_to_user_integration import upload_to_user_integration`
to app/celery_worker.py — fixes TestCeleryWorkerConfig test that enforces
every tasks/ module is registered with Celery.
- Add tests/test_upload_handlers.py with 43 unit tests covering all 11
per-type upload handler functions (_upload_dropbox, _upload_s3,
_upload_google_drive, _upload_onedrive, _upload_webdav, _upload_nextcloud,
_upload_ftp, _upload_sftp, _upload_paperless, _upload_email, _upload_rclone)
plus 2 additional finalize_document_storage branch tests. All external
libraries (dropbox, boto3, msal, paramiko, smtplib, subprocess, requests)
are mocked so tests are hermetic and fast. Coverage on changed files:
upload_to_user_integration.py 94.71%, finalize_document_storage.py 95.51%
(both well above the 70% Codecov diff threshold).
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 22:21:15 +00:00
copilot-swe-agent[bot]
5864a4ed06
fix(sentry): initialize Sentry after DB settings are loaded in lifespan
...
Move init_sentry() from module level into the FastAPI lifespan context
manager, immediately after load_settings_from_db() completes. This
ensures that SENTRY_DSN and other Sentry settings configured via the
database admin UI are picked up on every restart.
Also update tests and docs accordingly.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 22:17:18 +00:00
github-actions[bot]
a171186f93
chore(release): update build metadata files [skip ci]
2026-03-08 22:13:18 +00:00
semantic-release
50271ff21f
0.110.0
...
Automatically generated by python-semantic-release
2026-03-08 22:13:16 +00:00
Christian Krakau-Louis
382e082198
Merge pull request #569 from christianlouis/copilot/add-document-sharing-feature
...
feat: document sharing with expiring links
2026-03-08 23:12:58 +01:00
github-actions[bot]
e5d4f8b58f
style: apply ruff auto-fix
...
- Auto-formatted code with ruff format
- Applied ruff linting fixes with --fix
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-08 22:12:44 +00:00
Christian Krakau-Louis
201d7c8fdc
Merge branch 'main' into copilot/add-document-sharing-feature
2026-03-08 23:12:27 +01:00
github-actions[bot]
84e8ea2fb2
chore(release): update build metadata files [skip ci]
2026-03-08 22:12:01 +00:00
semantic-release
14330d1a83
0.109.0
...
Automatically generated by python-semantic-release
2026-03-08 22:11:59 +00:00
Christian Krakau-Louis
6376b6d73b
Merge pull request #568 from christianlouis/copilot/add-multi-language-ocr-support
...
feat(ocr): per-pipeline language override for multi-language OCR
2026-03-08 23:11:41 +01:00
github-actions[bot]
2e241dd5f3
chore(release): update build metadata files [skip ci]
2026-03-08 22:11:10 +00:00
semantic-release
5914d9f511
0.108.0
...
Automatically generated by python-semantic-release
2026-03-08 22:11:07 +00:00
Christian Krakau-Louis
32db11f47f
Merge pull request #571 from christianlouis/copilot/build-cli-tool-for-power-users
...
feat(cli): add `docuelevate` CLI tool for power users
2026-03-08 23:10:49 +01:00
github-actions[bot]
5144f03dc8
chore(release): update build metadata files [skip ci]
2026-03-08 22:10:46 +00:00
semantic-release
b701787ef4
0.107.0
...
Automatically generated by python-semantic-release
2026-03-08 22:10:44 +00:00
Christian Krakau-Louis
0bd8b71438
Merge pull request #567 from christianlouis/copilot/build-notification-system
...
feat(notifications): per-user notification system with email, webhook, and in-app inbox
2026-03-08 23:10:27 +01:00
copilot-swe-agent[bot]
034876afbb
Initial plan
2026-03-08 22:10:10 +00:00
copilot-swe-agent[bot]
06091546b0
fix(sharing): address security review findings
...
- Use per-password random salt with PBKDF2-HMAC-SHA256 (stored as salt:hash)
- Increase PBKDF2 iterations to 600,000 (OWASP 2023 recommendation)
- Password for downloads now accepted via POST body (never URL query param)
- Fail download request if view count cannot be incremented (prevents bypass)
- Update tests to match new hashing format and POST password download
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 21:55:55 +00:00
copilot-swe-agent[bot]
a92bf8ec8f
chore: remove accidentally committed =8.0.0 file
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 21:52:01 +00:00
copilot-swe-agent[bot]
0f91b8bb7c
feat(sharing): add document sharing with expiring links
...
- Add SharedLink model with token, expiry, view limit, password hash
- Add migration 025_add_shared_links
- Add API endpoints: create, list, revoke (auth) + public info/download
- Add management UI at /shared-links with revoke controls
- Add public share landing page at /share/{token}
- Add Share button on file_view.html
- Add Shared Links to user dropdown in common.js
- Write 35 unit tests covering all scenarios
- Update UserGuide.md with sharing documentation
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 21:51:30 +00:00
copilot-swe-agent[bot]
a3fd74f117
feat(cli): add docuelevate CLI tool for power users
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 21:50:18 +00:00