From fc4ee82dc273724f92b1a104c0fea5cdde5d6217 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 26 Jan 2026 08:31:31 -0500 Subject: [PATCH] Make diff wrapping toggle always available in command_list - Move diff wrapping toggle from session-level to global app-level commands - Replace local diffWrapMode signal with kv.signal('diff_wrap_mode', 'word') - Follow pattern from issue #10497 fix for animations toggle - Toggle now accessible before sending first message --- packages/opencode/src/cli/cmd/tui/app.tsx | 10 ++++++++++ .../src/cli/cmd/tui/routes/session/index.tsx | 14 +------------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index 340b972ac6c..10d7a25f88f 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -570,6 +570,16 @@ function App() { dialog.clear() }, }, + { + title: kv.get("diff_wrap_mode", "word") === "word" ? "Disable diff wrapping" : "Enable diff wrapping", + value: "app.toggle.diffwrap", + category: "System", + onSelect: (dialog) => { + const current = kv.get("diff_wrap_mode", "word") + kv.set("diff_wrap_mode", current === "word" ? "none" : "word") + dialog.clear() + }, + }, ]) createEffect(() => { 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 c73a520428b..b3228c84796 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -145,7 +145,7 @@ export function Session() { const [showDetails, setShowDetails] = kv.signal("tool_details_visibility", true) const [showAssistantMetadata, setShowAssistantMetadata] = kv.signal("assistant_metadata_visibility", true) const [showScrollbar, setShowScrollbar] = kv.signal("scrollbar_visible", false) - const [diffWrapMode, setDiffWrapMode] = createSignal<"word" | "none">("word") + const [diffWrapMode] = kv.signal<"word" | "none">("diff_wrap_mode", "word") const [animationsEnabled, setAnimationsEnabled] = kv.signal("animations_enabled", true) const wide = createMemo(() => dimensions().width > 120) @@ -538,18 +538,6 @@ export function Session() { dialog.clear() }, }, - { - title: diffWrapMode() === "word" ? "Disable diff wrapping" : "Enable diff wrapping", - value: "session.toggle.diffwrap", - category: "Session", - slash: { - name: "diffwrap", - }, - onSelect: (dialog) => { - setDiffWrapMode((prev) => (prev === "word" ? "none" : "word")) - dialog.clear() - }, - }, { title: showDetails() ? "Hide tool details" : "Show tool details", value: "session.toggle.actions",