Repository navigation
cmux-tui: add familiar terminal shortcuts #8698
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 68 commits
Commits
Show all changes
205 commits
Select commit
Hold shift + click to select a range
ceecddb
test(tui): cover command-k history clearing
lawrencecchen 44f3819
feat(tui): add familiar terminal shortcuts
lawrencecchen e91f530
fix(tui): request command-modified key events
lawrencecchen d29954b
test(tui): preserve prompt when clearing history
lawrencecchen c63c43a
fix(tui): preserve prompt when clearing history
lawrencecchen 89046ac
test(tui): cover shortcut review regressions
lawrencecchen b63c249
fix(tui): close shortcut review gaps
lawrencecchen 3703e1e
test(tui): cover autoreview clear-history regressions
lawrencecchen 4810146
fix(tui): make history clearing protocol-safe
lawrencecchen 3fb122a
test(tui): cover final shortcut review regressions
lawrencecchen 3d33c5f
fix(tui): keep terminal clears surface-local
lawrencecchen 1869b3d
test(tui): cover final keyboard review findings
lawrencecchen a24572a
fix(tui): preserve terminal keyboard semantics
lawrencecchen ae903da
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 6c8623c
test(tui): cover shifted shortcut review regressions
lawrencecchen e4449d1
fix(tui): normalize enhanced shifted keys
lawrencecchen 604ac27
test(tui): cover layout and wrapped prompt regressions
lawrencecchen 444d861
fix(tui): preserve layout and live prompt semantics
lawrencecchen 89adc4d
test(tui): cover associated keyboard semantics
lawrencecchen b451d8d
fix(tui): normalize enhanced keyboard input
lawrencecchen 03d7a41
test(tui): cover final prompt safety regressions
lawrencecchen 973fa06
fix(tui): harden prompt keyboard startup
lawrencecchen e258fb5
test(tui): cover consumed keyboard regressions
lawrencecchen 80b84de
fix(tui): honor consumed keyboard text
lawrencecchen b253054
test(tui): cover final clear-history review gaps
lawrencecchen 11156c5
fix(tui): close final clear-history review gaps
lawrencecchen d9505c3
test(tui): cover final autoreview regressions
lawrencecchen b84f6b5
fix(tui): resolve final autoreview blockers
lawrencecchen 94ae1a5
test(tui): cover serialized prompt redraw
lawrencecchen d65a373
fix(tui): serialize prompt-safe history clear
lawrencecchen 09cf616
test(tui): read alternate-screen readiness replay
lawrencecchen 5a1ff7b
test(tui): cover consumed Option and Ctrl-Shift metadata
lawrencecchen 00bb454
fix(tui): preserve enhanced keyboard identity
lawrencecchen 35d780e
test(tui): cover authoritative terminal safety
lawrencecchen 4b48cd9
fix(tui): make terminal shortcut routing authoritative
lawrencecchen 66e37a4
test(tui): cover authoritative shortcut encoding
lawrencecchen 7755117
fix(tui): encode shortcut fallback authoritatively
lawrencecchen 12de9c7
test(tui): cover safe shortcut fallback protocol
lawrencecchen e98140e
fix(tui): validate authoritative key fallback
lawrencecchen cfe1743
test(tui): cover streaming shortcut safety
lawrencecchen cdb3536
fix(tui): make shortcut fallback streaming-safe
lawrencecchen cdac6a7
test(tui): reject pre-submit prompt redraws
lawrencecchen c51a22a
fix(tui): sequence prompt and keyboard ownership
lawrencecchen d34d30f
test(tui): cover prompt lifecycle safety
lawrencecchen d976806
fix(tui): fail closed on prompt lifecycle
lawrencecchen be62632
test(tui): preserve prompt during history clear
lawrencecchen 6767c05
fix(tui): clear history without shell input
lawrencecchen baa4b50
test(tui): rely on executable binding conformance
lawrencecchen 138c33b
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen ee010fd
fix(tui): preserve clear history lock order
lawrencecchen 5935601
test(tui): cover terminal shortcut delivery barriers
lawrencecchen 29c75ae
fix(tui): preserve alt shortcuts and await host clear
lawrencecchen 1d12f04
test(tui): preserve modified associated key events
lawrencecchen 93e19c2
fix(tui): retain modified associated key events
lawrencecchen 084ca2f
test(tui): reject lossy extended modifiers
lawrencecchen 9fdd5ca
fix(tui): preserve shortcuts at host boundary
lawrencecchen 0af8388
test(tui): cover explicit option routing and compact input
lawrencecchen ef847d2
fix(tui): harden terminal shortcut routing
lawrencecchen 323a816
test(tui): clear visible rows without prompt metadata
lawrencecchen 34bf90a
fix(tui): clear completed rows without prompt metadata
lawrencecchen 0b259f2
test(tui): cover terminal-standard clear shortcut
lawrencecchen 1063418
fix(tui): honor terminal-standard clear shortcut
lawrencecchen 6aecf1e
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 293e421
fix(macOS): import dock shell activity type
lawrencecchen 587b973
fix(macOS): make session snapshot types explicit
lawrencecchen 437581d
fix(macOS): return resume policy explicitly
lawrencecchen a07d3ba
test(tui): cover host keyboard protocol edge cases
lawrencecchen d22bd0e
fix(tui): validate host keyboard capabilities
lawrencecchen 770cc67
test(tui): cover bounded terminal response reads
lawrencecchen 6e191ee
fix(tui): bound host keyboard capability probe
lawrencecchen d89a527
test(tui): cover remaining shortcut edge cases
lawrencecchen 06e1cfe
fix(tui): preserve shortcut routing invariants
lawrencecchen 02f2cc8
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 972874d
test(web): avoid leaking feedback environment mock
lawrencecchen b7bd9cd
test(tui): expose legacy CSI-u shifted characters
lawrencecchen e7b44cc
fix(tui): normalize legacy CSI-u shift input
lawrencecchen fc3caf7
fix(macOS): restore dock checks on current main
lawrencecchen 5cd476e
test(tui): preserve per-event keyboard metadata
lawrencecchen dd8c2f8
fix(tui): trust per-event keyboard metadata
lawrencecchen e600b67
fix(macOS): isolate dock snapshot filtering
lawrencecchen 78eb2ab
test(tui): cover fallback payload queue accounting
lawrencecchen 8753d16
fix(tui): bound fallback payload queue memory
lawrencecchen 6eedef7
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen d117cf6
test(ci): cover TestFlight variant identities
lawrencecchen 4b28f98
test(macOS): import checklist setting in sidebar fixture
lawrencecchen 61eea81
fix(macOS): repair sidebar suspension integration
lawrencecchen f81e832
test(tui): cover clear-history preservation boundaries
lawrencecchen b9ea624
fix(tui): make clear-history delivery total
lawrencecchen 63ba123
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen b7080b4
test(tui): cover Caps Lock Alt shortcut routing
lawrencecchen f1e14b3
fix(tui): preserve Alt shortcuts under Caps Lock
lawrencecchen 3bdd0f4
fix(macOS): isolate feature flag default evaluation
lawrencecchen daafda2
test(tui): cover intermediate clear-history peers
lawrencecchen 21ef16a
fix(tui): preserve intermediate remote clear support
lawrencecchen a59a199
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 890a065
test(tui): cover non-atomic remote shortcut routing
lawrencecchen e2fe93c
fix(tui): require atomic remote shortcut routing
lawrencecchen f45fa33
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 699b352
test(tui): cover unencodable clear fallback
lawrencecchen 5cb0fa0
fix(tui): report undeliverable clear shortcuts
lawrencecchen 5329765
test(tui): require bounded keyboard protocol probe
lawrencecchen 2f97e6c
fix(tui): bound host keyboard protocol probe
lawrencecchen 3c5be36
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 20ddb4c
test(tui): preserve meaningful shift chords
lawrencecchen 94d6c26
fix(tui): retain meaningful shift modifiers
lawrencecchen dc72a6b
test(tui): cover enhanced non-ascii shift binding
lawrencecchen a1a4908
fix(tui): align enhanced shift shortcut identity
lawrencecchen 145bf45
test(tui): reject non-authoritative clear fallback
lawrencecchen 1915880
fix(tui): reject non-authoritative clear fallback
lawrencecchen 6cf2b69
test(tui): cover private screen mode restore semantics
lawrencecchen 172b953
fix(tui): track private screen modes independently
lawrencecchen 159a52a
test(tui): reject ambiguous option shortcuts
lawrencecchen 8e8f8fe
fix(tui): fail closed on ambiguous option input
lawrencecchen 7ed4df3
test(tui): preserve empty option CSI-u events
lawrencecchen d9dd22c
fix(tui): preserve ambiguous CSI-u input
lawrencecchen 5963830
test(tui): isolate prompt tracking from control strings
lawrencecchen 578bd00
fix(tui): isolate prompt tracking control strings
lawrencecchen cbc12f7
test(tui): align alt CSI-u parser expectations
lawrencecchen 0f363ae
test(tui): satisfy control string test lint
lawrencecchen 2c1d994
test(tui): keep ctrl-l child-owned
lawrencecchen 1e9fbdb
fix(tui): keep ctrl-l child-owned
lawrencecchen 25a72dc
test(tui): preserve metadata-free multiline input
lawrencecchen b31924d
fix(tui): preserve metadata-free visible input
lawrencecchen 14ac324
test(tui): align ctrl-l shortcut expectations
lawrencecchen f003de6
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen fcbbf5f
test(tui): cover enhanced shortcut review gaps
lawrencecchen e07e00a
fix(tui): preserve enhanced shortcut semantics
lawrencecchen e759af1
test(tui): exercise child-owned ctrl-l directly
lawrencecchen d39fb02
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 63a9609
test(tui): preserve fallback base layout identity
lawrencecchen 2a8f54c
fix(tui): preserve fallback layout metadata
lawrencecchen 6126559
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen b13c18e
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 539acd6
test(tui): reject clears inside partial VT streams
lawrencecchen b1a09d0
fix(tui): guard clear at VT stream boundaries
lawrencecchen 320ef24
test(tui): retain clear intent across partial VT output
lawrencecchen 40ba492
fix(tui): defer clear until VT boundary
lawrencecchen b54db01
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen ef7fc66
test(tui): cover final clear-history review gaps
lawrencecchen 8dd8439
fix(tui): fail closed and settle clear UI
lawrencecchen 04a9a4b
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 12ba765
test(tui): cover metadata fallback and progress wakes
lawrencecchen a81719f
fix(tui): preserve metadata-free clear fallback
lawrencecchen 5277033
test(tui): cover prompt continuation in history
lawrencecchen 9ddd1b6
fix(tui): guard prompt continuations in history
lawrencecchen 8c118a7
test(tui): cover Unicode VT boundaries and ambiguous clears
lawrencecchen a40d177
fix(tui): track string UTF-8 and ambiguous clears
lawrencecchen 2efc551
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen c294f1d
test(tui): distinguish deterministic clear failures
lawrencecchen 713aa3c
fix(tui): preserve clear failure delivery certainty
lawrencecchen e25f60e
test(tui): cover clear coalescing and transport ambiguity
lawrencecchen 6292ef5
fix(tui): bound clear retries and delivery certainty
lawrencecchen fc92cf6
test(tui): preserve fallback repeats without timeout backlog
lawrencecchen 171c1a1
fix(tui): share stalled clear wait budgets
lawrencecchen 1ebefad
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 4f83e5b
test(tui): cover repeated prompt markers in history
lawrencecchen cedeb78
fix(tui): preserve prompts spanning history
lawrencecchen 4392664
test(tui): cover output racing clear timeout release
lawrencecchen bd749ee
fix(tui): rearm clear waits after raced output
lawrencecchen 5f360ad
test(tui): cover fallback key WebSocket budget
lawrencecchen a8bbc1f
fix(tui): bound fallback keys to transport budget
lawrencecchen bd1cc52
test(tui): cover delayed clear and enhanced key regressions
lawrencecchen d8fc15c
fix(tui): preserve enhanced input and newer clear state
lawrencecchen fa08155
test(tui): cover clear queue and selection races
lawrencecchen b92c2d8
fix(tui): isolate clear operations per surface
lawrencecchen 4b23edc
test(tui): cover enhanced text and remote clear blocking
lawrencecchen 3e5ff20
fix(tui): keep remote clear off connection readers
lawrencecchen 7d4d527
Merge remote-tracking branch 'origin/main' into feat-tui-terminal-sho…
lawrencecchen 56723cc
test(tui): cover scheduler resource and ordering bounds
lawrencecchen faebb16
fix(tui): bound and order clear schedulers
lawrencecchen 8d5d332
test(tui): cover global clear limits and host certainty
lawrencecchen 9a130ec
fix(tui): bound server clears and preserve host failures
lawrencecchen 5231001
test(tui): cover clear liveness and alt certainty
lawrencecchen a6befd6
fix(tui): isolate and bound terminal clear work
lawrencecchen 05cf6d1
test(tui): cover review closeout regressions
lawrencecchen ec5cfe1
fix(tui): retain control admission and clear prefixes safely
lawrencecchen 7fb734e
test(tui): cover partial host control writes
lawrencecchen b895624
fix(tui): preserve ambiguous host control delivery
lawrencecchen 058a60d
test(tui): cover ambiguous clear lane safety
lawrencecchen 6b60c61
fix(tui): quarantine ambiguous input lanes
lawrencecchen de7d681
test(tui): cover graceful drain and rejection certainty
lawrencecchen 75800fb
fix(tui): drain accepted relay requests safely
lawrencecchen abae547
test(tui): cover input lane session ownership
lawrencecchen de979f4
fix(tui): scope input lanes to session generation
lawrencecchen 23cb08c
test(tui): cover dead keys and press recovery
lawrencecchen f6c7fc8
fix(tui): preserve composition and recovery releases
lawrencecchen 19927b5
docs(tui): clarify relay response ordering
lawrencecchen df49796
test(tui): cover local press recovery release
lawrencecchen 6a75b65
fix(tui): retain ambiguous press recovery release
lawrencecchen 6bb7e5a
test(tui): cover clear admission and input localization
lawrencecchen 0406eb7
fix(tui): admit runnable clears and localize input failures
lawrencecchen 691b11b
test(tui): preserve real alt without associated text
lawrencecchen 5424ada
fix(tui): resolve ambiguous option input explicitly
lawrencecchen fb1c6b8
test(tui): cover saturated clear lane ordering
lawrencecchen 663d588
fix(tui): preserve clear lane order at worker cap
lawrencecchen 6378183
test(tui): cover clear fallback lifecycle gaps
lawrencecchen 4330382
fix(tui): close clear fallback lifecycle gaps
lawrencecchen b36318c
test(tui): expose legacy clear fallback capability
lawrencecchen 682a732
fix(tui): gate clear shortcut by active surface
lawrencecchen cee98aa
test(tui): cover blocking clear barrier bypass
lawrencecchen 4a23c0c
fix(tui): fence blocking clear barrier bypasses
lawrencecchen 88a148c
test(tui): require lock-free clear capability reads
lawrencecchen 556ce70
fix(tui): cache clear capability outside writer lock
lawrencecchen 2a07832
test(tui): require localized option mode warning
lawrencecchen 7ad3afc
fix(tui): localize invalid option mode warning
lawrencecchen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| import CmuxWorkspaces | ||
| import Foundation | ||
|
|
||
| extension DockSplitStore { | ||
|
|
||
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
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
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.