Commit Graph

2480 Commits

Author SHA1 Message Date
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