diff --git a/CHANGELOG.md b/CHANGELOG.md index e21ba5a5b7..bb7afde072 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Localizations: add Spanish and Catalan language packs and fill missing localization keys (#1041). Thanks @seifreed! ### Fixed +- Antigravity: discover OAuth credentials from the bundled extension language server in newer IDE builds so Add Account works again (#1076). Thanks @xARSENICx! - Menu bar: wait for display changes to settle before recovering status items and retry if macOS still leaves the icon detached (#1074). Thanks @yipjunkai! - Menu: keep lower action rows stable when Refresh is highlighted or pressed (#1071). Thanks @MadanChaollaPark! - Linux CLI: avoid linking JetBrains provider parsing against `libxml2.so.2`, improving compatibility with newer distros that ship libxml2 2.15+ (#1046). Thanks @semsemyonoff! diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift index 55958e67c1..c108148f6d 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift @@ -184,6 +184,9 @@ public enum AntigravityOAuthConfig { applicationRoots: applicationRoots, fileManager: fileManager) let relativePaths = [ + "Contents/Resources/app/extensions/antigravity/bin/language_server_macos_arm", + "Contents/Resources/app/extensions/antigravity/bin/language_server_macos_x64", + "Contents/Resources/app/extensions/antigravity/bin/language_server_macos", "Contents/Resources/app/out/main.js", "Contents/Resources/bin/language_server", "Contents/Resources/bin/language_server_macos", diff --git a/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift b/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift index e8a75cf8de..f4961ee123 100644 --- a/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift +++ b/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift @@ -57,6 +57,45 @@ struct AntigravityOAuthCredentialsStoreTests { applicationRoots: [root]) == standaloneClient) } + @Test + func `oauth client discovery reads antigravity extension language server`() throws { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent(UUID().uuidString, isDirectory: true) + defer { try? FileManager.default.removeItem(at: root) } + + let extensionClient = AntigravityOAuthClient( + clientID: self.googleClientID("extension"), + clientSecret: self.googleClientSecret(repeating: "d")) + let staleClient = AntigravityOAuthClient( + clientID: self.googleClientID("stale"), + clientSecret: self.googleClientSecret(repeating: "e")) + try self.writeAntigravityApp( + named: "Antigravity IDE.app", + under: root, + bundleIdentifier: "com.google.antigravity-ide", + artifactRelativePath: "Contents/Resources/app/out/main.js", + artifactData: Data(""" + out-build/vs/platform/cloudCode/common/oauthClient.js + clientId="\(staleClient.clientID)"; + clientSecret="\(staleClient.clientSecret)"; + """.utf8)) + var artifactData = Data([0xFF]) + artifactData.append(Data( + """ + \u{0}\(extensionClient.clientSecret)\u{0}oauth_data\u{0}\(extensionClient.clientID)\u{0} + """.utf8)) + try self.writeAntigravityApp( + named: "Antigravity IDE.app", + under: root, + bundleIdentifier: "com.google.antigravity-ide", + artifactRelativePath: "Contents/Resources/app/extensions/antigravity/bin/language_server_macos_arm", + artifactData: artifactData) + + #expect( + AntigravityOAuthConfig.discoverClientFromInstalledApp( + applicationRoots: [root]) == extensionClient) + } + @Test func `oauth client discovery pairs lone binary secret with trailing client id`() throws { let root = FileManager.default.temporaryDirectory