Problem
All privacy behavior is hard-coded: daily salt (app/Analytics/tracking.ts:28), 30-min session window (routes/analytics.ts:154), country-only geo, no DNT. config/analytics.ts is unrelated (it configures the framework’s own third-party analytics driver, ironically fathom). Operators cannot tune any of it.
Why it matters (privacy-first)
Self-hosters and privacy-conscious operators expect to set retention, geo granularity, DNT respect, and salt strategy.
Proposed fix
Add a real config/ghostanalytics.ts (or similar) exposing: retention window, geo granularity (country-only default), DNT/GPC respect, salt mode, session window. Wire the ingest/purge paths to it.
Priority: P2 (umbrella for the other privacy issues).
From the 2026-07-20 privacy-first competitive audit (vs. Plausible / Fathom / Simple Analytics / Umami).