fix(ui): remove redundant selectedLabel rendering in Talk settings (#…#96925
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 26, 2026, 1:01 AM ET / 05:01 UTC. Summary PR surface: Source -9, Tests +2. Total -7 across 2 files. Reproducibility: yes. source-reproducible: current main renders Voice and Sensitivity native selects with an extra selected-label span, while Model has only label plus input in the same grid row. I did not run a browser repro in this read-only pass. Review metrics: none identified. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land one narrow Talk settings alignment fix that removes the redundant selected-label DOM while preserving Talk option values and callbacks, then close the duplicate sibling and linked issue after merge. Do we have a high-confidence way to reproduce the issue? Yes, source-reproducible: current main renders Voice and Sensitivity native selects with an extra selected-label span, while Model has only label plus input in the same grid row. I did not run a browser repro in this read-only pass. Is this the best way to solve the issue? Yes. Removing the redundant child from the shared native select renderer is cleaner than offsetting the row with CSS because the native select already displays its selected value and the focused tests preserve value and callback behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 751a6c23f098. Label changesLabel justifications:
Evidence reviewedPR surface: Source -9, Tests +2. Total -7 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
…penclaw#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]>
7de1160 to
7d47d0f
Compare
…penclaw#96915) (openclaw#96925) 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]>
…penclaw#96915) (openclaw#96925) 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]>
…penclaw#96915) (openclaw#96925) 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]>
…penclaw#96915) (openclaw#96925) 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]>
Summary 📌 Mandatory
The three input fields (Voice, Model, Sensitivity) on the Talk settings panel are now aligned. Removed the redundant
selectedLabelrendering insiderenderNativeTalkSelectand cleaned up dead code.renderNativeTalkSelectrendered an extra.agent-chat__talk-select-label<span>for Voice and Sensitivity fields, while the Model field had only one label span, causing a one-child mismatch in the three-column CSS grid layout.selectedLabelparameter and its conditional rendering fromrenderNativeTalkSelect, so all three fields share identical HTML structure (label span + input/select element).ui/src/ui/views/chat.ts— RemovedselectedLabelparameter, its rendering logic, its call-site argument, and the now-unusedsensitivityLabelconstant.ui/src/ui/views/chat.test.ts— Updated two assertions to query native<select>value instead of the removed.agent-chat__talk-select-labelspan.Change Type & Scope 📌 Mandatory
Change Type (Multiple selections allowed)
Scope (Multiple selections allowed)
Linked Issue 📌 Mandatory
#96915Motivation 📌 Mandatory
When opening the Talk settings panel, the Voice and Sensitivity controls rendered an extra selected-label
<span>that pushed them lower than the Model input inside the three-column CSS grid. This is purely a visual layout issue with no functional impact.Review Contract 📌 Mandatory
Real Behavior Proof 📌 Mandatory
Behavior addressed: Misalignment of Voice, Model, and Sensitivity input fields on the Talk settings panel caused by an extra selected-label
<span>insiderenderNativeTalkSelect.Real environment tested: CentOS 8, Node 24.13.1, branch
fix/talk-settings-alignment-96915, local OpenClaw instance built from source.Exact steps or command run after this patch:
Evidence after fix:
Browser DOM verification — all three primary Talk settings fields now have identical child structure (2 children each):
Observed result after fix:
.agent-chat__talk-select-labelspans remain in the rendered DOMWhat was not tested:
Risks and Mitigations 📌 Mandatory
onSelect,onChange) unchanged.Security Impact 📌 Mandatory
Compatibility / Migration 📌 Mandatory
Human Verification 📌 Mandatory
__custom), Sensitivity default value (""), Sensitivity preset values (0.65,0.5,0.35)AI Assistance 🤖 (Mandatory for AI-aided PRs)
selectedLabelrendering introduced in commit 85e5d48), removed the dead code, cleaned up the unusedsensitivityLabelconstant, and updated tests to assert native select values.Fixes
#96915