All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Cross-session weak-pattern dashboard in the Analytics modal. New "Syntax Category Trends" section aggregates per-session error data across your entire history and shows which token categories (keywords, operators, delimiters, identifiers, literals, whitespace, comments, strings) are improving or declining. Each category gets a sparkline trend and a delta in percentage points. Top-3 improving and top-3 declining panels surface the biggest movers at a glance.
- Time range switching (Day, Week, Month, All Time) re-aggregates the dashboard against the selected window. "All Time" shows true all-time rates with "Stable" classifications when there's no earlier baseline to compare against.
- Empty state prompts you to type more sessions when fewer than 10 sessions-with-error-data exist.
- Bumped project version to 0.2.0.
- New pure module
lib/analytics/weak-pattern-trends.ts(187 lines) with 20 unit tests covering all branches. - New component
components/analytics/WeakPatternDashboard.tsxwith 2 smoke tests for empty and populated states. - Per-snippet tokenization cached within a single aggregation call (keyed by content hash, so sync:leetcode refreshes don't serve stale maps).
- Period-over-period trend classification requires comparable data in both windows — forces "stable" when the previous window is empty.
- No IndexedDB schema changes. Old session records without
errorsorsnippetContentare silently skipped, not crashed. vitest.config.tsgainsesbuild.jsx: "automatic"so React 19 JSX renders in component tests without requiring an explicitimport React.