summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-11 09:35:08 -0600
committerAdam <[email protected]>2025-11-11 09:35:08 -0600
commitc672a1963b391c97bda16cabc73e00426d6c9d9f (patch)
tree8751e27a09e1353ec30e598260a96282284e3189
parent54bff6b1206b9750c026bfb3f26ec471c88d73f8 (diff)
downloadopencode-c672a1963b391c97bda16cabc73e00426d6c9d9f.tar.gz
opencode-c672a1963b391c97bda16cabc73e00426d6c9d9f.zip
fix(desktop): prompt clearing inconsistent
-rw-r--r--packages/desktop/src/components/prompt-input.tsx4
-rw-r--r--packages/desktop/src/context/session.tsx54
2 files changed, 29 insertions, 29 deletions
diff --git a/packages/desktop/src/components/prompt-input.tsx b/packages/desktop/src/components/prompt-input.tsx
index 063822148..41ec71cfa 100644
--- a/packages/desktop/src/components/prompt-input.tsx
+++ b/packages/desktop/src/components/prompt-input.tsx
@@ -319,7 +319,9 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
session.layout.setActiveTab(undefined)
session.messages.setActive(undefined)
- session.prompt.set(DEFAULT_PROMPT, 0)
+ // Clear the editor DOM directly to ensure it's empty
+ editorRef.innerHTML = ""
+ session.prompt.set([{ type: "text", content: "", start: 0, end: 0 }], 0)
sdk.client.session.prompt({
path: { id: existing.id },
diff --git a/packages/desktop/src/context/session.tsx b/packages/desktop/src/context/session.tsx
index 0a517e0d3..b2e15a42c 100644
--- a/packages/desktop/src/context/session.tsx
+++ b/packages/desktop/src/context/session.tsx
@@ -1,6 +1,6 @@
import { createStore, produce } from "solid-js/store"
import { createSimpleContext } from "./helper"
-import { batch, createEffect, createMemo, createSignal, on } from "solid-js"
+import { batch, createEffect, createMemo } from "solid-js"
import { useSync } from "./sync"
import { makePersisted } from "@solid-primitives/storage"
import { TextSelection, useLocal } from "./local"
@@ -13,9 +13,7 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
const sync = useSync()
const local = useLocal()
- const seed = props.sessionId ?? "new-session"
-
- const [persist, setPersist] = makePersisted(
+ const [store, setStore] = makePersisted(
createStore<{
messageId?: string
tabs: {
@@ -32,7 +30,7 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
cursor: undefined,
}),
{
- name: seed,
+ name: props.sessionId ?? "new-session",
},
)
@@ -52,8 +50,8 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
return userMessages()?.at(0)
})
const activeMessage = createMemo(() => {
- if (!persist.messageId) return lastUserMessage()
- return userMessages()?.find((m) => m.id === persist.messageId)
+ if (!store.messageId) return lastUserMessage()
+ return userMessages()?.find((m) => m.id === store.messageId)
})
const working = createMemo(() => {
if (!props.sessionId) return false
@@ -104,14 +102,14 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
working,
diffs,
prompt: {
- current: createMemo(() => persist.prompt),
- cursor: createMemo(() => persist.cursor),
- dirty: createMemo(() => !isPromptEqual(persist.prompt, DEFAULT_PROMPT)),
+ current: createMemo(() => store.prompt),
+ cursor: createMemo(() => store.cursor),
+ dirty: createMemo(() => !isPromptEqual(store.prompt, DEFAULT_PROMPT)),
set(prompt: Prompt, cursorPosition?: number) {
const next = clonePrompt(prompt)
batch(() => {
- setPersist("prompt", next)
- if (cursorPosition !== undefined) setPersist("cursor", cursorPosition)
+ setStore("prompt", next)
+ if (cursorPosition !== undefined) setStore("cursor", cursorPosition)
})
},
},
@@ -121,7 +119,7 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
last: lastUserMessage,
active: activeMessage,
setActive(id: string | undefined) {
- setPersist("messageId", id)
+ setStore("messageId", id)
},
},
usage: {
@@ -130,46 +128,46 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
context,
},
layout: {
- tabs: persist.tabs,
+ tabs: store.tabs,
setActiveTab(tab: string | undefined) {
- setPersist("tabs", "active", tab)
+ setStore("tabs", "active", tab)
},
setOpenedTabs(tabs: string[]) {
- setPersist("tabs", "opened", tabs)
+ setStore("tabs", "opened", tabs)
},
async openTab(tab: string) {
if (tab === "chat") {
- setPersist("tabs", "active", undefined)
+ setStore("tabs", "active", undefined)
return
}
if (tab.startsWith("file://")) {
await local.file.open(tab.replace("file://", ""))
}
if (tab !== "review") {
- if (!persist.tabs.opened.includes(tab)) {
- setPersist("tabs", "opened", [...persist.tabs.opened, tab])
+ if (!store.tabs.opened.includes(tab)) {
+ setStore("tabs", "opened", [...store.tabs.opened, tab])
}
}
- setPersist("tabs", "active", tab)
+ setStore("tabs", "active", tab)
},
closeTab(tab: string) {
batch(() => {
- setPersist(
+ setStore(
"tabs",
"opened",
- persist.tabs.opened.filter((x) => x !== tab),
+ store.tabs.opened.filter((x) => x !== tab),
)
- if (persist.tabs.active === tab) {
- const index = persist.tabs.opened.findIndex((f) => f === tab)
- const previous = persist.tabs.opened[Math.max(0, index - 1)]
- setPersist("tabs", "active", previous)
+ if (store.tabs.active === tab) {
+ const index = store.tabs.opened.findIndex((f) => f === tab)
+ const previous = store.tabs.opened[Math.max(0, index - 1)]
+ setStore("tabs", "active", previous)
}
})
},
moveTab(tab: string, to: number) {
- const index = persist.tabs.opened.findIndex((f) => f === tab)
+ const index = store.tabs.opened.findIndex((f) => f === tab)
if (index === -1) return
- setPersist(
+ setStore(
"tabs",
"opened",
produce((opened) => {