peregrine/app
pyr0ball 3b9bd5f551 feat(cloud): add compose.cloud.yml and telemetry consent middleware
T8: compose.cloud.yml — multi-tenant cloud stack on port 8505, CLOUD_MODE=true,
per-user encrypted data at /devl/menagerie-data, joins caddy-proxy_caddy-internal
network; .env.example extended with five cloud-only env vars.

T10: app/telemetry.py — log_usage_event() is the ONLY entry point to usage_events
table; hard kill switch (all_disabled) checked before any DB write; complete no-op
in local mode; swallows all exceptions so telemetry never crashes the app;
psycopg2-binary added to requirements.txt. Event calls wired into 4_Apply.py at
cover_letter_generated and job_applied. 5 tests, 413/413 total passing.
2026-03-09 22:10:18 -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): add compose.cloud.yml and telemetry consent middleware 2026-03-09 22:10:18 -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): add compose.cloud.yml and telemetry consent middleware 2026-03-09 22:10:18 -07:00