copilot-swe-agent[bot]
cfc52fd355
feat(auth): make OAuth credentials user-specific via UserIntegration records
...
Setup pages now accept an integration_id query param to save OAuth
credentials to the user's personal UserIntegration record instead
of global settings. The integrations dashboard shows an "Authorize"
button for OAuth types (Dropbox, Google Drive, OneDrive) that need
credentials.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 18:48:11 +00:00
copilot-swe-agent[bot]
73119e0cef
feat(auth): save OAuth credentials per-user to UserIntegration records
...
- Add 'Authorize' button to integration cards for OAuth types without credentials
- Add isOAuthType() helper and update info box in create/edit modal
- Accept integration_id query param in Dropbox, Google Drive, OneDrive setup views
- Store integration_id in sessionStorage on setup pages
- Add per-user flow in OAuth callbacks: PUT credentials to /api/integrations/{id}
- Preserve existing global flow as fallback when no integration_id is present
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-08 18:41:13 +00:00
copilot-swe-agent[bot]
ba387b8e8b
fix(ui): correct OAuth setup page links in integrations dashboard
...
The oauthLink() function in integrations_dashboard.html returned
/dropbox, /google-drive, /onedrive which are not valid routes
(404). The actual view routes are /dropbox-setup,
/google-drive-setup, /onedrive-setup.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-08 18:21:52 +00:00
copilot-swe-agent[bot]
dd3002d2c8
Initial plan
2026-03-08 18:17:53 +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