diff options
| author | Adam <[email protected]> | 2026-03-09 07:49:01 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-03-09 07:49:11 -0500 |
| commit | 0243be86a7b548fd6daf421d39bd3c36ca76246b (patch) | |
| tree | 9174e363335c22cb5262a7247ee3e57addfa267e /packages/app/src/pages/session.tsx | |
| parent | 9154cd64e7256cadc50cd10334eee8f193a31527 (diff) | |
| download | opencode-0243be86a7b548fd6daf421d39bd3c36ca76246b.tar.gz opencode-0243be86a7b548fd6daf421d39bd3c36ca76246b.zip | |
fix(app): don't animate review panel in/out
Diffstat (limited to 'packages/app/src/pages/session.tsx')
| -rw-r--r-- | packages/app/src/pages/session.tsx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 3f5da0c94..35e89eabe 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -285,6 +285,7 @@ export default function Page() { const [ui, setUi] = createStore({ git: false, pendingMessage: undefined as string | undefined, + reviewSnap: false, scrollGesture: 0, scroll: { overflow: false, @@ -460,6 +461,21 @@ export default function Page() { return key }, sessionKey()) + let reviewFrame: number | undefined + + createComputed((prev) => { + const open = desktopReviewOpen() + if (prev === undefined || prev === open) return open + + if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame) + setUi("reviewSnap", true) + reviewFrame = requestAnimationFrame(() => { + reviewFrame = undefined + setUi("reviewSnap", false) + }) + return open + }, desktopReviewOpen()) + const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? []) const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs())) @@ -1233,6 +1249,7 @@ export default function Page() { onCleanup(() => { document.removeEventListener("keydown", handleKeyDown) scrollSpy.destroy() + if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame) if (scrollStateFrame !== undefined) cancelAnimationFrame(scrollStateFrame) }) @@ -1254,7 +1271,7 @@ export default function Page() { classList={{ "@container relative shrink-0 flex flex-col min-h-0 h-full bg-background-stronger flex-1 md:flex-none": true, "transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none": - !size.active(), + !size.active() && !ui.reviewSnap, }} style={{ width: sessionPanelWidth(), @@ -1369,6 +1386,7 @@ export default function Page() { reviewPanel={reviewPanel} activeDiff={tree.activeDiff} focusReviewDiff={focusReviewDiff} + reviewSnap={ui.reviewSnap} size={size} /> </div> |
