feat(loom): mouse-wheel + scrollbar thumb for Timeline and Recents modals#569
Merged
Conversation
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>
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
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.
pumpKeyboard, consuming the tick viaLoom_ConsumeWheelso no other surface double-applies it (the established Loom convention).maxScrollhelper so the last page sits flush against the footer (also tightens the pre-existing arrow-key clamp).Purely presentational / read-only-alpha safe: no data-model or editing changes, F-UI stays out (ADR-001), reuses existing
Theme.bbtokens only.Collision
Chose
Timeline.bb+Recents.bbfor 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
Theme.bbtokens used; both files UTF-8 without BOM.compile.bat(not-t) exits 0 — all five engine targets + seven tools build clean,bin\Loom.exeproduced.Test plan
bin\Loom.exe, open the Session Timeline (Ctrl+H) and Recents (Ctrl+R) with enough entries to overflow.