Drop the stage's own voice button now that the composer carries the mic

The empty-chat stage offered "Start talking" / "Set up voice" above the
transcript, a second entry to the same voice conversation the composer's
mic now opens. Keep the composer as the single way in.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcoERsCTbvjqDzE8qC82Wo
This commit is contained in:
Claude 2026-10-05 10:51:03 +00:00
parent f3e438444a
commit c98eb6e843
No known key found for this signature in database
12 changed files with 0 additions and 152 deletions

View File

@ -24,7 +24,6 @@ import {
import { personaIdlePrompt, personaThinkingLines } from "../../lib/voice-persona-copy"; import { personaIdlePrompt, personaThinkingLines } from "../../lib/voice-persona-copy";
import { VoiceAwarenessStrip } from "../voice/VoiceAwarenessStrip"; import { VoiceAwarenessStrip } from "../voice/VoiceAwarenessStrip";
import { StageHero } from "./StageHero"; import { StageHero } from "./StageHero";
import { StageVoiceEntry } from "./StageVoiceEntry";
import { TextStageCanvas } from "./TextStageCanvas"; import { TextStageCanvas } from "./TextStageCanvas";
export function OoStage({ export function OoStage({
@ -37,8 +36,6 @@ export function OoStage({
snapshot, snapshot,
running, running,
hasMessages, hasMessages,
voiceReady = false,
onStartVoice,
}: { }: {
botId: string; botId: string;
botName: string; botName: string;
@ -49,8 +46,6 @@ export function OoStage({
snapshot: ThreadSnapshot | null; snapshot: ThreadSnapshot | null;
running: boolean; running: boolean;
hasMessages: boolean; hasMessages: boolean;
voiceReady?: boolean;
onStartVoice?: () => void;
}) { }) {
const { t } = useLingui(); const { t } = useLingui();
const [reducedMotion, setReducedMotion] = useState(false); const [reducedMotion, setReducedMotion] = useState(false);
@ -242,13 +237,6 @@ export function OoStage({
> >
{subtitle} {subtitle}
</p> </p>
{onStartVoice ? (
<StageVoiceEntry
voiceReady={voiceReady}
botColor={botColor}
onStartVoice={onStartVoice}
/>
) : null}
</> </>
) : ( ) : (
<p className="mt-1 max-w-xl truncate text-center text-ui-caption text-muted-foreground"> <p className="mt-1 max-w-xl truncate text-center text-ui-caption text-muted-foreground">
@ -306,14 +294,10 @@ export function OoGroupStage({
groupName, groupName,
snapshot, snapshot,
enrichMember, enrichMember,
voiceReady = false,
onStartVoice,
}: { }: {
groupName?: string; groupName?: string;
snapshot: ThreadSnapshot | null; snapshot: ThreadSnapshot | null;
enrichMember?: (botId: string) => Pick<GroupStageMember, "title" | "description"> | undefined; enrichMember?: (botId: string) => Pick<GroupStageMember, "title" | "description"> | undefined;
voiceReady?: boolean;
onStartVoice?: () => void;
}) { }) {
const { t } = useLingui(); const { t } = useLingui();
const [reducedMotion, setReducedMotion] = useState(false); const [reducedMotion, setReducedMotion] = useState(false);
@ -552,14 +536,6 @@ export function OoGroupStage({
{subtitle} {subtitle}
</p> </p>
)} )}
{onStartVoice && !hasMessages ? (
<StageVoiceEntry
voiceReady={voiceReady}
botColor={speaker?.color}
onStartVoice={onStartVoice}
/>
) : null}
</div> </div>
</section> </section>
); );

View File

@ -1,43 +0,0 @@
import { Trans, useLingui } from "@lingui/react/macro";
import { Button } from "@rakazo/ui-web";
import { Mic } from "lucide-react";
import { VoiceAuroraRim } from "../voice/VoiceAurora";
export function StageVoiceEntry({
voiceReady,
botColor,
onStartVoice,
}: {
voiceReady: boolean;
botColor?: string;
onStartVoice: () => void;
}) {
const { t } = useLingui();
return (
<div className="mt-5 flex w-full max-w-md flex-col items-center gap-2">
<Button
type="button"
variant="outline"
onClick={onStartVoice}
data-testid="stage-voice-primary"
aria-label={voiceReady ? t`Start talking` : t`Set up voice`}
title={voiceReady ? t`Start talking` : t`Set up voice`}
className={`tactile-press h-control-lg w-full max-w-sm gap-2.5 rounded-full px-6 text-ui-body font-semibold transition-all ${
voiceReady
? "relative overflow-hidden border-border bg-foreground/5 text-foreground hover:bg-foreground/10"
: "border-border bg-foreground/5 text-foreground/80 hover:bg-foreground/10"
}`}
>
{voiceReady ? (
<VoiceAuroraRim botColor={botColor} className="inset-x-[12%] h-0.5 blur-[3px]" />
) : null}
<Mic strokeWidth={2} className="size-icon-lg shrink-0" aria-hidden="true" />
{voiceReady ? <Trans>Start talking</Trans> : <Trans>Set up voice</Trans>}
</Button>
<p className="text-center text-ui-caption text-muted-foreground">
<Trans>Voice first — transcript below</Trans>
</p>
</div>
);
}

View File

@ -4539,7 +4539,6 @@ msgstr "Servername"
msgid "Server URL" msgid "Server URL"
msgstr "Server-URL" msgstr "Server-URL"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "Stimme einrichten" msgstr "Stimme einrichten"
@ -4794,10 +4793,6 @@ msgstr "Chat starten"
msgid "Start recording" msgid "Start recording"
msgstr "Aufnahme starten" msgstr "Aufnahme starten"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr "Sprechen starten"
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "Starte die Unterhaltung — {activeName} steht oben auf der Bühne." msgstr "Starte die Unterhaltung — {activeName} steht oben auf der Bühne."
@ -5318,10 +5313,6 @@ msgstr "Stimme"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "Stimme „{0}“ nicht gefunden." msgstr "Stimme „{0}“ nicht gefunden."
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr "Primär per Stimme — Transkript unten"
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "Die Stimme ist noch nicht verfügbar. Du kannst sie später in den Einstellungen aktivieren." msgstr "Die Stimme ist noch nicht verfügbar. Du kannst sie später in den Einstellungen aktivieren."

View File

@ -4539,7 +4539,6 @@ msgstr "Server name"
msgid "Server URL" msgid "Server URL"
msgstr "Server URL" msgstr "Server URL"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "Set up voice" msgstr "Set up voice"
@ -4794,10 +4793,6 @@ msgstr "Start chat"
msgid "Start recording" msgid "Start recording"
msgstr "Start recording" msgstr "Start recording"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr "Start talking"
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "Start the conversation — {activeName} is on stage above." msgstr "Start the conversation — {activeName} is on stage above."
@ -5318,10 +5313,6 @@ msgstr "Voice"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "Voice \"{0}\" not found." msgstr "Voice \"{0}\" not found."
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr "Voice first — transcript below"
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "Voice is not available yet. You can turn it on later in settings." msgstr "Voice is not available yet. You can turn it on later in settings."

View File

@ -4539,7 +4539,6 @@ msgstr "Nombre del servidor"
msgid "Server URL" msgid "Server URL"
msgstr "URL del servidor" msgstr "URL del servidor"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "Iniciar grabación" msgstr "Iniciar grabación"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "Voz"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "सर्वर का नाम"
msgid "Server URL" msgid "Server URL"
msgstr "सर्वर URL" msgstr "सर्वर URL"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "रिकॉर्डिंग शुरू करें" msgstr "रिकॉर्डिंग शुरू करें"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "आवाज़"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "서버 이름"
msgid "Server URL" msgid "Server URL"
msgstr "서버 URL" msgstr "서버 URL"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "작업 녹화 시작" msgstr "작업 녹화 시작"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "음성"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "Nome do servidor"
msgid "Server URL" msgid "Server URL"
msgstr "URL do servidor" msgstr "URL do servidor"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "Começar a gravar" msgstr "Começar a gravar"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "Voz"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "Имя сервера"
msgid "Server URL" msgid "Server URL"
msgstr "URL-адрес сервера" msgstr "URL-адрес сервера"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "Начать запись" msgstr "Начать запись"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "Голос"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "Sunucu adı"
msgid "Server URL" msgid "Server URL"
msgstr "Sunucu URL'si" msgstr "Sunucu URL'si"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "Kaydı başlat" msgstr "Kaydı başlat"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "Ses"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -4539,7 +4539,6 @@ msgstr "服务器名称"
msgid "Server URL" msgid "Server URL"
msgstr "服务器 URL" msgstr "服务器 URL"
#: src/components/stage/StageVoiceEntry.tsx
#: src/pages/shell/composer.tsx #: src/pages/shell/composer.tsx
msgid "Set up voice" msgid "Set up voice"
msgstr "" msgstr ""
@ -4794,10 +4793,6 @@ msgstr ""
msgid "Start recording" msgid "Start recording"
msgstr "开始录制" msgstr "开始录制"
#: src/components/stage/StageVoiceEntry.tsx
msgid "Start talking"
msgstr ""
#: src/pages/shell/transcript.tsx #: src/pages/shell/transcript.tsx
msgid "Start the conversation — {activeName} is on stage above." msgid "Start the conversation — {activeName} is on stage above."
msgstr "" msgstr ""
@ -5318,10 +5313,6 @@ msgstr "语音"
msgid "Voice \"{0}\" not found." msgid "Voice \"{0}\" not found."
msgstr "" msgstr ""
#: src/components/stage/StageVoiceEntry.tsx
msgid "Voice first — transcript below"
msgstr ""
#: src/components/onboarding/OnboardingVoiceStep.tsx #: src/components/onboarding/OnboardingVoiceStep.tsx
msgid "Voice is not available yet. You can turn it on later in settings." msgid "Voice is not available yet. You can turn it on later in settings."
msgstr "" msgstr ""

View File

@ -3323,8 +3323,6 @@ export function ShellPage() {
snapshot={activeSnapshot} snapshot={activeSnapshot}
running={transcriptRunning} running={transcriptRunning}
hasMessages={transcriptMessages.length > 0} hasMessages={transcriptMessages.length > 0}
voiceReady={Boolean(voiceStatus?.ready)}
onStartVoice={startVoiceEncounter}
/> />
) : null} ) : null}
{!callOpen && inGroup ? ( {!callOpen && inGroup ? (
@ -3332,8 +3330,6 @@ export function ShellPage() {
groupName={activeGroup?.name ?? activeSnapshot?.groupName} groupName={activeGroup?.name ?? activeSnapshot?.groupName}
snapshot={activeSnapshot} snapshot={activeSnapshot}
enrichMember={enrichStageMember} enrichMember={enrichStageMember}
voiceReady={Boolean(voiceStatus?.ready)}
onStartVoice={startVoiceEncounter}
/> />
) : null} ) : null}
<Transcript <Transcript