Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
628f358
Serialize tmux client sizing transitions
wesm Sep 1, 2026
bdd19ac
Keep hidden tmux clients out of window sizing
wesm Sep 1, 2026
2f92a5e
Preserve hidden tmux sizing across reconnects
wesm Sep 1, 2026
2e33cb8
Cancel obsolete tmux sizing transitions
wesm Sep 1, 2026
7405062
Keep the latest tmux activation intent
wesm Sep 1, 2026
86002b4
Resume tmux activation after provisioning
wesm Sep 2, 2026
55da47a
Drain tmux sizing before attachment release
wesm Sep 2, 2026
f8a19ad
Fence tmux sizing teardown and unsupported clients
wesm Sep 2, 2026
90c0f8b
Keep hidden kwt tmux clients out of window sizing
wesm Sep 2, 2026
46e4443
Start inactive restored tmux clients hidden
wesm Sep 2, 2026
76a0d19
Keep named-socket previews independent
wesm Sep 2, 2026
a7fff91
Keep hidden tmux clients non-sizing from attach
wesm Sep 2, 2026
3eb9bd0
Leave hidden workspace establishment explicit
wesm Sep 2, 2026
9263544
Preserve hidden worktree lifecycle
wesm Sep 2, 2026
d802f2d
Restore hidden sizing after kwt workspace setup
wesm Sep 2, 2026
9e2ae0a
Cover every hidden kwt establishment path
wesm Sep 2, 2026
6cc0471
Detach hidden kwt clients when identity is unavailable
wesm Sep 2, 2026
ff796a7
Prearm hidden tmux identity resolution
wesm Sep 2, 2026
a6c4fd3
Serialize tmux replacement cleanup by endpoint
wesm Sep 2, 2026
b71dba2
Fence tmux attachment generations
wesm Sep 2, 2026
ac0e198
Keep protected and created tmux clients consistent after close
wesm Sep 2, 2026
f3b4a94
Hide kwt-launched tmux clients only after they launch
wesm Sep 2, 2026
b9466b3
Fence the deferred report of a failed tmux surface launch
wesm Sep 2, 2026
3599eb7
Restore a pending tmux activation after a failed removal
wesm Sep 3, 2026
dc91059
Resume tmux activation after reconnect
wesm Sep 3, 2026
7368598
Keep unsafe tmux clients out of hidden restoration
wesm Sep 3, 2026
85a0913
Hide the previous tmux client when the next host cannot be resolved
wesm Sep 3, 2026
b39af3c
Read tmux client flags without a tab separator in the sizing test
wesm Sep 3, 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
359 changes: 307 additions & 52 deletions Sources/App/NativeTmuxSessionCoordinator.swift

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions Sources/App/TmuxPaneSplitter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ struct TmuxPaneSplitter: Sendable {
static func supportsPaneSplitting(
version: String,
host: CommandHost
) -> Bool {
supportsExactClientTargeting(version: version, host: host)
}

static func supportsClientSizing(
version: String,
host: CommandHost
) -> Bool {
supportsExactClientTargeting(version: version, host: host)
}

private static func supportsExactClientTargeting(
version: String,
host: CommandHost
) -> Bool {
guard platform(for: host) == .posix else { return false }
let fields = version.split(whereSeparator: \.isWhitespace)
Expand Down
441 changes: 392 additions & 49 deletions Sources/App/WorkspaceSceneModel.swift

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion Sources/Tmux/TmuxAttachmentInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,8 @@ public struct TmuxAttachmentInfo: Equatable, Sendable {
)
}
let attach: String
if let protectedWorkspacePath, launchMode != .attachOnly {
if let protectedWorkspacePath,
launchMode != .attachOnly {
let protectedAttach: String
if let remoteKwtCommandPrelude {
let kwtAttach = remoteKwtCommandPrelude
Expand Down
Loading
Loading