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"
])