diff --git a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer.tsx b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer.tsx index 013a032afc..0c0ed9fe15 100644 --- a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer.tsx +++ b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer.tsx @@ -7,7 +7,7 @@ import { useBindings, useCommandShortcut } from "@tui/keymap" import { useTheme } from "@tui/context/theme" import { useTerminalDimensions } from "@opentui/solid" import path from "path" -import { createEffect, createMemo, createResource, createSignal, For, Match, Show, Switch } from "solid-js" +import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, Show, Switch } from "solid-js" import { DiffViewerFileTree } from "./diff-viewer-file-tree" import { Panel, PanelGroup, Separator } from "./diff-viewer-ui" import { DialogSelect } from "@tui/ui/dialog-select" @@ -145,6 +145,8 @@ function DiffViewer(props: { api: TuiPluginApi }) { const [pendingPatchScrollFileIndex, setPendingPatchScrollFileIndex] = createSignal() const [patchFillerHeight, setPatchFillerHeight] = createSignal(0) + onCleanup(() => props.api.ui.dialog.clear()) + createEffect(() => { setExpandedFileNodes(allExpandedFileTreeDirectories(fileTree())) setHighlightedFileNode(undefined) @@ -367,6 +369,7 @@ function DiffViewer(props: { api: TuiPluginApi }) { title: "Close diff viewer", category: "VCS", run() { + props.api.ui.dialog.clear() props.api.route.navigate("home") }, }, @@ -604,7 +607,7 @@ function DiffViewer(props: { api: TuiPluginApi }) { const openSwitchDiffDialog = () => { props.api.ui.dialog.replace(() => ( "q", + action: "Close viewer", + description: "Quit the diff viewer", + }, { shortcut: useCommandShortcut("diff.switch_focus"), action: "Focus file tree", - description: "Move keyboard focus between the file tree and patch pane.", + description: "Move keyboard focus between the file tree and patch pane", }, { shortcut: useCommandShortcut("diff.next_file"), action: "Next file", - description: "Select the next changed file in file-tree order.", + description: "Select the next changed file in file-tree order", }, { shortcut: useCommandShortcut("diff.previous_file"), action: "Previous file", - description: "Select the previous changed file in file-tree order.", + description: "Select the previous changed file in file-tree order", }, { shortcut: useCommandShortcut("diff.toggle_file_tree"), action: "Toggle file tree", - description: "Show or hide the file tree sidebar.", + description: "Show or hide the file tree sidebar", }, { shortcut: useCommandShortcut("diff.single_patch"), action: "Toggle patches", - description: "Switch between one selected patch and all patches.", + description: "Switch between one selected patch and all patches", }, { shortcut: useCommandShortcut("diff.switch_source"), action: "Switch source", - description: "Choose working tree or last-turn changes.", + description: "Choose working tree or last-turn changes", }, { shortcut: useCommandShortcut("diff.toggle_view"), action: "Toggle view", - description: "Switch between split and unified diff layout.", + description: "Switch between split and unified diff layout", }, { shortcut: useCommandShortcut("diff.expand_all"), action: "Expand all folders", - description: "Open every folder in the file tree.", + description: "Open every folder in the file tree", }, { shortcut: useCommandShortcut("diff.mark_reviewed"), action: "Mark reviewed", - description: "Toggle reviewed state for the selected file.", + description: "Toggle reviewed state for the selected file", }, ]