Skip to content

Commit 0243be8

Browse files
committed
fix(app): don't animate review panel in/out
1 parent 9154cd6 commit 0243be8

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

packages/app/src/pages/session.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ export default function Page() {
285285
const [ui, setUi] = createStore({
286286
git: false,
287287
pendingMessage: undefined as string | undefined,
288+
reviewSnap: false,
288289
scrollGesture: 0,
289290
scroll: {
290291
overflow: false,
@@ -460,6 +461,21 @@ export default function Page() {
460461
return key
461462
}, sessionKey())
462463

464+
let reviewFrame: number | undefined
465+
466+
createComputed((prev) => {
467+
const open = desktopReviewOpen()
468+
if (prev === undefined || prev === open) return open
469+
470+
if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame)
471+
setUi("reviewSnap", true)
472+
reviewFrame = requestAnimationFrame(() => {
473+
reviewFrame = undefined
474+
setUi("reviewSnap", false)
475+
})
476+
return open
477+
}, desktopReviewOpen())
478+
463479
const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? [])
464480
const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs()))
465481

@@ -1233,6 +1249,7 @@ export default function Page() {
12331249
onCleanup(() => {
12341250
document.removeEventListener("keydown", handleKeyDown)
12351251
scrollSpy.destroy()
1252+
if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame)
12361253
if (scrollStateFrame !== undefined) cancelAnimationFrame(scrollStateFrame)
12371254
})
12381255

@@ -1254,7 +1271,7 @@ export default function Page() {
12541271
classList={{
12551272
"@container relative shrink-0 flex flex-col min-h-0 h-full bg-background-stronger flex-1 md:flex-none": true,
12561273
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
1257-
!size.active(),
1274+
!size.active() && !ui.reviewSnap,
12581275
}}
12591276
style={{
12601277
width: sessionPanelWidth(),
@@ -1369,6 +1386,7 @@ export default function Page() {
13691386
reviewPanel={reviewPanel}
13701387
activeDiff={tree.activeDiff}
13711388
focusReviewDiff={focusReviewDiff}
1389+
reviewSnap={ui.reviewSnap}
13721390
size={size}
13731391
/>
13741392
</div>

packages/app/src/pages/session/session-side-panel.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export function SessionSidePanel(props: {
3131
reviewPanel: () => JSX.Element
3232
activeDiff?: string
3333
focusReviewDiff: (path: string) => void
34+
reviewSnap: boolean
3435
size: Sizing
3536
}) {
3637
const params = useParams()
@@ -228,7 +229,7 @@ export function SessionSidePanel(props: {
228229
classList={{
229230
"pointer-events-none": !open(),
230231
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
231-
!props.size.active(),
232+
!props.size.active() && !props.reviewSnap,
232233
}}
233234
style={{ width: panelWidth() }}
234235
>

0 commit comments

Comments
 (0)