Skip to content

feat(macos): add transcript keyboard navigation shortcuts - #2193

Merged
LHagfoss merged 1 commit into
mainfrom
feat/macos-transcript-keys
Oct 20, 2026
Merged

LHagfoss merged 1 commit into
mainfrom
feat/macos-transcript-keys

Conversation

@LHagfoss

Copy link
Copy Markdown
Owner

Closes #2191

Key bindings

  • Page Up / Page Down (fn-↑ / fn-↓): scroll the chat by its visible height less 40 pt of overlap. A Page Down that would reach the end goes to the end and follows output again.
  • Home / End (fn-← / fn-→): first message / latest, End re-follows like the Latest button.
  • Active with focus in the chat, composer or a one-line search field (none of these keys edit text there). Shift/Option/Control/Command variants are left to the text field. Never taken from the terminal, the localhost preview, or an open sheet/panel.

Routing and page math live in RustCodeKit/TranscriptKeys.swift with focused tests; the app installs one key monitor that only classifies the first responder.

Bug fixed along the way

The chat scroller's EnclosingScrollView probe never found its NSScrollView (it was added to the window before being placed inside the scroll view), so ChatScrollState.scrollView stayed nil and dragging the custom scroller or clicking its track did nothing. The probe now looks again after layout.

Verified

Debug build driven via RUSTCODE_DRIVE (new key and open driver commands) on a 328-message chat: Page Up moved the clip 724 pt, Page Down back, second Page Down snapped to the end, Home → offset −4 (top, screenshot checked), End → bottom, Shift/⌘-Page Up ignored. swift test passes (229 tests).

https://claude.ai/code/session_01SZ3DB3WXnKyfSuHppCNJFg

Page Up and Page Down scroll the chat by a screen, Home goes to the first
message and End to the latest, following output again. The keys reach the
chat from the composer and search fields but never from the terminal, the
preview or an open sheet, and modified variants stay with the text field.

The chat scroller's probe for the AppKit scroll view now looks again after
layout: it was added to the window before the scroll view, never found it,
and dragging the scroller or clicking its track did nothing.

Closes #2191

Claude-Session: https://claude.ai/code/session_01SZ3DB3WXnKyfSuHppCNJFg
@github-actions github-actions Bot added the feature New feature or request label Oct 20, 2026
@LHagfoss
LHagfoss merged commit 8fce85d into main Oct 20, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(macos): add transcript keyboard navigation shortcuts

1 participant