diff --git a/packages/ui/src/components/prompt-input.tsx b/packages/ui/src/components/prompt-input.tsx
index 214ed534..4e5d5a20 100644
--- a/packages/ui/src/components/prompt-input.tsx
+++ b/packages/ui/src/components/prompt-input.tsx
@@ -1,5 +1,5 @@
import { Suspense, createEffect, createSignal, lazy, on, onCleanup, Show } from "solid-js"
-import { ArrowBigUp, ArrowBigDown, Loader2, Mic, X } from "lucide-solid"
+import { ArrowBigUp, ArrowBigDown, Loader2, Mic, Volume2, X } from "lucide-solid"
import ExpandButton from "./expand-button"
import { clearAttachments, removeAttachment } from "../stores/attachments"
import { resolvePastedPlaceholders } from "../lib/prompt-placeholders"
@@ -19,6 +19,7 @@ import { usePromptAttachments } from "./prompt-input/usePromptAttachments"
import { usePromptPicker } from "./prompt-input/usePromptPicker"
import { usePromptKeyDown } from "./prompt-input/usePromptKeyDown"
import { usePromptVoiceInput } from "./prompt-input/usePromptVoiceInput"
+import { canUseConversationMode, isConversationModeEnabled, toggleConversationMode } from "../stores/conversation-speech"
const log = getLogger("actions")
const LazyUnifiedPicker = lazy(() => import("./unified-picker"))
@@ -476,6 +477,13 @@ export default function PromptInput(props: PromptInputProps) {
const showVoiceInput = () =>
preferences().showPromptVoiceInput &&
(voiceInput.canUseVoiceInput() || voiceInput.isRecording() || voiceInput.isTranscribing())
+ const conversationModeEnabled = () => isConversationModeEnabled(props.instanceId)
+ const showConversationToggle = () => showVoiceInput() || conversationModeEnabled()
+ const canToggleConversationMode = () => canUseConversationMode()
+ const conversationModeButtonTitle = () =>
+ conversationModeEnabled()
+ ? t("promptInput.conversationMode.disable.title")
+ : t("promptInput.conversationMode.enable.title")
const instance = () => getActiveInstance()
@@ -601,6 +609,19 @@ export default function PromptInput(props: PromptInputProps) {
+
+
+