summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-20 06:46:03 -0600
committerAdam <[email protected]>2026-02-20 10:05:09 -0600
commit2a904ec56f202641d3172fc87842e2b73d6fb149 (patch)
treed72e4aec4c3b621d0b69213681b6cc285cf7cfa9 /packages/app/src
parent0ce61c817b74e31e08bd140611e2f7ae6ba1684c (diff)
downloadopencode-2a904ec56f202641d3172fc87842e2b73d6fb149.tar.gz
opencode-2a904ec56f202641d3172fc87842e2b73d6fb149.zip
feat(app): show/hide reasoning summaries
Diffstat (limited to 'packages/app/src')
-rw-r--r--packages/app/src/components/settings-general.tsx12
-rw-r--r--packages/app/src/context/settings.tsx9
-rw-r--r--packages/app/src/i18n/en.ts2
-rw-r--r--packages/app/src/pages/session/message-timeline.tsx3
4 files changed, 26 insertions, 0 deletions
diff --git a/packages/app/src/components/settings-general.tsx b/packages/app/src/components/settings-general.tsx
index df71fd77e..beb39b355 100644
--- a/packages/app/src/components/settings-general.tsx
+++ b/packages/app/src/components/settings-general.tsx
@@ -250,6 +250,18 @@ export const SettingsGeneral: Component = () => {
)}
</Select>
</SettingsRow>
+
+ <SettingsRow
+ title={language.t("settings.general.row.reasoningSummaries.title")}
+ description={language.t("settings.general.row.reasoningSummaries.description")}
+ >
+ <div data-action="settings-reasoning-summaries">
+ <Switch
+ checked={settings.general.showReasoningSummaries()}
+ onChange={(checked) => settings.general.setShowReasoningSummaries(checked)}
+ />
+ </div>
+ </SettingsRow>
</div>
</div>
)
diff --git a/packages/app/src/context/settings.tsx b/packages/app/src/context/settings.tsx
index fbcd0a851..d279a7f32 100644
--- a/packages/app/src/context/settings.tsx
+++ b/packages/app/src/context/settings.tsx
@@ -22,6 +22,7 @@ export interface Settings {
general: {
autoSave: boolean
releaseNotes: boolean
+ showReasoningSummaries: boolean
}
updates: {
startup: boolean
@@ -42,6 +43,7 @@ const defaultSettings: Settings = {
general: {
autoSave: true,
releaseNotes: true,
+ showReasoningSummaries: false,
},
updates: {
startup: true,
@@ -120,6 +122,13 @@ export const { use: useSettings, provider: SettingsProvider } = createSimpleCont
setReleaseNotes(value: boolean) {
setStore("general", "releaseNotes", value)
},
+ showReasoningSummaries: withFallback(
+ () => store.general?.showReasoningSummaries,
+ defaultSettings.general.showReasoningSummaries,
+ ),
+ setShowReasoningSummaries(value: boolean) {
+ setStore("general", "showReasoningSummaries", value)
+ },
},
updates: {
startup: withFallback(() => store.updates?.startup, defaultSettings.updates.startup),
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index 8837dcbad..a8c27cc63 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -610,6 +610,8 @@ export const dict = {
"settings.general.row.theme.description": "Customise how OpenCode is themed.",
"settings.general.row.font.title": "Font",
"settings.general.row.font.description": "Customise the mono font used in code blocks",
+ "settings.general.row.reasoningSummaries.title": "Show reasoning summaries",
+ "settings.general.row.reasoningSummaries.description": "Display model reasoning summaries in the timeline",
"settings.general.row.wayland.title": "Use native Wayland",
"settings.general.row.wayland.description": "Disable X11 fallback on Wayland. Requires restart.",
diff --git a/packages/app/src/pages/session/message-timeline.tsx b/packages/app/src/pages/session/message-timeline.tsx
index 567ef5fc8..6ac89a3a7 100644
--- a/packages/app/src/pages/session/message-timeline.tsx
+++ b/packages/app/src/pages/session/message-timeline.tsx
@@ -14,6 +14,7 @@ import { shouldMarkBoundaryGesture, normalizeWheelDelta } from "@/pages/session/
import { SessionContextUsage } from "@/components/session-context-usage"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { useLanguage } from "@/context/language"
+import { useSettings } from "@/context/settings"
import { useSDK } from "@/context/sdk"
import { useSync } from "@/context/sync"
@@ -80,6 +81,7 @@ export function MessageTimeline(props: {
const navigate = useNavigate()
const sdk = useSDK()
const sync = useSync()
+ const settings = useSettings()
const dialog = useDialog()
const language = useLanguage()
@@ -535,6 +537,7 @@ export function MessageTimeline(props: {
sessionID={sessionID() ?? ""}
messageID={message.id}
lastUserMessageID={props.lastUserMessageID}
+ showReasoningSummaries={settings.general.showReasoningSummaries()}
classes={{
root: "min-w-0 w-full relative",
content: "flex flex-col justify-between !overflow-visible",