Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1415,7 +1415,6 @@ jobs:
-derivedDataPath "$PROGRAMA_DERIVED_DATA_DIR" \
-destination "platform=macOS" \
-maximum-test-execution-time-allowance 180 \
-only-testing:programaUITests/CloseWindowConfirmDialogUITests \
-only-testing:programaUITests/CloseWorkspaceConfirmDialogUITests \
-only-testing:programaUITests/CloseWorkspacesConfirmDialogUITests \
-only-testing:programaUITests/CloseWorkspaceCmdDUITests \
Expand Down
4 changes: 0 additions & 4 deletions GhosttyTabs.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,6 @@
B9000015A1B2C3D4E5F60719 /* MultiWindowNotificationsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9000016A1B2C3D4E5F60719 /* MultiWindowNotificationsUITests.swift */; };
B900001AA1B2C3D4E5F60719 /* CloseWorkspaceConfirmDialogUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9000019A1B2C3D4E5F60719 /* CloseWorkspaceConfirmDialogUITests.swift */; };
B9000023A1B2C3D4E5F60719 /* CloseWorkspaceCmdDUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9000022A1B2C3D4E5F60719 /* CloseWorkspaceCmdDUITests.swift */; };
B9000025A1B2C3D4E5F60719 /* CloseWindowConfirmDialogUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9000026A1B2C3D4E5F60719 /* CloseWindowConfirmDialogUITests.swift */; };
BEEF50100000000000000003 /* WindowCloseConfirmCancelUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEEF50100000000000000004 /* WindowCloseConfirmCancelUITests.swift */; };
D0E0F0B0A1B2C3D4E5F60718 /* BrowserPaneNavigationKeybindUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E0F0B1A1B2C3D4E5F60718 /* BrowserPaneNavigationKeybindUITests.swift */; };
D0E0F0B2A1B2C3D4E5F60718 /* BrowserOmnibarSuggestionsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E0F0B3A1B2C3D4E5F60718 /* BrowserOmnibarSuggestionsUITests.swift */; };
Expand Down Expand Up @@ -716,7 +715,6 @@
B9000016A1B2C3D4E5F60719 /* MultiWindowNotificationsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiWindowNotificationsUITests.swift; sourceTree = "<group>"; };
B9000019A1B2C3D4E5F60719 /* CloseWorkspaceConfirmDialogUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloseWorkspaceConfirmDialogUITests.swift; sourceTree = "<group>"; };
B9000022A1B2C3D4E5F60719 /* CloseWorkspaceCmdDUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloseWorkspaceCmdDUITests.swift; sourceTree = "<group>"; };
B9000026A1B2C3D4E5F60719 /* CloseWindowConfirmDialogUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloseWindowConfirmDialogUITests.swift; sourceTree = "<group>"; };
BEEF50100000000000000004 /* WindowCloseConfirmCancelUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowCloseConfirmCancelUITests.swift; sourceTree = "<group>"; };
D0E0F0B1A1B2C3D4E5F60718 /* BrowserPaneNavigationKeybindUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserPaneNavigationKeybindUITests.swift; sourceTree = "<group>"; };
D0E0F0B3A1B2C3D4E5F60718 /* BrowserOmnibarSuggestionsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserOmnibarSuggestionsUITests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1241,7 +1239,6 @@
B9000013A1B2C3D4E5F60719 /* JumpToUnreadUITests.swift */,
B9000022A1B2C3D4E5F60719 /* CloseWorkspaceCmdDUITests.swift */,
B9000019A1B2C3D4E5F60719 /* CloseWorkspaceConfirmDialogUITests.swift */,
B9000026A1B2C3D4E5F60719 /* CloseWindowConfirmDialogUITests.swift */,
BEEF50100000000000000004 /* WindowCloseConfirmCancelUITests.swift */,
B9000016A1B2C3D4E5F60719 /* MultiWindowNotificationsUITests.swift */,
818DBCD4AB69EB72573E8138 /* SidebarResizeUITests.swift */,
Expand Down Expand Up @@ -1717,7 +1714,6 @@
B9000014A1B2C3D4E5F60719 /* JumpToUnreadUITests.swift in Sources */,
B900001AA1B2C3D4E5F60719 /* CloseWorkspaceConfirmDialogUITests.swift in Sources */,
B9000023A1B2C3D4E5F60719 /* CloseWorkspaceCmdDUITests.swift in Sources */,
B9000025A1B2C3D4E5F60719 /* CloseWindowConfirmDialogUITests.swift in Sources */,
BEEF50100000000000000003 /* WindowCloseConfirmCancelUITests.swift in Sources */,
B9000015A1B2C3D4E5F60719 /* MultiWindowNotificationsUITests.swift in Sources */,
B8F266236A1A3D9A45BD840F /* SidebarResizeUITests.swift in Sources */,
Expand Down
7 changes: 7 additions & 0 deletions Sources/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1946,6 +1946,13 @@ final class AppDelegate: NSObject, NSApplicationDelegate, @preconcurrency UNUser
/// closed immediately once the revived panel has taken its place in the
/// same pane, so no tab is ever left showing two panels or an empty one.
private func reconcileOrphanedEscrowedSessions() {
// Automated runs relaunch the app many times in a row, and each run leaves its shells
// escrowed. Snapshot restore already skips these runs; recovering their orphans would
// add the previous run's terminals as extra workspaces to every fresh launch.
guard !SessionRestorePolicy.isRunningUnderAutomatedTests() else {
dilog("escrow.reconcile", "skipped=automated_tests")
return
}
var known = startupEndedHiddenSessionIds
for context in mainWindowContexts.values {
for workspace in context.tabManager.tabs {
Expand Down
15 changes: 6 additions & 9 deletions Sources/TabManager+UITestHarness.swift
Original file line number Diff line number Diff line change
Expand Up @@ -946,19 +946,16 @@ extension TabManager {
}
} else if layout == "tdlr_close_bottom_then_exit_top_left" {
// Alternate repro flow:
// 1) split top/down
// 2) split left/right for each row (2x2)
// 3) close both bottom panes
// 4) trigger Ctrl+D in top-left
// 1) split each column top/down (2x2; the right column already exists, and a
// fifth pane would exceed SplitPolicy.maxPanesPerWorkspace)
// 2) close both bottom panes
// 3) trigger Ctrl+D in top-left
let topRight = rightPanel
guard let bottomLeft = tab.newTerminalSplit(from: leftPanelId, orientation: .vertical) else {
write(["setupError": "Failed to create bottom-left split", "done": "1"])
return
}
guard let topRight = tab.newTerminalSplit(from: leftPanelId, orientation: .horizontal) else {
write(["setupError": "Failed to create top-right split", "done": "1"])
return
}
guard let bottomRight = tab.newTerminalSplit(from: bottomLeft.id, orientation: .horizontal) else {
guard let bottomRight = tab.newTerminalSplit(from: topRight.id, orientation: .vertical) else {
write(["setupError": "Failed to create bottom-right split", "done": "1"])
return
}
Expand Down
74 changes: 0 additions & 74 deletions programaUITests/CloseWindowConfirmDialogUITests.swift

This file was deleted.

Loading