Skip to content

Commit 9d206cb

Browse files
committed
fix(Ctrl+Enter to send): UI Setting now actually saves the setting
1 parent 71ac954 commit 9d206cb

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

src/core/webview/ClineProvider.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1793,6 +1793,7 @@ export class ClineProvider
17931793
terminalCompressProgressBar,
17941794
historyPreviewCollapsed,
17951795
reasoningBlockCollapsed,
1796+
requireCtrlEnterToSend,
17961797
cloudUserInfo,
17971798
cloudIsAuthenticated,
17981799
sharingEnabled,
@@ -1927,6 +1928,7 @@ export class ClineProvider
19271928
hasSystemPromptOverride,
19281929
historyPreviewCollapsed: historyPreviewCollapsed ?? false,
19291930
reasoningBlockCollapsed: reasoningBlockCollapsed ?? true,
1931+
requireCtrlEnterToSend: requireCtrlEnterToSend ?? false,
19301932
cloudUserInfo,
19311933
cloudIsAuthenticated: cloudIsAuthenticated ?? false,
19321934
cloudOrganizations,
@@ -2142,6 +2144,7 @@ export class ClineProvider
21422144
maxConcurrentFileReads: stateValues.maxConcurrentFileReads ?? 5,
21432145
historyPreviewCollapsed: stateValues.historyPreviewCollapsed ?? false,
21442146
reasoningBlockCollapsed: stateValues.reasoningBlockCollapsed ?? true,
2147+
requireCtrlEnterToSend: stateValues.requireCtrlEnterToSend ?? false,
21452148
cloudUserInfo,
21462149
cloudIsAuthenticated,
21472150
sharingEnabled,

src/core/webview/webviewMessageHandler.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -577,10 +577,6 @@ export const webviewMessageHandler = async (
577577
await updateGlobalState("alwaysAllowUpdateTodoList", message.bool)
578578
await provider.postStateToWebview()
579579
break
580-
case "requireCtrlEnterToSend":
581-
await updateGlobalState("requireCtrlEnterToSend", message.bool ?? false)
582-
await provider.postStateToWebview()
583-
break
584580
case "askResponse":
585581
provider.getCurrentTask()?.handleWebviewAskResponse(message.askResponse!, message.text, message.images)
586582
break
@@ -1458,10 +1454,6 @@ export const webviewMessageHandler = async (
14581454
Terminal.setTerminalZdotdir(message.bool)
14591455
}
14601456
break
1461-
case "requireCtrlEnterToSend":
1462-
await updateGlobalState("requireCtrlEnterToSend", message.bool)
1463-
await provider.postStateToWebview()
1464-
break
14651457
case "terminalCompressProgressBar":
14661458
await updateGlobalState("terminalCompressProgressBar", message.bool)
14671459
await provider.postStateToWebview()
@@ -1629,6 +1621,10 @@ export const webviewMessageHandler = async (
16291621
await updateGlobalState("reasoningBlockCollapsed", message.bool ?? true)
16301622
// No need to call postStateToWebview here as the UI already updated optimistically
16311623
break
1624+
case "requireCtrlEnterToSend":
1625+
await updateGlobalState("requireCtrlEnterToSend", message.bool)
1626+
// No need to call postStateToWebview here as the UI already updated optimistically
1627+
break
16321628
case "toggleApiConfigPin":
16331629
if (message.text) {
16341630
const currentPinned = getGlobalState("pinnedApiConfigs") ?? {}

src/shared/ExtensionMessage.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,10 @@ export interface ExtensionMessage {
126126
| "insertTextIntoTextarea"
127127
| "dismissedUpsells"
128128
| "organizationSwitchResult"
129+
| "requireCtrlEnterToSend"
129130
text?: string
130131
payload?: any // Add a generic payload for now, can refine later
132+
bool?: boolean
131133
action?:
132134
| "chatButtonClicked"
133135
| "mcpButtonClicked"
@@ -232,7 +234,6 @@ export type ExtensionState = Pick<
232234
| "alwaysAllowFollowupQuestions"
233235
| "alwaysAllowExecute"
234236
| "alwaysAllowUpdateTodoList"
235-
| "requireCtrlEnterToSend"
236237
| "followupAutoApproveTimeoutMs"
237238
| "allowedCommands"
238239
| "deniedCommands"
@@ -289,6 +290,7 @@ export type ExtensionState = Pick<
289290
| "openRouterImageGenerationSelectedModel"
290291
| "includeTaskHistoryInEnhance"
291292
| "reasoningBlockCollapsed"
293+
| "requireCtrlEnterToSend"
292294
> & {
293295
version: string
294296
clineMessages: ClineMessage[]

src/shared/WebviewMessage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export interface WebviewMessage {
4848
| "alwaysAllowExecute"
4949
| "alwaysAllowFollowupQuestions"
5050
| "alwaysAllowUpdateTodoList"
51-
| "requireCtrlEnterToSend"
5251
| "followupAutoApproveTimeoutMs"
5352
| "webviewDidLaunch"
5453
| "newTask"
@@ -196,6 +195,7 @@ export interface WebviewMessage {
196195
| "profileThresholds"
197196
| "setHistoryPreviewCollapsed"
198197
| "setReasoningBlockCollapsed"
198+
| "requireCtrlEnterToSend"
199199
| "openExternal"
200200
| "filterMarketplaceItems"
201201
| "marketplaceButtonClicked"

webview-ui/src/context/ExtensionStateContext.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
266266
alwaysAllowUpdateTodoList: true,
267267
includeDiagnosticMessages: true,
268268
maxDiagnosticMessages: 50,
269-
requireCtrlEnterToSend: false,
269+
requireCtrlEnterToSend: false, // Default to expected value
270270
openRouterImageApiKey: "",
271271
openRouterImageGenerationSelectedModel: "",
272272
})
@@ -403,6 +403,10 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
403403
}
404404
break
405405
}
406+
case "requireCtrlEnterToSend": {
407+
setState((prevState) => ({ ...prevState, requireCtrlEnterToSend: message.bool ?? false }))
408+
break
409+
}
406410
}
407411
},
408412
[setListApiConfigMeta],

0 commit comments

Comments
 (0)