chore: merge dev into v2 (#36918)

Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com>
Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: Jack <jack@anoma.ly>
Co-authored-by: David Hill <1879069+iamdavidhill@users.noreply.github.com>
Co-authored-by: Jay <53023+jayair@users.noreply.github.com>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: Simon Klee <hello@simonklee.dk>
Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
Co-authored-by: James Long <longster@gmail.com>
Co-authored-by: James Long <jlongster@users.noreply.github.com>
Co-authored-by: Dustin Deus <deusdustin@gmail.com>
Co-authored-by: 冯基魁 <56265583+fengjikui@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
Co-authored-by: Kit Langton <kit.langton@gmail.com>
Co-authored-by: Victor Navarro <vn4varro@gmail.com>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Dax <mail@thdxr.com>
Co-authored-by: Nabs <nabil@instafork.com>
Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com>
Co-authored-by: AidenGeunGeun <eastlandwyvern@gmail.com>
Co-authored-by: Mark <geraint0923@users.noreply.github.com>
Co-authored-by: Jay <air@live.ca>
This commit is contained in:
opencode-agent[bot]
2026-07-14 15:23:34 -05:00
committed by GitHub
co-authored by opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Aiden Cline opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Luke Parker usrnk1 Aarav Sareen Brendan Allan Jack David Hill Jay Brendan Allan Simon Klee opencode Aiden Cline Adam James Long James Long Dustin Deus 冯基魁 Frank Aiden Cline Kit Langton Victor Navarro Dax Raad Dax Nabs Vladimir Glafirov AidenGeunGeun Mark Jay
parent a32c480d45
commit 0d4f9797f4
123 changed files with 3206 additions and 770 deletions
@@ -0,0 +1,65 @@
import { beforeAll, expect, mock, test } from "bun:test"
import type { AsyncStorage } from "@solid-primitives/storage"
import { createEffect, createRoot } from "solid-js"
let createReviewPanelV2State: typeof import("@/pages/session/v2/review-panel-v2-state").createReviewPanelV2State
let read: ((value: string | null) => void) | undefined
const storage: AsyncStorage = {
getItem: () => new Promise((resolve) => (read = resolve)),
setItem: async () => undefined,
removeItem: async () => undefined,
clear: async () => undefined,
key: async () => null,
getLength: async () => 0,
length: Promise.resolve(0),
}
beforeAll(async () => {
mock.module("@opencode-ai/session-ui/v2/session-review-v2", () => ({
SESSION_REVIEW_V2_SIDEBAR_WIDTH_DEFAULT: 240,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MIN: 200,
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MAX: 480,
}))
mock.module("@/context/platform", () => ({
usePlatform: () => ({ platform: "desktop", storage: () => storage }),
}))
createReviewPanelV2State = (await import("@/pages/session/v2/review-panel-v2-state")).createReviewPanelV2State
})
test("enables sidebar motion only after custom width hydration", async () => {
await new Promise<void>((resolve, reject) => {
createRoot((dispose) => {
const state = createReviewPanelV2State()
const transition =
"sidebarTransition" in state && typeof state.sidebarTransition === "function"
? (state.sidebarTransition as () => boolean)
: undefined
try {
expect(transition).toBeFunction()
expect(transition?.()).toBeFalse()
expect(state.sidebarWidth()).toBe(240)
} catch (error) {
dispose()
reject(error)
return
}
createEffect(() => {
if (!transition?.()) return
try {
expect(state.sidebarWidth()).toBe(360)
dispose()
resolve()
} catch (error) {
dispose()
reject(error)
}
})
read?.(JSON.stringify({ sidebarOpened: true, sidebarWidth: 360, expandMode: "collapse" }))
})
})
})