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 = (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 = (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 = (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 = (props) => { return } - addToHistory(currentPrompt) + addToHistory(currentPrompt, store.mode) setStore("historyIndex", -1) setStore("savedPrompt", null) setStore("userHasEdited", false)