fix(desktop): separate prompt history for shell

This commit is contained in:
Adam 2025-12-18 20:38:01 -06:00
parent e561f1ad68
commit 2d814b6db2
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75

View file

@ -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)