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
github-actions[bot]
95af9ffe5e
docs(changelog): update changelog [skip ci]
2026-03-12 22:34:36 +00:00
Christian Krakau-Louis
4458b18530
Add configuration for Crowdin project
2026-03-12 23:34:18 +01:00
github-actions[bot]
ca88d7d425
docs(changelog): update changelog [skip ci]
2026-03-12 22:23:25 +00:00
Christian Krakau-Louis
3b0e7b27cc
Update Crowdin configuration file
2026-03-12 23:23:04 +01:00
copilot-swe-agent[bot]
5ab7226f1a
feat(i18n): add complete Spanish translations for 744 keys in es.json
...
Translated all UI text, labels, messages, error messages, and descriptions
from English placeholders to proper Spanish. Preserved:
- Brand names (DocuElevate, Dropbox, Google Drive, OneDrive, Amazon S3, etc.)
- Proper names (Christian Krakau-Louis)
- Technical abbreviations (IP, ID, ENV, API, OCR, FTP, SFTP, IMAP, SMTP)
- Native language names (language.* keys)
- Placeholder variables ({name}, {count}, {query}, {year}, etc.)
- Numeric error codes (404, 500)
Result: 901 keys total, 0 missing keys, only 55 language-neutral
same-value keys remaining (all correctly untranslated).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-12 22:14:39 +00:00
copilot-swe-agent[bot]
f737f2903a
feat(i18n): add missing Polish translations to pl.json
...
Translated 285 keys that had English values in pl.json. All sections
now have proper Polish translations including auth, error pages, files
UI, help center, index/landing page, integrations, navigation, search,
status, and upload pages. Language names are now in Polish (e.g.,
Angielski for English, Francuski for French).
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 22:12:02 +00:00
copilot-swe-agent[bot]
f70fa65969
Merge branch 'main' into copilot/add-conditional-routing
...
Resolve conflicts in app/api/__init__.py and app/models.py.
Renumber migration 027_add_routing_rules → 035_add_routing_rules.
Fix migration chain: down_revision → 034_add_user_profile_settings.
Add PipelineRoutingRule to migrations/env.py.
2026-03-12 22:07:54 +00:00
github-actions[bot]
3201733a50
chore(release): update build metadata files [skip ci]
2026-03-12 22:06:57 +00:00
semantic-release
7cb82bb6ac
0.125.1
...
Automatically generated by python-semantic-release
2026-03-12 22:06:54 +00:00
Christian Krakau-Louis
2c36b7dc95
Merge pull request #609 from christianlouis/copilot/ensure-de-json-translations
...
fix(i18n): sync all translation files to match en.json key set
2026-03-12 23:06:30 +01:00
copilot-swe-agent[bot]
bb2c3ac759
fix(i18n): use plain plural form for files.files_selected in fr.json
...
Changed 'fichier(s) sélectionné(s)' to 'fichiers sélectionnés' for
consistency with the English source which uses 'files selected' (plain
plural), not 'file(s) selected'.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 22:05:11 +00:00
copilot-swe-agent[bot]
5de7e01a86
feat(i18n): add complete French translations to fr.json
...
Translated 677 previously untranslated keys in fr.json from English to French.
The file now has 825 properly translated keys (up from 148), with the
remaining 76 keys intentionally the same as English (brand names like
DocuElevate/Dropbox/Google Drive, language names in their native form,
and technical terms like IP/ID/ENV/404/500 that are identical in French).
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 22:03:12 +00: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
copilot-swe-agent[bot]
fd23c49f20
Initial plan
2026-03-12 21:51:27 +00:00
copilot-swe-agent[bot]
0c9e413cd0
Initial plan
2026-03-12 21:51:21 +00:00
copilot-swe-agent[bot]
2aebf04ff5
Initial plan
2026-03-12 21:51:16 +00:00
copilot-swe-agent[bot]
c9dd5cce11
Initial plan
2026-03-12 21:51:10 +00:00
github-actions[bot]
77f392b29b
chore(release): update build metadata files [skip ci]
2026-03-12 21:44:46 +00:00
semantic-release
4c81b1bd1f
0.125.0
...
Automatically generated by python-semantic-release
2026-03-12 21:44:42 +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]
270e1a56b5
fix(tests): pass mock db to whoami_handler in test_api_auth_enabled.py
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 17:03:30 +00: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
github-actions[bot]
01e27ac905
chore(release): update build metadata files [skip ci]
2026-03-12 13:08:52 +00:00
semantic-release
709964b207
0.124.0
...
Automatically generated by python-semantic-release
2026-03-12 13:08:48 +00:00
Christian Krakau-Louis
028f592817
Merge pull request #596 from christianlouis/copilot/refactor-template-localization
...
fix(i18n): wire _ into all Jinja2 instances, sync translation files, fix pipelines.html orphan tag
2026-03-12 14:08:26 +01: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
copilot-swe-agent[bot]
13161994da
Initial plan
2026-03-12 12:45:32 +00:00
Christian Krakau-Louis
dd7f7dfd97
Merge branch 'main' into copilot/refactor-template-localization
2026-03-12 12:44:33 +01:00
github-actions[bot]
5a546dc0f1
chore(release): update build metadata files [skip ci]
2026-03-12 11:43:33 +00:00
semantic-release
75b522e36c
0.123.1
...
Automatically generated by python-semantic-release
2026-03-12 11:43:30 +00:00
Christian Krakau-Louis
5d239e904b
Merge pull request #606 from christianlouis/copilot/fix-ruff-not-clearing-main
...
fix(tests): repair two broken tests — missing DB table and MagicMock ip_address
2026-03-12 12:43:08 +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]
be6b49c872
fix(tests): fix two failing tests - missing DB table and MagicMock IP address
...
- tests/test_database.py: add user_imap_accounts table to the regression
test's initial DB setup (migration 022 creates it before rev 026, so it
must exist for migration 032's ALTER TABLE to succeed)
- tests/test_local_auth.py: configure mock_request.headers.get to return
None and client=None so get_client_ip() returns "unknown" instead of an
un-serialisable MagicMock that broke the audit_logs INSERT in
test_local_login_success and test_local_login_by_email
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-12 10:49:49 +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
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