Shipped
-
Analytics tooling
- Added a dev-only Analytics Debug Panel to inspect recent events and payloads locally
- Implemented dashboards-as-code sync for PostHog, enabling analytics views to be created/updated from JSON definitions
- Expanded analytics documentation to reflect the new centralized tracking and tooling approach
-
Accessibility improvements
- Introduced
ProtocolModalDescriptionto improve screen reader context for data restoration and preferences flows - Enhanced
PlateDetailsModalwith semantic dialog descriptions and screen reader–friendly summaries - Refactored ExerciseAutocomplete and TimerDialogs to use
DialogDescriptionand standardized modal semantics - Improved aria attributes, dialog structure, and button sizing across multiple components
- Introduced
-
Configuration + build quality
- Updated Next.js config to skip type checks during builds for better Windows worker compatibility
- Extended ESLint coverage to include generated service worker bundles
- Added ESLint report outputs for improved code quality visibility
-
Design system + documentation
- Added
obsidian-glass.mddocumenting the Obsidian Glass design language - Added a UX/UI audit + Shadcn migration plan document
- Updated backend, ERD, and feature docs to align with recent schema and Insights/Profile changes
- Synced shallow index and current-state docs to reflect the evolving architecture
- Added
Why
- Debugging analytics without shipping internal dashboards improves iteration speed without leaking internals
- Accessibility improvements compound over time and are easiest to fix while surfaces are still evolving
- Dashboards-as-code keeps analytics reproducible and versioned, just like the app itself
- Tight config and linting reduce friction as the codebase grows and contributors change environments
Notes
- This is a maturity pass: fewer ad-hoc fixes, more intentional infrastructure and standards.
- All analytics tooling is dev-only and safe by default.
Next
- Add minimal guardrails around analytics event schemas (dev warnings on malformed payloads)
- Continue migrating remaining legacy dialogs to shared modal primitives
- Start measuring Insights engagement now that instrumentation is stable