- Default range changed from 30d to 7d
- Presets (today/7d/30d) now directly set customStart/customEnd dates,
eliminating duplicate getTimeRange() calculation
- "All" preset fetches actual data boundaries from /api/date-range
and backfills the custom date picker
- Clicking "custom" opens popover without triggering data refresh;
only confirm applies changes
- SQL trend dates cast to ::text to avoid pg driver Date timezone offset
- Fix created_at filter from < to <= for end timestamp
- Language switcher now displays current locale (中文/English) instead of target
- Add lang attribute to date inputs for proper localization of native date picker
Lift time range state into a shared React context so the selected
range persists across page navigation and browser refreshes
(localStorage). Add a "Custom" option with a popover date picker
that lets users specify arbitrary start/end dates. All preset end
times now use endOf("day") (23:59:59) instead of the current moment.