chore: generate

This commit is contained in:
opencode-agent[bot] 2026-05-21 22:36:00 +00:00
parent ee008923f3
commit 87d4cb07b0
4 changed files with 49 additions and 30 deletions

View file

@ -82,12 +82,12 @@ export function DiffViewerFileTree(props: DiffViewerFileTreeProps) {
Math.max(1, props.width - FILE_TREE_HORIZONTAL_PADDING - prefix().length - status().length),
)
return (
<box flexDirection="row" width="100%" backgroundColor={highlighted() ? props.theme.primary : undefined}>
<text
fg={highlighted() ? props.theme.background : fadedColor()}
wrapMode="none"
flexShrink={0}
>
<box
flexDirection="row"
width="100%"
backgroundColor={highlighted() ? props.theme.primary : undefined}
>
<text fg={highlighted() ? props.theme.background : fadedColor()} wrapMode="none" flexShrink={0}>
{prefix()}
</text>
<box flexGrow={1} minWidth={0}>
@ -108,7 +108,11 @@ export function DiffViewerFileTree(props: DiffViewerFileTreeProps) {
{name()}
</text>
</box>
<text fg={highlighted() ? props.theme.background : props.theme.textMuted} wrapMode="none" flexShrink={0}>
<text
fg={highlighted() ? props.theme.background : props.theme.textMuted}
wrapMode="none"
flexShrink={0}
>
{status()}
</text>
</box>

View file

@ -33,12 +33,13 @@ export function Panel(props: Omit<JSX.IntrinsicElements["box"], "border"> & { bo
const { theme } = useTheme()
const [local, boxProps] = splitProps(props, ["border"])
const border = local.border ?? "start"
const borderProps = border === "none"
? {}
: {
border: panelBorderSides(group?.axis ?? "y", border),
borderColor: theme.border,
}
const borderProps =
border === "none"
? {}
: {
border: panelBorderSides(group?.axis ?? "y", border),
borderColor: theme.border,
}
return (
<box

View file

@ -192,10 +192,7 @@ describe("diff viewer file tree utilities", () => {
test("moves collapsed chain selection to first visible child", () => {
const rows = flattenFileTree(
buildFileTree([
{ file: "packages/opencode/src/cli/app.ts" },
{ file: "packages/opencode/src/server/server.ts" },
]),
buildFileTree([{ file: "packages/opencode/src/cli/app.ts" }, { file: "packages/opencode/src/server/server.ts" }]),
)
const packages = rows.find((row) => row.kind === "directory" && row.name === "packages/opencode/src")!
const cli = rows.find((row) => row.kind === "directory" && row.name === "cli")!
@ -205,10 +202,7 @@ describe("diff viewer file tree utilities", () => {
test("moves file and collapsed directory selection to visible parent", () => {
const rows = flattenFileTree(
buildFileTree([
{ file: "packages/opencode/src/cli/app.ts" },
{ file: "packages/opencode/src/server/server.ts" },
]),
buildFileTree([{ file: "packages/opencode/src/cli/app.ts" }, { file: "packages/opencode/src/server/server.ts" }]),
)
const root = rows.find((row) => row.kind === "directory" && row.name === "packages/opencode/src")!
const cli = rows.find((row) => row.kind === "directory" && row.name === "cli")!

View file

@ -28,8 +28,8 @@ const theme = {
describe("DiffViewerFileTree", () => {
test("renders sorted hierarchical file rows", async () => {
const app = await testRender(
() => withTheme(
() => (
() =>
withTheme(() => (
<DiffViewerFileTree
width={32}
files={[
@ -44,8 +44,7 @@ describe("DiffViewerFileTree", () => {
theme={theme}
focused={true}
/>
),
),
)),
{ width: 40, height: 20 },
)
@ -67,11 +66,15 @@ describe("DiffViewerFileTree", () => {
})
test("keeps loading and error quiet while rendering an empty settled state", async () => {
const loading = await renderFrame(() => <DiffViewerFileTree width={32} files={[]} loading={true} error={undefined} theme={theme} />)
const loading = await renderFrame(() => (
<DiffViewerFileTree width={32} files={[]} loading={true} error={undefined} theme={theme} />
))
const failed = await renderFrame(() => (
<DiffViewerFileTree width={32} files={[]} loading={false} error={new Error("nope")} theme={theme} />
))
const empty = await renderFrame(() => <DiffViewerFileTree width={32} files={[]} loading={false} error={undefined} theme={theme} />)
const empty = await renderFrame(() => (
<DiffViewerFileTree width={32} files={[]} loading={false} error={undefined} theme={theme} />
))
expect(loading).not.toContain("Loading diff...")
expect(loading).not.toContain("No files")
@ -86,11 +89,21 @@ describe("DiffViewerFileTree", () => {
const focused = visibleLines(
await renderFrame(() => (
<DiffViewerFileTree width={32} files={files} loading={false} error={undefined} theme={theme} focused highlightedNode={src.id} />
<DiffViewerFileTree
width={32}
files={files}
loading={false}
error={undefined}
theme={theme}
focused
highlightedNode={src.id}
/>
)),
)
const unfocused = visibleLines(
await renderFrame(() => <DiffViewerFileTree width={32} files={files} loading={false} error={undefined} theme={theme} />),
await renderFrame(() => (
<DiffViewerFileTree width={32} files={files} loading={false} error={undefined} theme={theme} />
)),
)
expect(focused).toContain("▾ src/config")
@ -109,7 +122,14 @@ describe("DiffViewerFileTree", () => {
expect(
visibleLines(
await renderFrame(() => (
<DiffViewerFileTree width={32} files={files} loading={false} error={undefined} theme={theme} expandedNodes={collapsed} />
<DiffViewerFileTree
width={32}
files={files}
loading={false}
error={undefined}
theme={theme}
expandedNodes={collapsed}
/>
)),
),
).toEqual(["▸ src/config"])