mirror of
https://github.com/sst/opencode.git
synced 2025-12-23 10:11:41 +00:00
fix(desktop): separate prompt history for shell
This commit is contained in:
parent
e561f1ad68
commit
2d814b6db2
1 changed files with 15 additions and 5 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue