3085 Commits

Author SHA1 Message Date
Christian Krakau-Louis 350c0d14db Merge pull request #780 from christianlouis/copilot/improve-test-coverage-icloud-upload
test: raise upload_to_icloud coverage from 51% to 100%
2026-03-21 16:07:54 +01:00
Christian Krakau-Louis 11ad9c22cf Merge pull request #779 from christianlouis/copilot/improve-test-coverage-imap-profiles
test: raise imap_profiles coverage from 50% to 100%
2026-03-21 16:07:33 +01:00
copilot-swe-agent[bot] 74a8c22478 test: improve test coverage for app/api/sessions.py
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/4fb13ab5-c829-4e56-9999-bfca5bc53f4a
2026-03-21 14:58:36 +00:00
copilot-swe-agent[bot] 8cc292c6ee test: improve test coverage for app/api/imap_profiles.py to 100%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/55b54d8d-e154-48fc-bf8d-0d59c48cdd54
2026-03-21 14:53:44 +00:00
copilot-swe-agent[bot] 982c222717 test: improve test coverage for app/tasks/upload_to_icloud.py to 100%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/7d047aa6-a27a-47aa-a75b-4d31440af584
2026-03-21 14:51:11 +00:00
copilot-swe-agent[bot] 2339765866 Initial plan 2026-03-21 14:40:51 +00:00
copilot-swe-agent[bot] 0e09351c01 Initial plan 2026-03-21 14:40:32 +00:00
copilot-swe-agent[bot] 059e092510 Initial plan 2026-03-21 14:40:17 +00:00
copilot-swe-agent[bot] 1a53218a53 Initial plan 2026-03-21 14:39:58 +00:00
github-actions[bot] ae8be68df9 docs(changelog): update changelog [skip ci] 2026-03-21 14:33:38 +00:00
Christian Krakau-Louis 9a94ff62ed Merge pull request #776 from christianlouis/copilot/sub-pr-774-again
test(convert_to_pdfa): lock in `--` end-of-options guard with positional assertions
2026-03-21 15:33:13 +01:00
Christian Krakau-Louis 1e026c2fe9 Merge pull request #775 from christianlouis/copilot/sub-pr-774
test(rclone): assert `--` end-of-options separator position in subprocess command
2026-03-21 15:32:57 +01:00
copilot-swe-agent[bot] 051d763a7e fix: resolve merge conflict with main in test_convert_to_pdfa.py 2026-03-21 14:25:01 +00:00
copilot-swe-agent[bot] d487a60484 chore: merge main into copilot/sub-pr-774 and resolve conflict in test_upload_handlers.py 2026-03-21 14:23:06 +00:00
github-actions[bot] f9b6d93213 chore(release): update build metadata files [skip ci] 2026-03-21 14:21:12 +00:00
semantic-release 690d9d96ca 0.164.0
Automatically generated by python-semantic-release
2026-03-21 14:21:09 +00:00
Christian Krakau-Louis a27a4ce130 Merge pull request #585 from christianlouis/copilot/add-zapier-make-integration
feat: add Zapier and Make.com integration via REST hooks and incoming actions
2026-03-21 15:20:42 +01:00
github-actions[bot] 7da93b5b15 chore(release): update build metadata files [skip ci] 2026-03-21 14:20:33 +00:00
semantic-release 64ee68b1aa 0.163.1
Automatically generated by python-semantic-release
2026-03-21 14:20:31 +00:00
Christian Krakau-Louis 71e1a6fe1c Merge pull request #774 from christianlouis/fix-command-injection-9532322968535721630
🛡️ Sentinel: [HIGH] Fix command injection vulnerability in subprocess calls
2026-03-21 15:20:11 +01:00
Christian Krakau-Louis 167145579f Merge pull request #777 from christianlouis/copilot/sub-pr-774-another-one
test: lock in `--` end-of-options separator for rclone and ocrmypdf subprocess calls
2026-03-21 15:19:15 +01:00
Christian Krakau-Louis 9f8a9b349d Merge pull request #778 from christianlouis/copilot/sub-pr-774-yet-again
fix(api): add missing `import requests` in dropbox.py and onedrive.py
2026-03-21 15:19:04 +01:00
copilot-swe-agent[bot] f1e5ab6ce4 Merge remote-tracking branch 'origin/main' into copilot/add-zapier-make-integration
# Conflicts:
#	app/api/__init__.py
#	app/config.py
#	app/utils/settings_service.py
#	docs/API.md
#	tests/conftest.py
2026-03-21 12:25:50 +00:00
copilot-swe-agent[bot] 81484ad770 test: add -- separator assertions to rclone and ocrmypdf tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/c7ac9d75-d2de-499e-b7e8-8b0f694547f5
2026-03-21 12:23:02 +00:00
copilot-swe-agent[bot] 5b04504b0e test(convert_to_pdfa): assert -- terminates option parsing before file paths
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/5223074c-1ebf-4fc0-bf80-0de8462c16a2
2026-03-21 12:22:34 +00:00
copilot-swe-agent[bot] 9229be88ff test(tasks): assert -- end-of-options separator in rclone command test
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/e1135cc5-b023-4f54-8b62-03b715475b0e
2026-03-21 12:21:32 +00:00
copilot-swe-agent[bot] 35caf24e3c fix(api): add missing import requests in dropbox.py and onedrive.py to fix ruff F821
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/c70c9dfc-6e2f-4ed4-ac51-c901d6f56ffa
2026-03-21 12:21:10 +00:00
google-labs-jules[bot] bc122e351d Fix Ruff missing requests import
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-21 12:21:01 +00:00
copilot-swe-agent[bot] 2f6dbea1ce Initial plan 2026-03-21 12:19:13 +00:00
copilot-swe-agent[bot] 902f109551 Initial plan 2026-03-21 12:18:33 +00:00
Christian Krakau-Louis db88cde66e Update app/tasks/upload_to_user_integration.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-21 13:18:17 +01:00
copilot-swe-agent[bot] ee1810692a Initial plan 2026-03-21 12:18:15 +00:00
copilot-swe-agent[bot] e8de3b3761 Initial plan 2026-03-21 12:17:43 +00:00
google-labs-jules[bot] 0a44b06b6d Fix command injection vulnerability in subprocess calls.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-21 04:00:05 +00:00
copilot-swe-agent[bot] 34ff7f8de8 fix(docs): remove duplicate Further Assistance heading in API.md
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/cb62f012-3b69-4415-835e-3857ce3e9f45
2026-03-20 23:56:52 +00:00
copilot-swe-agent[bot] e518bce922 fix: merge main branch and renumber migration 037→040
Resolve all merge conflicts between our automation feature branch and
current main (v0.163.0, 920 commits ahead).

Conflicts resolved:
- app/api/__init__.py: add automation_router alongside main's new routers
  (classification_rules, qr_auth, sessions, system_reset)
- app/config.py: add main's new settings (dropbox_use_global_credentials,
  factory_reset_on_startup, enable_factory_reset)
- app/models.py: add main's new models (ClassificationRuleModel, UserSession,
  QRLoginChallenge, SharePoint integration type)
- app/utils/settings_service.py: merge automation_hooks_enabled with main's
  new metadata entries
- docs/API.md: merge automation API docs with main's classification rules docs
- docs/ConfigurationGuide.md: add factory reset settings
- tests/conftest.py: import both AutomationHook and new main models

Migration renumbered:
- 037_add_automation_hooks → 040_add_automation_hooks
- down_revision: 039_add_classification_rules (was 036_add_document_translation_fields)
- Chain: 036 → 037 → 038 → 039 → 040 (automation hooks)

For all non-automation files with conflicts, main's version was taken since
our branch did not modify those files (conflicts were from a stale prior merge).

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/cb62f012-3b69-4415-835e-3857ce3e9f45
2026-03-20 23:54:04 +00:00
github-actions[bot] b70341a062 chore(release): update build metadata files [skip ci] 2026-03-20 23:38:10 +00:00
semantic-release 5b2d51f647 0.163.0
Automatically generated by python-semantic-release
2026-03-20 23:38:08 +00:00
Christian Krakau-Louis 6f5a73f98a Merge pull request #586 from christianlouis/copilot/fix-watch-folder-settings
feat(integrations): simplify OAuth watch folder setup with system credentials and folder browser
2026-03-21 00:37:49 +01:00
github-actions[bot] 65cf33ce89 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-20 23:35:43 +00:00
github-actions[bot] f9f36df38d chore(release): update build metadata files [skip ci] 2026-03-20 23:35:30 +00:00
semantic-release 831e1c602d 0.162.0
Automatically generated by python-semantic-release
2026-03-20 23:35:28 +00:00
Christian Krakau-Louis 95263f132c Merge pull request #581 from christianlouis/copilot/add-rule-based-document-classification
fix: merge main (v0.161.0) into classification feature branch
2026-03-21 00:35:08 +01:00
copilot-swe-agent[bot] ae675485af Merge remote-tracking branch 'origin/main' into copilot/fix-watch-folder-settings
# Conflicts:
#	app/views/dropbox.py
#	frontend/templates/dropbox.html
#	frontend/templates/integrations_dashboard.html
#	tests/test_api_dropbox.py
#	tests/test_views_dropbox.py
2026-03-20 23:33:58 +00:00
copilot-swe-agent[bot] b3a238744d fix(security): escape HTML in folder browser to prevent XSS from folder names
Added escapeHtml() utility function to both Dropbox and OneDrive
callback pages. Folder names, paths, and error messages inserted into
innerHTML via template literals are now escaped to prevent potential
cross-site scripting from malicious folder names.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:46:08 +00:00
copilot-swe-agent[bot] d6c21b8026 docs: update setup guides and API docs for folder browser and system credentials
Updated DropboxSetup.md, OneDriveSetup.md, and GoogleDriveSetup.md to
document the new system credentials toggle and folder browser features.
Added API documentation for POST /api/dropbox/list-folders and
POST /api/onedrive/list-folders endpoints.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:43:08 +00:00
copilot-swe-agent[bot] 1e1e6e6280 test: add tests for folder browser APIs and system credentials toggle
Added tests for POST /api/dropbox/list-folders (7 tests) and
POST /api/onedrive/list-folders (7 tests) covering success, subfolder
navigation, empty directories, auth errors, API errors, path
normalization, and alphabetical sorting.

Added view tests for system credentials toggle visibility in Dropbox
setup wizard.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:40:51 +00:00
copilot-swe-agent[bot] a8423064ec feat(api): add folder browser API endpoints and UI for Dropbox and OneDrive
Added POST /api/dropbox/list-folders and POST /api/onedrive/list-folders
endpoints that accept an OAuth access_token and return folder listings.

After successful OAuth authorization in the callback pages, users now
see an interactive folder browser to select the target folder for their
integration. The selected folder is saved to the integration config.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:21:52 +00:00
copilot-swe-agent[bot] 23c8c76b39 feat(auth): default to system-wide app credentials in OAuth wizards for user mode
When system-wide Dropbox, Google Drive, or OneDrive app credentials are
configured by the admin, user-mode OAuth wizards now default to using
them. A toggle lets users switch to custom credentials if needed. This
removes the need for end users to register their own cloud provider apps.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:17:40 +00:00
copilot-swe-agent[bot] ed01952610 feat(ui): replace manual credential fields with OAuth wizard flow for watch folder sources
Watch folders using Dropbox, Google Drive, or OneDrive now show only the
folder path field and an info box directing users to use the Authorize
button after saving — matching the destination integration pattern.
Manual credential fields (refresh token, app key, app secret, etc.)
have been removed for these OAuth-backed source types.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-20 13:12:39 +00:00