peregrine/app/pages
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
..
0_Setup.py feat(peregrine): wire cloud_session into pages for multi-tenant db path routing 2026-03-09 20:22:17 -07:00
1_Job_Review.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00
2_Settings.py feat(peregrine): wire cloud_session into pages for multi-tenant db path routing 2026-03-09 20:22:17 -07:00
4_Apply.py feat(cloud): add compose.cloud.yml and telemetry consent middleware 2026-03-09 22:10:18 -07:00
5_Interviews.py feat: extract hard-coded personal references from all app pages via UserProfile 2026-02-24 19:00:47 -08:00
6_Interview_Prep.py feat: extract hard-coded personal references from all app pages via UserProfile 2026-02-24 19:00:47 -08:00
7_Survey.py chore: seed Peregrine from personal job-seeker (pre-generalization) 2026-02-24 18:25:39 -08:00