Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion packages/app/src/pages/session.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { For, onCleanup, onMount, Show, Match, Switch, createMemo, createEffect, on } from "solid-js"
import { For, onCleanup, onMount, Show, Match, Switch, createMemo, createEffect, on, createSignal } from "solid-js"
import { createMediaQuery } from "@solid-primitives/media"
import { createResizeObserver } from "@solid-primitives/resize-observer"
import { Dynamic } from "solid-js/web"
Expand Down Expand Up @@ -171,6 +171,8 @@ export default function Page() {
const tabs = createMemo(() => layout.tabs(sessionKey()))
const view = createMemo(() => layout.view(sessionKey()))

const [showReasoning, setShowReasoning] = createSignal(false)

if (import.meta.env.DEV) {
createEffect(
on(
Expand Down Expand Up @@ -540,6 +542,22 @@ export default function Page() {
})
},
},
{
id: "session.toggle.reasoning",
title: showReasoning() ? "Hide reasoning" : "Show reasoning",
description: "Toggle visibility of reasoning/thinking content",
category: "Session",
keybind: "mod+shift+r",
onSelect: () => {
setShowReasoning((prev) => !prev)
showToast({
title: showReasoning() ? "Reasoning visible" : "Reasoning hidden",
description: showReasoning()
? "Reasoning content will be shown in messages"
: "Reasoning content will be hidden from messages",
})
},
},
{
id: "permissions.autoaccept",
title:
Expand Down Expand Up @@ -1187,6 +1205,7 @@ export default function Page() {
messageID={message.id}
lastUserMessageID={lastUserMessage()?.id}
stepsExpanded={store.expanded[message.id] ?? false}
showReasoning={showReasoning()}
onStepsExpandedToggle={() =>
setStore("expanded", message.id, (open: boolean | undefined) => !open)
}
Expand Down
1 change: 1 addition & 0 deletions packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,7 @@ export function Session() {
title: showThinking() ? "Hide thinking" : "Show thinking",
value: "session.toggle.thinking",
category: "Session",
keybind: "thinking_toggle" as const,
onSelect: (dialog) => {
setShowThinking((prev) => !prev)
dialog.clear()
Expand Down
1 change: 1 addition & 0 deletions packages/opencode/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,7 @@ export namespace Config {
.default("<leader>h")
.describe("Toggle code block concealment in messages"),
tool_details: z.string().optional().default("none").describe("Toggle tool details visibility"),
thinking_toggle: z.string().optional().default("ctrl+alt+t").describe("Toggle thinking visibility"),
model_list: z.string().optional().default("<leader>m").describe("List available models"),
model_cycle_recent: z.string().optional().default("f2").describe("Next recently used model"),
model_cycle_recent_reverse: z.string().optional().default("shift+f2").describe("Previous recently used model"),
Expand Down
3 changes: 2 additions & 1 deletion packages/ui/src/components/session-turn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ export function SessionTurn(
messageID: string
lastUserMessageID?: string
stepsExpanded?: boolean
showReasoning?: boolean
onStepsExpandedToggle?: () => void
onUserInteracted?: () => void
classes?: {
Expand Down Expand Up @@ -564,7 +565,7 @@ export function SessionTurn(
message={assistantMessage}
responsePartId={responsePartId()}
hideResponsePart={hideResponsePart()}
hideReasoning={!working()}
hideReasoning={!working() && !props.showReasoning}
/>
)}
</For>
Expand Down
1 change: 1 addition & 0 deletions packages/web/src/content/docs/keybinds.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ OpenCode has a list of keybinds that you can customize through the OpenCode conf
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"thinking_toggle": "ctrl+alt+t",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
Expand Down