feat(admin): loading skeletons + consistent empty states (v26.05.11)#22
Merged
Conversation
… (v26.05.11) A cross-cutting polish pass over every admin view. - Skeleton loaders: while a view fetches data it shows a shimmer skeleton mirroring the eventual layout (stat cards + table/cards) instead of a bare spinner. New reusable components/skeleton.js (pageSkeleton, skeletonStatCards, skeletonTable, skeletonCard, skeletonLine); theme-aware sheen token; honours prefers-reduced-motion. - Consistent empty/error states: new components/empty-state.js (createEmptyState / createEmptyStateCard) with a fitting icon, clear title and helpful text, replacing ad-hoc title+text blocks. Errors use a danger-tinted alert icon and keep the error message. - Applied across all 17 views (reference applied by hand, the rest via a fan-out + adversarial review workflow that returned 0 regressions). Behaviour is otherwise unchanged: data handling, SSE/chart lifecycle and cleanup() are untouched; secondary inline spinners (metric/bean-graph detail panels) are intentionally kept. Verified live across every view (headers render, 0 leftover skeletons after load, 0 console errors). Gates green: ruff, format, mypy --strict (577 files); admin tests pass.
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
A cross-cutting polish pass over every admin view.
components/skeleton.js(pageSkeleton,skeletonStatCards,skeletonTable,skeletonCard,skeletonLine); theme-aware sheen token (dark + light); honoursprefers-reduced-motion.components/empty-state.js→createEmptyState/createEmptyStateCard) with a fitting icon, a clear title and a helpful sentence, replacing the ad-hoc title+text blocks. Errors use a danger-tinted alert icon and preserve the error message.How it was done
Reference transformation applied by hand to
scheduled.js, then fanned out to the remaining 16 views via a workflow (one agent per file, editing only its own view). A second adversarial review workflow (one reviewer + verifier per view, 17 views) checked the diffs for behaviour regressions and returned 0 findings.Verification
cleanup()returns, polling, filtering untouched; secondary inline spinners (metric/bean-graph detail panels) intentionally kept.Gates
ruff✓ ·ruff format --check✓ ·mypy --strict(577 files) ✓ ·pytest tests/admin→ 108 passed. JS/CSS-only (no Python changes).Version
Bumps to v26.05.11 (pyproject
26.5.11,__version__, uv.lock). CHANGELOG updated.