Commit Graph

2648 Commits

Author SHA1 Message Date
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
copilot-swe-agent[bot] 723b14e660 docs: update QR code login documentation with scanner and TTL details
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:04:53 +00:00
copilot-swe-agent[bot] 56bf665397 fix(db): use NullPool for SQLite and expose pool tuning settings
SQLite engines now use NullPool instead of QueuePool, eliminating the
"QueuePool limit of size 5 overflow 10 reached" TimeoutError under
concurrent load.  PostgreSQL/MySQL engines use a configurable QueuePool
with sensible defaults (pool_size=10, max_overflow=20) exposed via
DB_POOL_SIZE, DB_MAX_OVERFLOW, DB_POOL_TIMEOUT, DB_POOL_RECYCLE env
vars.  pool_pre_ping is enabled on all backends.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:03:04 +00:00
copilot-swe-agent[bot] 0f6a1ee1ec fix(api): add ttl_seconds to QR challenge response and fix client-side countdown
The QR login page countdown timer compared the server's UTC expiration
timestamp against the client's local clock, causing the QR code to appear
immediately expired when the client clock was ahead of the server.

Changes:
- Add ttl_seconds field to CreateChallengeResponse (seconds until expiry)
- Frontend countdown now uses relative elapsed time since response was
  received, eliminating clock-skew issues
- Mobile app: replace alert-only QR button with actual camera-based
  QR code scanner using expo-camera
- Add QRScannerScreen with barcode scanning, permission handling, and
  scan area overlay
- Update camera permission description to mention QR code scanning
- Add tests for ttl_seconds computation

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 12:02:33 +00:00
copilot-swe-agent[bot] 9fe50a87d1 Initial plan 2026-03-17 11:53:39 +00:00
copilot-swe-agent[bot] 27ebbddd5f Initial plan 2026-03-17 11:49:16 +00:00
copilot-swe-agent[bot] bcf2d00c33 fix(test): add missing _should_upload_to_sharepoint mock to send_to_all tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 11:32:48 +00:00
github-actions[bot] c79dc4abef chore(release): update build metadata files [skip ci] 2026-03-17 11:23:09 +00:00