Skip to content
Closed
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
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,37 @@

All notable changes to cmux are documented here.

## [0.64.0] - 2026-04-04

### Added
- Local daemon for tmux-like session detach/reattach — terminal sessions persist after closing the app and auto-restore on relaunch
- Sidebar UI showing detached daemon sessions with one-click reattach
- Daemon auto-start via launchd (sessions survive reboots)
- Session disk persistence (daemon remembers sessions across daemon restarts)
- Editable workspace descriptions (#2475)
- Claude Binary Path setting — configure a custom path for the Claude CLI (#2514)
- Keyboard shortcuts cheatsheet page
- Localized tab context menu and alert strings (#1998)

### Changed
- Pane focus shortcuts changed to Cmd+Shift+H/J/K/L (was Cmd+Option+Arrow)
- Open Browser shortcut moved to Cmd+Ctrl+Option+L to avoid conflict

### Fixed
- Suppress fallback text during IME composition (Korean, Japanese, Chinese input)
- Fix split divider drags escaping to adjacent panes
- Fix browser portal sync flickering during split drag
- Fix external insertText escape handling
- Fix paste from Raycast and other apps using alternate plain-text UTIs
- Fix terminal clipboard rich text and image fallbacks
- Fix macOS Tahoe glass window compatibility (#2459)
- Fix CLI stealing app focus when running commands
- Preserve symlink aliases for external file opens
- Fix terminal Cmd scroll bug

### Removed
- Remove copy-on-select setting

## [0.63.1] - 2026-03-28

### Fixed
Expand Down
28 changes: 14 additions & 14 deletions CLI/cmux.swift
Original file line number Diff line number Diff line change
Expand Up @@ -529,9 +529,9 @@ enum CLIIDFormat: String {
}

enum SocketPasswordResolver {
private static let service = "com.cmuxterm.app.socket-control"
private static let service = "com.jmux.app.socket-control"
private static let account = "local-socket-password"
private static let directoryName = "cmux"
private static let directoryName = "jmux"
private static let fileName = "socket-control-password"

static func resolve(explicit: String?, socketPath: String) -> String? {
Expand Down Expand Up @@ -591,7 +591,7 @@ enum SocketPasswordResolver {
}

let candidate = URL(fileURLWithPath: socketPath).lastPathComponent
let prefixes = ["cmux-debug-", "cmux-"]
let prefixes = ["jmux-debug-", "cmux-"]
for prefix in prefixes {
guard candidate.hasPrefix(prefix), candidate.hasSuffix(".sock") else { continue }
let start = candidate.index(candidate.startIndex, offsetBy: prefix.count)
Expand Down Expand Up @@ -660,12 +660,12 @@ private enum CLISocketPathSource {
}

private enum CLISocketPathResolver {
private static let appSupportDirectoryName = "cmux"
private static let stableSocketFileName = "cmux.sock"
private static let appSupportDirectoryName = "jmux"
private static let stableSocketFileName = "jmux.sock"
private static let lastSocketPathFileName = "last-socket-path"
static let legacyDefaultSocketPath = "/tmp/cmux.sock"
private static let fallbackSocketPath = "/tmp/cmux-debug.sock"
private static let stagingSocketPath = "/tmp/cmux-staging.sock"
static let legacyDefaultSocketPath = "/tmp/jmux.sock"
private static let fallbackSocketPath = "/tmp/jmux-debug.sock"
private static let stagingSocketPath = "/tmp/jmux-staging.sock"
private static let legacyLastSocketPathFile = "/tmp/cmux-last-socket-path"

static var defaultSocketPath: String {
Expand Down Expand Up @@ -708,7 +708,7 @@ private enum CLISocketPathResolver {

if let tag = normalized(environment["CMUX_TAG"]) {
let slug = sanitizeTagSlug(tag)
candidates.append("/tmp/cmux-debug-\(slug).sock")
candidates.append("/tmp/jmux-debug-\(slug).sock")
candidates.append("/tmp/cmux-\(slug).sock")
}

Expand Down Expand Up @@ -1273,7 +1273,7 @@ struct CMUXCLI {
return nil
}
guard let hinted = normalizedEnvValue(raw),
hinted.hasPrefix("/tmp/cmux-debug"),
hinted.hasPrefix("/tmp/jmux-debug"),
hinted.hasSuffix(".sock"),
pathIsSocket(hinted) else {
return nil
Expand All @@ -1292,9 +1292,9 @@ struct CMUXCLI {
if let hinted = debugSocketPathFromHintFile() {
return hinted
}
return "/tmp/cmux-debug.sock"
return "/tmp/jmux-debug.sock"
#else
return "/tmp/cmux.sock"
return "/tmp/jmux.sock"
#endif
}

Expand Down Expand Up @@ -7330,10 +7330,10 @@ struct CMUXCLI {
return true
}

private static let cmuxThemeOverrideBundleIdentifier = "com.cmuxterm.app"
private static let cmuxThemeOverrideBundleIdentifier = "com.jmux.app"
private static let cmuxThemesBlockStart = "# cmux themes start"
private static let cmuxThemesBlockEnd = "# cmux themes end"
private static let cmuxThemesReloadNotificationName = "com.cmuxterm.themes.reload-config"
private static let cmuxThemesReloadNotificationName = "com.jmux.themes.reload-config"

private struct ThemeSelection {
let rawValue: String?
Expand Down
76 changes: 44 additions & 32 deletions GhosttyTabs.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@
A5001650 /* CmuxConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5001651 /* CmuxConfig.swift */; };
A5001652 /* CmuxConfigExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5001653 /* CmuxConfigExecutor.swift */; };
A5001654 /* CmuxDirectoryTrust.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5001655 /* CmuxDirectoryTrust.swift */; };
A5001661 /* DaemonSessionBinding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5001660 /* DaemonSessionBinding.swift */; };
A5001663 /* LocalDaemonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5001662 /* LocalDaemonManager.swift */; };
A5001100 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A5001101 /* Assets.xcassets */; };
A5001230 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = A5001231 /* Sparkle */; };
B9000002A1B2C3D4E5F60719 /* cmux.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9000001A1B2C3D4E5F60719 /* cmux.swift */; };
Expand Down Expand Up @@ -103,6 +105,7 @@
F3000000A1B2C3D4E5F60718 /* CJKIMEInputTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3000001A1B2C3D4E5F60718 /* CJKIMEInputTests.swift */; };
F4000000A1B2C3D4E5F60718 /* GhosttyConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4000001A1B2C3D4E5F60718 /* GhosttyConfigTests.swift */; };
F5000000A1B2C3D4E5F60718 /* SessionPersistenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5000001A1B2C3D4E5F60718 /* SessionPersistenceTests.swift */; };
A4D36FFC5D3B5FD5B9B03C37 /* DaemonSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F748BC866745969FCF8BA6A3 /* DaemonSessionTests.swift */; };
FA100000A1B2C3D4E5F60718 /* BrowserImportMappingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA100001A1B2C3D4E5F60718 /* BrowserImportMappingTests.swift */; };
F6000000A1B2C3D4E5F60718 /* AppDelegateShortcutRoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6000001A1B2C3D4E5F60718 /* AppDelegateShortcutRoutingTests.swift */; };
F6100000A1B2C3D4E5F60718 /* WorkspaceRemoteConnectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6100001A1B2C3D4E5F60718 /* WorkspaceRemoteConnectionTests.swift */; };
Expand Down Expand Up @@ -269,6 +272,8 @@
A5001651 /* CmuxConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmuxConfig.swift; sourceTree = "<group>"; };
A5001653 /* CmuxConfigExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmuxConfigExecutor.swift; sourceTree = "<group>"; };
A5001655 /* CmuxDirectoryTrust.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmuxDirectoryTrust.swift; sourceTree = "<group>"; };
A5001660 /* DaemonSessionBinding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DaemonSessionBinding.swift; sourceTree = "<group>"; };
A5001662 /* LocalDaemonManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalDaemonManager.swift; sourceTree = "<group>"; };
A5001641 /* RemoteRelayZshBootstrap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteRelayZshBootstrap.swift; sourceTree = "<group>"; };
818DBCD4AB69EB72573E8138 /* SidebarResizeUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarResizeUITests.swift; sourceTree = "<group>"; };
B8F266256A1A3D9A45BD840F /* SidebarHelpMenuUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarHelpMenuUITests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -299,6 +304,7 @@
F3000001A1B2C3D4E5F60718 /* CJKIMEInputTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CJKIMEInputTests.swift; sourceTree = "<group>"; };
F4000001A1B2C3D4E5F60718 /* GhosttyConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GhosttyConfigTests.swift; sourceTree = "<group>"; };
F5000001A1B2C3D4E5F60718 /* SessionPersistenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionPersistenceTests.swift; sourceTree = "<group>"; };
F748BC866745969FCF8BA6A3 /* DaemonSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DaemonSessionTests.swift; sourceTree = "<group>"; };
FA100001A1B2C3D4E5F60718 /* BrowserImportMappingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserImportMappingTests.swift; sourceTree = "<group>"; };
F6000001A1B2C3D4E5F60718 /* AppDelegateShortcutRoutingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegateShortcutRoutingTests.swift; sourceTree = "<group>"; };
F6100001A1B2C3D4E5F60718 /* WorkspaceRemoteConnectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspaceRemoteConnectionTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -513,6 +519,8 @@
A5001651 /* CmuxConfig.swift */,
A5001653 /* CmuxConfigExecutor.swift */,
A5001655 /* CmuxDirectoryTrust.swift */,
A5001660 /* DaemonSessionBinding.swift */,
A5001662 /* LocalDaemonManager.swift */,
);
path = Sources;
sourceTree = "<group>";
Expand Down Expand Up @@ -580,6 +588,7 @@
F3000001A1B2C3D4E5F60718 /* CJKIMEInputTests.swift */,
F4000001A1B2C3D4E5F60718 /* GhosttyConfigTests.swift */,
F5000001A1B2C3D4E5F60718 /* SessionPersistenceTests.swift */,
F748BC866745969FCF8BA6A3 /* DaemonSessionTests.swift */,
FA100001A1B2C3D4E5F60718 /* BrowserImportMappingTests.swift */,
F6000001A1B2C3D4E5F60718 /* AppDelegateShortcutRoutingTests.swift */,
F6100001A1B2C3D4E5F60718 /* WorkspaceRemoteConnectionTests.swift */,
Expand Down Expand Up @@ -836,6 +845,8 @@
A5001650 /* CmuxConfig.swift in Sources */,
A5001652 /* CmuxConfigExecutor.swift in Sources */,
A5001654 /* CmuxDirectoryTrust.swift in Sources */,
A5001661 /* DaemonSessionBinding.swift in Sources */,
A5001663 /* LocalDaemonManager.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -878,6 +889,7 @@
F3000000A1B2C3D4E5F60718 /* CJKIMEInputTests.swift in Sources */,
F4000000A1B2C3D4E5F60718 /* GhosttyConfigTests.swift in Sources */,
F5000000A1B2C3D4E5F60718 /* SessionPersistenceTests.swift in Sources */,
A4D36FFC5D3B5FD5B9B03C37 /* DaemonSessionTests.swift in Sources */,
FA100000A1B2C3D4E5F60718 /* BrowserImportMappingTests.swift in Sources */,
F6000000A1B2C3D4E5F60718 /* AppDelegateShortcutRoutingTests.swift in Sources */,
F6100000A1B2C3D4E5F60718 /* WorkspaceRemoteConnectionTests.swift in Sources */,
Expand Down Expand Up @@ -1011,7 +1023,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
GENERATE_INFOPLIST_FILE = NO;
Expand All @@ -1020,7 +1032,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
OTHER_LDFLAGS = (
"-lc++",
"-framework",
Expand All @@ -1034,8 +1046,8 @@
"-framework",
Carbon,
);
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app.debug;
PRODUCT_NAME = "cmux DEV";
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.app.debug;
PRODUCT_NAME = "jmux DEV";
SPARKLE_PUBLIC_KEY = "avjcgKibf1FTvhIjLBxhd+0HSpsXU4D0IGlVk8cgqRc=";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "cmux-Bridging-Header.h";
Expand All @@ -1050,7 +1062,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
GENERATE_INFOPLIST_FILE = NO;
Expand All @@ -1059,7 +1071,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
OTHER_LDFLAGS = (
"-lc++",
"-framework",
Expand All @@ -1074,8 +1086,8 @@
Carbon,
);
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app;
PRODUCT_NAME = cmux;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.app;
PRODUCT_NAME = jmux;
SPARKLE_PUBLIC_KEY = "avjcgKibf1FTvhIjLBxhd+0HSpsXU4D0IGlVk8cgqRc=";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "cmux-Bridging-Header.h";
Expand All @@ -1088,17 +1100,17 @@
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
DEVELOPMENT_TEAM = "";
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "cmux Dock Tile Plugin";
INFOPLIST_KEY_CFBundleDisplayName = "jmux Dock Tile Plugin";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app.docktileplugin.debug;
MARKETING_VERSION = 0.64.0;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.app.docktileplugin.debug;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
Expand All @@ -1113,17 +1125,17 @@
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
DEVELOPMENT_TEAM = "";
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "cmux Dock Tile Plugin";
INFOPLIST_KEY_CFBundleDisplayName = "jmux Dock Tile Plugin";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
INFOPLIST_KEY_NSPrincipalClass = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.app.docktileplugin;
MARKETING_VERSION = 0.64.0;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.app.docktileplugin;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
Expand All @@ -1143,7 +1155,7 @@
"@executable_path/../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
PRODUCT_NAME = cmux;
PRODUCT_NAME = jmux;
PRODUCT_MODULE_NAME = cmux_cli;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
Expand All @@ -1162,7 +1174,7 @@
"@executable_path/../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
PRODUCT_NAME = cmux;
PRODUCT_NAME = jmux;
PRODUCT_MODULE_NAME = cmux_cli;
ONLY_ACTIVE_ARCH = NO;
SWIFT_COMPILATION_MODE = wholemodule;
Expand All @@ -1175,12 +1187,12 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.appuitests;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.appuitests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_VERSION = 5.0;
Expand All @@ -1192,12 +1204,12 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.appuitests;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.appuitests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = GhosttyTabs;
Expand All @@ -1209,16 +1221,16 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.apptests;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.apptests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/cmux DEV.app/Contents/MacOS/cmux DEV";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/jmux DEV.app/Contents/MacOS/jmux DEV";
TEST_TARGET_NAME = GhosttyTabs;
};
name = Debug;
Expand All @@ -1228,15 +1240,15 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 78;
CURRENT_PROJECT_VERSION = 79;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 0.63.1;
MARKETING_VERSION = 0.64.0;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.cmuxterm.apptests;
PRODUCT_BUNDLE_IDENTIFIER = com.jmux.apptests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/cmux.app/Contents/MacOS/cmux";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/jmux.app/Contents/MacOS/jmux";
TEST_TARGET_NAME = GhosttyTabs;
};
name = Release;
Expand Down
Loading