Replace every 'Loading…' text with one spinner: a thin ring that turns, from font-size and currentColor, with a reduced-motion fallback. A place that knows a count shows the count next to the icon.
Fixed on main by #commit:a17008e61516: one ring stands for loading everywhere, from a .spinner class and a spinner() helper every call site uses, with the same ring drawn by the CSS-only boot placeholders. A place that knows a count keeps the count beside the ring, a busy button pins its width while disabled, and the commit page holds its changes section's place with a ring that goes away when the section paints, returns nothing or fails. Reduced motion pulses instead of turning, each ring announces itself with role=status, and sitePagesVersion bumps for the inlined boot placeholder. The review confirmed each invariant has its test and added two small fixes, recorded in the commit body; goldens and style checks are green.
↩ Max Rakhimov · 2026-10-01
Fixed on main by #commit:a17008e61516: one ring stands for loading everywhere, from a .spinner class and a spinner() helper every call site uses, with the same ring drawn by the CSS-only boot placeholders. A place that knows a count keeps the count beside the ring, a busy button pins its width while disabled, and the commit page holds its changes section's place with a ring that goes away when the section paints, returns nothing or fails. Reduced motion pulses instead of turning, each ring announces itself with role=status, and sitePagesVersion bumps for the inlined boot placeholder. The review confirmed each invariant has its test and added two small fixes, recorded in the commit body; goldens and style checks are green.