| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Route SDK npm releases through trusted publisher (#9057) Publish SDK contents through the one npm workflow already authorized for the shared cmux package name, with protected-main, version, verification-run, source-drift, and explicit-confirmation gates. | 1 个月前 | |
Fix TUI pointer motion during layout updates (#8709) * fix(tui): gate input on surface attach readiness * test(tui): cover redraw and config routing barriers * fix(tui): render before replaying routed input * refactor(tui): generalize event loop backend * test(tui): cover deferred pointer ordering * fix(tui): preserve deferred input order * test(tui): cover cell pixel pointer barrier * fix(tui): route cell pixel geometry updates * test(tui): cover routing state boundaries * fix(tui): separate pointer routes from destination intent * test(tui): cover paint pointer route barrier * fix(tui): guard pointer routes during paint * test(tui): cover retained input ordering * fix(tui): preserve pointer input across render barriers * test(tui): cover replay requeue ordering * fix(tui): preserve replay order across requeue * test(tui): cover pointer frame and focus barriers * fix(tui): bind deferred pointer input to rendered frames * test(tui): cover trusted pointer frame barriers * fix(tui): close trusted pointer frame gaps * test(tui): cover merged pointer session lifecycle * fix(tui): reset pointer frame state across sessions * test(tui): expose browser release lifecycle gaps * fix(tui): preserve browser release across session retirement * test(tui): expose remaining pointer routing gaps * fix(tui): close remaining pointer routing gaps * test(tui): expose pointer semantic ownership gaps * fix(tui): preserve pointer routing semantics * test(tui): expose immediate pointer semantic race * fix(tui): admit pointer input against terminal semantics * test(tui): expose final pointer admission gaps * fix(tui): close final pointer admission races * test(tui): expose remaining deferred input races * fix(tui): preserve deferred input identities * test(tui): expose remaining pointer admission gaps * fix(tui): stabilize pointer admission owners * test(tui): expose replay lifecycle regressions * fix(tui): close replay lifecycle gaps * test(tui): reject stale pointer geometry * fix(tui): guard and inline pointer encoding * test(tui): expose pointer capture ownership gaps * fix(tui): complete pointer capture ownership * test(tui): reject replay across pane repaints * fix(tui): bind pointer replay to rendered content * test(tui): expose remaining pointer ordering races * fix(tui): guard terminal pointer ordering * fix(tui): gate browser input on presentation * test(tui): expose stale presentation identities * fix(tui): bind menus and graphics to presentation * test(tui): expose UTF-8 mouse mode collision * fix(tui): make mouse mode scan UTF-8 aware * test(tui): expose graphics writer failure wedge * fix(tui): settle failed graphics presentations * test(tui): expose cross-session graphics collision * fix(tui): scope graphics to machine sessions * test(tui): expose browser pointer admission gaps * fix(tui): guard browser pointer dispatch * test(tui): expose remaining pointer ownership gaps * fix(tui): preserve scoped pointer ownership * test(tui): preserve browser drag ownership across frames * fix(tui): preserve browser pointer captures * test(tui): expose pointer lifecycle gaps * fix(tui): close pointer lifecycle gaps * test(tui): expose browser frame admission leak * fix(tui): propagate browser pointer admission * test(tui): expose pointer admission compatibility gaps * fix(tui): close pointer admission compatibility gaps * test(tui): expose reviewed pointer authority gaps * test(tui): target guarded browser mouse shape * test(tui): expose diagnostic pointer authority gap * fix(tui): preserve pointer authority across boundaries * test(tui): expose pointer barrier ownership races * test(tui): expose ambiguous navigation rollback * fix(tui): preserve pointer barriers across CDP races * test(tui): expose frame epoch recovery gaps * fix(tui): recover frame epoch transitions * test(tui): expose pointer lifecycle ordering gaps * fix(tui): reconcile pointer lifecycle epochs * test(tui): expose pointer transition failure gaps * fix(tui): settle failed pointer transitions * test(tui): cover unresolved pointer authority transitions * fix(tui): keep pointer authority fail-closed * test(tui): cover download and mouse probe regressions * fix(tui): settle downloads and gate mouse probes * test(tui): cover document paint authority gaps * test(tui): reject delayed pre-restart browser frames * fix(tui): bind pointer authority to painted documents * test(tui): advertise guarded pointer fixture capability * test(tui): cover pointer authority recovery gaps * fix(tui): recover guarded browser frame authority * test(tui): cover remote screencast recovery bounds * fix(tui): bound remote screencast recovery * test(tui): cover bounded pointer recovery gaps * fix(tui): bound pointer authority recovery * test(tui): cover unresolved navigation authority gaps * fix(tui): reconcile unresolved browser navigation * test(tui): cover end-to-end pointer authority gaps * test(tui): stop rejected frame recovery at ingress * fix(tui): enforce end-to-end pointer authority * test(tui): preserve guarded pointer wire compatibility * fix(tui): negotiate guarded browser pointer attach * test(tui): cover final pointer authority races * fix(tui): close pointer authority races * test(tui): cover remaining pointer authority gaps * fix(tui): separate pointer authority from graphics processing * test(tui): cover pointer worker lifecycle gaps * fix(tui): close pointer worker lifecycle gaps * test(tui): cover final pointer worker gaps * fix(tui): eliminate idle pointer polling * test(tui): cover pointer ownership invalidation * fix(tui): preserve browser release ownership * test(tui): cover remaining pointer ordering gaps * fix(tui): close final pointer ordering gaps * test(tui): cover graphics fence recovery * fix(tui): recover graphics fence timeouts * test(tui): cover final graphics lifecycle gaps * fix(tui): bound graphics recovery lifecycle * test(tui): cover pointer lifecycle liveness * fix(tui): bound browser pointer ownership * test(tui): cover final pointer recovery gaps * fix(tui): close negotiated pointer lifecycles * test(tui): cover same-document capture exhaustion * fix(tui): surface capture recovery failures * test(tui): cover terminal resize and hover recovery * fix(tui): settle terminal pointer recovery * test(tui): cover final pointer review findings * fix(tui): close final pointer review findings * test(tui): cover final navigation review findings * fix(tui): preserve browser recovery authority * test(tui): cover loaderless snapshot failure * fix(tui): settle loaderless snapshot failures * test(tui): cover rejected browser authority races * fix(tui): reject stale browser authority * test(tui): cover bootstrap snapshot invalidation * fix(tui): retry invalidated bootstrap snapshots * test(tui): reject unproven timestampless pixels * fix(tui): verify each timestampless browser frame * test(tui): cover stale capture suppression races * fix(tui): scope browser capture suppression * test(tui): release superseded capture reservations * fix(tui): release superseded capture ownership * test(tui): reject stale cleanup releases * fix(tui): discard stale cleanup releases * test(tui): hide stale attach pointer tokens * fix(tui): mask stale attach pointer tokens * test(tui): reject legacy guarded browser attach * fix(tui): require scoped browser attach owner * test(tui): retain timed-out image deletions * test(tui): clean images after fence exhaustion * fix(tui): preserve graphics cleanup after timeout * test(tui): bound timestampless frame recovery * fix(tui): throttle timestampless frame recovery * test(tui): cover graphics backpressure cleanup * fix(tui): bound graphics output ownership * test(tui): cover unresolved output and navigation * fix(tui): recover unresolved output and navigation * test(tui): preserve browser timeout accounting * fix(tui): preserve browser timeout accounting * test(tui): keep verification failures terminal * fix(tui): keep verification failures terminal * test(tui): verify failed browser retries * test(tui): keep failed browser input blocked * test(tui): attach browser recovery epochs * fix(tui): verify failed browser retries * test(tui): retain committed navigation races * test(tui): keep raced navigation paint * test(tui): restore verified superseded navigation * fix(tui): reconcile committed navigation races * test(tui): cover stale browser bitmap authority * fix(tui): bind pointer authority to exact browser bitmap * test(tui): cover guarded pointer scheduling * fix(tui): schedule guarded pointer input per surface * test(tui): cover cross-surface browser input isolation * fix(tui): isolate browser input by surface * test(tui): cover browser pointer authority gaps * fix(tui): preserve safe browser pointer authority * test(tui): cover loaderless navigation snapshot race * fix(tui): retry invalidated loaderless snapshots * test(tui): cover impossible graphics response prefix * fix(tui): replay impossible graphics prefixes * test(tui): cover restart overtaking same-document navigation * fix(tui): preserve queued same-document navigation * test(tui): bound browser input workers * fix(tui): bound browser input workers * test(tui): cover state then frame attach coalescing * fix(tui): coalesce attach state with newer frames * test(tui): cover colliding browser surface workers * fix(tui): schedule browser input per surface * test(tui): cover scheduler fairness and global bounds * fix(tui): bound and time-slice browser input * test(tui): cover scheduler lifecycle regressions * fix(tui): preserve bounded browser input lifecycles * test(tui): cover end-to-end key press admission * fix(tui): carry key presses through final queue * test(tui): cover sustained graphics authority * fix(tui): advance acknowledged graphics authority * test(tui): cover final browser frame admission * fix(tui): admit presented browser frame ranges * test(tui): require presented pointer authority * fix(tui): bind pointer input to presented frames * test(tui): dedupe presentation acknowledgements * fix(tui): publish presentation changes once * test: preserve replaced navigation command order * fix: preserve replacement browser command order * test: cover resilient screencast resize barrier * fix: fall back when screencast clock probe fails * test: cover browser authority liveness gaps * fix: bound browser authority lifecycles * test(tui): cover bounded pointer authority recovery * fix(tui): bound pointer authority retries * test(tui): preserve deferred pointer ordering * fix(tui): retain motion behind deferred pointer input * test(tui): cover pointer recovery degradation * fix(tui): recover bounded pointer fallbacks * test(tui): cover pointer retry scheduling * fix(tui): sleep until pointer release retry | 1 个月前 | |
Reuse verified artifacts across TUI publishers (#8973) * test: prevent duplicate TUI release builds * ci: reuse verified TUI release artifacts * ci: require tagged TUI artifact runs | 2 个月前 | |
Reclaim hidden Ghostty renderer memory (#8998) * Add five-tab renderer memory regression test * Reclaim hidden terminal renderers by default * Pin shared Metal pipeline Ghostty build * Pin final Ghostty memory build * Pin competitive Ghostty memory build * Test renderer reclamation catalog defaults * Use catalog renderer reclamation defaults * test: require atomic first renderer presentation * fix: make first renderer presentation atomic * fix: resolve renderer defaults through catalog * Exercise renderer defaults through UserDefaults * Pin forced renderer rebuild Ghostty head * Pin forced rebuild GhosttyKit checksum * Test forced renderer rebuild presentation * Preserve forced renderer rebuild presentation * Make renderer defaults regression test throwable * Pin merged Ghostty renderer reclamation head * Pin final GhosttyKit checksum * Pin reviewed Ghostty renderer retry fix * Pin reviewed Ghostty shader cache follow-up * Add red test for Ghostty Zig version drift * Derive Zig version from pinned Ghostty * Run Ghostty Zig version drift test in CI * Test all Ghostty Zig workflow consumers * Synchronize Ghostty Zig workflows * Test Ghostty Zig helper as TestFlight input * Track Ghostty Zig helper in TestFlight inputs * Pin Ghostty shader failure backoff * Pin Ghostty shader attempt backoff * test: require renderer reclaim deadline scheduling * test: initialize linked Ghostty runtime * fix: schedule renderer reclaim at idle deadlines * test: retain synthetic Ghostty argv * fix: coalesce renderer visibility evaluation * test: retain Ghostty runtime argv * fix: wire renderer visibility coalescing * Pin integrated Ghostty mailbox fix * refactor: inject renderer reclaim scheduler inputs * test: exercise renderer reclaim scheduler lifecycle * fix: bound renderer visibility scheduling * test: look up linked Ghostty runtime dynamically * Validate per-consumer Ghostty Zig wiring * test: require fail-closed Ghostty Zig workflows * fix: fail closed on Ghostty Zig resolution * fix: make renderer scheduling verification deterministic * test: coalesce staggered renderer reclaim deadlines * fix: coalesce renderer reclaim deadlines * Update Ghostty renderer retry artifact * test: measure five-tab renderer memory * test: cover compatible Zig patch releases * fix: accept compatible Zig patch releases * refactor: separate renderer realization surface seam --------- Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-authored-by: austinpower1258 <austinwang115@gmail.com> | 1 个月前 | |
Scope client sizing to each terminal (#8776) * test(tui): scope exclusive client size to terminal * fix(tui): scope client sizing to each terminal * test(tui): cover surface retirement during attach * fix(tui): cancel attach when surface retires * test(tui): cover client sizing review regressions * fix(tui): address client sizing review findings * test(tui): cover sizing fallback compatibility * fix(tui): preserve sizing fallback semantics * test(tui): cover final sizing review regressions * fix(tui): close final sizing review gaps * test(tui): cover stale tree before queued attach * fix(tui): preserve queued attach failures * test(tui): cover final review compatibility gaps * fix(tui): close final compatibility review gaps * fix(tui): scope resize accounting to target surface * test(tui): cover unsized attach sizing fallback * fix(tui): close protocol 10 sizing gaps * test(tui): preserve explicit size across unsized attach * fix(tui): unify client sizing ownership * test(tui): refresh clients after exclusive detach * fix(tui): refresh clients after exclusive detach * fix(go): return decoded client list deterministically * test(sdk): cover protocol 9 sizing compatibility * fix(sdk): normalize protocol 9 sizing state * fix(tui): satisfy strict sizing lint * test(tui): cover unsized client disconnect geometry * fix(tui): preserve geometry on unsized disconnect * test(tui): reject sizing policy for closed surfaces * fix(tui): serialize sizing policy with surface purge * test(tui): preserve unknown surface sizing errors * fix(tui): validate sizing surface before client * fix(bindings): gate sizing e2e on protocol 10 * test(tui): preserve retired attach transport failures * fix(tui): preserve attach transport recovery * test(tui): cover final detach and menu surface races * fix(tui): preserve sizing lifecycle targets * fix(build): import dock lifecycle types * fix(build): disambiguate dock snapshot types * fix(build): return surface resume policy explicitly | 2 个月前 | |
Fix TUI pointer motion during layout updates (#8709) * fix(tui): gate input on surface attach readiness * test(tui): cover redraw and config routing barriers * fix(tui): render before replaying routed input * refactor(tui): generalize event loop backend * test(tui): cover deferred pointer ordering * fix(tui): preserve deferred input order * test(tui): cover cell pixel pointer barrier * fix(tui): route cell pixel geometry updates * test(tui): cover routing state boundaries * fix(tui): separate pointer routes from destination intent * test(tui): cover paint pointer route barrier * fix(tui): guard pointer routes during paint * test(tui): cover retained input ordering * fix(tui): preserve pointer input across render barriers * test(tui): cover replay requeue ordering * fix(tui): preserve replay order across requeue * test(tui): cover pointer frame and focus barriers * fix(tui): bind deferred pointer input to rendered frames * test(tui): cover trusted pointer frame barriers * fix(tui): close trusted pointer frame gaps * test(tui): cover merged pointer session lifecycle * fix(tui): reset pointer frame state across sessions * test(tui): expose browser release lifecycle gaps * fix(tui): preserve browser release across session retirement * test(tui): expose remaining pointer routing gaps * fix(tui): close remaining pointer routing gaps * test(tui): expose pointer semantic ownership gaps * fix(tui): preserve pointer routing semantics * test(tui): expose immediate pointer semantic race * fix(tui): admit pointer input against terminal semantics * test(tui): expose final pointer admission gaps * fix(tui): close final pointer admission races * test(tui): expose remaining deferred input races * fix(tui): preserve deferred input identities * test(tui): expose remaining pointer admission gaps * fix(tui): stabilize pointer admission owners * test(tui): expose replay lifecycle regressions * fix(tui): close replay lifecycle gaps * test(tui): reject stale pointer geometry * fix(tui): guard and inline pointer encoding * test(tui): expose pointer capture ownership gaps * fix(tui): complete pointer capture ownership * test(tui): reject replay across pane repaints * fix(tui): bind pointer replay to rendered content * test(tui): expose remaining pointer ordering races * fix(tui): guard terminal pointer ordering * fix(tui): gate browser input on presentation * test(tui): expose stale presentation identities * fix(tui): bind menus and graphics to presentation * test(tui): expose UTF-8 mouse mode collision * fix(tui): make mouse mode scan UTF-8 aware * test(tui): expose graphics writer failure wedge * fix(tui): settle failed graphics presentations * test(tui): expose cross-session graphics collision * fix(tui): scope graphics to machine sessions * test(tui): expose browser pointer admission gaps * fix(tui): guard browser pointer dispatch * test(tui): expose remaining pointer ownership gaps * fix(tui): preserve scoped pointer ownership * test(tui): preserve browser drag ownership across frames * fix(tui): preserve browser pointer captures * test(tui): expose pointer lifecycle gaps * fix(tui): close pointer lifecycle gaps * test(tui): expose browser frame admission leak * fix(tui): propagate browser pointer admission * test(tui): expose pointer admission compatibility gaps * fix(tui): close pointer admission compatibility gaps * test(tui): expose reviewed pointer authority gaps * test(tui): target guarded browser mouse shape * test(tui): expose diagnostic pointer authority gap * fix(tui): preserve pointer authority across boundaries * test(tui): expose pointer barrier ownership races * test(tui): expose ambiguous navigation rollback * fix(tui): preserve pointer barriers across CDP races * test(tui): expose frame epoch recovery gaps * fix(tui): recover frame epoch transitions * test(tui): expose pointer lifecycle ordering gaps * fix(tui): reconcile pointer lifecycle epochs * test(tui): expose pointer transition failure gaps * fix(tui): settle failed pointer transitions * test(tui): cover unresolved pointer authority transitions * fix(tui): keep pointer authority fail-closed * test(tui): cover download and mouse probe regressions * fix(tui): settle downloads and gate mouse probes * test(tui): cover document paint authority gaps * test(tui): reject delayed pre-restart browser frames * fix(tui): bind pointer authority to painted documents * test(tui): advertise guarded pointer fixture capability * test(tui): cover pointer authority recovery gaps * fix(tui): recover guarded browser frame authority * test(tui): cover remote screencast recovery bounds * fix(tui): bound remote screencast recovery * test(tui): cover bounded pointer recovery gaps * fix(tui): bound pointer authority recovery * test(tui): cover unresolved navigation authority gaps * fix(tui): reconcile unresolved browser navigation * test(tui): cover end-to-end pointer authority gaps * test(tui): stop rejected frame recovery at ingress * fix(tui): enforce end-to-end pointer authority * test(tui): preserve guarded pointer wire compatibility * fix(tui): negotiate guarded browser pointer attach * test(tui): cover final pointer authority races * fix(tui): close pointer authority races * test(tui): cover remaining pointer authority gaps * fix(tui): separate pointer authority from graphics processing * test(tui): cover pointer worker lifecycle gaps * fix(tui): close pointer worker lifecycle gaps * test(tui): cover final pointer worker gaps * fix(tui): eliminate idle pointer polling * test(tui): cover pointer ownership invalidation * fix(tui): preserve browser release ownership * test(tui): cover remaining pointer ordering gaps * fix(tui): close final pointer ordering gaps * test(tui): cover graphics fence recovery * fix(tui): recover graphics fence timeouts * test(tui): cover final graphics lifecycle gaps * fix(tui): bound graphics recovery lifecycle * test(tui): cover pointer lifecycle liveness * fix(tui): bound browser pointer ownership * test(tui): cover final pointer recovery gaps * fix(tui): close negotiated pointer lifecycles * test(tui): cover same-document capture exhaustion * fix(tui): surface capture recovery failures * test(tui): cover terminal resize and hover recovery * fix(tui): settle terminal pointer recovery * test(tui): cover final pointer review findings * fix(tui): close final pointer review findings * test(tui): cover final navigation review findings * fix(tui): preserve browser recovery authority * test(tui): cover loaderless snapshot failure * fix(tui): settle loaderless snapshot failures * test(tui): cover rejected browser authority races * fix(tui): reject stale browser authority * test(tui): cover bootstrap snapshot invalidation * fix(tui): retry invalidated bootstrap snapshots * test(tui): reject unproven timestampless pixels * fix(tui): verify each timestampless browser frame * test(tui): cover stale capture suppression races * fix(tui): scope browser capture suppression * test(tui): release superseded capture reservations * fix(tui): release superseded capture ownership * test(tui): reject stale cleanup releases * fix(tui): discard stale cleanup releases * test(tui): hide stale attach pointer tokens * fix(tui): mask stale attach pointer tokens * test(tui): reject legacy guarded browser attach * fix(tui): require scoped browser attach owner * test(tui): retain timed-out image deletions * test(tui): clean images after fence exhaustion * fix(tui): preserve graphics cleanup after timeout * test(tui): bound timestampless frame recovery * fix(tui): throttle timestampless frame recovery * test(tui): cover graphics backpressure cleanup * fix(tui): bound graphics output ownership * test(tui): cover unresolved output and navigation * fix(tui): recover unresolved output and navigation * test(tui): preserve browser timeout accounting * fix(tui): preserve browser timeout accounting * test(tui): keep verification failures terminal * fix(tui): keep verification failures terminal * test(tui): verify failed browser retries * test(tui): keep failed browser input blocked * test(tui): attach browser recovery epochs * fix(tui): verify failed browser retries * test(tui): retain committed navigation races * test(tui): keep raced navigation paint * test(tui): restore verified superseded navigation * fix(tui): reconcile committed navigation races * test(tui): cover stale browser bitmap authority * fix(tui): bind pointer authority to exact browser bitmap * test(tui): cover guarded pointer scheduling * fix(tui): schedule guarded pointer input per surface * test(tui): cover cross-surface browser input isolation * fix(tui): isolate browser input by surface * test(tui): cover browser pointer authority gaps * fix(tui): preserve safe browser pointer authority * test(tui): cover loaderless navigation snapshot race * fix(tui): retry invalidated loaderless snapshots * test(tui): cover impossible graphics response prefix * fix(tui): replay impossible graphics prefixes * test(tui): cover restart overtaking same-document navigation * fix(tui): preserve queued same-document navigation * test(tui): bound browser input workers * fix(tui): bound browser input workers * test(tui): cover state then frame attach coalescing * fix(tui): coalesce attach state with newer frames * test(tui): cover colliding browser surface workers * fix(tui): schedule browser input per surface * test(tui): cover scheduler fairness and global bounds * fix(tui): bound and time-slice browser input * test(tui): cover scheduler lifecycle regressions * fix(tui): preserve bounded browser input lifecycles * test(tui): cover end-to-end key press admission * fix(tui): carry key presses through final queue * test(tui): cover sustained graphics authority * fix(tui): advance acknowledged graphics authority * test(tui): cover final browser frame admission * fix(tui): admit presented browser frame ranges * test(tui): require presented pointer authority * fix(tui): bind pointer input to presented frames * test(tui): dedupe presentation acknowledgements * fix(tui): publish presentation changes once * test: preserve replaced navigation command order * fix: preserve replacement browser command order * test: cover resilient screencast resize barrier * fix: fall back when screencast clock probe fails * test: cover browser authority liveness gaps * fix: bound browser authority lifecycles * test(tui): cover bounded pointer authority recovery * fix(tui): bound pointer authority retries * test(tui): preserve deferred pointer ordering * fix(tui): retain motion behind deferred pointer input * test(tui): cover pointer recovery degradation * fix(tui): recover bounded pointer fallbacks * test(tui): cover pointer retry scheduling * fix(tui): sleep until pointer release retry | 1 个月前 | |
Fix TUI pointer motion during layout updates (#8709) * fix(tui): gate input on surface attach readiness * test(tui): cover redraw and config routing barriers * fix(tui): render before replaying routed input * refactor(tui): generalize event loop backend * test(tui): cover deferred pointer ordering * fix(tui): preserve deferred input order * test(tui): cover cell pixel pointer barrier * fix(tui): route cell pixel geometry updates * test(tui): cover routing state boundaries * fix(tui): separate pointer routes from destination intent * test(tui): cover paint pointer route barrier * fix(tui): guard pointer routes during paint * test(tui): cover retained input ordering * fix(tui): preserve pointer input across render barriers * test(tui): cover replay requeue ordering * fix(tui): preserve replay order across requeue * test(tui): cover pointer frame and focus barriers * fix(tui): bind deferred pointer input to rendered frames * test(tui): cover trusted pointer frame barriers * fix(tui): close trusted pointer frame gaps * test(tui): cover merged pointer session lifecycle * fix(tui): reset pointer frame state across sessions * test(tui): expose browser release lifecycle gaps * fix(tui): preserve browser release across session retirement * test(tui): expose remaining pointer routing gaps * fix(tui): close remaining pointer routing gaps * test(tui): expose pointer semantic ownership gaps * fix(tui): preserve pointer routing semantics * test(tui): expose immediate pointer semantic race * fix(tui): admit pointer input against terminal semantics * test(tui): expose final pointer admission gaps * fix(tui): close final pointer admission races * test(tui): expose remaining deferred input races * fix(tui): preserve deferred input identities * test(tui): expose remaining pointer admission gaps * fix(tui): stabilize pointer admission owners * test(tui): expose replay lifecycle regressions * fix(tui): close replay lifecycle gaps * test(tui): reject stale pointer geometry * fix(tui): guard and inline pointer encoding * test(tui): expose pointer capture ownership gaps * fix(tui): complete pointer capture ownership * test(tui): reject replay across pane repaints * fix(tui): bind pointer replay to rendered content * test(tui): expose remaining pointer ordering races * fix(tui): guard terminal pointer ordering * fix(tui): gate browser input on presentation * test(tui): expose stale presentation identities * fix(tui): bind menus and graphics to presentation * test(tui): expose UTF-8 mouse mode collision * fix(tui): make mouse mode scan UTF-8 aware * test(tui): expose graphics writer failure wedge * fix(tui): settle failed graphics presentations * test(tui): expose cross-session graphics collision * fix(tui): scope graphics to machine sessions * test(tui): expose browser pointer admission gaps * fix(tui): guard browser pointer dispatch * test(tui): expose remaining pointer ownership gaps * fix(tui): preserve scoped pointer ownership * test(tui): preserve browser drag ownership across frames * fix(tui): preserve browser pointer captures * test(tui): expose pointer lifecycle gaps * fix(tui): close pointer lifecycle gaps * test(tui): expose browser frame admission leak * fix(tui): propagate browser pointer admission * test(tui): expose pointer admission compatibility gaps * fix(tui): close pointer admission compatibility gaps * test(tui): expose reviewed pointer authority gaps * test(tui): target guarded browser mouse shape * test(tui): expose diagnostic pointer authority gap * fix(tui): preserve pointer authority across boundaries * test(tui): expose pointer barrier ownership races * test(tui): expose ambiguous navigation rollback * fix(tui): preserve pointer barriers across CDP races * test(tui): expose frame epoch recovery gaps * fix(tui): recover frame epoch transitions * test(tui): expose pointer lifecycle ordering gaps * fix(tui): reconcile pointer lifecycle epochs * test(tui): expose pointer transition failure gaps * fix(tui): settle failed pointer transitions * test(tui): cover unresolved pointer authority transitions * fix(tui): keep pointer authority fail-closed * test(tui): cover download and mouse probe regressions * fix(tui): settle downloads and gate mouse probes * test(tui): cover document paint authority gaps * test(tui): reject delayed pre-restart browser frames * fix(tui): bind pointer authority to painted documents * test(tui): advertise guarded pointer fixture capability * test(tui): cover pointer authority recovery gaps * fix(tui): recover guarded browser frame authority * test(tui): cover remote screencast recovery bounds * fix(tui): bound remote screencast recovery * test(tui): cover bounded pointer recovery gaps * fix(tui): bound pointer authority recovery * test(tui): cover unresolved navigation authority gaps * fix(tui): reconcile unresolved browser navigation * test(tui): cover end-to-end pointer authority gaps * test(tui): stop rejected frame recovery at ingress * fix(tui): enforce end-to-end pointer authority * test(tui): preserve guarded pointer wire compatibility * fix(tui): negotiate guarded browser pointer attach * test(tui): cover final pointer authority races * fix(tui): close pointer authority races * test(tui): cover remaining pointer authority gaps * fix(tui): separate pointer authority from graphics processing * test(tui): cover pointer worker lifecycle gaps * fix(tui): close pointer worker lifecycle gaps * test(tui): cover final pointer worker gaps * fix(tui): eliminate idle pointer polling * test(tui): cover pointer ownership invalidation * fix(tui): preserve browser release ownership * test(tui): cover remaining pointer ordering gaps * fix(tui): close final pointer ordering gaps * test(tui): cover graphics fence recovery * fix(tui): recover graphics fence timeouts * test(tui): cover final graphics lifecycle gaps * fix(tui): bound graphics recovery lifecycle * test(tui): cover pointer lifecycle liveness * fix(tui): bound browser pointer ownership * test(tui): cover final pointer recovery gaps * fix(tui): close negotiated pointer lifecycles * test(tui): cover same-document capture exhaustion * fix(tui): surface capture recovery failures * test(tui): cover terminal resize and hover recovery * fix(tui): settle terminal pointer recovery * test(tui): cover final pointer review findings * fix(tui): close final pointer review findings * test(tui): cover final navigation review findings * fix(tui): preserve browser recovery authority * test(tui): cover loaderless snapshot failure * fix(tui): settle loaderless snapshot failures * test(tui): cover rejected browser authority races * fix(tui): reject stale browser authority * test(tui): cover bootstrap snapshot invalidation * fix(tui): retry invalidated bootstrap snapshots * test(tui): reject unproven timestampless pixels * fix(tui): verify each timestampless browser frame * test(tui): cover stale capture suppression races * fix(tui): scope browser capture suppression * test(tui): release superseded capture reservations * fix(tui): release superseded capture ownership * test(tui): reject stale cleanup releases * fix(tui): discard stale cleanup releases * test(tui): hide stale attach pointer tokens * fix(tui): mask stale attach pointer tokens * test(tui): reject legacy guarded browser attach * fix(tui): require scoped browser attach owner * test(tui): retain timed-out image deletions * test(tui): clean images after fence exhaustion * fix(tui): preserve graphics cleanup after timeout * test(tui): bound timestampless frame recovery * fix(tui): throttle timestampless frame recovery * test(tui): cover graphics backpressure cleanup * fix(tui): bound graphics output ownership * test(tui): cover unresolved output and navigation * fix(tui): recover unresolved output and navigation * test(tui): preserve browser timeout accounting * fix(tui): preserve browser timeout accounting * test(tui): keep verification failures terminal * fix(tui): keep verification failures terminal * test(tui): verify failed browser retries * test(tui): keep failed browser input blocked * test(tui): attach browser recovery epochs * fix(tui): verify failed browser retries * test(tui): retain committed navigation races * test(tui): keep raced navigation paint * test(tui): restore verified superseded navigation * fix(tui): reconcile committed navigation races * test(tui): cover stale browser bitmap authority * fix(tui): bind pointer authority to exact browser bitmap * test(tui): cover guarded pointer scheduling * fix(tui): schedule guarded pointer input per surface * test(tui): cover cross-surface browser input isolation * fix(tui): isolate browser input by surface * test(tui): cover browser pointer authority gaps * fix(tui): preserve safe browser pointer authority * test(tui): cover loaderless navigation snapshot race * fix(tui): retry invalidated loaderless snapshots * test(tui): cover impossible graphics response prefix * fix(tui): replay impossible graphics prefixes * test(tui): cover restart overtaking same-document navigation * fix(tui): preserve queued same-document navigation * test(tui): bound browser input workers * fix(tui): bound browser input workers * test(tui): cover state then frame attach coalescing * fix(tui): coalesce attach state with newer frames * test(tui): cover colliding browser surface workers * fix(tui): schedule browser input per surface * test(tui): cover scheduler fairness and global bounds * fix(tui): bound and time-slice browser input * test(tui): cover scheduler lifecycle regressions * fix(tui): preserve bounded browser input lifecycles * test(tui): cover end-to-end key press admission * fix(tui): carry key presses through final queue * test(tui): cover sustained graphics authority * fix(tui): advance acknowledged graphics authority * test(tui): cover final browser frame admission * fix(tui): admit presented browser frame ranges * test(tui): require presented pointer authority * fix(tui): bind pointer input to presented frames * test(tui): dedupe presentation acknowledgements * fix(tui): publish presentation changes once * test: preserve replaced navigation command order * fix: preserve replacement browser command order * test: cover resilient screencast resize barrier * fix: fall back when screencast clock probe fails * test: cover browser authority liveness gaps * fix: bound browser authority lifecycles * test(tui): cover bounded pointer authority recovery * fix(tui): bound pointer authority retries * test(tui): preserve deferred pointer ordering * fix(tui): retain motion behind deferred pointer input * test(tui): cover pointer recovery degradation * fix(tui): recover bounded pointer fallbacks * test(tui): cover pointer retry scheduling * fix(tui): sleep until pointer release retry | 1 个月前 | |
cmux-tui: add familiar terminal shortcuts (#8698) * test(tui): cover command-k history clearing * feat(tui): add familiar terminal shortcuts * fix(tui): request command-modified key events * test(tui): preserve prompt when clearing history * fix(tui): preserve prompt when clearing history * test(tui): cover shortcut review regressions * fix(tui): close shortcut review gaps * test(tui): cover autoreview clear-history regressions * fix(tui): make history clearing protocol-safe * test(tui): cover final shortcut review regressions * fix(tui): keep terminal clears surface-local * test(tui): cover final keyboard review findings * fix(tui): preserve terminal keyboard semantics * test(tui): cover shifted shortcut review regressions * fix(tui): normalize enhanced shifted keys * test(tui): cover layout and wrapped prompt regressions * fix(tui): preserve layout and live prompt semantics * test(tui): cover associated keyboard semantics * fix(tui): normalize enhanced keyboard input * test(tui): cover final prompt safety regressions * fix(tui): harden prompt keyboard startup * test(tui): cover consumed keyboard regressions * fix(tui): honor consumed keyboard text * test(tui): cover final clear-history review gaps * fix(tui): close final clear-history review gaps * test(tui): cover final autoreview regressions * fix(tui): resolve final autoreview blockers * test(tui): cover serialized prompt redraw * fix(tui): serialize prompt-safe history clear * test(tui): read alternate-screen readiness replay * test(tui): cover consumed Option and Ctrl-Shift metadata * fix(tui): preserve enhanced keyboard identity * test(tui): cover authoritative terminal safety * fix(tui): make terminal shortcut routing authoritative * test(tui): cover authoritative shortcut encoding * fix(tui): encode shortcut fallback authoritatively * test(tui): cover safe shortcut fallback protocol * fix(tui): validate authoritative key fallback * test(tui): cover streaming shortcut safety * fix(tui): make shortcut fallback streaming-safe * test(tui): reject pre-submit prompt redraws * fix(tui): sequence prompt and keyboard ownership * test(tui): cover prompt lifecycle safety * fix(tui): fail closed on prompt lifecycle * test(tui): preserve prompt during history clear * fix(tui): clear history without shell input * test(tui): rely on executable binding conformance * fix(tui): preserve clear history lock order * test(tui): cover terminal shortcut delivery barriers * fix(tui): preserve alt shortcuts and await host clear * test(tui): preserve modified associated key events * fix(tui): retain modified associated key events * test(tui): reject lossy extended modifiers * fix(tui): preserve shortcuts at host boundary * test(tui): cover explicit option routing and compact input * fix(tui): harden terminal shortcut routing * test(tui): clear visible rows without prompt metadata * fix(tui): clear completed rows without prompt metadata * test(tui): cover terminal-standard clear shortcut * fix(tui): honor terminal-standard clear shortcut * fix(macOS): import dock shell activity type * fix(macOS): make session snapshot types explicit * fix(macOS): return resume policy explicitly * test(tui): cover host keyboard protocol edge cases * fix(tui): validate host keyboard capabilities * test(tui): cover bounded terminal response reads * fix(tui): bound host keyboard capability probe * test(tui): cover remaining shortcut edge cases * fix(tui): preserve shortcut routing invariants * test(web): avoid leaking feedback environment mock * test(tui): expose legacy CSI-u shifted characters * fix(tui): normalize legacy CSI-u shift input * fix(macOS): restore dock checks on current main * test(tui): preserve per-event keyboard metadata * fix(tui): trust per-event keyboard metadata * fix(macOS): isolate dock snapshot filtering * test(tui): cover fallback payload queue accounting * fix(tui): bound fallback payload queue memory * test(ci): cover TestFlight variant identities * test(macOS): import checklist setting in sidebar fixture * fix(macOS): repair sidebar suspension integration * test(tui): cover clear-history preservation boundaries * fix(tui): make clear-history delivery total * test(tui): cover Caps Lock Alt shortcut routing * fix(tui): preserve Alt shortcuts under Caps Lock * fix(macOS): isolate feature flag default evaluation * test(tui): cover intermediate clear-history peers * fix(tui): preserve intermediate remote clear support * test(tui): cover non-atomic remote shortcut routing * fix(tui): require atomic remote shortcut routing * test(tui): cover unencodable clear fallback * fix(tui): report undeliverable clear shortcuts * test(tui): require bounded keyboard protocol probe * fix(tui): bound host keyboard protocol probe * test(tui): preserve meaningful shift chords * fix(tui): retain meaningful shift modifiers * test(tui): cover enhanced non-ascii shift binding * fix(tui): align enhanced shift shortcut identity * test(tui): reject non-authoritative clear fallback * fix(tui): reject non-authoritative clear fallback * test(tui): cover private screen mode restore semantics * fix(tui): track private screen modes independently * test(tui): reject ambiguous option shortcuts * fix(tui): fail closed on ambiguous option input * test(tui): preserve empty option CSI-u events * fix(tui): preserve ambiguous CSI-u input * test(tui): isolate prompt tracking from control strings * fix(tui): isolate prompt tracking control strings * test(tui): align alt CSI-u parser expectations * test(tui): satisfy control string test lint * test(tui): keep ctrl-l child-owned * fix(tui): keep ctrl-l child-owned * test(tui): preserve metadata-free multiline input * fix(tui): preserve metadata-free visible input * test(tui): align ctrl-l shortcut expectations * test(tui): cover enhanced shortcut review gaps * fix(tui): preserve enhanced shortcut semantics * test(tui): exercise child-owned ctrl-l directly * test(tui): preserve fallback base layout identity * fix(tui): preserve fallback layout metadata * test(tui): reject clears inside partial VT streams * fix(tui): guard clear at VT stream boundaries * test(tui): retain clear intent across partial VT output * fix(tui): defer clear until VT boundary * test(tui): cover final clear-history review gaps * fix(tui): fail closed and settle clear UI * test(tui): cover metadata fallback and progress wakes * fix(tui): preserve metadata-free clear fallback * test(tui): cover prompt continuation in history * fix(tui): guard prompt continuations in history * test(tui): cover Unicode VT boundaries and ambiguous clears * fix(tui): track string UTF-8 and ambiguous clears * test(tui): distinguish deterministic clear failures * fix(tui): preserve clear failure delivery certainty * test(tui): cover clear coalescing and transport ambiguity * fix(tui): bound clear retries and delivery certainty * test(tui): preserve fallback repeats without timeout backlog * fix(tui): share stalled clear wait budgets * test(tui): cover repeated prompt markers in history * fix(tui): preserve prompts spanning history * test(tui): cover output racing clear timeout release * fix(tui): rearm clear waits after raced output * test(tui): cover fallback key WebSocket budget * fix(tui): bound fallback keys to transport budget * test(tui): cover delayed clear and enhanced key regressions * fix(tui): preserve enhanced input and newer clear state * test(tui): cover clear queue and selection races * fix(tui): isolate clear operations per surface * test(tui): cover enhanced text and remote clear blocking * fix(tui): keep remote clear off connection readers * test(tui): cover scheduler resource and ordering bounds * fix(tui): bound and order clear schedulers * test(tui): cover global clear limits and host certainty * fix(tui): bound server clears and preserve host failures * test(tui): cover clear liveness and alt certainty * fix(tui): isolate and bound terminal clear work * test(tui): cover review closeout regressions * fix(tui): retain control admission and clear prefixes safely * test(tui): cover partial host control writes * fix(tui): preserve ambiguous host control delivery * test(tui): cover ambiguous clear lane safety * fix(tui): quarantine ambiguous input lanes * test(tui): cover graceful drain and rejection certainty * fix(tui): drain accepted relay requests safely * test(tui): cover input lane session ownership * fix(tui): scope input lanes to session generation * test(tui): cover dead keys and press recovery * fix(tui): preserve composition and recovery releases * docs(tui): clarify relay response ordering * test(tui): cover local press recovery release * fix(tui): retain ambiguous press recovery release * test(tui): cover clear admission and input localization * fix(tui): admit runnable clears and localize input failures * test(tui): preserve real alt without associated text * fix(tui): resolve ambiguous option input explicitly * test(tui): cover saturated clear lane ordering * fix(tui): preserve clear lane order at worker cap * test(tui): cover clear fallback lifecycle gaps * fix(tui): close clear fallback lifecycle gaps * test(tui): expose legacy clear fallback capability * fix(tui): gate clear shortcut by active surface * test(tui): cover blocking clear barrier bypass * fix(tui): fence blocking clear barrier bypasses * test(tui): require lock-free clear capability reads * fix(tui): cache clear capability outside writer lock * test(tui): require localized option mode warning * fix(tui): localize invalid option mode warning | 2 个月前 | |
rebrand: mux -> cmux-tui across the Rust TUI subproject (#7710) Directory mux/ -> cmux-tui/; binary cmux-mux -> cmux-tui; crates mux-core/mux-cdp/mux-tui -> cmux-tui-core/cmux-tui-cdp/cmux-tui; wire app identity cmux-mux -> cmux-tui (protocol stays 6, fixtures updated); workflows mux.yml -> cmux-tui.yml etc (trusted-publisher-pinned filenames untouched). Compat shims: CMUX_TUI_SOCKET/CONFIG/TERM preferred with CMUX_MUX_* fallbacks (server exports both), config cmux-tui.json preferred with mux.json fallback, cmux-sdk-v* tags accepted alongside mux-sdk-v*. Grep audit clean. | 2 个月前 | |
Add horizontally scrolling columns to cmux-tui (#8850) * Add horizontal scrolling layout to cmux-tui * Make horizontal panes command-driven * Add horizontal viewport regression coverage * Make horizontal viewport columns resilient and resizable * Make horizontal columns first-class and undoable * fix(cmux-tui): harden horizontal viewport behavior * fix(cmux-tui): preserve viewport navigation invariants * fix(cmux-tui): harden wide viewport interactions * fix(cmux-tui): close horizontal viewport review gaps * fix(cmux-tui): preserve viewport compatibility contracts * fix(cmux-tui): skip unchanged resize mutations * fix(cmux-tui): harden viewport failure boundaries * fix(cmux-tui): preserve focus and localize layout failures * test(cmux-tui): cover resize owner collisions * fix(cmux-tui): isolate resize transaction owners * test(cmux-tui): cover clipped browser frame hot paths * fix(cmux-tui): keep clipped browser editing responsive * test(cmux-tui): repair current smoke expectations * test(cmux-tui): cover stack selection across layout undo * fix(cmux-tui): preserve stack focus through layout undo * test(cmux-tui): cover clamped viewport ratio updates * fix(cmux-tui): preserve authoritative resize state * test(cmux-tui): cover wide status labels beside scrollbar * fix(cmux-tui): measure status labels in terminal cells * test(cmux-tui): cover scrollbar anchors and undo flags * fix(cmux-tui): anchor scrollbar drags and undo flags * test(cmux-tui): cover stable resize and emoji geometry * fix(cmux-tui): freeze resize geometry and cell widths * test(cmux-tui): cover efficient animated chrome rendering * fix(cmux-tui): isolate animated viewport painting * test(cmux-tui): cover browser crops and abandoned resize * fix(cmux-tui): preserve image crops and resize undo fences * test(cmux-tui): cover zoom focus restoration * fix(cmux-tui): align restored zoom and focus * test(cmux-tui): cover exact-fit status labels * fix(cmux-tui): render exact-fit status labels * test(cmux-tui): cover swept viewport leases * fix(cmux-tui): lease swept viewport panes * test(cmux-tui): cover localized finite width errors * fix(cmux-tui): localize viewport width errors * test(cmux-tui): cover distant jumps and wide projections * fix(cmux-tui): bound jumps and preserve projections * test(cmux-tui): cover additive binding fields * fix(cmux-tui): expose additive binding metadata * test(cmux-tui): cover bounded localized rendering * fix(cmux-tui): bound and localize render inputs * test(cmux-tui): cover autoreview regressions * fix(cmux-tui): close autoreview correctness gaps * test(cmux-tui): reject invalid SDK pane widths * fix(cmux-tui): validate SDK pane widths locally * test(cmux-tui): preserve nullable pane width * fix(cmux-tui): preserve nullable pane width * test(cmux-tui): require breaking Rust SDK version * fix(cmux-tui): version Rust SDK error shape * test(cmux-tui): reject invalid SDK viewport widths * fix(cmux-tui): validate remaining SDK viewport widths * test(cmux-tui): validate Go viewport resize width * fix(cmux-tui): validate Go viewport resize width * test(cmux-tui): cover release version and locale contracts * fix(cmux-tui): synchronize SDK versions and locale * test(cmux-tui): reject unsafe undo previews * fix(cmux-tui): reject unsafe undo previews * test(cmux-tui): enforce complete undo result contracts * fix(cmux-tui): centralize layout undo decoding * test(cmux-tui): bound viewport reclip work * fix(cmux-tui): index animated viewport projections * test(cmux-tui): type layout undo edge failures * fix(cmux-tui): type layout undo race failures * test(cmux-tui): cover missing browser CSS dimensions * fix(cmux-tui): accept missing browser CSS dimensions * test(cmux-tui): keep SDK runbook version synchronized * docs(cmux-tui): update SDK release version | 1 个月前 | |
cmux-tui: add familiar terminal shortcuts (#8698) * test(tui): cover command-k history clearing * feat(tui): add familiar terminal shortcuts * fix(tui): request command-modified key events * test(tui): preserve prompt when clearing history * fix(tui): preserve prompt when clearing history * test(tui): cover shortcut review regressions * fix(tui): close shortcut review gaps * test(tui): cover autoreview clear-history regressions * fix(tui): make history clearing protocol-safe * test(tui): cover final shortcut review regressions * fix(tui): keep terminal clears surface-local * test(tui): cover final keyboard review findings * fix(tui): preserve terminal keyboard semantics * test(tui): cover shifted shortcut review regressions * fix(tui): normalize enhanced shifted keys * test(tui): cover layout and wrapped prompt regressions * fix(tui): preserve layout and live prompt semantics * test(tui): cover associated keyboard semantics * fix(tui): normalize enhanced keyboard input * test(tui): cover final prompt safety regressions * fix(tui): harden prompt keyboard startup * test(tui): cover consumed keyboard regressions * fix(tui): honor consumed keyboard text * test(tui): cover final clear-history review gaps * fix(tui): close final clear-history review gaps * test(tui): cover final autoreview regressions * fix(tui): resolve final autoreview blockers * test(tui): cover serialized prompt redraw * fix(tui): serialize prompt-safe history clear * test(tui): read alternate-screen readiness replay * test(tui): cover consumed Option and Ctrl-Shift metadata * fix(tui): preserve enhanced keyboard identity * test(tui): cover authoritative terminal safety * fix(tui): make terminal shortcut routing authoritative * test(tui): cover authoritative shortcut encoding * fix(tui): encode shortcut fallback authoritatively * test(tui): cover safe shortcut fallback protocol * fix(tui): validate authoritative key fallback * test(tui): cover streaming shortcut safety * fix(tui): make shortcut fallback streaming-safe * test(tui): reject pre-submit prompt redraws * fix(tui): sequence prompt and keyboard ownership * test(tui): cover prompt lifecycle safety * fix(tui): fail closed on prompt lifecycle * test(tui): preserve prompt during history clear * fix(tui): clear history without shell input * test(tui): rely on executable binding conformance * fix(tui): preserve clear history lock order * test(tui): cover terminal shortcut delivery barriers * fix(tui): preserve alt shortcuts and await host clear * test(tui): preserve modified associated key events * fix(tui): retain modified associated key events * test(tui): reject lossy extended modifiers * fix(tui): preserve shortcuts at host boundary * test(tui): cover explicit option routing and compact input * fix(tui): harden terminal shortcut routing * test(tui): clear visible rows without prompt metadata * fix(tui): clear completed rows without prompt metadata * test(tui): cover terminal-standard clear shortcut * fix(tui): honor terminal-standard clear shortcut * fix(macOS): import dock shell activity type * fix(macOS): make session snapshot types explicit * fix(macOS): return resume policy explicitly * test(tui): cover host keyboard protocol edge cases * fix(tui): validate host keyboard capabilities * test(tui): cover bounded terminal response reads * fix(tui): bound host keyboard capability probe * test(tui): cover remaining shortcut edge cases * fix(tui): preserve shortcut routing invariants * test(web): avoid leaking feedback environment mock * test(tui): expose legacy CSI-u shifted characters * fix(tui): normalize legacy CSI-u shift input * fix(macOS): restore dock checks on current main * test(tui): preserve per-event keyboard metadata * fix(tui): trust per-event keyboard metadata * fix(macOS): isolate dock snapshot filtering * test(tui): cover fallback payload queue accounting * fix(tui): bound fallback payload queue memory * test(ci): cover TestFlight variant identities * test(macOS): import checklist setting in sidebar fixture * fix(macOS): repair sidebar suspension integration * test(tui): cover clear-history preservation boundaries * fix(tui): make clear-history delivery total * test(tui): cover Caps Lock Alt shortcut routing * fix(tui): preserve Alt shortcuts under Caps Lock * fix(macOS): isolate feature flag default evaluation * test(tui): cover intermediate clear-history peers * fix(tui): preserve intermediate remote clear support * test(tui): cover non-atomic remote shortcut routing * fix(tui): require atomic remote shortcut routing * test(tui): cover unencodable clear fallback * fix(tui): report undeliverable clear shortcuts * test(tui): require bounded keyboard protocol probe * fix(tui): bound host keyboard protocol probe * test(tui): preserve meaningful shift chords * fix(tui): retain meaningful shift modifiers * test(tui): cover enhanced non-ascii shift binding * fix(tui): align enhanced shift shortcut identity * test(tui): reject non-authoritative clear fallback * fix(tui): reject non-authoritative clear fallback * test(tui): cover private screen mode restore semantics * fix(tui): track private screen modes independently * test(tui): reject ambiguous option shortcuts * fix(tui): fail closed on ambiguous option input * test(tui): preserve empty option CSI-u events * fix(tui): preserve ambiguous CSI-u input * test(tui): isolate prompt tracking from control strings * fix(tui): isolate prompt tracking control strings * test(tui): align alt CSI-u parser expectations * test(tui): satisfy control string test lint * test(tui): keep ctrl-l child-owned * fix(tui): keep ctrl-l child-owned * test(tui): preserve metadata-free multiline input * fix(tui): preserve metadata-free visible input * test(tui): align ctrl-l shortcut expectations * test(tui): cover enhanced shortcut review gaps * fix(tui): preserve enhanced shortcut semantics * test(tui): exercise child-owned ctrl-l directly * test(tui): preserve fallback base layout identity * fix(tui): preserve fallback layout metadata * test(tui): reject clears inside partial VT streams * fix(tui): guard clear at VT stream boundaries * test(tui): retain clear intent across partial VT output * fix(tui): defer clear until VT boundary * test(tui): cover final clear-history review gaps * fix(tui): fail closed and settle clear UI * test(tui): cover metadata fallback and progress wakes * fix(tui): preserve metadata-free clear fallback * test(tui): cover prompt continuation in history * fix(tui): guard prompt continuations in history * test(tui): cover Unicode VT boundaries and ambiguous clears * fix(tui): track string UTF-8 and ambiguous clears * test(tui): distinguish deterministic clear failures * fix(tui): preserve clear failure delivery certainty * test(tui): cover clear coalescing and transport ambiguity * fix(tui): bound clear retries and delivery certainty * test(tui): preserve fallback repeats without timeout backlog * fix(tui): share stalled clear wait budgets * test(tui): cover repeated prompt markers in history * fix(tui): preserve prompts spanning history * test(tui): cover output racing clear timeout release * fix(tui): rearm clear waits after raced output * test(tui): cover fallback key WebSocket budget * fix(tui): bound fallback keys to transport budget * test(tui): cover delayed clear and enhanced key regressions * fix(tui): preserve enhanced input and newer clear state * test(tui): cover clear queue and selection races * fix(tui): isolate clear operations per surface * test(tui): cover enhanced text and remote clear blocking * fix(tui): keep remote clear off connection readers * test(tui): cover scheduler resource and ordering bounds * fix(tui): bound and order clear schedulers * test(tui): cover global clear limits and host certainty * fix(tui): bound server clears and preserve host failures * test(tui): cover clear liveness and alt certainty * fix(tui): isolate and bound terminal clear work * test(tui): cover review closeout regressions * fix(tui): retain control admission and clear prefixes safely * test(tui): cover partial host control writes * fix(tui): preserve ambiguous host control delivery * test(tui): cover ambiguous clear lane safety * fix(tui): quarantine ambiguous input lanes * test(tui): cover graceful drain and rejection certainty * fix(tui): drain accepted relay requests safely * test(tui): cover input lane session ownership * fix(tui): scope input lanes to session generation * test(tui): cover dead keys and press recovery * fix(tui): preserve composition and recovery releases * docs(tui): clarify relay response ordering * test(tui): cover local press recovery release * fix(tui): retain ambiguous press recovery release * test(tui): cover clear admission and input localization * fix(tui): admit runnable clears and localize input failures * test(tui): preserve real alt without associated text * fix(tui): resolve ambiguous option input explicitly * test(tui): cover saturated clear lane ordering * fix(tui): preserve clear lane order at worker cap * test(tui): cover clear fallback lifecycle gaps * fix(tui): close clear fallback lifecycle gaps * test(tui): expose legacy clear fallback capability * fix(tui): gate clear shortcut by active surface * test(tui): cover blocking clear barrier bypass * fix(tui): fence blocking clear barrier bypasses * test(tui): require lock-free clear capability reads * fix(tui): cache clear capability outside writer lock * test(tui): require localized option mode warning * fix(tui): localize invalid option mode warning | 2 个月前 | |
Reclaim hidden Ghostty renderer memory (#8998) * Add five-tab renderer memory regression test * Reclaim hidden terminal renderers by default * Pin shared Metal pipeline Ghostty build * Pin final Ghostty memory build * Pin competitive Ghostty memory build * Test renderer reclamation catalog defaults * Use catalog renderer reclamation defaults * test: require atomic first renderer presentation * fix: make first renderer presentation atomic * fix: resolve renderer defaults through catalog * Exercise renderer defaults through UserDefaults * Pin forced renderer rebuild Ghostty head * Pin forced rebuild GhosttyKit checksum * Test forced renderer rebuild presentation * Preserve forced renderer rebuild presentation * Make renderer defaults regression test throwable * Pin merged Ghostty renderer reclamation head * Pin final GhosttyKit checksum * Pin reviewed Ghostty renderer retry fix * Pin reviewed Ghostty shader cache follow-up * Add red test for Ghostty Zig version drift * Derive Zig version from pinned Ghostty * Run Ghostty Zig version drift test in CI * Test all Ghostty Zig workflow consumers * Synchronize Ghostty Zig workflows * Test Ghostty Zig helper as TestFlight input * Track Ghostty Zig helper in TestFlight inputs * Pin Ghostty shader failure backoff * Pin Ghostty shader attempt backoff * test: require renderer reclaim deadline scheduling * test: initialize linked Ghostty runtime * fix: schedule renderer reclaim at idle deadlines * test: retain synthetic Ghostty argv * fix: coalesce renderer visibility evaluation * test: retain Ghostty runtime argv * fix: wire renderer visibility coalescing * Pin integrated Ghostty mailbox fix * refactor: inject renderer reclaim scheduler inputs * test: exercise renderer reclaim scheduler lifecycle * fix: bound renderer visibility scheduling * test: look up linked Ghostty runtime dynamically * Validate per-consumer Ghostty Zig wiring * test: require fail-closed Ghostty Zig workflows * fix: fail closed on Ghostty Zig resolution * fix: make renderer scheduling verification deterministic * test: coalesce staggered renderer reclaim deadlines * fix: coalesce renderer reclaim deadlines * Update Ghostty renderer retry artifact * test: measure five-tab renderer memory * test: cover compatible Zig patch releases * fix: accept compatible Zig patch releases * refactor: separate renderer realization surface seam --------- Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com> Co-authored-by: austinpower1258 <austinwang115@gmail.com> | 1 个月前 | |
rebrand: mux -> cmux-tui across the Rust TUI subproject (#7710) Directory mux/ -> cmux-tui/; binary cmux-mux -> cmux-tui; crates mux-core/mux-cdp/mux-tui -> cmux-tui-core/cmux-tui-cdp/cmux-tui; wire app identity cmux-mux -> cmux-tui (protocol stays 6, fixtures updated); workflows mux.yml -> cmux-tui.yml etc (trusted-publisher-pinned filenames untouched). Compat shims: CMUX_TUI_SOCKET/CONFIG/TERM preferred with CMUX_MUX_* fallbacks (server exports both), config cmux-tui.json preferred with mux.json fallback, cmux-sdk-v* tags accepted alongside mux-sdk-v*. Grep audit clean. | 2 个月前 |
cmux-tui
cmux-tui is the Rust TUI multiplexer in this repository. It keeps a tmux-style tree of workspaces, screens, split panes, and tabs, uses Ghostty's VT engine for PTY state, and exposes the same state over a JSON-lines control socket for attach clients and other frontends.
Documentation
- Docs index
- Getting started
- Concepts
- Keyboard
- Mouse
- Configuration
- Machines and remote sessions
- Control socket protocol
- Browser panes
Build
Builds need Zig 0.16.0, a Rust toolchain, and the ghostty submodule initialized. The ghostty-vt-sys crate builds libghostty-vt.a from the submodule with Zig before compiling the Rust crates.
cd cmux-tui
cargo build -p cmux-tui
Run
machine-agent is available only on Unix platforms.
cd cmux-tui
cargo run -p cmux-tui
cargo run -p cmux-tui -- --session agents
cargo run -p cmux-tui -- --headless --session agents
cargo run -p cmux-tui -- attach --session agents
cargo run -p cmux-tui -- machine-agent --session agents
cargo run -p cmux-tui -- attach --session agents --surface <surface-id>
The default session is main. Default sockets live at $TMPDIR/cmux-tui-<uid>/<session>.sock; use --socket <path> for an explicit path. Detach from an attached TUI with prefix d, which is Ctrl-b d by default.
Pane layout stays tiled by default. Press Ctrl-b g to append a terminal to the right at two-thirds of the viewport width. The existing layout keeps its width, so a continuous horizontal scrollbar appears in the status bar. Focusing a pane reveals it with an animated viewport movement. Alt-n reapplies Zellij's automatic layout inside the focused horizontal column. Ctrl-b U undoes the latest structural layout action on the focused screen; undoing pane creation asks for confirmation before closing the pane.
attach --surface <id> attaches one PTY terminal by numeric or short surface id. It uses the full host terminal without the sidebar, status bar, pane border, or other tabs.
Packaged builds can run as npx cmux. The optional machine rail lets that local client switch among the current session, other Unix sockets, and sessions reached through SSH. It is disabled by default and activates when machine_sidebar.enabled is true or machines contains a valid entry in cmux-tui.json. npx cmux --cloud composes those local targets with the Cloud catalog and enables temporary machine connections without sending local SSH details to Cloud. The client uses noninteractive SSH with strict host-key checking and the remote cmux-tui relay --session <name> transport primitive, so the remote headless session, trusted host key, authentication key, and binary must already exist. See Machines and remote sessions.
npx cmux
npx cmux machine-agent --session agents
ssh -T dev@buildbox cmux-tui relay --session agents
The Unix-only machine-agent shares an existing local session through one outbound SSH registration with cmux.cloud. It prints a one-time pairing code and opens no listener. The final command carries raw JSON-lines protocol traffic and is normally started by the machine connector, not used as an interactive TUI.
Use --term <value> to set TERM for child PTYs. Without it, children get xterm-256color; CMUX_TUI_TERM can override the process default in the surface layer, with CMUX_MUX_TERM retained as a legacy fallback.
Browser Realism
By default, browser panes launch your real Google Chrome or another Chrome-family binary in browser.mode: "headful" with a visible window and a persistent per-session profile. Log into Google or other sites once in that visible window; cookies and logins persist across sessions. Set browser.mode: "headless" to hide the launched Chrome window. Both modes keep the anti-throttle flags, --disable-blink-features=AutomationControlled, the persistent --user-data-dir, and about:blank startup.
Chrome 136 and newer reject CDP remote debugging on the OS-default profile directory, and a running normal Chrome owns its profile SingletonLock. Use the mux profile, set browser.user_data_dir to a copy or a dedicated directory after quitting normal Chrome, or attach to a Chrome you started with --remote-debugging-port.
To attach instead of launching, set browser.cdp_url, CMUX_MUX_CDP_URL, or enable discovery. Agent Browser works the same way: run agent-browser get cdp-url and use the returned ws:// URL. This build supports ws:// and http:// CDP endpoints; wss:// is not supported.
Development
cd cmux-tui
cargo test
The smoke scripts expect a built cmux-tui binary unless CMUX_TUI_BIN is set.
cd cmux-tui
cargo build -p cmux-tui
python3 scripts/smoke-tui.py
python3 scripts/smoke-attach.py