Commit Graph

2642 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] 71a7a57adc fix(mobile): add shared file to ShareContext directly in +not-found.tsx
When iOS delivers a file via "Open In…", expo-router strips the
docuelevate:// scheme and routes to +not-found.tsx. Previously, this
screen only redirected to the Upload tab and relied on the Linking
handler in _layout.tsx to add the file to ShareContext. This was
unreliable because expo-router may consume the URL event before the
Linking handler fires.

Now +not-found.tsx directly reconstructs the file:// URI from the
pathname and adds it to ShareContext before redirecting. ShareContext
deduplicates by URI to prevent double uploads if both mechanisms fire.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-19 11:12:34 +00:00
copilot-swe-agent[bot] 34ea9333fb Initial plan 2026-03-19 11:03:12 +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
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] 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] 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] 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
semantic-release 264089cce4 0.155.0
Automatically generated by python-semantic-release
2026-03-17 11:23:06 +00:00
Christian Krakau-Louis 30c2e9afef Merge pull request #749 from christianlouis/copilot/implement-log-off-everywhere-functionality
Add dedicated Devices page, separate mobile tokens from API Tokens
2026-03-17 12:22:07 +01:00
Christian Krakau-Louis 8905031d16 Merge branch 'main' into copilot/implement-log-off-everywhere-functionality 2026-03-17 12:12:50 +01:00
copilot-swe-agent[bot] 581adf0e26 refactor(ui): simplify formatDeviceName with regex in devices template
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 11:05:26 +00:00
copilot-swe-agent[bot] 03712cfb08 feat(ui): add dedicated Devices page for mobile tokens and registered devices
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 11:00:36 +00:00
copilot-swe-agent[bot] bd03d1971b refactor(auth): extract _ensure_tz_aware helper, use validate_session in logout
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 10:17:19 +00:00