Commit Graph

2655 Commits

Author SHA1 Message Date
Christian Krakau-Louis 6cc4599d1e Merge pull request #755 from christianlouis/copilot/fix-timeout-error-notifications-api
fix: resolve merge conflict in database.py and remove duplicate entries from merge
2026-03-19 12:29:39 +01:00
github-actions[bot] 1d636d866a chore(release): update build metadata files [skip ci] 2026-03-19 11:16:35 +00:00
semantic-release 5869dd6fa6 0.157.2
Automatically generated by python-semantic-release
2026-03-19 11:16:32 +00:00
Christian Krakau-Louis 31a72026a8 Merge pull request #764 from christianlouis/copilot/update-devices-table-layout
fix(ui): compact devices page table to eliminate horizontal scrolling
2026-03-19 12:16:11 +01:00
copilot-swe-agent[bot] d34b8bceb9 fix(config): remove duplicate dictionary keys and class fields from merge
Remove duplicate SETTING_METADATA entries (db_pool_size, db_max_overflow,
db_pool_timeout, db_pool_recycle, upload_rate_limit_per_user,
upload_rate_limit_window) that were introduced when merging origin/main.
Also remove duplicate Settings class field definitions in config.py.

Fixes ruff F601 (repeated dictionary key literal) errors.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-19 11:07:03 +00:00
copilot-swe-agent[bot] b12e891682 fix(ui): improve devices page table layout to prevent horizontal scrolling
- Widen page container from max-w-4xl (896px) to max-w-6xl (1152px)
- Convert action buttons (Revoke/Reactivate/Delete) to icon-only (44×44px)
  with aria-label and title tooltip for accessibility
- Reduce table cell padding from px-6 py-4 to px-4 py-3

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-19 10:50:14 +00:00
copilot-swe-agent[bot] 9c5bd73794 Initial plan 2026-03-19 10:44:14 +00:00
copilot-swe-agent[bot] 2941f6e177 fix: resolve merge conflict in database.py
Merge origin/main into branch, resolving conflict in app/database.py.
Combined improvements from both branches:
- Keep pool_pre_ping=True and structured variable approach from feature branch
- Add explicit QueuePool import and poolclass assignment from main
2026-03-19 10:40:43 +00:00
github-actions[bot] be65703875 chore(release): update build metadata files [skip ci] 2026-03-19 10:12:48 +00:00
semantic-release 9ac8f29448 0.157.1
Automatically generated by python-semantic-release
2026-03-19 10:12:45 +00:00
Christian Krakau-Louis 786c909765 Merge pull request #763 from christianlouis/copilot/fix-send-to-docuelevate-function
fix(mobile): resolve "unmatched route docuelevate://" error on iOS "Open In…"
2026-03-19 11:12:21 +01:00
github-actions[bot] ba4ebd83b8 chore(release): update build metadata files [skip ci] 2026-03-19 10:12:15 +00:00
semantic-release 1773c12cb1 0.157.0
Automatically generated by python-semantic-release
2026-03-19 10:12:12 +00:00
Christian Krakau-Louis e1bd976697 Merge pull request #762 from christianlouis/copilot/allow-delete-disabled-api-keys
feat(api): delete disabled tokens/devices, reactivate revoked tokens, optional token lifetime
2026-03-19 11:11:49 +01:00
copilot-swe-agent[bot] e4749b4e7c feat(api): allow disabled tokens/devices to be deleted & reactivated; add token lifetime
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 23:43:16 +00:00
copilot-swe-agent[bot] f2b7db88ba fix(mobile): resolve iOS "unmatched route docuelevate://" error in Open In share flow
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 23:27:56 +00:00
copilot-swe-agent[bot] 5ef82050b8 Initial plan 2026-03-18 23:17:55 +00:00
copilot-swe-agent[bot] 98327edfc2 Initial plan 2026-03-18 23:15:15 +00:00
github-actions[bot] 6cc185a507 chore(release): update build metadata files [skip ci] 2026-03-18 22:29:06 +00:00
semantic-release 55127fee68 0.156.3
Automatically generated by python-semantic-release
2026-03-18 22:29:03 +00:00
Christian Krakau-Louis f91c57eacb Merge pull request #761 from christianlouis/copilot/fix-qr-code-login-error
fix(auth): exempt /api/qr-auth/claim from CSRF to fix mobile QR login
2026-03-18 23:28:41 +01:00
copilot-swe-agent[bot] a4aaebfe66 fix(auth): exempt /api/qr-auth/claim from CSRF to fix mobile QR login
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 22:25:27 +00:00
copilot-swe-agent[bot] 11c8d80d59 Initial plan 2026-03-18 22:19:44 +00:00
github-actions[bot] d8d2016f85 docs(changelog): update changelog [skip ci] 2026-03-18 22:18:24 +00:00
Christian Krakau-Louis 2192783737 Merge pull request #758 from christianlouis/fix-idor-vuln-8344028020677453820
🛡️ Sentinel: [CRITICAL] Fix authorization bypass in API (IDOR)
2026-03-18 23:17:58 +01:00
github-actions[bot] 30608a7eb2 chore(release): update build metadata files [skip ci] 2026-03-18 14:02:58 +00:00
semantic-release ec459c54ff 0.156.2
Automatically generated by python-semantic-release
2026-03-18 14:02:54 +00:00
Christian Krakau-Louis 057933ff2f Merge pull request #760 from christianlouis/copilot/debug-qr-code-rendering
fix(qr-login): render QR code server-side to eliminate CDN dependency
2026-03-18 15:02:26 +01:00
copilot-swe-agent[bot] ba8c88bc17 chore: remove accidentally committed =1.6.0 file
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 08:34:45 +00:00
copilot-swe-agent[bot] a8eb6504ac fix(qr-login): render QR code server-side using segno instead of CDN JS library
The QR code on /qr-login was not rendering because it depended on loading
qrcode@1.5.4 from the jsdelivr CDN, which may be blocked in some network
environments.

- Add segno>=1.6.0 (pure-Python QR library, no Pillow needed) to requirements.txt
- Generate QR code as a base64 SVG data URI server-side in the challenge endpoint
- Add qr_code_svg field to CreateChallengeResponse Pydantic model
- Replace canvas+CDN script in qr_login.html with an <img :src="qrCodeSvg">
- Remove the $nextTick/QRCode.toCanvas() client-side rendering block
- Extract QR rendering parameters (_QR_ERROR_LEVEL, _QR_SCALE) as module constants

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 08:34:22 +00:00
copilot-swe-agent[bot] 6727253958 chore: initial plan for server-side QR code rendering
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 08:27:07 +00:00
copilot-swe-agent[bot] e7eda8af5e Initial plan 2026-03-18 08:24:08 +00:00
github-actions[bot] 020bc6a9c7 chore(release): update build metadata files [skip ci] 2026-03-18 08:08:59 +00:00
semantic-release bf4be55779 0.156.1
Automatically generated by python-semantic-release
2026-03-18 08:08:56 +00:00
Christian Krakau-Louis 7e786712f4 Merge pull request #759 from christianlouis/copilot/fix-config-settings-metadata
fix: add missing SETTING_METADATA entries for db pool and upload rate limit settings
2026-03-18 09:08:37 +01:00
copilot-swe-agent[bot] dc0a19bd11 fix: add missing SETTING_METADATA entries for db pool and upload rate limit settings
- Add db_pool_size, db_max_overflow, db_pool_timeout, db_pool_recycle fields to app/config.py
- Add upload_rate_limit_per_user, upload_rate_limit_window fields to app/config.py
- Update app/database.py to use NullPool for SQLite and QueuePool with config-driven
  pool settings for PostgreSQL/MySQL
- Add all 6 settings to SETTING_METADATA in app/utils/settings_service.py

Fixes test_all_config_settings_have_metadata failure

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 07:53:16 +00:00
copilot-swe-agent[bot] 2db65647ee Initial plan 2026-03-18 07:41:38 +00:00
google-labs-jules[bot] f6a2bae05e Fix authorization bypass in API (IDOR) by applying owner filter
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-18 03:44:12 +00:00
copilot-swe-agent[bot] 1d7286c4c6 fix(config): add SETTING_METADATA for db pool and upload rate limit settings
Add missing SETTING_METADATA entries for db_pool_size, db_max_overflow,
db_pool_timeout, db_pool_recycle, upload_rate_limit_per_user, and
upload_rate_limit_window so the test_all_config_settings_have_metadata
test passes.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 16:08:16 +00:00
copilot-swe-agent[bot] c9f9001244 fix(tests): add docstring to rate limiter no-op override
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 13:18:43 +00:00
copilot-swe-agent[bot] 6bf121f02f fix(tests): disable upload rate limiter in test client fixture
Override require_upload_rate_limit with a no-op in the test client
fixture so that upload-heavy test suites (test_file_upload.py) are not
rejected with 429 Too Many Requests when Redis is available in CI.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 13:16:36 +00:00
github-actions[bot] bf6b9177af chore(release): update build metadata files [skip ci] 2026-03-17 13:12:05 +00:00
semantic-release 4a07c49bc7 0.156.0
Automatically generated by python-semantic-release
2026-03-17 13:12:03 +00:00
Christian Krakau-Louis a3c657b947 Merge pull request #584 from christianlouis/copilot/add-sharepoint-integration
fix(test): add missing _should_upload_to_sharepoint mock to send_to_all tests
2026-03-17 14:11:41 +01:00
github-actions[bot] a77a29444d chore(release): update build metadata files [skip ci] 2026-03-17 13:03:22 +00:00
semantic-release 3ac49965a5 0.155.1
Automatically generated by python-semantic-release
2026-03-17 13:03:19 +00:00
Christian Krakau-Louis ad329d0aa7 Merge pull request #756 from christianlouis/copilot/fix-qr-code-login-timeout
fix(qr-auth): fix QR code countdown clock skew and add mobile QR scanner
2026-03-17 14:02:55 +01:00
copilot-swe-agent[bot] faa68adaa1 fix: address code review feedback (assertion, exc_info logging)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:15:12 +00:00
copilot-swe-agent[bot] 571cc81789 feat(api): add per-user health-aware upload rate limiting
Introduces a Redis-backed sliding-window rate limiter for upload
endpoints (/api/ui-upload, /api/process-url) that:
- Enforces per-user limits (default: 20 uploads / 60 s)
- Dynamically reduces limits under system stress (queue depth, CPU load)
- Returns 429 with Retry-After header when exceeded
- Fails open when Redis is unavailable
- Works with the existing client-side adaptive back-off

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:12:50 +00:00
copilot-swe-agent[bot] 70b193e07d fix(mobile): replace gap with marginLeft for React Native compatibility
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:05:39 +00:00