Problem
Most primary pages (Dashboard, Wiki, Goals, Messages, MeatSpace, ~15 more) render a bare BrailleSpinner/animate-spin loading state with no reserved layout dimensions, causing an above-the-fold layout pop when content arrives. The purpose-built client/src/components/ui/PageSkeleton.jsx (reserves header + card-grid dims) is wired into only 3 pages (DataDog, GitHub, Jira).
Approach (decided)
Extend PageSkeleton (or a small generalized variant) to the other primary list/detail pages in place of the centered spinner. Do it incrementally, verifying each page's first-paint reserves the right dimensions.
Acceptance
- Primary index/detail pages use a dimension-reserving skeleton on first paint; no CLS pop on navigation.
Found by the /do:better audit (2026-07-21). Deferred from auto-remediation because it touches ~15 pages and each needs per-page dimension tuning.
Problem
Most primary pages (Dashboard, Wiki, Goals, Messages, MeatSpace, ~15 more) render a bare
BrailleSpinner/animate-spinloading state with no reserved layout dimensions, causing an above-the-fold layout pop when content arrives. The purpose-builtclient/src/components/ui/PageSkeleton.jsx(reserves header + card-grid dims) is wired into only 3 pages (DataDog, GitHub, Jira).Approach (decided)
Extend
PageSkeleton(or a small generalized variant) to the other primary list/detail pages in place of the centered spinner. Do it incrementally, verifying each page's first-paint reserves the right dimensions.Acceptance
Found by the /do:better audit (2026-07-21). Deferred from auto-remediation because it touches ~15 pages and each needs per-page dimension tuning.