summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-22 16:19:57 -0600
committerAdam <[email protected]>2025-12-22 16:20:17 -0600
commit9b6c9f64f7cce2be89b9f4826e348da1edeb64a4 (patch)
treee34c4ceeaeda2615b6235c41cf5f2801282deca8
parent1aae1c795db6b57b1404c40ee8a9d894bc9fd745 (diff)
downloadopencode-9b6c9f64f7cce2be89b9f4826e348da1edeb64a4.tar.gz
opencode-9b6c9f64f7cce2be89b9f4826e348da1edeb64a4.zip
feat(desktop): review pane toggle
-rw-r--r--packages/desktop/src/components/header.tsx29
-rw-r--r--packages/desktop/src/context/layout.tsx15
-rw-r--r--packages/desktop/src/pages/session.tsx11
3 files changed, 54 insertions, 1 deletions
diff --git a/packages/desktop/src/components/header.tsx b/packages/desktop/src/components/header.tsx
index c5ecd9871..ec7cdfa25 100644
--- a/packages/desktop/src/components/header.tsx
+++ b/packages/desktop/src/components/header.tsx
@@ -113,6 +113,35 @@ export function Header(props: {
class="hidden md:block shrink-0"
value={
<div class="flex items-center gap-2">
+ <span>Toggle review</span>
+ <span class="text-icon-base text-12-medium">{command.keybind("review.toggle")}</span>
+ </div>
+ }
+ >
+ <Button variant="ghost" class="group/review-toggle size-6 p-0" onClick={layout.review.toggle}>
+ <div class="relative flex items-center justify-center size-4 [&>*]:absolute [&>*]:inset-0">
+ <Icon
+ size="small"
+ name={layout.review.opened() ? "layout-right-full" : "layout-right"}
+ class="group-hover/review-toggle:hidden"
+ />
+ <Icon
+ size="small"
+ name="layout-right-partial"
+ class="hidden group-hover/review-toggle:inline-block"
+ />
+ <Icon
+ size="small"
+ name={layout.review.opened() ? "layout-right" : "layout-right-full"}
+ class="hidden group-active/review-toggle:inline-block"
+ />
+ </div>
+ </Button>
+ </Tooltip>
+ <Tooltip
+ class="hidden md:block shrink-0"
+ value={
+ <div class="flex items-center gap-2">
<span>Toggle terminal</span>
<span class="text-icon-base text-12-medium">{command.keybind("terminal.toggle")}</span>
</div>
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx
index 17cd4785c..c6ba5fef5 100644
--- a/packages/desktop/src/context/layout.tsx
+++ b/packages/desktop/src/context/layout.tsx
@@ -46,6 +46,9 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
opened: false,
height: 280,
},
+ review: {
+ opened: true,
+ },
session: {
width: 600,
},
@@ -158,6 +161,18 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
setStore("terminal", "height", height)
},
},
+ review: {
+ opened: createMemo(() => store.review?.opened ?? true),
+ open() {
+ setStore("review", "opened", true)
+ },
+ close() {
+ setStore("review", "opened", false)
+ },
+ toggle() {
+ setStore("review", "opened", (x) => !x)
+ },
+ },
session: {
width: createMemo(() => store.session?.width ?? 600),
resize(width: number) {
diff --git a/packages/desktop/src/pages/session.tsx b/packages/desktop/src/pages/session.tsx
index b6f5ccca1..42e43232a 100644
--- a/packages/desktop/src/pages/session.tsx
+++ b/packages/desktop/src/pages/session.tsx
@@ -222,6 +222,15 @@ export default function Page() {
onSelect: () => layout.terminal.toggle(),
},
{
+ id: "review.toggle",
+ title: "Toggle review",
+ description: "Show or hide the review panel",
+ category: "View",
+ keybind: "mod+b",
+ slash: "review",
+ onSelect: () => layout.review.toggle(),
+ },
+ {
id: "terminal.new",
title: "New terminal",
description: "Create a new terminal tab",
@@ -533,7 +542,7 @@ export default function Page() {
)
}
- const showTabs = createMemo(() => diffs().length > 0 || tabs().all().length > 0)
+ const showTabs = createMemo(() => layout.review.opened() && (diffs().length > 0 || tabs().all().length > 0))
const mobileWorking = createMemo(() => status().type !== "idle")
const mobileAutoScroll = createAutoScroll({