Skip to content

feat(loom): mouse-wheel + scrollbar thumb for Timeline and Recents modals#569

Merged
CoreyRDean merged 1 commit into
developfrom
feat/loom-polish-slice
Jun 10, 2026
Merged

feat(loom): mouse-wheel + scrollbar thumb for Timeline and Recents modals#569
CoreyRDean merged 1 commit into
developfrom
feat/loom-polish-slice

Conversation

@CoreyRDean

Copy link
Copy Markdown
Collaborator

Summary

Adds the mouse-wheel + brass scrollbar-thumb affordance to the two Loom modals that were still arrow-key-only with no scroll indicator: the Session Timeline (Ctrl+H) and Recents (Ctrl+R). Every other Loom scroll region (Composer body, browser grid, Help) already has wheel + thumb; this closes that consistency gap.

  • Mouse-wheel scroll in each modal's pumpKeyboard, consuming the tick via Loom_ConsumeWheel so no other surface double-applies it (the established Loom convention).
  • A thin brass scrollbar thumb in the right margin when the list overflows, with a shared maxScroll helper so the last page sits flush against the footer (also tightens the pre-existing arrow-key clamp).
  • Footer hint updated to advertise the new affordance.

Purely presentational / read-only-alpha safe: no data-model or editing changes, F-UI stays out (ADR-001), reuses existing Theme.bb tokens only.

Collision

Chose Timeline.bb + Recents.bb for lowest collision — recent churn is all in the Atlas world-editing canvas / ZoneViewport.bb / thread-web / Composer.bb / Help.bb / BrokenRefs.bb, which this PR does not touch. The only prior recent edit to these two files was #568's cosmetic modal-backdrop pass, on different lines than this change.

Verification

  • Independent verifier (≠ implementer): diff is in-scope (2 files, +137/-19), additive/presentational; scrollbar/clamp math is divide-by-zero-, out-of-bounds-, and off-by-one-safe; wheel-consume matches convention; only existing Theme.bb tokens used; both files UTF-8 without BOM.
  • Full compile.bat (not -t) exits 0 — all five engine targets + seven tools build clean, bin\Loom.exe produced.

Test plan

  • Launch bin\Loom.exe, open the Session Timeline (Ctrl+H) and Recents (Ctrl+R) with enough entries to overflow.
  • Confirm mouse-wheel scrolls both lists and a brass thumb tracks scroll position; arrow keys still work; last page sits flush against the footer.

The Ctrl+H Session Timeline and Ctrl+R Recents modals scrolled by arrow
keys only -- no mouse wheel and no visible scroll-position indicator,
unlike every other Loom scroll region (Composer body, browser card grid,
Help modal all have wheel + a brass thumb). This adds both, mirroring the
established Composer::drawScrollbar geometry and the Loom_MouseWheel /
Loom_ConsumeWheel per-frame-delta convention:

- Mouse-wheel scroll in each modal's pumpKeyboard (wheel-up scrolls toward
  the newest entry; consumes the tick so an earlier-painted surface can't
  double-apply it).
- A thin brass scrollbar thumb in the right margin when the list overflows
  the visible band; thumb height + position reflect rowsVisible/entryCount
  and the current scrollOffset (row-space port of the pixel-space Composer
  scrollbar).
- A shared maxScroll helper used by both the clamp and the thumb so the
  last page sits flush against the footer instead of over-scrolling into
  empty space (tightens the existing arrow-key clamp too).
- Footer hint updated "arrows scroll" -> "scroll / arrows" so the new wheel
  affordance is discoverable.

Purely presentational/affordance; no data-model or editing changes
(read-only-alpha safe), F-UI stays out, reuses existing Theme.bb tokens
(LOOM_STONE_700 track / LOOM_BRASS_500 thumb).

Low-collision rationale: the maintainer's active churn is in the Atlas
world-editing canvas / ZoneViewport / thread-web / Composer; git log shows
Timeline.bb and Recents.bb are otherwise quiet, touched only by the cosmetic
#568 immersion-chrome pass (modal-backdrop lines), which this change does
not touch -- it edits drawEntries / pumpKeyboard and adds new helper methods.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CoreyRDean CoreyRDean requested a review from a team as a code owner June 10, 2026 22:39
@CoreyRDean CoreyRDean merged commit 6e0bdb8 into develop Jun 10, 2026
1 check passed
@CoreyRDean CoreyRDean deleted the feat/loom-polish-slice branch June 10, 2026 22:45
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