On a phone the lit tab follows the swipe, and the top bar keeps it on screen - #62
Merged
Merged
Conversation
… screen Two complaints from using it on a phone, both about the same question -- which window am I in: - The tab only moved once the row came to rest. `settleActive` runs on `scrollend` (or 140ms after the last scroll event), and a swipe's momentum plus the snap is most of a second of the strip naming the window you had left. Now, where the row is one window wide, each scroll event asks which window covers the middle of the screen and marks it through `onActivate` -- the mark alone, which writes no `ui`, sends no scroll request and takes no focus. The arrival (`onReveal`, the keyboard) still waits for rest. A tab click glides the row with a smooth `scrollTo`, which fires `scroll` too, so the mid-swipe mark is held while the row is being steered and released at rest or by a touch. Measured: clicking a project four windows away lit only that project, nothing in between. - Past the last rung the strip scrolls, and the lit tab could be off either end. The bar now brings the current project into the strip's view -- the whole sleeve when it fits, the lit tab alone when it does not -- with the least movement, on a change of `activeId` and on a resize only, so a strip you scrolled by hand is not dragged back by attention's once-a-second render. Measured at 390px with five projects (strip 528 vs 277px): swiping the row end to end and back, the current project was inside the strip at every step. Co-Authored-By: Claude Opus 5 (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.
Two complaints from using it on a phone, both about the same question -- which
window am I in:
The tab only moved once the row came to rest.
settleActiveruns onscrollend(or 140ms after the last scroll event), and a swipe's momentumplus the snap is most of a second of the strip naming the window you had
left. Now, where the row is one window wide, each scroll event asks which
window covers the middle of the screen and marks it through
onActivate--the mark alone, which writes no
ui, sends no scroll request and takes nofocus. The arrival (
onReveal, the keyboard) still waits for rest.A tab click glides the row with a smooth
scrollTo, which firesscrolltoo, so the mid-swipe mark is held while the row is being steered and
released at rest or by a touch. Measured: clicking a project four windows
away lit only that project, nothing in between.
Past the last rung the strip scrolls, and the lit tab could be off either
end. The bar now brings the current project into the strip's view -- the
whole sleeve when it fits, the lit tab alone when it does not -- with the
least movement, on a change of
activeIdand on a resize only, so a stripyou scrolled by hand is not dragged back by attention's once-a-second render.
Measured at 390px with five projects (strip 528 vs 277px): swiping the row end
to end and back, the current project was inside the strip at every step.
🤖 Generated with Claude Code