diff --git a/src/features/composer/components/Composer.tsx b/src/features/composer/components/Composer.tsx index 574a7baf0..0910ce6be 100644 --- a/src/features/composer/components/Composer.tsx +++ b/src/features/composer/components/Composer.tsx @@ -6,6 +6,7 @@ import type { ThreadTokenUsage, } from "../../../types"; import { computeDictationInsertion } from "../../../utils/dictation"; +import { isComposingEvent } from "../../../utils/keys"; import { useComposerAutocompleteState } from "../hooks/useComposerAutocompleteState"; import { ComposerInput } from "./ComposerInput"; import { ComposerMetaBar } from "./ComposerMetaBar"; @@ -262,6 +263,9 @@ export function Composer({ onTextChange={handleTextChange} onSelectionChange={handleSelectionChange} onKeyDown={(event) => { + if (isComposingEvent(event)) { + return; + } if (event.key === "Enter" && event.shiftKey) { event.preventDefault(); const textarea = textareaRef.current; diff --git a/src/features/composer/hooks/useComposerAutocompleteState.ts b/src/features/composer/hooks/useComposerAutocompleteState.ts index 452b07012..f0e30a1cb 100644 --- a/src/features/composer/hooks/useComposerAutocompleteState.ts +++ b/src/features/composer/hooks/useComposerAutocompleteState.ts @@ -8,6 +8,7 @@ import { findPromptArgRangeAtCursor, getPromptArgumentHint, } from "../../../utils/customPrompts"; +import { isComposingEvent } from "../../../utils/keys"; type Skill = { name: string; description?: string }; type UseComposerAutocompleteStateArgs = { @@ -270,6 +271,9 @@ export function useComposerAutocompleteState({ if (disabled) { return; } + if (isComposingEvent(event)) { + return; + } if (isAutocompleteOpen) { if (event.key === "ArrowDown") { event.preventDefault(); diff --git a/src/styles/home.css b/src/styles/home.css index cf44a5967..fa499e52a 100644 --- a/src/styles/home.css +++ b/src/styles/home.css @@ -300,7 +300,7 @@ bottom: 100%; left: 50%; transform: translate(-50%, -8px); - background: var(--surface-command); + background: var(--surface-popover); color: var(--text-stronger); border: 1px solid var(--border-subtle); border-radius: 8px; diff --git a/src/utils/keys.ts b/src/utils/keys.ts index 3aa7657f9..28e700818 100644 --- a/src/utils/keys.ts +++ b/src/utils/keys.ts @@ -12,3 +12,21 @@ export function matchesHoldKey(event: KeyboardEvent, holdKey: string) { return false; } } + +type ComposingEvent = { + isComposing?: boolean; + keyCode?: number; + nativeEvent?: { + isComposing?: boolean; + keyCode?: number; + }; +}; + +export function isComposingEvent(event: ComposingEvent) { + return Boolean( + event.isComposing || + event.keyCode === 229 || + event.nativeEvent?.isComposing || + event.nativeEvent?.keyCode === 229, + ); +}