From 3d545f960b3c67a4422d355ac66a5e15f401e6bb Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Sun, 12 Jul 2026 21:51:50 -0500 Subject: [PATCH] fix(tui): restore clicked reverted prompt (#36567) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> --- .../tui/src/routes/session/dialog-message.tsx | 30 ++++++++++++++++--- packages/tui/src/routes/session/index.tsx | 9 +++++- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/packages/tui/src/routes/session/dialog-message.tsx b/packages/tui/src/routes/session/dialog-message.tsx index db64c7b5da2..889d19f716f 100644 --- a/packages/tui/src/routes/session/dialog-message.tsx +++ b/packages/tui/src/routes/session/dialog-message.tsx @@ -6,8 +6,13 @@ import { useToast } from "../../ui/toast" import { useSDK } from "../../context/sdk" import { errorMessage } from "../../util/error" import { DialogFork } from "./dialog-fork" +import type { PromptInfo } from "../../prompt/history" -export function DialogMessage(props: { messageID: string; sessionID: string }) { +export function DialogMessage(props: { + messageID: string + sessionID: string + setPrompt?: (prompt: PromptInfo) => void +}) { const data = useData() const clipboard = useClipboard() const toast = useToast() @@ -22,9 +27,26 @@ export function DialogMessage(props: { messageID: string; sessionID: string }) { title: "Revert", value: "session.revert", description: "undo messages and file changes", - onSelect: async (dialog) => { - await sdk.api.session - .revert.stage({ sessionID: props.sessionID, messageID: props.messageID }) + onSelect: (dialog) => { + const value = message() + if (value?.type === "user") { + props.setPrompt?.({ + text: value.text, + files: value.files?.map((file) => ({ + uri: file.source.type === "uri" ? file.source.uri : `data:${file.mime};base64,${file.data}`, + name: file.name, + description: file.description, + mention: file.mention ? { ...file.mention } : undefined, + })), + agents: value.agents?.map((agent) => ({ + name: agent.name, + mention: agent.mention ? { ...agent.mention } : undefined, + })), + pasted: [], + }) + } + void sdk.api.session.revert + .stage({ sessionID: props.sessionID, messageID: props.messageID }) .catch((error) => toast.show({ message: errorMessage(error), variant: "error", duration: 5000 })) dialog.clear() }, diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index eda25233b96..1902f564cf3 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -1468,6 +1468,7 @@ function UserMessage(props: { message: SessionMessageUser }) { ) const dialog = useDialog() const renderer = useRenderer() + const promptRef = usePromptRef() return ( @@ -1486,7 +1487,13 @@ function UserMessage(props: { message: SessionMessageUser }) { }} onMouseUp={() => { if (renderer.getSelection()?.getSelectedText()) return - dialog.replace(() => ) + dialog.replace(() => ( + promptRef.current?.set(value)} + /> + )) }} paddingTop={1} paddingBottom={1}