Skip to content

CL-6381: warm loader everywhere + app error boundary (UI polish slice 1) - #129

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-6381-loaders-boundary
Aug 20, 2026
Merged

TheGreatAxios merged 1 commit into
mainfrom
cl-6381-loaders-boundary

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

Implements punch-list slice 1 (items 1.1-1.9) from the whole-shell UI critique pass — the app's error boundary and every bare/inconsistent loading treatment.

  • 1.1 — adds AppErrorBoundary, the app's first error boundary, wrapping <Root/> in main.tsx. Renders the EmptyState "This screen hit a snag" + Reload, logs via @corbits/client-log (never console).
  • 1.2 — onboarding-page.tsx's bare .onboarding-spinner ring → WorkbenchLoadingState.
  • 1.3 — QueryView's "block" case gains an optional loadingContent override (api-query can't import chat-ui's WorkbenchLoadingState directly — chat-ui depends on api-query); wired into workbench-settings' full-stage surface.
  • 1.4 — plugins-page.tsx's empty PageShell during fetch now renders the warm loader inside the shell.
  • 1.5 — standardizes app.tsx, home-page.tsx, and app-shell.tsx's Suspense fallback on WorkbenchLoadingState, with copy "Getting your workbench ready…".
  • 1.6 — new-workbench-picker.tsx swaps its body for WorkbenchLoadingState while creating.
  • 1.7 — "Loading…" text swapped for the warm loader in skills-page, agent-skills-picker, plugin-skill-detail-panel; agents-page's inline Model field and insights-page's KPI tiles get a real Skeleton shimmer instead of an ellipsis.
  • 1.8 — workbench-list.tsx's 6rem skeleton slab → row-shaped placeholders matching the real rows.
  • 1.9 — library-page.tsx's preview header no longer flips to "Loading…"; stays "Preview", the wait lives in the body (already had a skeleton there).

No skips — none of slice 1 was already fixed on main. Rebased onto main to pick up the Phosphor icon swap (#118+) and CL-6383's chip/affordance work, which landed mid-task; resolved import conflicts in favor of @corbits/icons.

Test plan

  • bun run typecheck clean in apps/web, packages/chat-ui, packages/api-query
  • bun test green in all three (only pre-existing, unrelated tailwind-build.test.ts failures remain — they require a prior bun run build and fail identically on main)
  • New AppErrorBoundary red/green test: healthy tree passes through, throwing child renders the EmptyState
  • Extended QueryView and insights-page tests for the new loadingContent prop and KPI shimmer
  • prettier --check and eslint clean on every changed file (pre-existing unrelated warnings only)

Adds the one error boundary the app never had (a render error used to
leave the reader on a blank white page), and swaps every bare spinner,
"Loading…" text, and empty PageShell wait for WorkbenchLoadingState so
the app has one wait treatment instead of four. KPI tiles get a real
shimmer instead of an ellipsis; the sidebar's activity loader and the
library preview header now match their real content's shape.
@TheGreatAxios
TheGreatAxios merged commit cb1eea9 into main Aug 20, 2026
0 of 2 checks passed
@TheGreatAxios
TheGreatAxios deleted the cl-6381-loaders-boundary branch August 25, 2026 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant