- The app intentionally ships without external telemetry. Logs are limited to console warnings (e.g., when the WASM engine cannot be loaded or syntax highlighting fails).
- Session metrics are stored locally in IndexedDB and never transmitted. Users can inspect/delete them via browser devtools.
- Highlight.js and framer-motion surface their own warnings in development mode; we keep them visible to aid debugging.
| Area | Action |
|---|---|
| JS logging | Introduce a lightweight logger that can be silenced in production builds but remains verbose in development. |
| WASM tracing | Expose feature-gated console_log hooks from the Rust crate so diff performance can be profiled when needed. |
| Error surfaces | Add inline banners (instead of console noise) when IndexedDB writes fail or packs refuse to load. |
- Tracing spans: If/when remote analytics are required, use
tracing/tracing-wasmto emit structured spans and guard them behind explicit user consent.\n+- Performance HUD: Optional overlay showing FPS, keystroke latency, and engine evaluation timings for power users. - Crash reports: Consider privacy-preserving crash dumps (e.g.,
better-reporting) only after a governance decision and opt-in flow.
- No raw keystrokes or prompt content may leave the device.
- Observability features must default to “off” and be transparent when enabled.
- Debug hooks (JS or Rust) should be removable from production builds via feature flags to avoid bundle bloat.