Christian Krakau-Louis
0da97eb092
New translations en.json (Estonian)
2026-03-12 23:35:19 +01:00
Christian Krakau-Louis
53736a1906
New translations en.json (Persian)
2026-03-12 23:35:18 +01:00
Christian Krakau-Louis
250b008304
New translations en.json (Galician)
2026-03-12 23:35:16 +01:00
Christian Krakau-Louis
e5beb48f69
New translations en.json (Vietnamese)
2026-03-12 23:35:15 +01:00
Christian Krakau-Louis
f61691b8de
New translations en.json (Chinese Simplified)
2026-03-12 23:35:13 +01:00
Christian Krakau-Louis
db4e1f7b6d
New translations en.json (Ukrainian)
2026-03-12 23:35:11 +01:00
Christian Krakau-Louis
57910b7af5
New translations en.json (Turkish)
2026-03-12 23:35:10 +01:00
Christian Krakau-Louis
7b5a0bbab9
New translations en.json (Swedish)
2026-03-12 23:35:09 +01:00
Christian Krakau-Louis
38e2b77362
New translations en.json (Serbian (Cyrillic))
2026-03-12 23:35:08 +01:00
Christian Krakau-Louis
5264d6c66c
New translations en.json (Slovenian)
2026-03-12 23:35:07 +01:00
Christian Krakau-Louis
62624bc5ff
New translations en.json (Slovak)
2026-03-12 23:35:06 +01:00
Christian Krakau-Louis
c0fb2c4069
New translations en.json (Russian)
2026-03-12 23:35:05 +01:00
Christian Krakau-Louis
26ce680f03
New translations en.json (Portuguese)
2026-03-12 23:35:04 +01:00
Christian Krakau-Louis
0e3064b4c1
New translations en.json (Polish)
2026-03-12 23:35:02 +01:00
Christian Krakau-Louis
9d3da998df
New translations en.json (Punjabi)
2026-03-12 23:35:01 +01:00
Christian Krakau-Louis
ec651980a2
New translations en.json (Norwegian)
2026-03-12 23:35:00 +01:00
Christian Krakau-Louis
98567e0261
New translations en.json (Dutch)
2026-03-12 23:34:59 +01:00
Christian Krakau-Louis
eb87f4fe9b
New translations en.json (Lithuanian)
2026-03-12 23:34:58 +01:00
Christian Krakau-Louis
fcbe7880a9
New translations en.json (Korean)
2026-03-12 23:34:57 +01:00
Christian Krakau-Louis
cee6697c82
New translations en.json (Japanese)
2026-03-12 23:34:56 +01:00
Christian Krakau-Louis
5b471a606c
New translations en.json (Italian)
2026-03-12 23:34:55 +01:00
Christian Krakau-Louis
f8c5270681
New translations en.json (Hungarian)
2026-03-12 23:34:54 +01:00
Christian Krakau-Louis
bf26c05036
New translations en.json (Hebrew)
2026-03-12 23:34:53 +01:00
Christian Krakau-Louis
c2982b8696
New translations en.json (Irish)
2026-03-12 23:34:52 +01:00
Christian Krakau-Louis
2c506da349
New translations en.json (Finnish)
2026-03-12 23:34:51 +01:00
Christian Krakau-Louis
a399641508
New translations en.json (Frisian)
2026-03-12 23:34:49 +01:00
Christian Krakau-Louis
34e367cb15
New translations en.json (Greek)
2026-03-12 23:34:48 +01:00
Christian Krakau-Louis
d865c6ac20
New translations en.json (German)
2026-03-12 23:34:47 +01:00
Christian Krakau-Louis
16ffa4264e
New translations en.json (Danish)
2026-03-12 23:34:46 +01:00
Christian Krakau-Louis
1f8a80c125
New translations en.json (Czech)
2026-03-12 23:34:45 +01:00
Christian Krakau-Louis
f78e535cc3
New translations en.json (Catalan)
2026-03-12 23:34:44 +01:00
Christian Krakau-Louis
3abb66659c
New translations en.json (Arabic)
2026-03-12 23:34:43 +01:00
Christian Krakau-Louis
d0f8e21b41
New translations en.json (Afrikaans)
2026-03-12 23:34:42 +01:00
Christian Krakau-Louis
652c1d630b
New translations en.json (Spanish)
2026-03-12 23:34:41 +01:00
Christian Krakau-Louis
f65f1840d5
New translations en.json (French)
2026-03-12 23:34:40 +01:00
Christian Krakau-Louis
ab97c3a7f2
New translations en.json (Romanian)
2026-03-12 23:34:39 +01:00
copilot-swe-agent[bot]
d3349e649e
fix(i18n): sync de.json keys with en.json — add 26 missing keys to en.json and all language files
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 21:57:31 +00:00
Christian Krakau-Louis
4345d5128f
Merge pull request #607 from christianlouis/copilot/add-user-settings-management
...
fix(tests): update whoami_handler call sites to pass required db argument
2026-03-12 22:44:13 +01:00
copilot-swe-agent[bot]
9583d6d96f
fix(profile): address code review feedback - early size check, CSRF helper, test constants
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 13:10:46 +00:00
copilot-swe-agent[bot]
b0d6f1ab60
feat(profile): add user self-service profile settings page and API
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 13:00:19 +00:00
copilot-swe-agent[bot]
b483ed16fc
fix(i18n): register _ in all Jinja2 template instances, sync translation files, fix pipelines.html
...
- Register _() translation function in app/auth.py, app/api/local_auth.py, and
app/api/billing.py template env globals to fix jinja2.exceptions.UndefinedError
- Update test_settings_template_has_db_wizard_link to assert i18n key instead of
literal "DB Wizard" (template now uses {{ _("settings.db_wizard_btn") }})
- Add 418 missing en.json keys to all 30 non-English translation files as English
fallbacks to fix test_all_languages_have_same_keys
- Fix orphan </template> tag in pipelines.html by adding missing
<template x-if="pipelineModal.saving"> opening tag (fixes djlint H025)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 12:46:11 +00:00
Christian Krakau-Louis
dd7f7dfd97
Merge branch 'main' into copilot/refactor-template-localization
2026-03-12 12:44:33 +01:00
copilot-swe-agent[bot]
cdd1524def
fix(i18n): restore social providers block in login.html, fix escaped quotes
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 11:39:13 +00:00
copilot-swe-agent[bot]
6de11e25bf
feat(i18n): localize 404, 500, billing_success, about, verify_email_sent templates
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 10:25:34 +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
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]
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
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
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