summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAriane Emory <[email protected]>2025-11-26 00:34:58 -0500
committerGitHub <[email protected]>2025-11-25 23:34:58 -0600
commit57644a4be8bdf65eb0563724a16ae384720459c6 (patch)
tree41969e0aa54cb7478dae030df354ffe4f80f63ee
parentda2099137a12a20bdaa5c37989613e69c38518bc (diff)
downloadopencode-57644a4be8bdf65eb0563724a16ae384720459c6.tar.gz
opencode-57644a4be8bdf65eb0563724a16ae384720459c6.zip
feat: add a diff_style option to allow disabling columnar diffs (resolve #4677) (#4756)
Co-authored-by: Dax Raad <[email protected]> Co-authored-by: GitHub Action <[email protected]> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: rekram1-node <[email protected]>
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx9
-rw-r--r--packages/opencode/src/config/config.ts4
-rw-r--r--packages/sdk/js/src/gen/types.gen.ts4
3 files changed, 16 insertions, 1 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
index 74874f669..c0d173421 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -80,6 +80,7 @@ const context = createContext<{
conceal: () => boolean
showThinking: () => boolean
showTimestamps: () => boolean
+ sync: ReturnType<typeof useSync>
}>()
function use() {
@@ -732,6 +733,7 @@ export function Session() {
conceal,
showThinking,
showTimestamps,
+ sync,
}}
>
<box flexDirection="row" paddingBottom={1} paddingTop={1} paddingLeft={2} paddingRight={2} gap={2}>
@@ -1482,7 +1484,12 @@ ToolRegistry.register<typeof EditTool>({
const ctx = use()
const { theme, syntax } = useTheme()
- const style = createMemo(() => (ctx.width > 120 ? "split" : "stacked"))
+ const style = createMemo(() => {
+ const diffStyle = ctx.sync.data.config.tui?.diff_style
+ if (diffStyle === "stacked") return "stacked"
+ // Default to "auto" behavior
+ return ctx.width > 120 ? "split" : "stacked"
+ })
const diff = createMemo(() => {
const diff = props.metadata.diff ?? props.permission["diff"]
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts
index 0ea0e8fa2..383a47566 100644
--- a/packages/opencode/src/config/config.ts
+++ b/packages/opencode/src/config/config.ts
@@ -456,6 +456,10 @@ export namespace Config {
})
.optional()
.describe("Scroll acceleration settings"),
+ diff_style: z
+ .enum(["auto", "stacked"])
+ .optional()
+ .describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),
})
export const Layout = z.enum(["auto", "stretch"]).meta({
diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts
index 7e211148f..4ec6b15df 100644
--- a/packages/sdk/js/src/gen/types.gen.ts
+++ b/packages/sdk/js/src/gen/types.gen.ts
@@ -1003,6 +1003,10 @@ export type Config = {
*/
enabled: boolean
}
+ /**
+ * Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column
+ */
+ diff_style?: "auto" | "stacked"
}
/**
* Command configuration, see https://opencode.ai/docs/commands