Skip to content

Commit dace718

Browse files
committed
Sync extension bridge settings with cloud
1 parent cd9e92f commit dace718

File tree

3 files changed

+65
-6
lines changed

3 files changed

+65
-6
lines changed

src/core/webview/ClineProvider.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1892,7 +1892,7 @@ export class ClineProvider
18921892
includeDiagnosticMessages: includeDiagnosticMessages ?? true,
18931893
maxDiagnosticMessages: maxDiagnosticMessages ?? 50,
18941894
includeTaskHistoryInEnhance: includeTaskHistoryInEnhance ?? true,
1895-
remoteControlEnabled: remoteControlEnabled ?? false,
1895+
remoteControlEnabled,
18961896
}
18971897
}
18981898

@@ -1970,6 +1970,17 @@ export class ClineProvider
19701970
)
19711971
}
19721972

1973+
let remoteControlEnabled: boolean = false
1974+
1975+
try {
1976+
const cloudSettings = CloudService.instance.getUserSettings()
1977+
remoteControlEnabled = cloudSettings?.settings?.extensionBridgeEnabled ?? false
1978+
} catch (error) {
1979+
console.error(
1980+
`[getState] failed to get remote control setting from cloud: ${error instanceof Error ? error.message : String(error)}`,
1981+
)
1982+
}
1983+
19731984
// Return the same structure as before
19741985
return {
19751986
apiConfiguration: providerSettings,
@@ -2080,8 +2091,8 @@ export class ClineProvider
20802091
maxDiagnosticMessages: stateValues.maxDiagnosticMessages ?? 50,
20812092
// Add includeTaskHistoryInEnhance setting
20822093
includeTaskHistoryInEnhance: stateValues.includeTaskHistoryInEnhance ?? true,
2083-
// Add remoteControlEnabled setting
2084-
remoteControlEnabled: stateValues.remoteControlEnabled ?? false,
2094+
// Add remoteControlEnabled setting - get from cloud settings
2095+
remoteControlEnabled,
20852096
}
20862097
}
20872098

src/core/webview/webviewMessageHandler.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,15 @@ export const webviewMessageHandler = async (
950950
await provider.postStateToWebview()
951951
break
952952
case "remoteControlEnabled":
953-
await updateGlobalState("remoteControlEnabled", message.bool ?? false)
953+
// Update cloud settings instead of local globalState
954+
try {
955+
await CloudService.instance.updateUserSettings({
956+
extensionBridgeEnabled: message.bool ?? false,
957+
})
958+
} catch (error) {
959+
provider.log(`Failed to update cloud settings for remote control: ${error}`)
960+
// Don't fall back to local storage - cloud settings are the source of truth
961+
}
954962
await provider.handleRemoteControlToggle(message.bool ?? false)
955963
await provider.postStateToWebview()
956964
break

src/extension.ts

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,43 @@ export async function activate(context: vscode.ExtensionContext) {
129129
// Initialize Roo Code Cloud service.
130130
const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebview()
131131
authStateChangedHandler = postStateListener
132-
settingsUpdatedHandler = postStateListener
132+
133+
// Enhanced settings updated handler that also updates ExtensionBridgeService
134+
settingsUpdatedHandler = async () => {
135+
// Update ExtensionBridgeService when settings change
136+
const userInfo = CloudService.instance.getUserInfo()
137+
if (userInfo && CloudService.instance.cloudAPI) {
138+
try {
139+
const config = await CloudService.instance.cloudAPI.bridgeConfig()
140+
141+
const isCloudAgent =
142+
typeof process.env.ROO_CODE_CLOUD_TOKEN === "string" && process.env.ROO_CODE_CLOUD_TOKEN.length > 0
143+
144+
const remoteControlEnabled = isCloudAgent
145+
? true
146+
: (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false)
147+
148+
cloudLogger(`[CloudService] Settings updated - remoteControlEnabled = ${remoteControlEnabled}`)
149+
150+
ExtensionBridgeService.handleRemoteControlState(
151+
userInfo,
152+
remoteControlEnabled,
153+
{
154+
...config,
155+
provider,
156+
sessionId: vscode.env.sessionId,
157+
},
158+
cloudLogger,
159+
)
160+
} catch (error) {
161+
cloudLogger(
162+
`[CloudService] Failed to update ExtensionBridgeService on settings change: ${error instanceof Error ? error.message : String(error)}`,
163+
)
164+
}
165+
}
166+
167+
postStateListener()
168+
}
133169

134170
userInfoHandler = async ({ userInfo }: { userInfo: CloudUserInfo }) => {
135171
postStateListener()
@@ -147,9 +183,13 @@ export async function activate(context: vscode.ExtensionContext) {
147183

148184
cloudLogger(`[CloudService] isCloudAgent = ${isCloudAgent}, socketBridgeUrl = ${config.socketBridgeUrl}`)
149185

186+
const remoteControlEnabled = isCloudAgent
187+
? true
188+
: (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false)
189+
150190
ExtensionBridgeService.handleRemoteControlState(
151191
userInfo,
152-
isCloudAgent ? true : contextProxy.getValue("remoteControlEnabled"),
192+
remoteControlEnabled,
153193
{
154194
...config,
155195
provider,

0 commit comments

Comments
 (0)