You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bindable line-by-line timeline scrolling from the composer (e.g. Shift+↑/↓), plus focus commands
#16880
From the composer, the only keyboard way to move the thread is PageUp/PageDown. The composer forwards those two keys to the timeline, but each press moves a whole screen. There is no way to nudge the thread by a line or a few lines while you keep typing. That is what you want when re-reading the end of a long reply, or checking a code block just above the fold before answering.
The timeline does handle ↑/↓ (plus Home/End and PageUp/PageDown), but only when focus is outside the composer. The document-level handler bails out on any modifier, and the composer keeps arrow keys for caret movement. So line scrolling means:
leaving the composer, which needs a mouse click because there is no focus command,
pressing ↑/↓,
clicking back into the composer.
None of the three steps can be done from the keyboard, and none can be remapped. KeybindingCommand has no scroll or focus commands, so keybindings.json can't fill the gap either.
Proposal
Add bindable timeline-scroll commands that work while the composer has focus, using the same path that already forwards PageUp/PageDown:
Command
Action
thread.scrollLineUp / thread.scrollLineDown
Scroll the timeline by one line step, about the browser's arrow-key distance
Half a screen, for finer control than PageUp/PageDown
I'd bind shift+arrowup / shift+arrowdown with when: "!terminalFocus". That is the shortcut I actually want. It does conflict with extending a text selection in the composer, so it probably shouldn't ship as a default. Following the precedent of #16657 (thread.previousTurn / thread.nextTurn), the commands could ship unbound and let users pick. Two other options:
apply them only when the composer has no selection, or
apply them only when the caret is on the first or last line of the draft.
Holding the key should repeat smoothly, as holding PageUp/PageDown already does.
Related, smaller: focus commands
Keyboard-heavy use also needs a way to move focus between the composer and the timeline:
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Problem
From the composer, the only keyboard way to move the thread is PageUp/PageDown. The composer forwards those two keys to the timeline, but each press moves a whole screen. There is no way to nudge the thread by a line or a few lines while you keep typing. That is what you want when re-reading the end of a long reply, or checking a code block just above the fold before answering.
The timeline does handle ↑/↓ (plus Home/End and PageUp/PageDown), but only when focus is outside the composer. The document-level handler bails out on any modifier, and the composer keeps arrow keys for caret movement. So line scrolling means:
None of the three steps can be done from the keyboard, and none can be remapped.
KeybindingCommandhas no scroll or focus commands, sokeybindings.jsoncan't fill the gap either.Proposal
Add bindable timeline-scroll commands that work while the composer has focus, using the same path that already forwards PageUp/PageDown:
thread.scrollLineUp/thread.scrollLineDownthread.scrollHalfPageUp/thread.scrollHalfPageDownI'd bind
shift+arrowup/shift+arrowdownwithwhen: "!terminalFocus". That is the shortcut I actually want. It does conflict with extending a text selection in the composer, so it probably shouldn't ship as a default. Following the precedent of #16657 (thread.previousTurn/thread.nextTurn), the commands could ship unbound and let users pick. Two other options:Holding the key should repeat smoothly, as holding PageUp/PageDown already does.
Related, smaller: focus commands
Keyboard-heavy use also needs a way to move focus between the composer and the timeline:
composer.focus: this was implemented in feat(web): add configurable composer focus shortcut #10910, unbound by default and reviewed favourably, then closed only because it conflicted with the orchestrator V2 rewrite (feat(orchestrator): introduce new orchestrator #2829), not on merit. It is also item 5 in [Feature]: Expose more actions as bindable keybinding commands #6817.thread.focusTimeline: move focus to the timeline so ↑/↓/Home/End work there, then usecomposer.focusto come back.With the scroll commands, most people wouldn't need to leave the composer at all. The focus commands cover the rest.
Environment
T3 Code 0.0.46-nightly.20261007.2774 (desktop), macOS 27.0.1.
Related
composer.focusand was closed in the V2 transitionAll reactions