feat(dashboard): port Overview/Cache/Tasks/Runs pages to Solid#27
Merged
Conversation
…ents PR 8/10 of the dashboard track. Replaces the legacy static-HTML page modules (still living in packages/run/src/dashboard-ui/, to be removed in PR #28) with proper Solid components. - @solidjs/router HashRouter — URLs stay shaped like the legacy app (#/overview, #/runs, #/runs/:id) and the bundle works as a flat static asset without SPA-fallback server config - src/api.ts: response types (OverviewResponse, RunSummary, SlowestTask, CacheEntryRow) + fetchJson<T> - src/format.ts: formatAge / formatPercent / shortHash / shortRunId added, with tests; pre-existing formatBytes / formatDurationMs / formatRelativeTime kept - Shared chrome via a <Shell> root component; pages render into it via the router's outlet - <AsyncView resource={r}> for uniform loading/error/data handling on top of createResource - Card / Empty primitives for the recurring summary-card and empty-state shapes Run-detail + flamegraph land in PR #29; legacy dashboard-ui/ removal + server-side static-serving rewrite is PR #28. Production bundle: ~46 KB raw / 16 KB gzipped JS, 5 KB CSS.
This was referenced May 12, 2026
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.
PR 8/10 of the dashboard track. Replaces the legacy static-HTML page
modules (still living in
packages/run/src/dashboard-ui/until PR #28)with proper Solid components.
What's in
@solidjs/router<HashRouter>— URLs stay shapedlike the legacy app (
#/overview,#/runs,#/runs/:id) sobookmarks survive and the bundle works as a flat static asset
without SPA-fallback server config.
src/api.ts— response types (OverviewResponse,RunSummary,SlowestTask,CacheEntryRow) +fetchJson<T>().src/format.ts—formatAge/formatPercent/shortHash/shortRunIdadded on top of the existingformatBytes/formatDurationMs/formatRelativeTime. All exhaustively tested(24 assertions across 7 describes).
<Shell>root component (header + nav +footer); pages render into it through the router outlet
(
props.children).<AsyncView resource={r}>— small primitive that converts aSolid
createResourceinto uniform loading / error / data states,so every page reads the same way.
Card/Emptyprimitives for the recurring summary-card andempty-state shapes.
What's NOT in
vzn dashboardstill serves the legacydashboard-ui/. PR feat(dashboard): serve apps/dashboard/dist; remove legacy dashboard-ui/ #28 swaps it to serveapps/dashboard/dist/and deletes the legacy files.
Bundle size
Test plan
bun run formatcleanbun run lintclean (oxlint + tsgolint)bun test packages/*/src/ apps/*/src/— 276 pass / 0 failbun x vite buildsucceeds, 35 modules transformedvzn dashboardserver)— punted until PR feat(dashboard): serve apps/dashboard/dist; remove legacy dashboard-ui/ #28 wires the two together; the dev proxy
to
:4280works against the legacy server already.Generated by Claude Code