Skip to content

0.6.1: spinner honours reducedMotion, keeps its readout whole, centres as one block - #89

Merged
ralyodio merged 1 commit into
mainfrom
spinner-0.6.1
Sep 13, 2026
Merged

0.6.1: spinner honours reducedMotion, keeps its readout whole, centres as one block#89
ralyodio merged 1 commit into
mainfrom
spinner-0.6.1

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

What

Follow-ups from an adversarial review of the 0.6.0 spinner (three lenses, each finding independently verified against the source):

  • reducedMotion is now real. It has been a public AppOption since 0.1.0 with nothing reading it. It now rides RenderContext (app, scrollback and the testing renderer), and Container.spinner() holds its first frame and does not call invalidate() under it. Test asserts no redraw request.
  • Readout drawn whole or not at all. 349/1200 cut to 34… reads as a different number. A readout that does not fit is dropped; a one-column remainder after the glyph stays blank rather than a lone ellipsis (the separating space is drawn on its own and only the words are truncated).
  • Centre alignment keeps the block together. align: "center" measured glyph+label+readout as one block, then pinned the readout to the right edge. The readout now sits where it was measured; left and right still pin it to the edge.
  • Root README.md widget list gains spinner, matching packages/hqtui/README.md.
  • Tests: the above, plus the ASCII fallback and * done mark through capabilities: { unicode: false }, and the unnecessary ui.ctx cast is gone.

Not in this PR, noted for a follow-up: the widget gallery, hqtui.com catalog and demo do not list the spinner because apps/web/test/widgets.test.ts enforces parity across all eleven language ports, so listing it means porting it everywhere.

Version

0.6.0 → 0.6.1 in every hand-written place the version test ties together, plus bun.lock.

Tested

bun run typecheck, bun test packages/hqtui/test (315 pass), bun run build.

🤖 Generated with Claude Code

https://claude.ai/code/session_011gfb1vcQH5rf82HfbJvf1Z

…d centres as one block

Three things a review of 0.6.0 turned up. `reducedMotion` has been a public
AppOption since 0.1.0 with nothing reading it; it now rides the render
context and the spinner, the first widget to drive its own redraws, holds
its first frame and asks for no more frames under it. A readout that did
not fit was cut to "34…", which reads as a different number; it is drawn
whole or not at all, and a one-column remainder after the glyph stays blank
instead of becoming a lone ellipsis. `align: "center"` measured the row as
one block and then pinned the readout to the right edge; the readout now
sits where it was measured. The root README's widget list gains the
spinner, matching the package README. Tests cover each, plus the ASCII
fallback through the capabilities override.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011gfb1vcQH5rf82HfbJvf1Z
@ralyodio
ralyodio merged commit 6041d7c into main Sep 13, 2026
14 checks passed
@ralyodio
ralyodio deleted the spinner-0.6.1 branch September 13, 2026 07:15
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