peregrine/app
pyr0ball 7a698496f9 feat(cloud): fix backup/restore for cloud mode — SQLCipher encrypt/decrypt
T13: Three fixes:
1. backup.py: _decrypt_db_to_bytes() decrypts SQLCipher DB before archiving
   so the zip is portable to any local Docker install (plain SQLite).
2. backup.py: _encrypt_db_from_bytes() re-encrypts on restore in cloud mode
   so the app can open the restored DB normally.
3. 2_Settings.py: _base_dir uses get_db_path().parent in cloud mode (user's
   per-tenant data dir) instead of the hardcoded app root; db_key wired
   through both create_backup() and restore_backup() calls.

6 new cloud backup tests + 2 unit tests for SQLCipher helpers (pysqlcipher3
mocked — not available in the local conda test env). 419/419 total passing.
2026-03-09 22:41:44 -07:00
..
.streamlit chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
components feat: paste/drag-drop image component, remove server-side Playwright capture button 2026-03-03 14:40:47 -08:00
pages feat(cloud): fix backup/restore for cloud mode — SQLCipher encrypt/decrypt 2026-03-09 22:41:44 -07:00
wizard feat: BYOK unlocks LLM features regardless of tier 2026-03-02 11:34:36 -08:00
__init__.py fix: add app/__init__.py so wizard submodule is importable inside Docker 2026-02-25 21:41:09 -08:00
app.py feat(peregrine): wire cloud_session into pages for multi-tenant db path routing 2026-03-09 20:22:17 -07:00
cloud_session.py feat(peregrine): add cloud_session middleware + SQLCipher get_connection() 2026-03-09 19:43:42 -07:00
feedback.py fix: save form data to non-widget state on Next, fix disabled timing, pass page title 2026-03-03 15:17:45 -08:00
Home.py feat(peregrine): wire cloud_session into pages for multi-tenant db path routing 2026-03-09 20:22:17 -07:00
telemetry.py feat(cloud): Privacy & Telemetry tab in Settings + update_consent() 2026-03-09 22:14:22 -07:00