Christian Krakau-Louis
ebbbd3d62e
Merge pull request #731 from christianlouis/copilot/fix-mobile-app-login
...
fix: resolve CI failures from stale request mocks, Annotated+Depends pattern, and CodeQL sensitive data logging
2026-03-16 15:29:15 +01:00
copilot-swe-agent[bot]
0444b14d87
fix(test): update url_upload test mocks from requests to httpx
...
The tests were patching `app.api.url_upload.requests.get` but the module
uses `httpx.AsyncClient`. Updated 4 tests across 2 files to use the
correct `httpx.AsyncClient.stream` mock pattern with `AsyncMock`,
matching the existing working tests in test_url_upload.py.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 13:03:18 +00:00
github-actions[bot]
e8d60006c2
chore(release): update build metadata files [skip ci]
2026-03-16 12:55:53 +00:00
semantic-release
97fe83fba2
0.149.0
...
Automatically generated by python-semantic-release
2026-03-16 12:55:49 +00:00
Christian Krakau-Louis
c81914f78d
Merge pull request #729 from christianlouis/copilot/add-default-language-version-support
...
feat(translation): automatic document translation to configurable default language
2026-03-16 13:55:25 +01:00
copilot-swe-agent[bot]
0c10fcbafc
fix: register translate task in celery_worker and add setting metadata
...
- Import translate_to_default_language in celery_worker.py
- Add default_document_language to SETTING_METADATA in settings_service.py
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 12:32:03 +00:00
copilot-swe-agent[bot]
7bd667e271
fix(security): clarify billing log message wording
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 12:23:07 +00:00
copilot-swe-agent[bot]
075a505085
feat(profile): expose default_document_language in profile API and UI
...
- Add default_document_language to ProfileResponse and ProfileUpdateRequest
- Handle validation in PATCH /api/profile endpoint
- Add dropdown in profile.html template with Alpine.js binding
- Add translation keys for profile UI labels
- Add comprehensive tests for profile default language feature
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 12:13:54 +00:00
copilot-swe-agent[bot]
b7a3b301a3
fix(security): remove clear-text logging of sensitive data and fix Annotated+Depends pattern
...
- audit_logs.py: Remove _db_dep pattern that fails with latest FastAPI on
Python 3.11. Use clean DbSession = Annotated[Session, Depends(get_db)]
without default values.
- billing.py: Remove owner_id from log messages to fix CodeQL clear-text
logging of sensitive information alerts.
- files.py: Remove owner_id from log messages to fix CodeQL clear-text
logging of sensitive information alerts.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 12:07:04 +00:00
copilot-swe-agent[bot]
8cc817930d
Merge remote-tracking branch 'origin/main' into copilot/fix-mobile-app-login
2026-03-16 11:58:14 +00:00
copilot-swe-agent[bot]
3a221a62cd
feat(translation): add model, config, task, API, and UI for default document language translation
...
- Add detected_language, default_language_text, default_language_code columns to FileRecord
- Add default_document_language column to UserProfile
- Add DEFAULT_DOCUMENT_LANGUAGE config setting (defaults to "en")
- Create translate_to_default_language Celery task
- Integrate translation trigger into embed_metadata_into_pdf pipeline
- Add /api/files/{id}/translate and /api/files/{id}/translation/default API endpoints
- Add /files/{id}/text/default-language view endpoint
- Update file_view.html with translation sections (default language, on-the-fly)
- Add translation keys to en.json
- Create Alembic migration 036
- Update .env.demo
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 11:54:13 +00:00
github-actions[bot]
0e72a965d5
chore(release): update build metadata files [skip ci]
2026-03-16 11:41:52 +00:00
semantic-release
491aface29
0.148.0
...
Automatically generated by python-semantic-release
2026-03-16 11:41:49 +00:00
Christian Krakau-Louis
1b1cbfce39
Merge pull request #732 from christianlouis/copilot/implement-extract-pdf-metadata
...
feat(tasks): map embedded PDF metadata to app-specific keys in upload_to_email
2026-03-16 12:41:28 +01:00
copilot-swe-agent[bot]
f2255f9a1c
docs: improve docstring and comment clarity in extract_metadata_from_file
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 11:29:53 +00:00
copilot-swe-agent[bot]
9d6bfde288
feat(tasks): extract and map embedded PDF metadata in upload_to_email
...
Implement extraction of embedded PDF metadata using pypdf, mapping
/Title, /Author, /Subject, /Keywords to filename, absender,
document_type, and tags respectively. JSON metadata takes precedence;
PDF metadata fills missing fields only.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 11:27:34 +00:00
copilot-swe-agent[bot]
9a256741d5
fix(auth): address review comments - improve debug logging, use SimpleNamespace, fix session cleanup
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 11:26:52 +00:00
copilot-swe-agent[bot]
15a9ed9435
fix(auth): resolve Bearer token in get_current_owner_id for mobile API auth
...
get_current_owner_id() only checked the session for authenticated users.
When the mobile app sends Authorization: Bearer <token>, there is no
session cookie, so the Depends(_get_owner_id) dependency raised HTTP 401
before the @require_login wrapper could resolve the Bearer token.
The function now checks three sources in order:
1. Session user dict (existing behavior)
2. request.state.api_token_user (cached by require_login or prior call)
3. Direct Bearer token resolution via _resolve_bearer_user (new)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 11:25:02 +00:00
copilot-swe-agent[bot]
8125a01f11
Initial plan
2026-03-16 11:16:38 +00:00
github-actions[bot]
3beb243b31
chore(release): update build metadata files [skip ci]
2026-03-16 11:16:27 +00:00
semantic-release
ddea132b68
0.147.3
...
Automatically generated by python-semantic-release
2026-03-16 11:16:25 +00:00
Christian Krakau-Louis
3447a408db
Merge pull request #714 from christianlouis/perf/async-onedrive-token-refresh-7215258063318287629
...
⚡ Async OneDrive token validation using httpx
2026-03-16 12:15:39 +01:00
Christian Krakau-Louis
cf2ffc97f6
Merge pull request #692 from christianlouis/refactor-audit-logs-annotated-b008-6104828608171783200
...
🧹 Fix Annotated pattern in audit_logs.py (Ruff B008)
2026-03-16 12:15:17 +01:00
Christian Krakau-Louis
40cc10c6e2
Merge branch 'main' into refactor-audit-logs-annotated-b008-6104828608171783200
2026-03-16 12:15:06 +01:00
Christian Krakau-Louis
1f1157e86f
Merge pull request #696 from christianlouis/code-health/simplify-ui-upload-12009112042086709661
...
🧹 [Code Health] Simplify complex endpoint `ui_upload`
2026-03-16 12:14:20 +01:00
Christian Krakau-Louis
2a8a4b7471
Merge branch 'main' into code-health/simplify-ui-upload-12009112042086709661
2026-03-16 12:14:11 +01:00
github-actions[bot]
cd7322d989
chore(release): update build metadata files [skip ci]
2026-03-16 11:12:59 +00:00
semantic-release
9dc2ec3a7a
0.147.2
...
Automatically generated by python-semantic-release
2026-03-16 11:12:55 +00:00
Christian Krakau-Louis
6bb695b2ae
Merge pull request #720 from christianlouis/perf/async-url-upload-7099409897484162483
...
⚡ Optimize URL upload with asynchronous I/O
2026-03-16 12:12:32 +01:00
Christian Krakau-Louis
b8a1ac52b3
Merge branch 'main' into perf/async-url-upload-7099409897484162483
2026-03-16 12:12:21 +01:00
github-actions[bot]
66fdb11e39
docs(changelog): update changelog [skip ci]
2026-03-16 11:11:05 +00:00
Christian Krakau-Louis
6837198409
Merge pull request #724 from christianlouis/refactor/audit-logs-annotated-b008-6104828608171783200
...
style: resolve conflicts and use Annotated pattern in audit_logs.py
2026-03-16 12:10:42 +01:00
Christian Krakau-Louis
e10f0bff42
Merge branch 'main' into refactor/audit-logs-annotated-b008-6104828608171783200
2026-03-16 12:10:32 +01:00
github-actions[bot]
0f312160bc
docs(changelog): update changelog [skip ci]
2026-03-16 11:08:52 +00:00
Christian Krakau-Louis
cb1e81355d
Merge pull request #726 from christianlouis/add-tests-saved-searches-4325714364005279059
...
🧪 Add tests for saved searches API
2026-03-16 12:08:31 +01:00
copilot-swe-agent[bot]
7ff91af2cb
Initial plan
2026-03-16 11:05:13 +00:00
github-actions[bot]
5734df2d50
docs(changelog): update changelog [skip ci]
2026-03-16 10:57:47 +00:00
Christian Krakau-Louis
1bba4899ba
Merge pull request #730 from christianlouis/perf-upload-15584535240168516797
...
Fix mypy type checking error by adding types-aiofiles to dev requirem…
2026-03-16 11:57:29 +01:00
github-actions[bot]
275f706c87
chore(release): update build metadata files [skip ci]
2026-03-16 10:45:17 +00:00
semantic-release
d30ac49c85
0.147.1
...
Automatically generated by python-semantic-release
2026-03-16 10:45:13 +00:00
Christian Krakau-Louis
fd15c36665
Merge pull request #727 from christianlouis/copilot/fix-mypy-errors-main
...
fix: resolve 8 test failures and mypy error on main
2026-03-16 11:44:51 +01:00
copilot-swe-agent[bot]
ff1fde5e48
Initial plan
2026-03-16 10:43:17 +00:00
google-labs-jules[bot]
4f7f33cf1e
🧪 Add tests for saved searches API endpoints
...
Added a new test file `tests/test_api_saved_searches.py` containing a comprehensive test suite for the CRUD operations provided in `app/api/saved_searches.py`. The suite validates happy paths, error conditions (like missing filters, name limits, duplicates), and user isolation using an in-memory SQLite database. Fixed Ruff formatting error that caused the CI pipeline to fail in the previous commit.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 10:34:01 +00:00
copilot-swe-agent[bot]
c7ff177e17
fix: resolve test failures and mypy errors on main
...
- Fix Dropbox tests: patch httpx.AsyncClient instead of non-existent requests.post
- Add SETTING_METADATA entries for 6 logging settings (log_level, log_format, log_syslog_*)
- Add types-aiofiles to dev dependencies to fix mypy import-untyped error
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 10:32:20 +00:00
github-actions[bot]
46c4031276
style: apply ruff auto-fix
...
- Auto-formatted code with ruff format
- Applied ruff linting fixes with --fix
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-16 10:23:16 +00:00
copilot-swe-agent[bot]
012be0dffb
Initial plan
2026-03-16 10:22:54 +00:00
google-labs-jules[bot]
7798ac3b57
🧪 Add tests for saved searches API endpoints
...
Added a new test file `tests/test_api_saved_searches.py` containing a comprehensive test suite for the CRUD operations provided in `app/api/saved_searches.py`. The suite validates happy paths, error conditions (like missing filters, name limits, duplicates), and user isolation using an in-memory SQLite database.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-16 10:22:18 +00:00
github-actions[bot]
dd7c8f0342
docs(changelog): update changelog [skip ci]
2026-03-16 10:22:03 +00:00
Christian Krakau-Louis
70c46c8ec0
Merge pull request #721 from christianlouis/copilot/sub-pr-692
...
Fix audit_logs.py: proper Annotated/Depends pattern, remove debug artifacts
2026-03-16 11:21:51 +01:00
Christian Krakau-Louis
6e497aadca
Merge pull request #725 from christianlouis/fix-db-migrate-sqli-17066903272609783485
...
🔒 Fix potential SQL injection in db_migrate preview
2026-03-16 11:21:32 +01:00