- charts.js: monthlyBars + lineChart take an optional labelFn so axis and
tooltip labels can render period (year / 5-year) keys instead of months.
- dashboard.js: period helpers (periodKey/periodKeys/sumByPeriod) bucket the
Overview (income vs spending bars + cumulative net line), Spending, and
Income time-series by the selected granularity. Calendar 5-year buckets
(2015-2019, 2020-2024, 2025-2029). Choice persists in localStorage.
- dashboard.html: Month/Year/5-Year segmented control in the header.
With 7+ years of backfill, monthly bars hit 108 columns; Year collapses to
9 and 5-Year to 3 readable buckets.