copilot-swe-agent[bot]
4f9f458151
test(tasks): add comprehensive tests for multi-tenant polling functions
...
- Add tests for owner_id passthrough in fetch_attachments_and_enqueue
- Add tests for _pull_user_integration_imap (success, failure, DB error, incomplete config)
- Add tests for _is_safe_watch_path path traversal security
- Add tests for _enqueue_file owner_id forwarding
- Add tests for _scan_user_watch_folder (scan, skip processed, nonexistent dir)
- Add tests for _pull_user_integration_watch_folders (success, unsafe path, failure, DB error)
- Add tests verifying scan_all_watch_folders calls user integration polling
- Add tests verifying pull_all_inboxes calls both legacy and integration polling
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 18:43:18 +00:00
copilot-swe-agent[bot]
019807d0f5
feat(tasks): refactor IMAP and watch folder polling to support multi-tenant user attribution
...
- Add owner_id parameter to pull_inbox() and fetch_attachments_and_enqueue()
to attribute ingested documents to the correct user
- Add _pull_user_integration_imap() to poll IMAP sources from UserIntegration model
- Add _pull_user_integration_watch_folders() to scan watch folders from UserIntegration model
- Add _is_safe_watch_path() for path traversal security on user-configured paths
- Add _scan_user_watch_folder() that passes owner_id to _enqueue_file()
- Update _enqueue_file() to forward owner_id to process_document/convert_to_pdf
- Update celery beat schedule to always enable IMAP and watch folder polling
(user integrations can exist without system-level config)
- Ensure individual connection failures don't crash the polling loop
- Update existing tests for new function signatures
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 18:38:22 +00:00
copilot-swe-agent[bot]
322aef98ae
Initial plan
2026-03-08 18:18:34 +00:00
github-actions[bot]
107ac9f4e9
chore(release): update build metadata files [skip ci]
2026-03-08 18:08:32 +00:00
semantic-release
9b4d8e2bfe
0.101.0
...
Automatically generated by python-semantic-release
2026-03-08 18:08:29 +00:00
Christian Krakau-Louis
f714a9ed31
Merge pull request #556 from christianlouis/copilot/feature-universal-dashboard
...
feat(ui): Universal Sources & Destinations integrations dashboard
2026-03-08 19:08:11 +01:00
github-actions[bot]
13d2230089
chore(release): update build metadata files [skip ci]
2026-03-08 17:58:24 +00:00
semantic-release
d846704aa6
0.100.0
...
Automatically generated by python-semantic-release
2026-03-08 17:58:21 +00:00
Christian Krakau-Louis
58733d6450
Merge pull request #555 from christianlouis/copilot/restructure-help-page
...
feat(help): replace MkDocs redirect with user-facing Help Center + Zammad integration
2026-03-08 18:58:02 +01:00
copilot-swe-agent[bot]
0edb94158d
feat(ui): replace Email Ingestion nav with unified Integrations link
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:41:49 +00:00
copilot-swe-agent[bot]
e27bacee3b
refactor(ui): address code review - optimize queries, extract helpers, improve error handling
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:40:23 +00:00
copilot-swe-agent[bot]
883f123138
fix(security): add SRI to jQuery CDN, escape chat ID, use server-side hostname
...
- Add integrity/crossorigin attributes to jQuery 3.6.0 CDN script
- Use | int filter on zammad_chat_id to prevent XSS
- Replace request.headers.get('host') with settings.external_hostname
for canonical URL and Open Graph tags to prevent host-header injection
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:40:15 +00:00
copilot-swe-agent[bot]
351d6f3f4f
fix: update docs endpoint test and add Zammad settings metadata
...
- Update test_docs_endpoint to use new /admin/api-docs path
- Add SETTING_METADATA entries for zammad_url, zammad_chat_enabled,
zammad_chat_id, zammad_form_enabled, support_email
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:37:29 +00:00
copilot-swe-agent[bot]
2c652dcc3e
feat(ui): add unified Sources & Destinations integrations dashboard
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:34:22 +00:00
copilot-swe-agent[bot]
af3eed4040
feat(help): restructure /help as user-facing Help Center with Zammad integration
...
- Replace MkDocs redirect with a branded, SEO-optimised Help Center template
- Add sections: Quick Start, Sources, Destinations, Workflows, FAQ, Support
- Integrate optional Zammad live-chat widget and ticket form
- Add config settings: ZAMMAD_URL, ZAMMAD_CHAT_ENABLED, ZAMMAD_CHAT_ID,
ZAMMAD_FORM_ENABLED, SUPPORT_EMAIL
- Move MkDocs developer docs from /help to /developer-docs
- Move interactive API docs (Swagger/ReDoc) to /admin/api-docs and /admin/api-redoc
- Add API Docs and Developer Docs links to Admin menu (desktop + mobile)
- Update navigation Help link from /help/ to /help
- Update .env.demo with Zammad configuration examples
- Document new settings in docs/ConfigurationGuide.md
- Rewrite tests to cover new Help Center behaviour
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 17:25:34 +00:00
github-actions[bot]
c2c7a73dee
chore(release): update build metadata files [skip ci]
2026-03-08 17:12:24 +00:00
copilot-swe-agent[bot]
f3627581ab
Initial plan
2026-03-08 17:12:22 +00:00
semantic-release
0cda2dafdc
0.99.0
...
Automatically generated by python-semantic-release
2026-03-08 17:12:21 +00:00
Christian Krakau-Louis
a7a807bb11
Merge pull request #551 from christianlouis/copilot/verify-stripe-billing-implementation
...
fix(billing): cast SQLAlchemy Column[str] to str to resolve mypy typeddict-item error
2026-03-08 18:11:58 +01:00
Christian Krakau-Louis
6cdca24333
Potential fix for code scanning alert no. 332: Information exposure through an exception
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-08 18:11:38 +01:00
github-actions[bot]
b2196a47be
chore(release): update build metadata files [skip ci]
2026-03-08 17:11:35 +00:00
semantic-release
6437364800
0.98.0
...
Automatically generated by python-semantic-release
2026-03-08 17:11:32 +00:00
Christian Krakau-Louis
81ac695c43
Merge pull request #554 from christianlouis/copilot/add-api-subscription-quota-enforcement
...
feat(integrations): add subscription quota enforcement, connection test, and quota endpoint
2026-03-08 18:11:15 +01:00
copilot-swe-agent[bot]
78c9df4bb0
Initial plan
2026-03-08 17:11:06 +00:00
copilot-swe-agent[bot]
c4b4643f6e
fix(integrations): sanitize error messages and add SSRF protection for WebDAV test
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 15:57:27 +00:00
copilot-swe-agent[bot]
71350f2ad6
docs(api): add integrations quota enforcement and test endpoint documentation
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 15:54:45 +00:00
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]
9627667d82
fix(billing): cast plan.name to str to fix mypy typeddict-item error
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 15:33:57 +00:00
copilot-swe-agent[bot]
ca9cf868cf
Initial plan
2026-03-08 15:29:08 +00:00
Christian Krakau-Louis
48e3552e1a
Potential fix for code scanning alert no. 333: Information exposure through an exception
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-08 16:27:53 +01:00
copilot-swe-agent[bot]
002cdf312b
fix(billing): address code review - remove duplicate mode logic, accessibility improvements, robust test assertions
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 15:18:53 +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
copilot-swe-agent[bot]
223539bebb
feat(billing): expose Stripe price IDs in plan API, add Stripe Setup Wizard and sync endpoints
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 15:14:42 +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]
b6a0648366
Initial plan
2026-03-08 15:01:54 +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