Commit Graph

1683 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] 35abdb0e69 feat(integrations): add quota enforcement, connection test, and quota endpoint
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 15:45:41 +00:00
copilot-swe-agent[bot] ca9cf868cf Initial plan 2026-03-08 15:29:08 +00:00
github-actions[bot] 98ae72aef2 chore(release): update build metadata files [skip ci] 2026-03-08 15:14:50 +00:00
semantic-release bf43fc8ed2 0.97.0
Automatically generated by python-semantic-release
2026-03-08 15:14:47 +00:00
Christian Krakau-Louis 89378b2270 Merge pull request #553 from christianlouis/copilot/restrict-status-page-access
feat(status): restrict status page to admin-only, move to admin menu
2026-03-08 16:14:26 +01:00
github-actions[bot] 68c100fc7e chore(release): update build metadata files [skip ci] 2026-03-08 15:13:54 +00:00
semantic-release 8acf76fe93 0.96.0
Automatically generated by python-semantic-release
2026-03-08 15:13:51 +00:00
Christian Krakau-Louis e05718e702 Merge pull request #550 from christianlouis/copilot/add-database-models-for-multi-tenant
feat(models): Generic UserIntegration model for multi-tenant sources/destinations + encrypt IMAP passwords
2026-03-08 16:13:35 +01:00
Christian Krakau-Louis dcf57b0898 Merge pull request #552 from christianlouis/copilot/fix-create-imap-account-button
fix(ui): IMAP "Add Account" button does nothing
2026-03-08 16:13:21 +01:00
copilot-swe-agent[bot] feea051c4f feat(status): restrict status page to admin-only and move to admin menu
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 15:10:46 +00:00
copilot-swe-agent[bot] 8aa8a93a6a fix(ui): move IMAP modals inside Alpine.js x-data scope so create/edit/delete buttons work
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 15:04:23 +00:00
copilot-swe-agent[bot] 17e77fa65a Initial plan 2026-03-08 15:03:39 +00:00
copilot-swe-agent[bot] 743627ecc2 feat(models): add UserIntegration model, encrypt IMAP passwords, add integrations API
- Add IntegrationDirection/IntegrationType constants and UserIntegration SQLAlchemy model
  with owner_id, direction, integration_type, name, config (JSON), credentials (encrypted),
  is_active, last_used_at, last_error, created_at, updated_at fields
- Fix UserImapAccount password encryption: encrypt_value() on create/update,
  decrypt_value() in IMAP tasks and test-connection endpoint (backward compatible)
- Add Alembic migration 023_add_user_integrations
- Add app/api/integrations.py: CRUD + credentials endpoint with owner-scoped access
- Register integrations router in app/api/__init__.py
- Add 39 tests in tests/test_api_integrations.py covering model, CRUD, encryption

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 15:02:38 +00:00
copilot-swe-agent[bot] d7448c5c69 Initial plan 2026-03-08 15:02:13 +00:00
copilot-swe-agent[bot] 077672d8c1 Initial plan 2026-03-08 14:46:31 +00:00
github-actions[bot] 211d479eb9 chore(release): update build metadata files [skip ci] 2026-03-08 14:45:47 +00:00
semantic-release 3e36f4c888 0.95.0
Automatically generated by python-semantic-release
2026-03-08 14:45:44 +00:00
Christian Krakau-Louis 6175489ba0 Merge pull request #543 from christianlouis/copilot/add-per-user-imap-ingestion
feat(imap): per-user IMAP ingestion accounts with quota enforcement
2026-03-08 15:45:25 +01:00
Christian Krakau-Louis 94ce9b12f6 Merge pull request #549 from christianlouis/copilot/fix-login-issues
fix(auth): CSRF middleware body consumption causes empty form data on login
2026-03-08 15:45:12 +01:00
copilot-swe-agent[bot] 087f3c10e9 fix(auth): cache request body in CSRF middleware to prevent login failures
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 13:48:17 +00:00
copilot-swe-agent[bot] 5acc55ce92 Initial plan 2026-03-08 13:36:41 +00:00
copilot-swe-agent[bot] 73727dc56a fix(imap): address code review feedback - named constants, error context in JS, security docs
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 13:08:31 +00:00
copilot-swe-agent[bot] 43bcfe5653 feat(imap): add per-user IMAP ingestion accounts with quota enforcement
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 13:01:14 +00:00
github-actions[bot] 555b0a6627 chore(release): update build metadata files [skip ci] 2026-03-08 12:59:58 +00:00
semantic-release ba9f32a039 0.94.0
Automatically generated by python-semantic-release
2026-03-08 12:59:54 +00:00
Christian Krakau-Louis a4e4dbc43e Merge pull request #542 from christianlouis/copilot/debug-local-login-issues
feat(auth): add diagnostic debug logging to local login flow
2026-03-08 13:59:35 +01:00
copilot-swe-agent[bot] c5b330cb4e feat(auth): add comprehensive debug logging for local login failures
Add detailed diagnostic log statements throughout the local authentication
path to help identify why valid local user logins are failing.

Changes:
- app/auth.py: log received username, multi_user_enabled status, LocalUser
  DB lookup result, is_active status, password verification outcome, and
  the specific failure reason (empty_username / wrong_password / no_match)
  at every decision point. Also log form keys and Content-Type header on
  empty-username failures to detect Starlette body-consumption issues.
- app/middleware/csrf.py: log Content-Type, form field names, and whether
  the CSRF token was present in _get_submitted_token() to reveal if the
  middleware is consuming form data before the endpoint can read it.
- app/utils/local_auth.py: verify_password() now logs DEBUG on mismatch
  and WARNING (with exception type) on unexpected bcrypt errors instead
  of silently swallowing exceptions.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:48:38 +00:00
copilot-swe-agent[bot] f3c85f73c3 Initial plan 2026-03-08 12:47:14 +00:00
copilot-swe-agent[bot] ec51cb0015 Initial plan 2026-03-08 12:38:23 +00:00
github-actions[bot] e68bf13949 docs(changelog): update changelog [skip ci] 2026-03-08 12:26:45 +00:00
Christian Krakau-Louis 6497d35d84 Merge pull request #534 from christianlouis/copilot/increase-test-coverage-watch-folder-tasks
test: increase watch_folder_tasks.py coverage from 37% to 98%
2026-03-08 13:26:23 +01:00
github-actions[bot] 195febfb09 docs(changelog): update changelog [skip ci] 2026-03-08 12:23:49 +00:00
Christian Krakau-Louis c26ecfce08 Merge pull request #535 from christianlouis/copilot/increase-test-coverage-backup-view
Increase test coverage for app/views/backup.py to 100%
2026-03-08 13:23:29 +01:00
github-actions[bot] cc6acc1f03 docs(changelog): update changelog [skip ci] 2026-03-08 12:21:08 +00:00
Christian Krakau-Louis 06eb6e636e Merge pull request #533 from christianlouis/copilot/increase-test-coverage-backup-tasks
test: increase backup_tasks.py coverage from 66% to 99.79%
2026-03-08 13:20:50 +01:00
copilot-swe-agent[bot] 3ac5a97467 test: increase watch_folder_tasks coverage from 37% to 98%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:19:29 +00:00
copilot-swe-agent[bot] 19b4ea4f6b test(backup): add comprehensive unit tests for app/views/backup.py
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:15:39 +00:00
github-actions[bot] 16b2ad3b24 chore(release): update build metadata files [skip ci] 2026-03-08 12:15:37 +00:00
semantic-release f6c6712550 0.93.1
Automatically generated by python-semantic-release
2026-03-08 12:15:34 +00:00
Christian Krakau-Louis 640662e9b2 Merge pull request #540 from christianlouis/copilot/fix-local-user-login-issue
fix(auth): local user login fails after password reset
2026-03-08 13:15:14 +01:00
github-actions[bot] be0a0922dc docs(changelog): update changelog [skip ci] 2026-03-08 12:12:54 +00:00
Christian Krakau-Louis 9e9a4f9b6a Merge pull request #536 from christianlouis/copilot/increase-test-coverage-subscription-tasks
test: 100% coverage for app/tasks/subscription_tasks.py
2026-03-08 13:12:31 +01:00
copilot-swe-agent[bot] 9a95d5cfd5 test: increase backup_tasks.py coverage to 99.79%
Add comprehensive tests covering all previously untested code paths in
app/tasks/backup_tasks.py, raising coverage from 66.39% to 99.79%.

New test classes:
- TestDumpPostgresqlBranches / TestDumpMysqlBranches: URL branches
- TestRestoreSqliteBranches: error paths and rollback scenarios
- TestRestorePostgresqlBranches / TestRestoreMysqlBranches: URL branches
- TestApplyRetentionOSError: OSError on file removal + remote record keeping
- TestPruneRemoteBackups: full pruning lifecycle
- TestDeleteRemoteCopy: S3, Dropbox, known/unknown destinations
- TestUploadRemote: all destination branches (S3, Dropbox, email, Nextcloud, WebDAV)
- TestEmailBackup: recipient error, TLS, no-auth paths
- TestCreateBackupAdditional: dump failure, remote upload, PG/MySQL failures
- TestCleanupOldBackupsTask: validates all tiers are processed

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:11:07 +00:00
copilot-swe-agent[bot] 86f9f5f9b1 fix(auth): activate account on password reset and fix is_active check order
- reset_password sets is_active=True so users with unverified accounts
  can log in after using the forgot-password flow
- admin set_password also sets is_active=True for the same reason
- auth() now checks is_active before verifying the password, ensuring
  inactive users always see the email-verification prompt regardless of
  password correctness (avoids leaking password validity)"

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:07:25 +00:00
github-actions[bot] 5a11f14681 docs(changelog): update changelog [skip ci] 2026-03-08 12:05:46 +00:00
Christian Krakau-Louis a1dcc1d2b5 Merge pull request #538 from christianlouis/copilot/increase-test-coverage-subscriptions-again
test: increase coverage for app/views/subscriptions.py to 100%
2026-03-08 13:05:26 +01:00
copilot-swe-agent[bot] a580527de4 test: increase coverage for app/tasks/subscription_tasks.py to 100%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-08 12:05:17 +00:00
github-actions[bot] 53f7ab37d5 docs(changelog): update changelog [skip ci] 2026-03-08 12:03:43 +00:00
Christian Krakau-Louis b7df2ca74b Merge pull request #532 from christianlouis/copilot/increase-test-coverage-subscriptions
test(subscriptions): increase app/api/subscriptions.py coverage from 49% to 100%
2026-03-08 13:03:23 +01:00
github-actions[bot] 754ea99092 docs(changelog): update changelog [skip ci] 2026-03-08 12:00:11 +00:00