Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
623 commits
Select commit Hold shift + click to select a range
abc6bf2
fix(tui): target terminal host cleanup exactly
lawrencecchen Aug 1, 2026
5d251fd
test(tui): expose historical host cleanup scan
lawrencecchen Aug 1, 2026
3211656
fix(tui): bound workspace host cleanup
lawrencecchen Aug 1, 2026
0e9a283
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 1, 2026
452d795
test(tui): expose incomplete cleanup fences
lawrencecchen Aug 1, 2026
e92ee8b
fix(tui): fence server and workspace cleanup
lawrencecchen Aug 1, 2026
6ef10db
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 1, 2026
77c7a86
test(tui): expose committed cleanup replay gaps
lawrencecchen Aug 1, 2026
4c7bc6e
test(tui): require provider peer reaping
lawrencecchen Aug 1, 2026
be3545b
fix(tui): close cleanup lifecycle gaps
lawrencecchen Aug 1, 2026
9f3f44d
test(tui): expose identify SDK schema drift
lawrencecchen Aug 2, 2026
1164a68
fix(tui): declare identify cleanup status
lawrencecchen Aug 2, 2026
022b4d5
test(tui): expose ownerless shutdown health gaps
lawrencecchen Aug 2, 2026
2119c45
fix(tui): own complete shutdown health lifecycle
lawrencecchen Aug 2, 2026
67a450e
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 2, 2026
d788676
test(tui): expose failed-spawn shutdown gap
lawrencecchen Aug 2, 2026
54b7f62
fix(tui): fence unpublished child cleanup
lawrencecchen Aug 2, 2026
2626760
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 2, 2026
6ae03fe
test(tui): expose merged shutdown regressions
lawrencecchen Aug 2, 2026
ca5a9e3
fix(tui): close merged release and shutdown gaps
lawrencecchen Aug 2, 2026
4251bed
test: expose remaining lifecycle degradation
lawrencecchen Aug 2, 2026
7ceb92a
fix: bound remaining lifecycle degradation
lawrencecchen Aug 2, 2026
04bf011
test(tui): preserve unreadable host ownership
lawrencecchen Aug 2, 2026
db64c81
fix(tui): fail closed on canonical host records
lawrencecchen Aug 2, 2026
19e63b7
test(tui): expose remaining ownership gaps
lawrencecchen Aug 2, 2026
a31f84d
fix(tui): fence host publication ownership
lawrencecchen Aug 2, 2026
4704fbc
test(mac): expose lost surface creation retry
lawrencecchen Aug 2, 2026
5137b03
fix: recover deferred surface creation
lawrencecchen Aug 2, 2026
2bd396c
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 2, 2026
e0a903f
test(mac): expose stale recovery waiter race
lawrencecchen Aug 2, 2026
268373d
fix(mac): transfer recovered surface ownership
lawrencecchen Aug 2, 2026
6efb7bb
refactor(mac): align teardown ownership policy
lawrencecchen Aug 2, 2026
57ee7c5
test: expose recovery boundedness failures
lawrencecchen Aug 2, 2026
1abb1d6
fix: retain and pace recovery ownership
lawrencecchen Aug 2, 2026
7f86fc0
test(tui): expose unbounded WebSocket teardown
lawrencecchen Aug 2, 2026
6517f7f
fix(tui): bound WebSocket server teardown
lawrencecchen Aug 2, 2026
14a1243
test(mac): expose nonblocking WebSocket clients
lawrencecchen Aug 2, 2026
40e3742
test(tui): replace sleeps with lifecycle signals
lawrencecchen Aug 10, 2026
bfac26e
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 10, 2026
845a402
ci(tui): run Linux tests on Blacksmith
lawrencecchen Aug 10, 2026
f52c5b2
ci(tui): pin Blacksmith test runners
lawrencecchen Aug 10, 2026
d2c87a7
ci(tui): preserve macOS runner routing
lawrencecchen Aug 10, 2026
702109a
ci(tui): allow Blacksmith macOS dispatch
lawrencecchen Aug 10, 2026
4c46ceb
ci(tui): check the Valgrind execution job
lawrencecchen Aug 10, 2026
980b8b1
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 10, 2026
0f2f651
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 10, 2026
95c09c7
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 10, 2026
dd79103
fix(tui): restore cross-platform compilation
lawrencecchen Aug 10, 2026
899a7c4
fix(tui): repair exact-head review and CI findings
lawrencecchen Aug 10, 2026
5600f28
fix(tui): clear remaining hosted lints
lawrencecchen Aug 10, 2026
21a1689
fix(tui): reconcile hosted compile owners
lawrencecchen Aug 10, 2026
35bb283
test(tui): expose unowned runtime launches
lawrencecchen Aug 10, 2026
8829999
fix(tui): require tracked runtime launches
lawrencecchen Aug 10, 2026
dbb61f8
fix(tui): scope websocket test ownership
lawrencecchen Aug 10, 2026
8a676ba
fix(ci): make review gates match lifecycle owners
lawrencecchen Aug 10, 2026
1acf860
fix(ci): keep hosted platform owners portable
lawrencecchen Aug 10, 2026
36edd98
test(macOS): bound stalled surface recovery waiters
lawrencecchen Aug 10, 2026
59b6c93
fix(macOS): bound surface recovery admission
lawrencecchen Aug 10, 2026
f4a3f50
fix(ci): bound hosted lifecycle verification
lawrencecchen Aug 10, 2026
1e409fb
fix(ci): reconcile hosted lifecycle owners
lawrencecchen Aug 10, 2026
02bd74e
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 10, 2026
fafb0bc
fix(tui): reconcile hosted lock and formatting
lawrencecchen Aug 10, 2026
71cdbef
fix(tui): align hosted platform ownership
lawrencecchen Aug 10, 2026
976871a
fix(tui): satisfy hosted test lints
lawrencecchen Aug 10, 2026
02e921c
test(tui): expose unconfirmed shutdown owners
lawrencecchen Aug 10, 2026
dc5789d
fix(tui): retain shutdown lifecycle owners
lawrencecchen Aug 10, 2026
cdb2aae
fix(tui): publish machine identity atomically
lawrencecchen Aug 10, 2026
0959171
test(tui): cover process scan spawn barrier
lawrencecchen Aug 10, 2026
b6f0f72
fix(tui): guard process scan spawn
lawrencecchen Aug 10, 2026
13d4509
fix(tui): retain daemon shutdown receipts
lawrencecchen Aug 10, 2026
694a817
fix(tui): retain local shutdown ownership
lawrencecchen Aug 10, 2026
13aafef
fix(tui): complete shutdown diagnostic fixture
lawrencecchen Aug 10, 2026
6b80094
test(tui): capture complete shutdown failure
lawrencecchen Aug 10, 2026
72f75ea
fix(tui): restore shared path import
lawrencecchen Aug 10, 2026
40d0ffd
fix(tui): clear terminal owners on shutdown
lawrencecchen Aug 10, 2026
7923bee
fix(macOS): require teardown ownership admission
lawrencecchen Aug 10, 2026
4f92abd
fix(tui): close durable terminals atomically
lawrencecchen Aug 10, 2026
9a1027d
Merge commit 'ada6abce88997cc6ce9af963e7fd5eddea4df2e6' into feat-tui…
lawrencecchen Aug 10, 2026
843f561
test(macOS): preserve teardown ingress for owners
lawrencecchen Aug 10, 2026
44ddaf6
fix(macOS): reserve teardown ingress with owners
lawrencecchen Aug 10, 2026
c604649
fix(tui): repair merged runtime structure
lawrencecchen Aug 10, 2026
20f6c22
refactor(macOS): isolate teardown lifecycle types
lawrencecchen Aug 10, 2026
5485a1b
test: retain accepted teardown coordinator
lawrencecchen Aug 10, 2026
c1d87f0
fix: retain accepted teardown submissions
lawrencecchen Aug 10, 2026
16f96ad
fix(tui): restore merged browser failure owner
lawrencecchen Aug 10, 2026
443f274
test(tui): implement ordered control sink
lawrencecchen Aug 10, 2026
a135cc2
test: preserve overflowed surface creation
lawrencecchen Aug 10, 2026
512fea4
test(tui): pass hook payload to wheel fixtures
lawrencecchen Aug 10, 2026
26ad7cb
fix: retry overflowed surface creation
lawrencecchen Aug 10, 2026
b53184d
fix(tui): reconcile merged shutdown contracts
lawrencecchen Aug 10, 2026
ad3f370
test(macOS): bound overflow recovery scans
lawrencecchen Aug 10, 2026
ef6fb6e
fix(macOS): bound overflow recovery work
lawrencecchen Aug 10, 2026
d908b30
fix(tui): satisfy hosted clippy cleanup checks
lawrencecchen Aug 10, 2026
3d191bb
test(macOS): cover overflow recovery cancellation
lawrencecchen Aug 10, 2026
d8004c0
test(tui): bound browser transport shutdown
lawrencecchen Aug 10, 2026
357114e
fix(tui): close browser transport during shutdown
lawrencecchen Aug 10, 2026
9ae8289
test(tui): wait for fixture-owned readiness
lawrencecchen Aug 10, 2026
cbdbe69
fix(tui): complete shutdown owner adaptations
lawrencecchen Aug 10, 2026
ba68f2d
test(macOS): bound surface recovery overflow
lawrencecchen Aug 10, 2026
5de6adc
fix(macOS): bound surface recovery overflow
lawrencecchen Aug 10, 2026
bc867fb
fix(tui): remove timeout qualification
lawrencecchen Aug 10, 2026
72e54f7
test(tui): model adopted host identity
lawrencecchen Aug 10, 2026
6a01424
test(tui): wait for renderer EOF on macOS
lawrencecchen Aug 10, 2026
bfbf7dc
test(macOS): cover stalled close admission
lawrencecchen Aug 10, 2026
c50e8f3
fix(macOS): fail stalled close admission
lawrencecchen Aug 11, 2026
658ce4c
test(tui): exercise provider slot release
lawrencecchen Aug 11, 2026
15b8524
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
8c02577
fix(tui): preserve terminal cleanup identity
lawrencecchen Aug 11, 2026
0a72f83
test(tui): cover restored terminal tab ordering
lawrencecchen Aug 11, 2026
50f1965
fix(tui): project restored terminal tabs
lawrencecchen Aug 11, 2026
0f64dd0
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
4423a96
test(tui): exercise shutdown fanout ownership
lawrencecchen Aug 11, 2026
e322e8f
fix(macOS): lock recovery scheduler state
lawrencecchen Aug 11, 2026
6304e4f
fix(macOS): type teardown gate continuation
lawrencecchen Aug 11, 2026
001c62d
fix(macOS): isolate recovery scheduler lock state
lawrencecchen Aug 11, 2026
a78d60e
fix(macOS): type overflow registration result
lawrencecchen Aug 11, 2026
0d4fbad
fix(tui): satisfy shutdown fanout lint
lawrencecchen Aug 11, 2026
53f824c
test(macOS): bound stalled recovery failures
lawrencecchen Aug 11, 2026
b3131e0
fix(macOS): batch stalled recovery failures
lawrencecchen Aug 11, 2026
e5d35df
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
35ec016
fix(macOS): isolate failure drain lock state
lawrencecchen Aug 11, 2026
9ae05b7
test(tui): signal CDP reader shutdown (#9926)
lawrencecchen Aug 11, 2026
ada14a9
test(tui): cover durable exit cleanup race
lawrencecchen Aug 11, 2026
5b4bf85
fix(tui): acknowledge prepared host exits
lawrencecchen Aug 11, 2026
d52439c
test(tui): cover detached cleanup identity (#9945)
lawrencecchen Aug 11, 2026
06ab13d
test(macOS): cover stalled close recovery order
lawrencecchen Aug 11, 2026
51a3e44
fix(macOS): clear stalled admission before cleanup
lawrencecchen Aug 11, 2026
913eca1
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into fe…
lawrencecchen Aug 11, 2026
dfdc00e
test(macOS): gate stalled recovery at cleanup
lawrencecchen Aug 11, 2026
02df576
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
3e19143
test(tui): order final cleanup retry
lawrencecchen Aug 11, 2026
44cb4a9
test(macOS): cover recovery failure handoff
lawrencecchen Aug 11, 2026
d5a974b
fix(macOS): order recovery failure handoff
lawrencecchen Aug 11, 2026
5c7ee7b
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
159d36e
test(macOS): clear recovered creation failure
lawrencecchen Aug 11, 2026
77f992d
fix(macOS): clear recovered creation failure
lawrencecchen Aug 11, 2026
d2799b7
test(tui): signal final cleanup retry
lawrencecchen Aug 11, 2026
a5569fa
test(tui): stage hook launcher fixtures (#9970)
lawrencecchen Aug 11, 2026
b227749
test(tui): keep failure probes owner-scoped
lawrencecchen Aug 11, 2026
df1f8de
Merge remote branch feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
9c125cd
test(tui): use imported frame errors
lawrencecchen Aug 11, 2026
0625683
test(tui): retire cleanup owners directly
lawrencecchen Aug 11, 2026
d51dffe
test(macOS): retry stalled close recovery
lawrencecchen Aug 11, 2026
1047d23
fix(macOS): retry stalled close recovery
lawrencecchen Aug 11, 2026
ebf50c1
fix(macOS): type stalled recovery grant
lawrencecchen Aug 11, 2026
d155d86
test(tui): match live agent projections
lawrencecchen Aug 11, 2026
6445cad
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
b84df58
test: restore snapshot resume command assertion (#9976)
lawrencecchen Aug 11, 2026
54c3c66
fix(macOS): isolate recovery failure UI
lawrencecchen Aug 11, 2026
f6c3d95
test(tui): signal transient host adoption
lawrencecchen Aug 11, 2026
5b2b75d
test(tui): keep process retry coverage live (#9927)
lawrencecchen Aug 11, 2026
2a4d112
test(tui): release adoption before listener wait
lawrencecchen Aug 11, 2026
b275a35
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
56fd019
test(macOS): return fake surface snapshot
lawrencecchen Aug 11, 2026
5d0e40b
test(macOS): keep overflow recovery behind primary work
lawrencecchen Aug 11, 2026
6245f55
fix(macOS): preserve recovery admission order
lawrencecchen Aug 11, 2026
82e0977
fix(tui): retain catalog adoption owners
lawrencecchen Aug 11, 2026
b66922c
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
cf01408
test(macOS): retain pending recovery failure ownership
lawrencecchen Aug 11, 2026
f128fc0
fix(macOS): retain recovery failure delivery ownership
lawrencecchen Aug 11, 2026
f93d06f
test(tui): remove stale shell quote helper
lawrencecchen Aug 11, 2026
988dc3d
test(macOS): declare recovery owner before cleanup
lawrencecchen Aug 11, 2026
4cd584c
test(tui): wait for adoption reconnect receipt
lawrencecchen Aug 11, 2026
23307cb
test(tui): signal adoption reconnect completion
lawrencecchen Aug 11, 2026
505b4ed
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
1d3c6fd
fix(ci): require Blacksmith macOS verification
lawrencecchen Aug 11, 2026
cafaad9
refactor(tui): centralize browser runtime slot ownership (#9930)
lawrencecchen Aug 11, 2026
c89bf5c
test(macOS): cover nil AppKit subview insertion
lawrencecchen Aug 11, 2026
ad223db
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into fe…
lawrencecchen Aug 11, 2026
304992a
fix(macOS): tolerate nil AppKit subview hooks
lawrencecchen Aug 11, 2026
0ca0d11
test(tui): detach explicit attach fixture
lawrencecchen Aug 11, 2026
45b5859
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
08a03da
test(tui): retain untracked shutdown fixture owner
lawrencecchen Aug 11, 2026
59de735
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
724749b
fix(tui): retain failed attachment owners
lawrencecchen Aug 11, 2026
7e4b9a9
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
44ae65d
test(tui): close quota owners explicitly
lawrencecchen Aug 11, 2026
4671bb2
test(tui): retain failed quota cleanup owner
lawrencecchen Aug 11, 2026
d077933
test(tui): keep undone terminals catalog-owned
lawrencecchen Aug 11, 2026
5dccd41
test(macOS): retain repeated stalled recovery
lawrencecchen Aug 11, 2026
ed1f16d
fix(macOS): retain repeated stalled recovery
lawrencecchen Aug 11, 2026
407ae05
test(macOS): preserve stalled recovery order
lawrencecchen Aug 11, 2026
6d4fade
fix(macOS): preserve recovery delivery order
lawrencecchen Aug 11, 2026
2956e1e
test(tui): retry committed cleanup receipts
lawrencecchen Aug 11, 2026
09cba8e
test(tui): await configured server exit event (#9995)
lawrencecchen Aug 11, 2026
88abaef
test(tui): target terminal shutdown ownership
lawrencecchen Aug 11, 2026
84b5d3d
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into fe…
lawrencecchen Aug 11, 2026
2866d4a
fix(tui): retain terminal close ownership
lawrencecchen Aug 11, 2026
d95c93a
test(tui): cover all process barrier launches
lawrencecchen Aug 11, 2026
be63aae
fix(tui): guard every production child launch
lawrencecchen Aug 11, 2026
90f0f4a
test(macOS): preserve overflow admission order
lawrencecchen Aug 11, 2026
d09ac55
fix(macOS): preserve overflow recovery order
lawrencecchen Aug 11, 2026
41994b9
test(tui): require exact exit sidecar cleanup
lawrencecchen Aug 11, 2026
3383ef5
fix(tui): acknowledge confirmed host exits
lawrencecchen Aug 11, 2026
092b827
refactor(macOS): use restore pacing entrypoint
lawrencecchen Aug 11, 2026
dba1c99
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into cl…
lawrencecchen Aug 11, 2026
bfce2a8
test(cdp): stop after child wait ownership loss
lawrencecchen Aug 11, 2026
7062138
fix(cdp): stop reaping after wait ownership loss
lawrencecchen Aug 11, 2026
c6d1ca7
test(tui): model exact pending host reconnect
lawrencecchen Aug 11, 2026
29f2905
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
eaaea8a
test(tui): wait for websocket connection owners
lawrencecchen Aug 11, 2026
9b92bbb
fix(tui): await websocket shutdown owners
lawrencecchen Aug 11, 2026
5e10f0f
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into cl…
lawrencecchen Aug 11, 2026
9bdfa2b
fix(tui): observe completed websocket shutdown
lawrencecchen Aug 11, 2026
e5b788b
test(tui): cover unavailable task-name identity
lawrencecchen Aug 11, 2026
e14aaff
test(tui): preserve exited terminal replay
lawrencecchen Aug 11, 2026
83e4070
fix(tui): fall back to exact PID versions
lawrencecchen Aug 11, 2026
8a5623e
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
93d92ea
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into cl…
lawrencecchen Aug 11, 2026
54906b3
test(tui): use imported JSON null
lawrencecchen Aug 11, 2026
803d135
fix(tui): retain resource replay revision
lawrencecchen Aug 11, 2026
2fc7768
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into cl…
lawrencecchen Aug 11, 2026
4bdf024
test(tui): preserve process identity across exec
lawrencecchen Aug 11, 2026
a531585
test(tui): cover persisted close and child identity
lawrencecchen Aug 11, 2026
f24608d
fix(tui): read child PID versions directly
lawrencecchen Aug 11, 2026
44e505d
fix(tui): retain process ownership across exec
lawrencecchen Aug 11, 2026
3a319f8
test(tui): preserve terminal tombstone on restart
lawrencecchen Aug 11, 2026
c065d41
fix(tui): close failed renderer writers
lawrencecchen Aug 11, 2026
90d96c4
Merge origin/main into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
05b67cc
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into cl…
lawrencecchen Aug 11, 2026
fc002c2
test(tui): cover restricted child signaling
lawrencecchen Aug 11, 2026
0630967
fix(tui): bracket restricted process identity
lawrencecchen Aug 11, 2026
2f56746
test(tui): use valid exact child signal
lawrencecchen Aug 11, 2026
c98d473
Merge branch 'proof-pr8769-signal-red' into closeout-pr8769-09cba8e
lawrencecchen Aug 11, 2026
6b9e468
test(tui): use supported audit-token signals
lawrencecchen Aug 11, 2026
4f9bb7e
fix(tui): own macOS processes by unique ID
lawrencecchen Aug 11, 2026
505c836
test(tui): cover unique scope signaling
lawrencecchen Aug 11, 2026
11b2648
test(tui): cover cross-platform scope signaling
lawrencecchen Aug 11, 2026
95c9cf0
style(tui): apply hosted rustfmt
lawrencecchen Aug 11, 2026
6414560
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
b0950b2
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into fe…
lawrencecchen Aug 11, 2026
f860e5f
fix(tui): reconcile hosted compile owners
lawrencecchen Aug 11, 2026
9fdb2ed
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 11, 2026
7fe82ba
fix(ci): verify PyPI artifact version
lawrencecchen Aug 12, 2026
84ebf7e
fix(tui): align merged shutdown checks
lawrencecchen Aug 12, 2026
90357a0
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 12, 2026
4c9a853
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 12, 2026
3228548
test(macOS): release fake runtime pointers through override
lawrencecchen Aug 12, 2026
bcab6cc
fix(macOS): honor test surface free overrides
lawrencecchen Aug 12, 2026
7a31854
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 12, 2026
19507d4
fix(tui): restore canonical lifecycle CLI routing
lawrencecchen Aug 12, 2026
bd8ac6b
Merge remote-tracking branch 'origin/main' into feat-tui-server-upgrade
lawrencecchen Aug 12, 2026
a4ab577
test(macOS): reject stale teardown failures
lawrencecchen Aug 12, 2026
f3c2300
fix(macOS): cancel stale teardown failures
lawrencecchen Aug 12, 2026
6c76dc1
fix(tui): connect legacy lifecycle ownership
lawrencecchen Aug 12, 2026
f3be93e
fix(tui): connect legacy lifecycle ownership
lawrencecchen Aug 12, 2026
5c74e2b
Merge remote-tracking branch 'origin/feat-tui-server-upgrade' into fe…
lawrencecchen Aug 12, 2026
851a0e4
fix(tui): compile lifecycle compatibility tests
lawrencecchen Aug 12, 2026
f0c86bb
test(macOS): bound repeated failure delivery
lawrencecchen Aug 12, 2026
b9ad9df
fix(macOS): compact stale failure deliveries
lawrencecchen Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ jobs:
- name: Validate TUI npm package artifact transfer
run: python3 tests/test_tui_npm_package_artifact.py

- name: Validate TUI package launchers
run: python3 tests/test_tui_package_launchers.py

- name: Validate Claude launch environment policy generation
run: python3 scripts/generate-claude-launch-environment-policy.py --check

Expand Down
87 changes: 77 additions & 10 deletions .github/workflows/cmux-tui-build-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,13 @@ jobs:
shell: bash
run: rustup target add ${{ matrix.target }}

- name: Configure macOS deployment target
if: runner.os == 'macOS'
shell: bash
run: |
target="$(tr -d '[:space:]' < cmux-tui/dist/macos-deployment-target.txt)"
printf 'MACOSX_DEPLOYMENT_TARGET=%s\n' "$target" >> "$GITHUB_ENV"

- name: Install cargo-zigbuild
if: matrix.cross == true && runner.os == 'Linux'
shell: bash
Expand All @@ -223,8 +230,8 @@ jobs:
- name: Build cmux-tui (native)
if: matrix.cross == false
env:
CMUX_TUI_DISTRIBUTION_VERSION: ${{ inputs.version }}
PACKAGE_NPM: ${{ inputs.package_npm }}
VERSION: ${{ inputs.version }}
working-directory: cmux-tui
shell: bash
run: |
Expand All @@ -233,9 +240,10 @@ jobs:
unset CMUX_GHOSTTY_SRC
CMUX_TUI_BUILD_COMMIT="$(git -C .. rev-parse HEAD)"
CMUX_TUI_GHOSTTY_COMMIT="$(git -C ../ghostty rev-parse HEAD)"
CMUX_TUI_DISTRIBUTION_VERSION="$VERSION"
export CMUX_TUI_BUILD_COMMIT CMUX_TUI_GHOSTTY_COMMIT CMUX_TUI_DISTRIBUTION_VERSION
if [[ "$PACKAGE_NPM" == "true" ]]; then
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$CMUX_TUI_DISTRIBUTION_VERSION"
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$VERSION"
export CMUX_TUI_NPM_BOOTSTRAP_VERSION
fi
cargo build -p cmux-tui --bin cmux-tui --bin cmux-tui-hook --release --locked --target ${{ matrix.build_target }}
Expand All @@ -244,8 +252,8 @@ jobs:
- name: Build cmux-tui (Linux cross)
if: matrix.cross == true && runner.os == 'Linux'
env:
CMUX_TUI_DISTRIBUTION_VERSION: ${{ inputs.version }}
PACKAGE_NPM: ${{ inputs.package_npm }}
VERSION: ${{ inputs.version }}
working-directory: cmux-tui
shell: bash
run: |
Expand All @@ -254,13 +262,19 @@ jobs:
unset CMUX_GHOSTTY_SRC
CMUX_TUI_BUILD_COMMIT="$(git -C .. rev-parse HEAD)"
CMUX_TUI_GHOSTTY_COMMIT="$(git -C ../ghostty rev-parse HEAD)"
CMUX_TUI_DISTRIBUTION_VERSION="$VERSION"
export CMUX_TUI_BUILD_COMMIT CMUX_TUI_GHOSTTY_COMMIT CMUX_TUI_DISTRIBUTION_VERSION
if [[ "$PACKAGE_NPM" == "true" ]]; then
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$CMUX_TUI_DISTRIBUTION_VERSION"
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$VERSION"
export CMUX_TUI_NPM_BOOTSTRAP_VERSION
fi
cargo zigbuild -p cmux-tui --bin cmux-tui --bin cmux-tui-hook --release --locked --target ${{ matrix.build_target }}
cargo zigbuild -p cmux-relay --bin cmux-relay --release --locked --target ${{ matrix.build_target }}
if [[ "$RUNNER_OS" == macOS ]]; then
cargo build -p cmux-tui --bin cmux-tui --bin cmux-tui-hook --release --locked --target ${{ matrix.build_target }}
cargo build -p cmux-relay --bin cmux-relay --release --locked --target ${{ matrix.build_target }}
else
cargo zigbuild -p cmux-tui --bin cmux-tui --bin cmux-tui-hook --release --locked --target ${{ matrix.build_target }}
cargo zigbuild -p cmux-relay --bin cmux-relay --release --locked --target ${{ matrix.build_target }}
fi
Comment thread
cursor[bot] marked this conversation as resolved.

- name: Build cmux-tui (macOS cross)
if: matrix.cross == true && runner.os == 'macOS'
Expand Down Expand Up @@ -300,6 +314,27 @@ jobs:
fi
ls -la dist

- name: Verify macOS deployment target
if: runner.os == 'macOS'
shell: bash
run: |
binary="dist/cmux-tui-${{ matrix.target }}${{ matrix.ext }}"
expected="$(tr -d '[:space:]' < cmux-tui/dist/macos-deployment-target.txt)"
actual="$(xcrun vtool -show-build "$binary" | awk '$1 == "minos" { print $2; exit }')"
test "$actual" = "$expected"

- name: Verify native binary identity
if: matrix.cross == false
shell: bash
env:
EXPECTED_VERSION: ${{ inputs.version }}
run: |
python3 cmux-tui/dist/scripts/verify_artifact_identity.py \
--binary "dist/cmux-tui-${{ matrix.target }}${{ matrix.ext }}" \
--version "$EXPECTED_VERSION" \
--build-commit "$(git rev-parse HEAD)" \
--ghostty-commit "$(git -C ghostty rev-parse HEAD)"

- name: Verify non-npm binaries disable SSH auto-install
if: runner.os == 'Linux' && matrix.target == 'x86_64-unknown-linux-musl' && inputs.package_npm == false
shell: bash
Expand Down Expand Up @@ -461,18 +496,19 @@ jobs:

- name: Build libghostty-vt + cmux-tui (Windows GNU)
env:
CMUX_TUI_DISTRIBUTION_VERSION: ${{ inputs.version }}
PACKAGE_NPM: ${{ inputs.package_npm }}
VERSION: ${{ inputs.version }}
shell: bash
run: |
# Keep the manual Zig build and Cargo's build script on the same
# checked-out Ghostty source whose revision is stamped below.
unset CMUX_GHOSTTY_SRC
CMUX_TUI_BUILD_COMMIT="$(git rev-parse HEAD)"
CMUX_TUI_GHOSTTY_COMMIT="$(git -C ghostty rev-parse HEAD)"
CMUX_TUI_DISTRIBUTION_VERSION="$VERSION"
export CMUX_TUI_BUILD_COMMIT CMUX_TUI_GHOSTTY_COMMIT CMUX_TUI_DISTRIBUTION_VERSION
if [[ "$PACKAGE_NPM" == "true" ]]; then
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$CMUX_TUI_DISTRIBUTION_VERSION"
CMUX_TUI_NPM_BOOTSTRAP_VERSION="$VERSION"
export CMUX_TUI_NPM_BOOTSTRAP_VERSION
fi
cd ghostty
Expand Down Expand Up @@ -542,6 +578,7 @@ jobs:
permissions:
contents: read
env:
BINARY_VERSION: ${{ inputs.version }}
NPM_VERSION: ${{ inputs.version }}
PYPI_VERSION: ${{ inputs.pypi_version != '' && inputs.pypi_version || inputs.version }}
steps:
Expand Down Expand Up @@ -582,6 +619,15 @@ jobs:
name: cmux-tui-aarch64-unknown-linux-musl
path: dist/binaries

- name: Verify downloaded binary identity
run: |
chmod +x dist/binaries/cmux-tui-x86_64-unknown-linux-gnu
python3 cmux-tui/dist/scripts/verify_artifact_identity.py \
--binary dist/binaries/cmux-tui-x86_64-unknown-linux-gnu \
--version "$NPM_VERSION" \
--build-commit "$(git rev-parse HEAD)" \
--ghostty-commit "$(git rev-parse HEAD:ghostty)"

- name: Build npm package directories
if: inputs.package_npm
run: |
Expand All @@ -593,6 +639,7 @@ jobs:
- name: Build PyPI wheels
if: inputs.package_pypi
run: |
python3 cmux-tui/dist/scripts/test_package_pypi.py
python3 cmux-tui/dist/scripts/package_pypi.py \
--binaries-dir dist/binaries \
--version "$PYPI_VERSION" \
Expand Down Expand Up @@ -638,6 +685,14 @@ jobs:
chmod +x dist/binaries/cmux-tui-x86_64-unknown-linux-musl
dist/binaries/cmux-tui-x86_64-unknown-linux-musl --version >/tmp/cmux-tui-version.txt 2>&1 || \
dist/binaries/cmux-tui-x86_64-unknown-linux-musl --help >/tmp/cmux-tui-version.txt 2>&1
mkdir -p dist/npm-smoke/node_modules
cp -R dist/npm-packages/cmux dist/npm-smoke/node_modules/cmux
cp -R dist/npm-packages/cmux-tui-linux-x64 dist/npm-smoke/node_modules/cmux-tui-linux-x64
python3 cmux-tui/dist/scripts/verify_artifact_identity.py \
--binary dist/npm-smoke/node_modules/cmux/bin/cmux.js \
--version "$NPM_VERSION" \
--build-commit "$(git rev-parse HEAD)" \
--ghostty-commit "$(git rev-parse HEAD:ghostty)"
CMUX_TUI_PROBE="$(dist/binaries/cmux-tui-x86_64-unknown-linux-musl remote-probe --json)"
CMUX_TUI_EXPECTED_BUILD_IDENTITY="$(git rev-parse HEAD)"
export CMUX_TUI_PROBE CMUX_TUI_EXPECTED_BUILD_IDENTITY
Expand Down Expand Up @@ -694,8 +749,20 @@ jobs:
dist/binaries/cmux-tui-x86_64-unknown-linux-musl --help >/tmp/cmux-tui-version.txt 2>&1
python3 -m venv /tmp/cmux-tui-wheel-smoke
/tmp/cmux-tui-wheel-smoke/bin/python -m pip install --no-index --find-links dist/pypi-wheels cmux=="$PYPI_VERSION"
/tmp/cmux-tui-wheel-smoke/bin/cmux --help >/tmp/cmux-help.txt
grep -i usage /tmp/cmux-help.txt
/tmp/cmux-tui-wheel-smoke/bin/python - <<'PY'
import importlib.metadata
import os

expected = os.environ["PYPI_VERSION"]
actual = importlib.metadata.version("cmux")
if actual != expected:
raise SystemExit(f"installed wheel version {actual!r} != {expected!r}")
PY
python3 cmux-tui/dist/scripts/verify_artifact_identity.py \
--binary /tmp/cmux-tui-wheel-smoke/bin/cmux \
--version "$BINARY_VERSION" \
--build-commit "$(git rev-parse HEAD)" \
--ghostty-commit "$(git rev-parse HEAD:ghostty)"

- name: Upload npm package directories
if: inputs.package_npm
Expand Down
13 changes: 7 additions & 6 deletions .github/workflows/cmux-tui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ on:
description: "Unique caller token used to find this run"
required: true
type: string
use_blacksmith_macos:
description: "Run the macOS test matrix on Blacksmith"
required: false
type: boolean
default: false

concurrency:
# Every caller waits for one exact commit. A newer request must not cancel it.
Expand Down Expand Up @@ -316,16 +321,12 @@ jobs:
test:
name: test (${{ matrix.os }})
needs: validate-inputs
runs-on: ${{ matrix.runner }}
runs-on: ${{ matrix.os == 'macos' && (inputs.use_blacksmith_macos && 'blacksmith-6vcpu-macos-15' || (vars.MACOS_RUNNER_15 || 'blacksmith-6vcpu-macos-15')) || (vars.LINUX_RUNNER || 'blacksmith-4vcpu-ubuntu-2404') }}
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
include:
- os: macos
runner: blacksmith-6vcpu-macos-15
- os: linux
runner: blacksmith-4vcpu-ubuntu-2404
os: [macos, linux]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ public protocol TerminalSurfacePaneHosting: NSView {
/// indicator text.
func syncKeyStateIndicator(text: String?)

/// Shows a permanent failure message when the native terminal cannot start.
func showRuntimeSurfaceCreationFailure(message: String)

/// Clears a prior creation failure after the native terminal starts.
func clearRuntimeSurfaceCreationFailure()

/// Notifies the pane that explicit terminal input is about to be sent.
func terminalSurfaceDidReceiveExplicitInput()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Foundation

internal struct TerminalSurfaceRuntimeActiveTeardown: Sendable {
let ticketID: UUID
let task: Task<Void, Never>
let watchdogTask: Task<Void, Never>?
}
Loading
Loading