Skip to content

Commit 7d47d0f

Browse files
evan-YMclaude
andcommitted
fix(ui): remove redundant selectedLabel rendering in Talk settings (#96915)
The renderNativeTalkSelect function was rendering an extra .agent-chat__talk-select-label span element for Voice and Sensitivity fields, causing misalignment with the Model field. Changes: - Remove selectedLabel parameter from renderNativeTalkSelect function signature - Remove the conditional rendering of .agent-chat__talk-select-label span - Clean up the selectedLabel argument in renderRealtimeTalkOptions This ensures all three fields (Voice, Model, Sensitivity) have identical HTML structure (label span + input/select), resulting in perfect visual alignment. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
1 parent 03ca096 commit 7d47d0f

2 files changed

Lines changed: 13 additions & 20 deletions

File tree

ui/src/ui/views/chat.test.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,11 +1476,12 @@ describe("chat voice controls", () => {
14761476
const model = container.querySelector<HTMLInputElement>(
14771477
'.agent-chat__talk-options-primary input[placeholder="Auto"]',
14781478
);
1479-
const sensitivityLabel = requireElement(
1480-
container,
1481-
'[data-talk-select="sensitivity"] .agent-chat__talk-select-label',
1482-
"Talk sensitivity selected label",
1479+
const sensitivitySelect = container.querySelector<HTMLSelectElement>(
1480+
'[data-talk-select="sensitivity"] select',
14831481
);
1482+
if (sensitivitySelect === null) {
1483+
throw new Error("expected Talk sensitivity select");
1484+
}
14841485

14851486
expect(getTalkSelectOptionValues(container, "voice")).toEqual([
14861487
"",
@@ -1495,7 +1496,7 @@ describe("chat voice controls", () => {
14951496
"marin",
14961497
"cedar",
14971498
]);
1498-
expect(sensitivityLabel.textContent).toBe("Custom");
1499+
expect(sensitivitySelect.value).toBe("__custom");
14991500
expect(getTalkSelectOptionValues(container, "sensitivity")).toEqual([
15001501
"",
15011502
"0.65",
@@ -1542,12 +1543,13 @@ describe("chat voice controls", () => {
15421543
},
15431544
onRealtimeTalkOptionsChange,
15441545
});
1545-
const defaultSensitivityLabel = requireElement(
1546-
defaultContainer,
1547-
'[data-talk-select="sensitivity"] .agent-chat__talk-select-label',
1548-
"default Talk sensitivity selected label",
1546+
const defaultSensitivitySelect = defaultContainer.querySelector<HTMLSelectElement>(
1547+
'[data-talk-select="sensitivity"] select',
15491548
);
1550-
expect(defaultSensitivityLabel.textContent).toBe("Default");
1549+
if (defaultSensitivitySelect === null) {
1550+
throw new Error("expected default Talk sensitivity select");
1551+
}
1552+
expect(defaultSensitivitySelect.value).toBe("");
15511553
expect(getTalkSelectOptionValues(defaultContainer, "sensitivity")).toEqual([
15521554
"",
15531555
"0.65",

ui/src/ui/views/chat.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ import { CHAT_HISTORY_RENDER_LIMIT } from "../chat/history-limits.ts";
3333
import type { ChatInputHistoryKeyInput, ChatInputHistoryKeyResult } from "../chat/input-history.ts";
3434
import { PinnedMessages } from "../chat/pinned-messages.ts";
3535
import { getPinnedMessageSummary } from "../chat/pinned-summary.ts";
36-
import type { RealtimeTalkConversationEntry } from "../chat/realtime-talk-conversation.ts";
3736
import {
3837
REALTIME_TALK_FALLBACK_PROVIDERS,
3938
listSelectableRealtimeTalkProviders,
4039
resolveControlUiRealtimeTalkProviderTransports,
4140
type RealtimeTalkCatalogProvider,
4241
} from "../chat/realtime-talk-catalog.ts";
42+
import type { RealtimeTalkConversationEntry } from "../chat/realtime-talk-conversation.ts";
4343
import type { RealtimeTalkStatus } from "../chat/realtime-talk.ts";
4444
import { renderChatRunControls } from "../chat/run-controls.ts";
4545
import type { ChatRunUiStatus } from "../chat/run-lifecycle.ts";
@@ -290,16 +290,10 @@ function renderNativeTalkSelect(params: {
290290
value: string;
291291
options: TalkSelectOption[];
292292
onSelect: (value: string) => void;
293-
selectedLabel?: string;
294293
}) {
295-
const selectedLabel =
296-
params.selectedLabel ?? params.options.find((entry) => entry.value === params.value)?.label;
297294
return html`
298295
<label class="agent-chat__talk-field" data-talk-select=${params.label.toLowerCase()}>
299296
<span>${params.label}</span>
300-
${selectedLabel
301-
? html`<span class="agent-chat__talk-select-label">${selectedLabel}</span>`
302-
: nothing}
303297
<select
304298
.value=${params.value}
305299
@change=${(event: Event) =>
@@ -367,8 +361,6 @@ function renderRealtimeTalkOptions(props: ChatProps) {
367361
const sensitivityOptions = isCustomSensitivity
368362
? [...TALK_SENSITIVITY_OPTIONS, { label: "Custom", value: "__custom" }]
369363
: TALK_SENSITIVITY_OPTIONS;
370-
const sensitivityLabel =
371-
sensitivityOptions.find((entry) => entry.value === sensitivityValue)?.label ?? "Custom";
372364
const updateSensitivity = (value: string) => {
373365
if (value !== "__custom") {
374366
onChange({ vadThreshold: value });
@@ -396,7 +388,6 @@ function renderRealtimeTalkOptions(props: ChatProps) {
396388
label: "Sensitivity",
397389
value: sensitivityValue,
398390
options: sensitivityOptions,
399-
selectedLabel: sensitivityLabel,
400391
onSelect: updateSensitivity,
401392
})}
402393
</div>

0 commit comments

Comments
 (0)