Commit Graph

2599 Commits

Author SHA1 Message Date
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
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] 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] 27ebbddd5f Initial plan 2026-03-17 11:49:16 +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
copilot-swe-agent[bot] a022dec9c2 fix(auth): resolve timezone-naive datetime comparisons in QR challenge functions and update docs
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 10:13:19 +00:00
github-actions[bot] b8075b6821 chore(release): update build metadata files [skip ci] 2026-03-17 09:55:46 +00:00
semantic-release a0dace75a3 0.154.0
Automatically generated by python-semantic-release
2026-03-17 09:55:43 +00:00
Christian Krakau-Louis 7b7554decf Merge pull request #751 from christianlouis/copilot/improve-database-migration-handling
feat(db): Add migration chain validation to CI, pre-commit, and developer docs
2026-03-17 10:55:10 +01:00
copilot-swe-agent[bot] a007b4fd98 fix(db): address code review feedback - fix comment stripping, type hints, test skip, and docs
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 09:21:11 +00:00
copilot-swe-agent[bot] aa49fa3ae6 feat(db): add migration chain CI validation, pre-commit hook, script template, docs, and tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-17 09:18:11 +00:00
copilot-swe-agent[bot] 935e8a626e Changes before error encountered
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 23:25:53 +00:00
github-actions[bot] 0b0f43fa99 chore(release): update build metadata files [skip ci] 2026-03-16 23:08:10 +00:00
semantic-release 0e472d3515 0.153.1
Automatically generated by python-semantic-release
2026-03-16 23:08:07 +00:00
Christian Krakau-Louis 15fc90f240 Merge pull request #752 from christianlouis/copilot/fix-ios-hello-world-screen-issue
fix(mobile): add root index.tsx redirect to prevent stale Hello World screen
2026-03-17 00:07:45 +01:00
copilot-swe-agent[bot] 1350aa6a5e fix(mobile): add root index.tsx redirect to prevent stale Hello World screen
Without a root app/index.tsx in the repo, a stale default Expo Router
scaffold file (showing "Hello World") could be picked up from a previous
build or CLI scaffolding and displayed instead of the real app.

The new index.tsx immediately redirects to /(auth)/, and the existing
AuthGuard in _layout.tsx forwards authenticated users to /(tabs)/.

Also registers the index screen in the root Stack and updates
docs/MobileApp.md with an expanded project structure and a new
troubleshooting entry.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 23:01:43 +00:00
copilot-swe-agent[bot] d5e1d92d6f Changes before error encountered
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 22:54:13 +00:00
github-actions[bot] 475c41d375 chore(release): update build metadata files [skip ci] 2026-03-16 22:50:45 +00:00
semantic-release fef74450c7 0.153.0
Automatically generated by python-semantic-release
2026-03-16 22:50:42 +00:00
Christian Krakau-Louis 8d366f3b1e Merge pull request #750 from christianlouis/copilot/add-cleanup-button-functionality
feat(system-reset): add factory reset and wipe-and-reimport capabilities
2026-03-16 23:50:21 +01:00
copilot-swe-agent[bot] 7dffdc0554 fix(system-reset): address code review feedback
- Add path traversal guard in reimport file copy loop
- Improve error log message context for table wipe failures
- Use conditional role=alert/status on result banner for accessibility
- Make test assertions more specific (exact status codes)
- Rename ambiguous view test

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 22:38:24 +00:00
copilot-swe-agent[bot] 51821092f4 feat(auth): add session management UI, QR login page, mobile QR support, translations
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 22:38:13 +00:00
copilot-swe-agent[bot] 96bfba8057 test(system-reset): add comprehensive tests and documentation
- 21 tests covering unit, integration, API, and view layers
- Update ConfigurationGuide.md with System Reset section
- Update API.md with system reset endpoint docs
- All tests pass, ruff clean

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 22:32:31 +00:00
copilot-swe-agent[bot] 421744865f Initial plan 2026-03-16 22:31:32 +00:00
copilot-swe-agent[bot] a4588a57cb feat(auth): add server-side session management and QR code login backend
- Add UserSession and QRLoginChallenge models for session tracking
  and mobile QR authentication
- Add session_manager utility with create/validate/revoke/cleanup
  functions and QR challenge helpers
- Add /api/sessions endpoints for listing, revoking, and
  'log off everywhere' functionality
- Add /api/qr-auth endpoints for challenge creation, polling, and
  claiming with API token issuance
- Add session config fields (lifetime, custom override, QR TTL)
- Update get_current_user to validate server-side sessions
- Create server-side sessions on all login paths (local, OAuth,
  social, admin)
- Revoke server-side session on logout
- Configure SessionMiddleware max_age from session lifetime settings
- Graceful degradation: old sessions without _session_token continue
  to work

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-16 22:29:04 +00:00
copilot-swe-agent[bot] a88d790445 feat(system-reset): add system reset and factory reset feature
- Add FACTORY_RESET_ON_STARTUP and ENABLE_FACTORY_RESET config settings
- Create app/utils/system_reset.py with core reset logic (wipe DB + files, reimport)
- Create app/api/system_reset.py with admin-only API endpoints
- Create app/views/system_reset.py with admin-only UI view
- Create frontend/templates/system_reset.html with confirmation dialogs
- Auto-reset on startup when FACTORY_RESET_ON_STARTUP=true
- Re-import uses watch folder mechanism for re-ingestion
- Register routers in API and views init files
- Add i18n keys and SETTING_METADATA entries
- Add nav links in base.html (desktop + mobile)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 22:26:17 +00:00
copilot-swe-agent[bot] 8a3ae8652e Initial plan 2026-03-16 22:26:07 +00:00
copilot-swe-agent[bot] 4d302b495c Initial plan 2026-03-16 22:13:29 +00:00
copilot-swe-agent[bot] 6d03d107fd Initial plan 2026-03-16 22:00:21 +00:00
github-actions[bot] b48ed0b2ac chore(release): update build metadata files [skip ci] 2026-03-16 21:40:06 +00:00
semantic-release 64403f17f1 0.152.0
Automatically generated by python-semantic-release
2026-03-16 21:40:03 +00:00
Christian Krakau-Louis 793b6d3e25 Merge pull request #748 from christianlouis/copilot/add-retry-option-for-uploads
feat(mobile): add retry for failed uploads via tap and long-press
2026-03-16 22:39:40 +01:00
copilot-swe-agent[bot] d322ec6dc7 feat(mobile): add retry for failed uploads via tap and long-press
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 20:35:13 +00:00
copilot-swe-agent[bot] 84b9461cfe Initial plan 2026-03-16 20:29:47 +00:00
github-actions[bot] 75a6379aad chore(release): update build metadata files [skip ci] 2026-03-16 20:28:52 +00:00
semantic-release 1bd9840c81 0.151.1
Automatically generated by python-semantic-release
2026-03-16 20:28:49 +00:00
Christian Krakau-Louis 1caebdded0 Merge pull request #747 from christianlouis/copilot/fix-merge-conflict-in-json
Fix merge conflict markers in mobile/app.json
2026-03-16 21:28:25 +01:00
copilot-swe-agent[bot] a7b993ad42 fix: resolve merge conflict markers in mobile/app.json
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 18:28:15 +00:00
copilot-swe-agent[bot] 5b09b7b9ae Initial plan 2026-03-16 18:26:12 +00:00
github-actions[bot] 0f449abe17 chore(release): update build metadata files [skip ci] 2026-03-16 18:25:25 +00:00
semantic-release 480591fcee 0.151.0
Automatically generated by python-semantic-release
2026-03-16 18:25:21 +00:00
Christian Krakau-Louis 242ef587e1 Merge pull request #746 from christianlouis/copilot/localize-view-links
feat(i18n): localize /files/ view
2026-03-16 19:24:56 +01:00
copilot-swe-agent[bot] afb168d3e8 feat(i18n): localize remaining image zoom controls in files view
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-16 18:15:35 +00:00