copilot-swe-agent[bot]
8060a79b9c
style: fix ruff formatting in tests/test_imap_profiles.py
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 10:25:32 +00:00
copilot-swe-agent[bot]
bc94825877
Initial plan
2026-03-12 10:24:27 +00:00
github-actions[bot]
d7d0413bc8
chore(release): update build metadata files [skip ci]
2026-03-12 07:54:06 +00:00
semantic-release
d3443b034a
0.123.0
...
Automatically generated by python-semantic-release
2026-03-12 07:54:04 +00:00
Christian Krakau-Louis
7f644a2388
Merge pull request #604 from christianlouis/copilot/configure-attachment-ingestion
...
feat(imap): fine-grained attachment ingestion profiles with per-category selection
2026-03-12 08:53:45 +01:00
github-actions[bot]
338f4fa9bd
chore(release): update build metadata files [skip ci]
2026-03-12 07:51:39 +00:00
semantic-release
44cebeab2a
0.122.0
...
Automatically generated by python-semantic-release
2026-03-12 07:51:35 +00:00
Christian Krakau-Louis
87fca21c7f
Merge pull request #605 from christianlouis/copilot/enable-disable-storage-locations
...
feat(storage): explicit enable/disable flag per global storage destination
2026-03-12 08:51:14 +01:00
copilot-swe-agent[bot]
2e087731b9
fix(imap): address code review feedback on ingestion profiles
...
- Improve warning log in _resolve_categories_for_profile() to include
exception type name for better troubleshooting
- Add SQLAlchemy IS NULL comment to imap_profiles.py filter
- Pass default_categories from server to template to avoid hardcoded
category list in JS (now uses {{ default_categories | tojson }})
- Simplify view profiles query (remove redundant unauthenticated path)
- Update docs: ConfigurationGuide.md and EmailIngestion.md with
full profiles documentation including category table and API reference
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 01:19:32 +00:00
copilot-swe-agent[bot]
c9f554465d
feat(imap): add ImapIngestionProfile model, API, migration and UI
...
Replaces the simple binary attachment_filter string with a full
ingestion profiles system:
- Add FILE_TYPE_CATEGORIES dict to allowed_types.py (6 categories:
pdf, office, opendocument, text, web, images) + DEFAULT_CATEGORIES
/ ALL_CATEGORIES + get_allowed_types_for_categories() helper
- Add ImapIngestionProfile model (id, name, description, owner_id,
allowed_categories JSON, is_builtin)
- Update UserImapAccount: replace attachment_filter string with
profile_id FK to imap_ingestion_profiles
- Migration 033: creates profiles table, seeds 2 built-in profiles
(Documents Only, All Files), migrates attachment_filter → profile_id
- New /api/imap-profiles/ CRUD endpoints (list, create, get, update,
delete) with category validation
- Register imap_profiles router in app/api/__init__.py
- Update imap_tasks.py: replace attachment_filter string param with
profile-based allowed_categories; add _resolve_categories_for_profile()
- Update imap_accounts.py API to use profile_id instead of attachment_filter
- Update imap_accounts view to pass profiles + categories to template
- Full UI overhaul: profiles panel + profile create/edit modal with
category checkboxes; profile selector in account modal
- 17 new tests (141 total), all passing
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 01:14:19 +00:00
copilot-swe-agent[bot]
fd75961580
docs(storage): document explicit enable/disable flags in ConfigurationGuide and .env.demo
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 01:10:31 +00:00
copilot-swe-agent[bot]
b72ab3b318
feat(storage): add explicit enable/disable flag for each global storage destination
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 01:04:28 +00:00
copilot-swe-agent[bot]
554bb21d32
feat(imap): add attachment type filter for IMAP ingestion
...
Add a configurable switch to control which attachment types are ingested
via IMAP. Images are excluded by default; office files and PDFs are ingested.
- Add global `IMAP_ATTACHMENT_FILTER` config setting (default: `documents_only`)
- Add `attachment_filter` column to `UserImapAccount` model for per-user override
- Migration 032 adds the column to `user_imap_accounts` table
- Update `fetch_attachments_and_enqueue()` to respect filter (documents_only/all)
- Update `pull_inbox()`, `_pull_user_imap_accounts()`, and
`_pull_user_integration_imap()` to pass the resolved filter
- Update IMAP accounts API (schemas, create/update handlers, response serializer)
- Update IMAP accounts UI to show attachment filter dropdown in modal and
display filter badges on account cards
- Add 6 new tests covering attachment filter behaviour
- Update ConfigurationGuide.md, EmailIngestion.md, and .env.demo
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 00:59:54 +00:00
github-actions[bot]
8898d3ccc8
chore(release): update build metadata files [skip ci]
2026-03-12 00:56:46 +00:00
semantic-release
2c53d1cd4f
0.121.1
...
Automatically generated by python-semantic-release
2026-03-12 00:56:42 +00:00
Christian Krakau-Louis
d8957263ee
Merge pull request #603 from christianlouis/copilot/fix-duplicate-audit-log-menu
...
fix: remove duplicate Audit Logs nav entry and record login/logout events in audit log
2026-03-12 01:56:21 +01:00
github-actions[bot]
50ef607293
docs(changelog): update changelog [skip ci]
2026-03-12 00:56:10 +00:00
Christian Krakau-Louis
14b892b6d4
Merge pull request #601 from christianlouis/copilot/improve-code-test-coverage
...
test: improve coverage for app/utils/user_notification.py from ~50% to 100%
2026-03-12 01:55:49 +01:00
copilot-swe-agent[bot]
78204c2490
test(notifications): improve coverage for user_notification.py to 100%
...
Add 22 new unit tests in tests/test_user_notification_service.py covering
all previously-uncovered branches in app/utils/user_notification.py:
- create_in_app_notification: exception/rollback path
- _send_email_notification: SMTP success (TLS+creds, no-TLS, no-creds),
SMTP exception, sender_email fallbacks
- _send_webhook_notification: success with/without secret, HTTP errors
- dispatch_user_notification: email/webhook pref dispatch, no target_id
skip, inactive target skip, invalid JSON config, null config, outer
exception handling, push notification sent/exception, unknown channel_type
Combined coverage: 49.52% → 100%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 00:44:59 +00:00
github-actions[bot]
7fb534954e
chore(release): update build metadata files [skip ci]
2026-03-12 00:40:23 +00:00
semantic-release
6bc5b19da2
0.121.0
...
Automatically generated by python-semantic-release
2026-03-12 00:40:20 +00:00
Christian Krakau-Louis
0aa1df3920
Merge pull request #588 from christianlouis/copilot/add-social-logins-configuration
...
feat(auth): add social login support for Google, Microsoft, Apple, and Dropbox
2026-03-12 01:40:04 +01:00
copilot-swe-agent[bot]
1e8f433419
fix: remove duplicate Audit Logs nav entry and add login/logout audit log events
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 00:39:15 +00:00
copilot-swe-agent[bot]
2dfb96ee44
Initial plan
2026-03-12 00:36:28 +00:00
github-actions[bot]
04cde33d01
docs(changelog): update changelog [skip ci]
2026-03-12 00:32:36 +00:00
Christian Krakau-Louis
3a68eeebba
Merge pull request #602 from christianlouis/copilot/improve-test-coverage-audit-service
...
test: raise audit_service.py coverage from 59% to 100%
2026-03-12 01:32:18 +01:00
copilot-swe-agent[bot]
5e45b68cc1
Initial plan
2026-03-12 00:31:45 +00:00
copilot-swe-agent[bot]
10d415ae0c
Initial plan
2026-03-12 00:29:46 +00:00
copilot-swe-agent[bot]
7438551080
test: improve coverage for app/utils/audit_service.py from 59% to 100%
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 00:28:42 +00:00
copilot-swe-agent[bot]
1edb342e57
Initial plan
2026-03-12 00:19:33 +00:00
copilot-swe-agent[bot]
615882adf4
Initial plan
2026-03-12 00:18:59 +00:00
github-actions[bot]
7970c1f518
chore(release): update build metadata files [skip ci]
2026-03-12 00:14:59 +00:00
semantic-release
bb8f324e90
0.120.0
...
Automatically generated by python-semantic-release
2026-03-12 00:14:55 +00:00
Christian Krakau-Louis
80dd117ebf
Merge pull request #587 from christianlouis/copilot/add-apple-drive-icloud-support
...
feat(storage): add Apple iCloud Drive storage provider
2026-03-12 01:14:37 +01:00
github-actions[bot]
3a4f7452c0
chore(release): update build metadata files [skip ci]
2026-03-12 00:13:30 +00:00
semantic-release
09c485cede
0.119.0
...
Automatically generated by python-semantic-release
2026-03-12 00:13:27 +00:00
Christian Krakau-Louis
83e83fff73
Merge pull request #583 from christianlouis/copilot/add-compliance-templates
...
fix(migrations): merge main and rechain compliance migration as 031
2026-03-12 01:13:08 +01:00
copilot-swe-agent[bot]
e94844a55e
Merge: prefer rebased local over stale remote
2026-03-12 00:00:52 +00:00
copilot-swe-agent[bot]
054af636e3
fix(migrations): merge main and rechain compliance migration as 031 after 030_add_mobile_devices
...
Merge main branch into compliance templates feature branch.
Main had advanced with migrations 027-030 (ensure_shared_links,
audit_logs, user_language_preference, mobile_devices) since this
branch forked. Our compliance migration was 027 with down_revision
026, which conflicted with main's 027_ensure_shared_links_table.
Changes:
- Merge main (including i18n, audit logs, mobile, GraphQL features)
- Resolve conflicts in app/api/__init__.py, app/models.py, tests/conftest.py
- Rename 027_add_compliance_templates → 031_add_compliance_templates
- Rechain: down_revision 026_add_scheduled_jobs → 030_add_mobile_devices
- Add ComplianceTemplate to migrations/env.py imports
- Alembic now has single head: 031_add_compliance_templates
2026-03-12 00:00:29 +00:00
copilot-swe-agent[bot]
50af0ea679
fix(tests): add iCloud mocks to all test files and address code review feedback
...
- Add _should_upload_to_icloud mock to test_coverage_uploads_notification.py
(_all_should_upload_false helper + 3 inline patch blocks)
- Add cfg.icloud_username/password = None to all onboarding test mocks
- Add iCloud creds to fully-configured onboarding test
- Fix noqa comment accuracy (unofficial third-party, not first-party)
- Replace generic Exception with RuntimeError in upload error handler
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-11 23:59:19 +00:00
github-actions[bot]
78a245d3a5
chore(release): update build metadata files [skip ci]
2026-03-11 23:43:31 +00:00
semantic-release
8b07f7201f
0.118.0
...
Automatically generated by python-semantic-release
2026-03-11 23:43:28 +00:00
Christian Krakau-Louis
39db5fc564
Merge pull request #600 from christianlouis/copilot/add-graphql-api
...
feat: add GraphQL API alongside REST at /graphql
2026-03-12 00:43:10 +01:00
copilot-swe-agent[bot]
528f0a624d
fix: remove accidental pip artifact file and update docs for iCloud Drive
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-11 23:38:35 +00:00
copilot-swe-agent[bot]
30f06e0b32
feat(storage): add Apple iCloud Drive storage provider
...
Add iCloud Drive as a new storage destination using the pyicloud library.
Includes upload task, configuration, user integration handler, provider
status, onboarding support, and comprehensive tests.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-11 23:38:35 +00:00
copilot-swe-agent[bot]
9bc23aa40b
test(tasks): add _should_upload_to_icloud mock to send_to_all tests
...
Add icloud upload check mock alongside existing _should_upload_to_*
function mocks in all TestSendToAllDestinations test methods.
Changes:
- Import _should_upload_to_icloud from app.tasks.send_to_all
- Add @patch decorator for _should_upload_to_icloud in 9 test methods
- Add mock_icloud parameter to each test method signature
- Set mock_icloud.return_value = False where other mocks are set to False
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-11 23:38:34 +00:00
copilot-swe-agent[bot]
9c71e9aabf
Initial plan
2026-03-11 23:38:34 +00:00
github-actions[bot]
40d976ed82
chore(release): update build metadata files [skip ci]
2026-03-11 23:34:40 +00:00
semantic-release
39671ad3b9
0.117.1
...
Automatically generated by python-semantic-release
2026-03-11 23:34:37 +00:00
Christian Krakau-Louis
1c4a261f01
Merge pull request #599 from christianlouis/copilot/fix-main-test-failures
...
fix: resolve 47 failing CI tests across i18n, templates, and migrations
2026-03-12 00:34:18 +01:00