mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-07 07:34:39 +00:00
* fix(app,dash): render pre-history days as no data, not a currency zero Days before the first recorded day in history.daily were painted as a real 0.00/0 calls in the daily activity heatmap and the daily spend charts. That zero is unknown, not measured, so those cells and bars now read "No data recorded" instead of a currency zero. Genuinely idle days within recorded history stay as real zeros. - app: heatmap cells, the daily spend bars, and the daily-by-model columns get a distinct no-data style plus a "No data recorded" hover for days before the first recorded day. - dash: the granular line chart drops buckets before the first recorded day so no flat zero line is drawn before any history exists. - data-start is derived in the UI layer from history.daily; payload shape is unchanged. Verified: app vitest 418 pass (7 new for the no-data behavior); app, dash, and root typecheck clean; dash and app renderer vite builds succeed. * no-data: cap guard, timezone-free dash trim, StackedBars aria Three hardening fixes from adversarial review of the no-data rendering: dataStartKey returns null at the payload's 365-entry history cap, where the oldest retained entry is no longer the true data start; classifying past it would label real aged-out history as no data on long custom ranges. Documented that the install-to-first-use gap reading as no data is literally accurate: nothing was recorded then either. The dash granular chart now trims leading zero-only buckets by value instead of comparing bucket timestamps against date keys, so producer and viewer timezone skew can never drop a real first-day bucket, and an all-zero series lands in the established empty state. StackedBars no-data columns expose their state via aria-label, not only a title on a non-focusable div. |
||
|---|---|---|
| .. | ||
| AboutModal.test.tsx | ||
| AboutModal.tsx | ||
| ActivityHeatmap.test.tsx | ||
| ActivityHeatmap.tsx | ||
| CliErrorPanel.tsx | ||
| ConnectAffordance.tsx | ||
| Dropdown.tsx | ||
| EmptyState.tsx | ||
| ErrorBoundary.test.tsx | ||
| ErrorBoundary.tsx | ||
| FlameMark.tsx | ||
| Hint.tsx | ||
| ListRow.tsx | ||
| Onboarding.test.tsx | ||
| Onboarding.tsx | ||
| Panel.tsx | ||
| ProviderLogo.test.tsx | ||
| ProviderLogo.tsx | ||
| ProviderPop.tsx | ||
| RangeCalendar.tsx | ||
| Sankey.tsx | ||
| SegTabs.tsx | ||
| Sidebar.test.tsx | ||
| Sidebar.tsx | ||
| Skeleton.test.tsx | ||
| Skeleton.tsx | ||
| Splash.test.tsx | ||
| Splash.tsx | ||
| StackedBars.test.tsx | ||
| StackedBars.tsx | ||
| StaleBanner.test.tsx | ||
| StaleBanner.tsx | ||
| Stat.tsx | ||
| ToastHost.test.tsx | ||
| ToastHost.tsx | ||
| TopBar.tsx | ||
| UpdateBanner.test.tsx | ||
| UpdateBanner.tsx | ||
| Window.tsx | ||