From df622f99dac3c61d4b61f4c66fa17c331993b798 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 21 May 2026 16:07:37 +0100 Subject: [PATCH 1/2] fix(antigravity): discover extension OAuth client --- CHANGELOG.md | 1 + .../AntigravityOAuthCredentialsStore.swift | 3 +++ ...ntigravityOAuthCredentialsStoreTests.swift | 26 +++++++++++++++++++ 3 files changed, 30 insertions(+) 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..7ce83ed12b 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift @@ -185,6 +185,9 @@ public enum AntigravityOAuthConfig { fileManager: fileManager) let relativePaths = [ "Contents/Resources/app/out/main.js", + "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/bin/language_server", "Contents/Resources/bin/language_server_macos", ] diff --git a/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift b/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift index e8a75cf8de..2d7df81c94 100644 --- a/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift +++ b/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift @@ -57,6 +57,32 @@ 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")) + 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 From d00c5db82ae03127f837e1222f9d3f317967352d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 21 May 2026 16:09:49 +0100 Subject: [PATCH 2/2] fix(antigravity): prefer extension OAuth artifact --- .../AntigravityOAuthCredentialsStore.swift | 2 +- .../AntigravityOAuthCredentialsStoreTests.swift | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift index 7ce83ed12b..c108148f6d 100644 --- a/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift +++ b/Sources/CodexBarCore/Providers/Antigravity/AntigravityOAuthCredentialsStore.swift @@ -184,10 +184,10 @@ public enum AntigravityOAuthConfig { applicationRoots: applicationRoots, fileManager: fileManager) let relativePaths = [ - "Contents/Resources/app/out/main.js", "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 2d7df81c94..f4961ee123 100644 --- a/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift +++ b/Tests/CodexBarTests/AntigravityOAuthCredentialsStoreTests.swift @@ -66,6 +66,19 @@ struct AntigravityOAuthCredentialsStoreTests { 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( """