Skip to content

Commit 2a3f703

Browse files
HonaRalf Waldukat
authored andcommitted
fix(app): route legacy drafts to session page (anomalyco#35808)
1 parent fa20080 commit 2a3f703

2 files changed

Lines changed: 50 additions & 1 deletion

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { expect, test } from "@playwright/test"
2+
import { base64Encode } from "@opencode-ai/core/util/encode"
3+
import { mockOpenCodeServer } from "../utils/mock-server"
4+
5+
const draftID = "draft_legacy_new_session"
6+
const directory = "C:/OpenCode/LegacyNewSession"
7+
const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`
8+
9+
test("redirects a draft to the legacy new-session route", async ({ page }) => {
10+
await mockOpenCodeServer(page, {
11+
directory,
12+
project: {
13+
id: "proj_legacy_new_session",
14+
worktree: directory,
15+
vcs: "git",
16+
name: "legacy-new-session",
17+
time: { created: 1700000000000, updated: 1700000000000 },
18+
sandboxes: [],
19+
},
20+
provider: { all: [], connected: [], default: {} },
21+
sessions: [],
22+
pageMessages: () => ({ items: [] }),
23+
})
24+
await page.addInitScript(
25+
({ directory, draftID, server }) => {
26+
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: false } }))
27+
localStorage.setItem(
28+
"opencode.window.browser.dat:tabs",
29+
JSON.stringify([{ type: "draft", draftID, server, directory }]),
30+
)
31+
},
32+
{ directory, draftID, server },
33+
)
34+
35+
await page.goto(`/new-session?draftId=${draftID}`)
36+
37+
await expect(page).toHaveURL(`/${base64Encode(directory)}/session`)
38+
await expect(page.locator("header[data-tauri-drag-region]")).toBeVisible()
39+
await expect(page.locator('[data-component="prompt-input"]')).toBeVisible()
40+
})

packages/app/src/app.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { MetaProvider } from "@solidjs/meta"
1212
import { type BaseRouterProps, Navigate, Route, Router, useNavigate, useParams, useSearchParams } from "@solidjs/router"
1313
import { QueryClient, QueryClientProvider } from "@tanstack/solid-query"
1414
import { Effect } from "effect"
15+
import { base64Encode } from "@opencode-ai/core/util/encode"
1516
import {
1617
type Component,
1718
createEffect,
@@ -174,6 +175,7 @@ function LegacyServerLayout(props: ParentProps<{ serverScoped?: JSX.Element }>)
174175

175176
function DraftRoute() {
176177
const [search] = useSearchParams<{ draftId?: string }>()
178+
const settings = useSettings()
177179
const tabs = useTabs()
178180
return (
179181
<Show when={tabs.ready()}>
@@ -182,7 +184,14 @@ function DraftRoute() {
182184
keyed
183185
fallback={<Navigate href="/" />}
184186
>
185-
{(draft) => <ResolvedDraftRoute draft={draft} />}
187+
{(draft) => (
188+
<Show
189+
when={settings.general.newLayoutDesigns()}
190+
fallback={<Navigate href={`/${base64Encode(draft.directory)}/session`} />}
191+
>
192+
<ResolvedDraftRoute draft={draft} />
193+
</Show>
194+
)}
186195
</Show>
187196
</Show>
188197
)

0 commit comments

Comments
 (0)