diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx
index 775969bfcb38..80a4ad01c910 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx
@@ -12,7 +12,7 @@ import { useKV } from "../context/kv"
import { createDebouncedSignal } from "../util/signal"
import { Spinner } from "./spinner"
-export function DialogSessionList() {
+export function DialogSessionList(props: { initialSessionID?: string } = {}) {
const dialog = useDialog()
const route = useRoute()
const sync = useSync()
@@ -30,7 +30,7 @@ export function DialogSessionList() {
return result.data ?? []
})
- const currentSessionID = createMemo(() => (route.data.type === "session" ? route.data.sessionID : undefined))
+ const currentSessionID = createMemo(() => props.initialSessionID ?? (route.data.type === "session" ? route.data.sessionID : undefined))
const sessions = createMemo(() => searchResults() ?? sync.data.session)
@@ -99,7 +99,8 @@ export function DialogSessionList() {
keybind: keybind.all.session_rename?.[0],
title: "rename",
onTrigger: async (option) => {
- dialog.replace(() => )
+ const back = () => dialog.replace(() => )
+ dialog.replace(() => )
},
},
]}
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-session-rename.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-session-rename.tsx
index 141340d55625..75a3b0090ef8 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-session-rename.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-session-rename.tsx
@@ -6,6 +6,8 @@ import { useSDK } from "../context/sdk"
interface DialogSessionRenameProps {
session: string
+ onSuccess?: () => void
+ onCancel?: () => void
}
export function DialogSessionRename(props: DialogSessionRenameProps) {
@@ -18,14 +20,18 @@ export function DialogSessionRename(props: DialogSessionRenameProps) {
{
- sdk.client.session.update({
+ onConfirm={async (value) => {
+ await sdk.client.session.update({
sessionID: props.session,
title: value,
})
- dialog.clear()
+ if (props.onSuccess) props.onSuccess()
+ else dialog.clear()
+ }}
+ onCancel={() => {
+ if (props.onCancel) props.onCancel()
+ else dialog.clear()
}}
- onCancel={() => dialog.clear()}
/>
)
}