feat(dashboard): redesign overview page#105
Merged
Merged
Conversation
fix: cors sse, body limit, model prices, cheapest gap, limit trace, score precision
#66) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
release: routerly 0.2.0
…api (#71) * docs(config): set 0.2.0 as default docusaurus version (#70) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(openai): strip input field before forwarding to chat completions api the /v1/responses handler was copying input to messages but never deleting body.input. the field leaked into the upstream request and caused 400 unknown parameter on every gpt-5.2 call. added a safety-net strip in normalizeForModel and a regression test. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
enables rebuilding the docker image for hotfix releases that don't bump the version (no changeset), where the release workflow skips docker. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…nges (#73) - Add lastPingedVersion to TelemetryConfig to track which version last pinged - On startup, fire 'install' if lastPingedVersion is absent, 'upgrade' if it differs - Preserve lastPingedVersion when toggling telemetry via the settings API - Add console.log for ping result to aid debugging - Add 5 unit tests covering all startup telemetry scenarios Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace broken PieChart with horizontal BarChart (filters cost>0, sorted) - Fix React hooks-before-early-return violation - Add segmented period selector using existing theme-selector CSS - Dynamic chart title that reflects the selected period - Token aggregate strip (input/output/cached) below stats grid - Routing vs completion split in Total Calls sub-text - Errors column in Calls by Model table, sorted by calls desc - Theme-aware SVG tick colors via useTheme + matchMedia - Distinct icons: TrendingUp, Boxes, FolderOpen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add key={period} to both ResponsiveContainers so Recharts remounts
when the period changes, ensuring the charts update with new data.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The API only returns dates with actual usage, causing Recharts to interpolate across multi-day gaps and show a misleading smooth curve. Now we expand the timeline to include every day in the range, filling missing dates with cost=0 so the chart accurately reflects inactivity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend: timeline was built from all records instead of the period- filtered set, so the chart never changed when switching periods. Now uses `filtered` so each period shows its own timeline. Frontend: handle single-data-point case (e.g. "daily" = today only) by showing a summary message instead of an empty AreaChart. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Show 24 hourly bars (00:00–23:00) when the daily period is selected, instead of a single data point with a "Not enough data" message. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Weekly and monthly charts were showing identical data when all activity fell within the current week. Now the gap-fill starts from the period boundary (Monday for weekly, 1st of month for monthly) so the two views are always visually distinct. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolves high-severity esbuild CVEs (GHSA-gv7w-rqvm-qjhr, GHSA-g7r4-m6w7-qqqr) and moderate react-router open redirect (GHSA-2j2x-hqr9-3h42) flagged by npm audit. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PieChart(rendered blank due to 0-cost models +paddingAngle) with a horizontalBarChart— filtered tocost > 0, sorted by cost desc, capped at top 8useMemocalls above the loading guard).theme-selector/.theme-btnCSS).table-wrap+ global CSSuseTheme()+matchMedia— correct in both dark and light modeTrendingUp(Success Rate),Boxes(Models),FolderOpen(Projects)Test plan
npm run typecheck --workspace=packages/dashboardpassesnpm test --workspace=packages/dashboardpasses (26 tests)🤖 Generated with Claude Code