fix(webview): remove input overlay hint and border jitter; ensure platform key renders in Settings; clean ChatView lint

This commit is contained in:
Hannes Rudolph 2025-11-06 13:51:21 -07:00
parent a50322a9dd
commit ecb6ce14e1
4 changed files with 16 additions and 33 deletions

View file

@ -1008,11 +1008,8 @@ export const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
"font-vscode-font-family",
"text-vscode-editor-font-size",
"leading-vscode-editor-line-height",
isFocused
? "border border-vscode-focusBorder outline outline-vscode-focusBorder"
: isDraggingOver
? "border-2 border-dashed border-vscode-focusBorder"
: "border border-transparent",
"border-none",
"outline-none",
"pl-2",
"py-2",
isEditMode ? "pr-20" : "pr-9",
@ -1213,22 +1210,6 @@ export const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
{placeholderBottomText}
</div>
)}
{requireCtrlEnterToSend && (
<div
className={cn(
"absolute left-2 z-30 flex items-center h-8 font-vscode-font-family text-vscode-editor-font-size leading-vscode-editor-line-height",
isEditMode ? "pr-20" : "pr-9",
)}
style={{
bottom: "0.25rem",
color: "color-mix(in oklab, var(--vscode-descriptionForeground) 70%, transparent)",
userSelect: "none",
pointerEvents: "none",
fontSize: "0.75rem",
}}>
{t("chat:pressToSend", { keyCombination: getSendMessageKeyCombination() })}
</div>
)}
</div>
</div>
</div>

View file

@ -1255,12 +1255,12 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
key={messageOrGroup.ts}
message={messageOrGroup}
isExpanded={expandedRows[messageOrGroup.ts] || false}
onToggleExpand={toggleRowExpansion} // This was already stabilized
lastModifiedMessage={modifiedMessages.at(-1)} // Original direct access
isLast={index === groupedMessages.length - 1} // Original direct access
onToggleExpand={toggleRowExpansion}
lastModifiedMessage={modifiedMessages.at(-1)}
isLast={index === groupedMessages.length - 1}
onHeightChange={handleRowHeightChange}
isStreaming={isStreaming}
onSuggestionClick={handleSuggestionClickInRow} // This was already stabilized
onSuggestionClick={handleSuggestionClickInRow}
onBatchFileResponse={handleBatchFileResponse}
isFollowUpAnswered={messageOrGroup.isAnswered === true || messageOrGroup.ts === currentFollowUpTs}
editable={
@ -1281,7 +1281,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
return tool.tool === "updateTodoList" && enableButtons && !!primaryButtonText
})()
}
hasCheckpoint={hasCheckpoint}
/>
)
},

View file

@ -73,12 +73,16 @@ export const UISettings = ({
onChange={(e: any) => handleRequireCtrlEnterToSendChange(e.target.checked)}
data-testid="ctrl-enter-checkbox">
<span className="font-medium">
{t("settings:ui.requireCtrlEnterToSend.label", { primaryMod: getPrimaryModifierKey() })}
{t("settings:ui.requireCtrlEnterToSend.label", {
primaryMod: getPrimaryModifierKey(),
interpolation: { prefix: "{", suffix: "}" },
})}
</span>
</VSCodeCheckbox>
<div className="text-vscode-descriptionForeground text-sm ml-5 mt-1">
{t("settings:ui.requireCtrlEnterToSend.description", {
primaryMod: getPrimaryModifierKey(),
interpolation: { prefix: "{", suffix: "}" },
})}
</div>
</div>

View file

@ -11,7 +11,6 @@ import {
type OrganizationAllowList,
type CloudOrganizationMembership,
ORGANIZATION_ALLOW_ALL,
DEFAULT_CHECKPOINT_TIMEOUT_SECONDS,
} from "@roo-code/types"
import { ExtensionMessage, ExtensionState, MarketplaceInstalledMetadata, Command } from "@roo/ExtensionMessage"
@ -161,11 +160,11 @@ export interface ExtensionStateContextType extends ExtensionState {
setMaxDiagnosticMessages: (value: number) => void
includeTaskHistoryInEnhance?: boolean
setIncludeTaskHistoryInEnhance: (value: boolean) => void
includeCurrentTime?: boolean
includeCurrentTime: boolean
setIncludeCurrentTime: (value: boolean) => void
includeCurrentCost?: boolean
includeCurrentCost: boolean
setIncludeCurrentCost: (value: boolean) => void
requireCtrlEnterToSend?: boolean
requireCtrlEnterToSend: boolean
setRequireCtrlEnterToSend: (value: boolean) => void
}
@ -207,7 +206,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
ttsSpeed: 1.0,
diffEnabled: false,
enableCheckpoints: true,
checkpointTimeout: DEFAULT_CHECKPOINT_TIMEOUT_SECONDS, // Default to 15 seconds
checkpointTimeout: 15, // Default to 15 seconds
fuzzyMatchThreshold: 1.0,
language: "en", // Default language code
writeDelayMs: 1000,
@ -604,7 +603,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode
setIncludeCurrentTime,
includeCurrentCost,
setIncludeCurrentCost,
requireCtrlEnterToSend: state.requireCtrlEnterToSend,
requireCtrlEnterToSend: !!state.requireCtrlEnterToSend,
setRequireCtrlEnterToSend: (value) => {
setState((prevState) => ({ ...prevState, requireCtrlEnterToSend: value }))
},