Skip to content

Commit 213e725

Browse files
jayairopencode-agent[bot]
authored andcommitted
fix(app): suppress review sidebar hydration motion
1 parent 1b9b260 commit 213e725

5 files changed

Lines changed: 19 additions & 2 deletions

File tree

packages/app/e2e/regression/review-tab-switch.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,18 @@ test("keeps the v2 review pane mounted when switching session tabs in a workspac
4141
expect(await readProbe(page)).toBe(PROBE)
4242
})
4343

44+
test("enables review sidebar transitions after persisted state is ready", async ({ page }) => {
45+
await setup(page)
46+
47+
await page.goto(sessionHref(sessionA))
48+
await expectSessionTitle(page, titleA)
49+
await page.getByRole("button", { name: "Toggle review" }).click()
50+
51+
const sidebar = page.locator('[data-slot="session-review-v2-sidebar"]')
52+
await expectAppVisible(sidebar)
53+
await expect(sidebar).toHaveAttribute("data-transition", "")
54+
})
55+
4456
type Probed = HTMLElement & { __e2eProbe?: string }
4557

4658
async function switchTab(page: Page, title: string) {

packages/app/src/pages/session/v2/review-panel-v2-state.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { createStore } from "solid-js/store"
99
import { Persist, persisted } from "@/utils/persist"
1010

1111
export function createReviewPanelV2State() {
12-
const [store, setStore] = persisted(
12+
const [store, setStore, , ready] = persisted(
1313
Persist.global("review-panel-v2"),
1414
createStore({
1515
sidebarOpened: true,
@@ -24,6 +24,7 @@ export function createReviewPanelV2State() {
2424
return {
2525
sidebarOpened: () => store.sidebarOpened,
2626
sidebarWidth: () => store.sidebarWidth,
27+
sidebarTransition: ready,
2728
filter,
2829
setFilter,
2930
expandMode: () => store.expandMode,

packages/app/src/pages/session/v2/review-panel-v2.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ function ReviewPanelV2Sidebar(props: {
180180
return (
181181
<SessionReviewV2Sidebar
182182
open={props.state.sidebarOpened()}
183+
transition={props.state.sidebarTransition()}
183184
title={props.title}
184185
stats={<DiffChanges changes={props.diffs()} />}
185186
filter={props.state.filter()}

packages/session-ui/src/v2/components/session-review-v2.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
border-right-width: 0;
3939
}
4040

41-
[data-component="session-review-v2-sidebar-root"] [data-slot="session-review-v2-sidebar"]:not([data-resizing]) {
41+
[data-component="session-review-v2-sidebar-root"]
42+
[data-slot="session-review-v2-sidebar"][data-transition]:not([data-resizing]) {
4243
transition:
4344
width 200ms cubic-bezier(0.22, 1, 0.36, 1),
4445
border-right-width 200ms cubic-bezier(0.22, 1, 0.36, 1);

packages/session-ui/src/v2/components/session-review-v2.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export type SessionReviewV2Props = {
3939

4040
export type SessionReviewV2SidebarProps = {
4141
open: boolean
42+
transition: boolean
4243
title?: JSX.Element
4344
stats?: JSX.Element
4445
filter: string
@@ -69,6 +70,7 @@ export function SessionReviewV2Sidebar(props: SessionReviewV2SidebarProps) {
6970
<div data-component="session-review-v2-sidebar-root">
7071
<aside
7172
data-slot="session-review-v2-sidebar"
73+
data-transition={props.transition ? "" : undefined}
7274
data-resizing={resizing() ? "" : undefined}
7375
aria-hidden={!props.open}
7476
inert={!props.open}

0 commit comments

Comments
 (0)