Repository navigation
chore(terminal): upgrade xterm with compatible navigation - #1268
Merged
Merged
Conversation
upgrade xterm and fit while preserving legacy alt-arrow sequences after shortcut dispatch. verify input provenance, synchronized rendering, scrollback, appearance, and retained sessions against the real renderer. Signed-off-by: am <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@buzz.block.builderlab.xyz>
kalvinnchau
marked this pull request as ready for review
October 16, 2026 17:13
wpfleger96
approved these changes
Oct 16, 2026
wpfleger96
left a comment
Member
There was a problem hiding this comment.
🤖 thanks for this. I diffed xterm's Keyboard.ts between 5.5.0 and 6.0.0 and the restored sequences match what 5.5 sent, including Alt+Up/Down passing through unchanged on macOS. terminal.input(..., true) goes through triggerDataEvent with wasUserInput, so the onUserInput provenance seam and scroll-on-input both still work, and the other v6 breaking changes (overviewRulerWidth, windowsMode, fastScrollModifier) aren't used here.
two nonblocking nits:
- for every other key it sends, xterm calls
cancel(event, true), which also doesstopPropagation(). the compat path only callspreventDefault(), so Alt+arrow keydowns keep bubbling out of the terminal. the shortcut dispatcher skips prevented events, so I don't see a live bug, but addingevent.stopPropagation()would match xterm. docs/terminal.mdsays the Ctrl-arrow mapping applies on Linux, but the code applies it on every non-Apple platform, Windows included (same as 5.5). "on Linux and Windows" would be more accurate.
tellaho
added a commit
that referenced
this pull request
Oct 16, 2026
…ui-polish * buzz-app/main: test: delete styling, markup and call-count trivia tests (#1255) fix(hooks): preserve recovery ownership on lefthook 2.2.2 (#1174) fix(deps): upgrade vulnerable tls and editor dependencies (#1267) chore(terminal): upgrade xterm with compatible navigation (#1268) feat(goose): show goose and provider marks on agent cards (#1260) Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
johnmatthewtennant
added a commit
that referenced
this pull request
Oct 16, 2026
…lation * origin/main: (139 commits) feat(agents): let plugins read each agent's sessions (#1111) chore(deps): upgrade vitest to 5.0.4 (#1272) feat(plugins): reload folder plugins from the CLI (#1265) add channel shared sessions discovery and retrieval (#1254) polish Solo activity layout and fold previous steps (#1257) fix(agents): clarify model defaults and provider actions (#1177) fix(messages): stop the channel timeline jumping back when agents or search read old messages (#1256) Add Close other tabs to the tab menu (#1127) chore(deps): upgrade virtua to 0.53.5 and port its scroll patch (#1269) Auto-tag Berd drafts with a chosen default agent (#1139) test: delete styling, markup and call-count trivia tests (#1255) fix(hooks): preserve recovery ownership on lefthook 2.2.2 (#1174) fix(deps): upgrade vulnerable tls and editor dependencies (#1267) chore(terminal): upgrade xterm with compatible navigation (#1268) feat(goose): show goose and provider marks on agent cards (#1260) fix(agents): show native agent pictures in the Solo agent picker (#1258) test(agents): fix main typecheck — add effort to Goose fixture (#1262) fix(messages): reject unclaimed file and link drops app-wide (#1075) feat(channels): create and read system channels (#965) Refine message layout and bubble reading widths (#1218) ...
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.
xterm 6 removes the legacy Alt-arrow mappings and changes the scrollbar and DOM renderer. A dependency-only upgrade would change shell navigation. Upgrade
@xterm/xtermfrom 5.5.0 to 6.0.0 and@xterm/addon-fitfrom 0.10.0 to 0.11.0, preserving the old macOS/Linux navigation sequences after the existing shortcut dispatcher runs.Mapped keys use public
Terminal.input(..., true), retaining normal user-input provenance and scrolling. The privatecoreService.onUserInputseam remains necessary: v6's publiconDatastill omits the source. Both upstream implementations were checked, and real keyboard/paste/parser events exercise the boundary. Existing appearance assertions now measure actual glyph spans and the visible v6 background.Validation:
23a694a7.The platform mappings are exercised on macOS with navigator-platform emulation; this does not establish execution on Linux or native packaged-desktop acceptance. The scrollbar now uses xterm's themed implementation, so its appearance and wheel normalization follow v6. No new addon or native PTY behavior is introduced.
Human-reported native macOS smoke test passed on 2026-10-16 at
23a694a7. The human confirmed all five supplied checks:Linux execution and packaged-desktop acceptance remain unverified. The optional manual synchronized-redraw command was not included in the human confirmation; synchronized output and timeout recovery are covered by the automated browser cases.
Agent self-review and automated renderer validation completed before the human smoke test; no blocking code findings remain.
buzz-review-completed