Skip to content

Commit 4d1fdb4

Browse files
lmtr0hannesrudolph
authored andcommitted
fix(Ctrl+Enter to send): UI Setting now actually saves the setting
1 parent 3458f70 commit 4d1fdb4

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
@@ -1858,6 +1858,7 @@ export class ClineProvider
18581858
terminalCompressProgressBar,
18591859
historyPreviewCollapsed,
18601860
reasoningBlockCollapsed,
1861+
requireCtrlEnterToSend,
18611862
cloudUserInfo,
18621863
cloudIsAuthenticated,
18631864
sharingEnabled,
@@ -1995,6 +1996,7 @@ export class ClineProvider
19951996
hasSystemPromptOverride,
19961997
historyPreviewCollapsed: historyPreviewCollapsed ?? false,
19971998
reasoningBlockCollapsed: reasoningBlockCollapsed ?? true,
1999+
requireCtrlEnterToSend: requireCtrlEnterToSend ?? false,
19982000
cloudUserInfo,
19992001
cloudIsAuthenticated: cloudIsAuthenticated ?? false,
20002002
cloudOrganizations,
@@ -2213,6 +2215,7 @@ export class ClineProvider
22132215
maxConcurrentFileReads: stateValues.maxConcurrentFileReads ?? 5,
22142216
historyPreviewCollapsed: stateValues.historyPreviewCollapsed ?? false,
22152217
reasoningBlockCollapsed: stateValues.reasoningBlockCollapsed ?? true,
2218+
requireCtrlEnterToSend: stateValues.requireCtrlEnterToSend ?? false,
22162219
cloudUserInfo,
22172220
cloudIsAuthenticated,
22182221
sharingEnabled,

src/core/webview/webviewMessageHandler.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -578,10 +578,6 @@ export const webviewMessageHandler = async (
578578
await updateGlobalState("alwaysAllowUpdateTodoList", message.bool)
579579
await provider.postStateToWebview()
580580
break
581-
case "requireCtrlEnterToSend":
582-
await updateGlobalState("requireCtrlEnterToSend", message.bool ?? false)
583-
await provider.postStateToWebview()
584-
break
585581
case "askResponse":
586582
provider.getCurrentTask()?.handleWebviewAskResponse(message.askResponse!, message.text, message.images)
587583
break
@@ -1513,10 +1509,6 @@ export const webviewMessageHandler = async (
15131509
Terminal.setTerminalZdotdir(message.bool)
15141510
}
15151511
break
1516-
case "requireCtrlEnterToSend":
1517-
await updateGlobalState("requireCtrlEnterToSend", message.bool)
1518-
await provider.postStateToWebview()
1519-
break
15201512
case "terminalCompressProgressBar":
15211513
await updateGlobalState("terminalCompressProgressBar", message.bool)
15221514
await provider.postStateToWebview()
@@ -1692,6 +1684,10 @@ export const webviewMessageHandler = async (
16921684
await updateGlobalState("reasoningBlockCollapsed", message.bool ?? true)
16931685
// No need to call postStateToWebview here as the UI already updated optimistically
16941686
break
1687+
case "requireCtrlEnterToSend":
1688+
await updateGlobalState("requireCtrlEnterToSend", message.bool)
1689+
// No need to call postStateToWebview here as the UI already updated optimistically
1690+
break
16951691
case "toggleApiConfigPin":
16961692
if (message.text) {
16971693
const currentPinned = getGlobalState("pinnedApiConfigs") ?? {}

src/shared/ExtensionMessage.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,15 @@ export interface ExtensionMessage {
127127
| "insertTextIntoTextarea"
128128
| "dismissedUpsells"
129129
| "organizationSwitchResult"
130+
| "requireCtrlEnterToSend"
130131
text?: string
131132
payload?: any // Add a generic payload for now, can refine later
132133
// Checkpoint warning message
133134
checkpointWarning?: {
134135
type: "WAIT_TIMEOUT" | "INIT_TIMEOUT"
135136
timeout: number
136137
}
138+
bool?: boolean
137139
action?:
138140
| "chatButtonClicked"
139141
| "mcpButtonClicked"
@@ -238,7 +240,6 @@ export type ExtensionState = Pick<
238240
| "alwaysAllowFollowupQuestions"
239241
| "alwaysAllowExecute"
240242
| "alwaysAllowUpdateTodoList"
241-
| "requireCtrlEnterToSend"
242243
| "followupAutoApproveTimeoutMs"
243244
| "allowedCommands"
244245
| "deniedCommands"
@@ -297,6 +298,7 @@ export type ExtensionState = Pick<
297298
| "reasoningBlockCollapsed"
298299
| "includeCurrentTime"
299300
| "includeCurrentCost"
301+
| "requireCtrlEnterToSend"
300302
> & {
301303
version: string
302304
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"
@@ -200,6 +199,7 @@ export interface WebviewMessage {
200199
| "profileThresholds"
201200
| "setHistoryPreviewCollapsed"
202201
| "setReasoningBlockCollapsed"
202+
| "requireCtrlEnterToSend"
203203
| "openExternal"
204204
| "filterMarketplaceItems"
205205
| "marketplaceButtonClicked"

webview-ui/src/context/ExtensionStateContext.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
274274
alwaysAllowUpdateTodoList: true,
275275
includeDiagnosticMessages: true,
276276
maxDiagnosticMessages: 50,
277-
requireCtrlEnterToSend: false,
277+
requireCtrlEnterToSend: false, // Default to expected value
278278
openRouterImageApiKey: "",
279279
openRouterImageGenerationSelectedModel: "",
280280
includeCurrentTime: true,
@@ -424,6 +424,10 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
424424
}
425425
break
426426
}
427+
case "requireCtrlEnterToSend": {
428+
setState((prevState) => ({ ...prevState, requireCtrlEnterToSend: message.bool ?? false }))
429+
break
430+
}
427431
}
428432
},
429433
[setListApiConfigMeta],

0 commit comments

Comments
 (0)