From 694efeb544118c4135a17a1e648a40a5f12e61af Mon Sep 17 00:00:00 2001 From: Mike Long Date: Thu, 9 Jul 2026 14:54:34 -0700 Subject: [PATCH] Support ChatGPT app and release 0.1.15 --- Resources/Info.plist | 4 ++-- Sources/CodexToolbar/App/CodexToolbarApp.swift | 2 +- .../CodexToolbar/Networking/CodexAppServerClient.swift | 2 ++ .../Support/CodexDesktopAppController.swift | 4 +++- .../CodexToolbarTests/CodexAppServerClientTests.swift | 10 +++++++--- .../CodexDesktopAppControllerTests.swift | 2 ++ 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Resources/Info.plist b/Resources/Info.plist index 4e3ee95..d57f9c3 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -19,9 +19,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.1.14 + 0.1.15 CFBundleVersion - 14 + 15 LSMinimumSystemVersion 14.0 LSUIElement diff --git a/Sources/CodexToolbar/App/CodexToolbarApp.swift b/Sources/CodexToolbar/App/CodexToolbarApp.swift index b5d1aae..f9b08c8 100644 --- a/Sources/CodexToolbar/App/CodexToolbarApp.swift +++ b/Sources/CodexToolbar/App/CodexToolbarApp.swift @@ -949,7 +949,7 @@ enum AppVersion { return version } - return "0.1.14" + return "0.1.15" }() private static func developmentVersionFromSourceInfoPlist() -> String? { diff --git a/Sources/CodexToolbar/Networking/CodexAppServerClient.swift b/Sources/CodexToolbar/Networking/CodexAppServerClient.swift index 978ac95..306a330 100644 --- a/Sources/CodexToolbar/Networking/CodexAppServerClient.swift +++ b/Sources/CodexToolbar/Networking/CodexAppServerClient.swift @@ -382,6 +382,8 @@ actor CodexAppServerClient: CodexRateLimitClient { nonisolated static func codexPathCandidates(environmentPath: String, homeDirectory: String) -> [String] { let preferredAppCandidates = [ + "/Applications/ChatGPT.app/Contents/Resources/codex", + URL(fileURLWithPath: homeDirectory).appendingPathComponent("Applications/ChatGPT.app/Contents/Resources/codex").path, "/Applications/Codex.app/Contents/Resources/codex", URL(fileURLWithPath: homeDirectory).appendingPathComponent("Applications/Codex.app/Contents/Resources/codex").path ] diff --git a/Sources/CodexToolbar/Support/CodexDesktopAppController.swift b/Sources/CodexToolbar/Support/CodexDesktopAppController.swift index 379eda0..5a9e508 100644 --- a/Sources/CodexToolbar/Support/CodexDesktopAppController.swift +++ b/Sources/CodexToolbar/Support/CodexDesktopAppController.swift @@ -23,6 +23,8 @@ struct CodexDesktopAppLocator { static func appBundleCandidates(homeDirectory: String) -> [String] { let candidates = [ + "/Applications/ChatGPT.app", + URL(fileURLWithPath: homeDirectory).appendingPathComponent("Applications/ChatGPT.app").path, "/Applications/Codex.app", URL(fileURLWithPath: homeDirectory).appendingPathComponent("Applications/Codex.app").path ] @@ -55,7 +57,7 @@ enum CodexDesktopAppError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .notFound: - return "Codex.app was not found." + return "Codex desktop app was not found." } } } diff --git a/Tests/CodexToolbarTests/CodexAppServerClientTests.swift b/Tests/CodexToolbarTests/CodexAppServerClientTests.swift index cc7b042..4d4c3d9 100644 --- a/Tests/CodexToolbarTests/CodexAppServerClientTests.swift +++ b/Tests/CodexToolbarTests/CodexAppServerClientTests.swift @@ -13,14 +13,18 @@ final class CodexAppServerClientTests: XCTestCase { ) XCTAssertEqual( - candidates.prefix(4), + candidates.prefix(6), [ + "/Applications/ChatGPT.app/Contents/Resources/codex", + "/Users/example/Applications/ChatGPT.app/Contents/Resources/codex", "/Applications/Codex.app/Contents/Resources/codex", "/Users/example/Applications/Codex.app/Contents/Resources/codex", "/usr/bin/codex", "/bin/codex" ] ) + XCTAssertTrue(candidates.contains("/Applications/ChatGPT.app/Contents/Resources/codex")) + XCTAssertTrue(candidates.contains("/Users/example/Applications/ChatGPT.app/Contents/Resources/codex")) XCTAssertTrue(candidates.contains("/Applications/Codex.app/Contents/Resources/codex")) XCTAssertTrue(candidates.contains("/Users/example/Applications/Codex.app/Contents/Resources/codex")) XCTAssertTrue(candidates.contains("/Users/example/.local/bin/codex")) @@ -30,11 +34,11 @@ final class CodexAppServerClientTests: XCTestCase { func testCodexPathCandidatesDeduplicateEntries() { let candidates = CodexAppServerClient.codexPathCandidates( - environmentPath: "/Applications/Codex.app/Contents/Resources:/opt/homebrew/bin:/Applications/Codex.app/Contents/Resources", + environmentPath: "/Applications/ChatGPT.app/Contents/Resources:/opt/homebrew/bin:/Applications/ChatGPT.app/Contents/Resources", homeDirectory: "/Users/example" ) - XCTAssertEqual(candidates.filter { $0 == "/Applications/Codex.app/Contents/Resources/codex" }.count, 1) + XCTAssertEqual(candidates.filter { $0 == "/Applications/ChatGPT.app/Contents/Resources/codex" }.count, 1) } func testParseLoginStatusTreatsExitZeroAsLoggedIn() { diff --git a/Tests/CodexToolbarTests/CodexDesktopAppControllerTests.swift b/Tests/CodexToolbarTests/CodexDesktopAppControllerTests.swift index 8ac00ea..4e6a830 100644 --- a/Tests/CodexToolbarTests/CodexDesktopAppControllerTests.swift +++ b/Tests/CodexToolbarTests/CodexDesktopAppControllerTests.swift @@ -8,6 +8,8 @@ final class CodexDesktopAppControllerTests: XCTestCase { let candidates = CodexDesktopAppLocator.appBundleCandidates(homeDirectory: "/Users/example") XCTAssertEqual(candidates, [ + "/Applications/ChatGPT.app", + "/Users/example/Applications/ChatGPT.app", "/Applications/Codex.app", "/Users/example/Applications/Codex.app" ])