summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-18 20:38:01 -0600
committerAdam <[email protected]>2025-12-19 07:38:38 -0600
commit2d814b6db2e7f4a8a1321c8a69bcbed3aed90bac (patch)
tree857090d51b0742858dd6b566d1dadda0902e1e8f /packages/desktop/src
parente561f1ad68dcecd70ebd486f6ac03fb5ccf1e957 (diff)
downloadopencode-2d814b6db2e7f4a8a1321c8a69bcbed3aed90bac.tar.gz
opencode-2d814b6db2e7f4a8a1321c8a69bcbed3aed90bac.zip
fix(desktop): separate prompt history for shell
Diffstat (limited to 'packages/desktop/src')
-rw-r--r--packages/desktop/src/components/prompt-input.tsx20
1 files changed, 15 insertions, 5 deletions
diff --git a/packages/desktop/src/components/prompt-input.tsx b/packages/desktop/src/components/prompt-input.tsx
index 5c00f9f83..78415cd2b 100644
--- a/packages/desktop/src/components/prompt-input.tsx
+++ b/packages/desktop/src/components/prompt-input.tsx
@@ -124,6 +124,14 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
entries: [],
}),
)
+ const [shellHistory, setShellHistory] = persisted(
+ "prompt-history-shell.v1",
+ createStore<{
+ entries: Prompt[]
+ }>({
+ entries: [],
+ }),
+ )
const clonePromptParts = (prompt: Prompt): Prompt =>
prompt.map((part) => {
@@ -555,7 +563,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
sessionID: params.id!,
})
- const addToHistory = (prompt: Prompt) => {
+ const addToHistory = (prompt: Prompt, mode: "normal" | "shell") => {
const text = prompt
.map((p) => ("content" in p ? p.content : ""))
.join("")
@@ -563,19 +571,21 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
if (!text) return
const entry = clonePromptParts(prompt)
- const lastEntry = history.entries[0]
+ const currentHistory = mode === "shell" ? shellHistory : history
+ const setCurrentHistory = mode === "shell" ? setShellHistory : setHistory
+ const lastEntry = currentHistory.entries[0]
if (lastEntry) {
const lastText = lastEntry.map((p) => ("content" in p ? p.content : "")).join("")
if (lastText === text) return
}
- setHistory("entries", (entries) => [entry, ...entries].slice(0, MAX_HISTORY))
+ setCurrentHistory("entries", (entries) => [entry, ...entries].slice(0, MAX_HISTORY))
}
const navigateHistory = (direction: "up" | "down") => {
if (store.userHasEdited) return false
- const entries = history.entries
+ const entries = store.mode === "shell" ? shellHistory.entries : history.entries
const current = store.historyIndex
if (direction === "up") {
@@ -703,7 +713,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
return
}
- addToHistory(currentPrompt)
+ addToHistory(currentPrompt, store.mode)
setStore("historyIndex", -1)
setStore("savedPrompt", null)
setStore("userHasEdited", false)