diff --git a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree.tsx b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree.tsx index e84d506c16..80c9c97b3a 100644 --- a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree.tsx +++ b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/diff-viewer-file-tree.tsx @@ -74,7 +74,13 @@ export function DiffViewerFileTree(props: DiffViewerFileTreeProps) { {`${" ".repeat(row.depth)}${row.kind === "directory" ? (props.expandedNodes && !props.expandedNodes.has(row.id) ? "▸ " : "▾ ") : " "}`} diff --git a/packages/opencode/src/cli/cmd/tui/plugin/internal.ts b/packages/opencode/src/cli/cmd/tui/plugin/internal.ts index 6d3727399b..2ba8e745b5 100644 --- a/packages/opencode/src/cli/cmd/tui/plugin/internal.ts +++ b/packages/opencode/src/cli/cmd/tui/plugin/internal.ts @@ -20,7 +20,9 @@ export type InternalTuiPlugin = Omit & { enabled?: boolean } -export function internalTuiPlugins(flags: Pick): InternalTuiPlugin[] { +export function internalTuiPlugins( + flags: Pick, +): InternalTuiPlugin[] { return [ HomeFooter, HomeTips, diff --git a/packages/opencode/test/cli/tui/diff-viewer-file-tree-utils.test.ts b/packages/opencode/test/cli/tui/diff-viewer-file-tree-utils.test.ts index cd42edba11..755a25845f 100644 --- a/packages/opencode/test/cli/tui/diff-viewer-file-tree-utils.test.ts +++ b/packages/opencode/test/cli/tui/diff-viewer-file-tree-utils.test.ts @@ -76,28 +76,22 @@ describe("diff viewer file tree utilities", () => { test("flattens all-expanded rows depth-first with depths and file references", () => { const rows = flattenFileTree( - buildFileTree([ - { file: "src/config/tui.ts" }, - { file: "src/config/keybind.ts" }, - { file: "README.md" }, - ]), + buildFileTree([{ file: "src/config/tui.ts" }, { file: "src/config/keybind.ts" }, { file: "README.md" }]), ) - expect(rows.map((row) => ({ name: row.name, kind: row.kind, depth: row.depth, fileIndex: row.fileIndex }))).toEqual([ - { name: "src", kind: "directory", depth: 0, fileIndex: undefined }, - { name: "config", kind: "directory", depth: 1, fileIndex: undefined }, - { name: "keybind.ts", kind: "file", depth: 2, fileIndex: 1 }, - { name: "tui.ts", kind: "file", depth: 2, fileIndex: 0 }, - { name: "README.md", kind: "file", depth: 0, fileIndex: 2 }, - ]) + expect(rows.map((row) => ({ name: row.name, kind: row.kind, depth: row.depth, fileIndex: row.fileIndex }))).toEqual( + [ + { name: "src", kind: "directory", depth: 0, fileIndex: undefined }, + { name: "config", kind: "directory", depth: 1, fileIndex: undefined }, + { name: "keybind.ts", kind: "file", depth: 2, fileIndex: 1 }, + { name: "tui.ts", kind: "file", depth: 2, fileIndex: 0 }, + { name: "README.md", kind: "file", depth: 0, fileIndex: 2 }, + ], + ) }) test("flattens only expanded directory descendants when expansion is provided", () => { - const tree = buildFileTree([ - { file: "src/config/tui.ts" }, - { file: "src/session/index.ts" }, - { file: "README.md" }, - ]) + const tree = buildFileTree([{ file: "src/config/tui.ts" }, { file: "src/session/index.ts" }, { file: "README.md" }]) const src = tree.nodes.find((node) => node.kind === "directory" && node.name === "src")! const config = tree.nodes.find((node) => node.kind === "directory" && node.name === "config")! @@ -129,11 +123,7 @@ describe("diff viewer file tree utilities", () => { test("moves file selection relative to the highlighted row", () => { const rows = flattenFileTree( - buildFileTree([ - { file: "src/config/tui.ts" }, - { file: "src/session/index.ts" }, - { file: "README.md" }, - ]), + buildFileTree([{ file: "src/config/tui.ts" }, { file: "src/session/index.ts" }, { file: "README.md" }]), ) const config = rows.find((row) => row.kind === "directory" && row.name === "config")! const session = rows.find((row) => row.kind === "directory" && row.name === "session")! diff --git a/packages/opencode/test/cli/tui/diff-viewer-file-tree.test.tsx b/packages/opencode/test/cli/tui/diff-viewer-file-tree.test.tsx index b1cc7685a8..6bbe5abb02 100644 --- a/packages/opencode/test/cli/tui/diff-viewer-file-tree.test.tsx +++ b/packages/opencode/test/cli/tui/diff-viewer-file-tree.test.tsx @@ -45,26 +45,22 @@ describe("DiffViewerFileTree", () => { await app.renderOnce() const lines = visibleLines(app.captureCharFrame()) - expect(lines).toEqual([ - "▾ a", - " alpha.ts", - " zeta.ts", - "▾ b", - " alpha.ts", - " file.ts", - " z-file.ts", - ]) + expect(lines).toEqual(["▾ a", " alpha.ts", " zeta.ts", "▾ b", " alpha.ts", " file.ts", " z-file.ts"]) } finally { app.renderer.destroy() } }) test("keeps loading and error quiet while rendering an empty settled state", async () => { - const loading = await renderFrame(() => ) + const loading = await renderFrame(() => ( + + )) const failed = await renderFrame(() => ( )) - const empty = await renderFrame(() => ) + const empty = await renderFrame(() => ( + + )) expect(loading).not.toContain("Loading diff...") expect(loading).not.toContain("No files") @@ -79,7 +75,14 @@ describe("DiffViewerFileTree", () => { const focused = visibleLines( await renderFrame(() => ( - + )), ) const unfocused = visibleLines(