[PR #8016] fix(TUI): dont submit prompt when switching sessions #12592

Closed
opened 2026-02-16 18:17:29 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/8016

State: closed
Merged: Yes


What does this PR do?

Fixes ux issue, where prompt gets auto submitted when switching sessions / conversations via the keyboard

How did you verify your code works?

Tested it manually after straight forward fix.

Fixes

#8019

A screen recording of the issue is attached to make it easy to understand what was undesired and is now fixed.

https://github.com/user-attachments/assets/1995b5ce-f438-4487-89a5-bc8bc2857411

To ensure no other functionalities are negatively impacted, I have checked where the component is used in the codebase. For all functions I am familiar with the return-key binding still works as someone expects. For transparency, here is the full reference list:

:= controlled, everything works fine
[?] not familiar enough with opencode to know where to find it, since all other occurrences were fine i assume those are too.

packages/opencode/src/cli/cmd/tui/component/dialog-agent.tsx
3, 10: import { DialogSelect } from "@tui/ui/dialog-select"
21, 6: <DialogSelect

packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx
2, 10: import { DialogSelect, type DialogSelectOption, type DialogSelectRef } from "@tui/ui/dialog-select"
118, 6: <DialogSelect

packages/opencode/src/cli/cmd/tui/component/dialog-mcp.tsx
5, 10: import { DialogSelect, type DialogSelectRef, type DialogSelectOption } from "@tui/ui/dialog-select"
76, 6: <DialogSelect

packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
5, 10: import { DialogSelect, type DialogSelectRef } from "@tui/ui/dialog-select"
207, 6: <DialogSelect

packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx
4, 10: import { DialogSelect } from "@tui/ui/dialog-select"
54, 20: <DialogSelect
97, 11: return

packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx
2, 10: import { DialogSelect } from "@tui/ui/dialog-select"
74, 6: <DialogSelect

[?] packages/opencode/src/cli/cmd/tui/component/dialog-stash.tsx
2, 10: import { DialogSelect } from "@tui/ui/dialog-select"
55, 6: <DialogSelect

[?] packages/opencode/src/cli/cmd/tui/component/dialog-tag.tsx
2, 10: import { DialogSelect } from "@tui/ui/dialog-select"
35, 6: <DialogSelect

packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx
1, 10: import { DialogSelect, type DialogSelectRef } from "../ui/dialog-select"
24, 6: <DialogSelect

[?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx
3, 10: import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select"
63, 11: return <DialogSelect onMove={(option) => props.onMove(option.value)} title="Fork from message" options={options()} />

[?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-message.tsx
3, 10: import { DialogSelect } from "@tui/ui/dialog-select"
20, 6: <DialogSelect

[?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-subagent.tsx
1, 10: import { DialogSelect } from "@tui/ui/dialog-select"
8, 6: <DialogSelect

[?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-timeline.tsx
3, 10: import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select"
46, 11: return <DialogSelect onMove={(option) => props.onMove(option.value)} title="Timeline" options={options()} />

**Original Pull Request:** https://github.com/anomalyco/opencode/pull/8016 **State:** closed **Merged:** Yes --- ### What does this PR do? Fixes ux issue, where prompt gets auto submitted when switching sessions / conversations via the keyboard ### How did you verify your code works? Tested it manually after straight forward fix. ### Fixes #8019 A screen recording of the issue is attached to make it easy to understand what was undesired and is now fixed. https://github.com/user-attachments/assets/1995b5ce-f438-4487-89a5-bc8bc2857411 To ensure no other functionalities are negatively impacted, I have checked where the <DialogSelect /> component is used in the codebase. For all functions I am familiar with the return-key binding still works as someone expects. For transparency, here is the full reference list: ✅ := controlled, everything works fine [?] not familiar enough with opencode to know where to find it, since all other occurrences were fine i assume those are too. ✅ packages/opencode/src/cli/cmd/tui/component/dialog-agent.tsx 3, 10: import { DialogSelect } from "@tui/ui/dialog-select" 21, 6: <DialogSelect ✅ packages/opencode/src/cli/cmd/tui/component/dialog-command.tsx 2, 10: import { DialogSelect, type DialogSelectOption, type DialogSelectRef } from "@tui/ui/dialog-select" 118, 6: <DialogSelect ✅packages/opencode/src/cli/cmd/tui/component/dialog-mcp.tsx 5, 10: import { DialogSelect, type DialogSelectRef, type DialogSelectOption } from "@tui/ui/dialog-select" 76, 6: <DialogSelect ✅ packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx 5, 10: import { DialogSelect, type DialogSelectRef } from "@tui/ui/dialog-select" 207, 6: <DialogSelect ✅packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx 4, 10: import { DialogSelect } from "@tui/ui/dialog-select" 54, 20: <DialogSelect 97, 11: return <DialogSelect title="Connect a provider" options={options()} /> ✅ packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx 2, 10: import { DialogSelect } from "@tui/ui/dialog-select" 74, 6: <DialogSelect [?] packages/opencode/src/cli/cmd/tui/component/dialog-stash.tsx 2, 10: import { DialogSelect } from "@tui/ui/dialog-select" 55, 6: <DialogSelect [?] packages/opencode/src/cli/cmd/tui/component/dialog-tag.tsx 2, 10: import { DialogSelect } from "@tui/ui/dialog-select" 35, 6: <DialogSelect ✅ packages/opencode/src/cli/cmd/tui/component/dialog-theme-list.tsx 1, 10: import { DialogSelect, type DialogSelectRef } from "../ui/dialog-select" 24, 6: <DialogSelect [?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx 3, 10: import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select" 63, 11: return <DialogSelect onMove={(option) => props.onMove(option.value)} title="Fork from message" options={options()} /> [?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-message.tsx 3, 10: import { DialogSelect } from "@tui/ui/dialog-select" 20, 6: <DialogSelect [?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-subagent.tsx 1, 10: import { DialogSelect } from "@tui/ui/dialog-select" 8, 6: <DialogSelect [?] packages/opencode/src/cli/cmd/tui/routes/session/dialog-timeline.tsx 3, 10: import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select" 46, 11: return <DialogSelect onMove={(option) => props.onMove(option.value)} title="Timeline" options={options()} />
yindo added the pull-request label 2026-02-16 18:17:29 -05:00
yindo closed this issue 2026-02-16 18:17:29 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#12592