Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,18 @@ already in use` and no way forward short of finding the file in a temporary

### Desktop / Web UI

- **The app's saved state is filed under CoDev's own name** — the desktop app
kept its settings, recent servers and per-project UI state in files named
after upstream (`opencode.settings`, `opencode.global.dat`,
`opencode.workspace.*.dat`) in its data directory, and the browser build did
the same in local storage. Since the troubleshooting docs tell you to delete
those files by name to reset the app, you were reading someone else's product
name out of your own folder. They are now `codev.settings`,
`codev.global.dat`, `codev.workspace.*.dat` and so on. Upgrading renames the
files you already have on first launch, so nothing is lost and nothing needs
to be re-entered.
([#317](https://github.com/quickbeard/codev-code/pull/317))

- **Switching between Code and Work brings the project back too** — the switch
restored the session you were last in, and its tabs, but left the sidebar on
no project at all: nothing highlighted under Projects, and Pinned and Recents
Expand Down
12 changes: 7 additions & 5 deletions DIVERGENCES.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/app/e2e/performance/timeline-stability/fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export async function setupTimeline(
}, input.settings ?? {})
if (input.locale) {
await page.addInitScript((locale) => {
localStorage.setItem("opencode.global.dat:language", JSON.stringify({ locale }))
localStorage.setItem("codev.global.dat:language", JSON.stringify({ locale }))
}, input.locale)
}
if (input.reducedMotion) await page.emulateMedia({ reducedMotion: "reduce" })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ export async function installStressSessionTabs(page: Page, input?: { draftID?: s
await page.addInitScript(
({ directory, sessionIDs, dirBase64, server, draftID }) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([
...sessionIDs.map((sessionId) => ({
type: "session",
Expand Down
8 changes: 4 additions & 4 deletions packages/app/e2e/regression/cross-server-tab-close.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ test("closing the active server's last tab opens the remaining server tab", asyn
await page.addInitScript(
({ serverB, sessionA, sessionB }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem("codev.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([
{ type: "session", server: "http://127.0.0.1:4096", sessionId: sessionA },
{ type: "session", server: serverB, sessionId: sessionB },
Expand Down Expand Up @@ -50,9 +50,9 @@ test("legacy session routes preserve an existing tab's server", async ({ page })
await page.addInitScript(
({ serverB, sessionB }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem("codev.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([{ type: "session", server: serverB, sessionId: sessionB }]),
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,22 +126,22 @@ async function setup(page: Page) {
({ directory, server, sessionID }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.global.dat:layout",
"codev.global.dat:layout",
JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }),
)
localStorage.setItem(
"opencode.global.dat:review-panel-v2",
"codev.global.dat:review-panel-v2",
JSON.stringify({ sidebarOpened: true, sidebarWidth: 240, expandMode: "collapse" }),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([{ type: "session", server, sessionId: sessionID }]),
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/new-session-panel-corner.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ test("matches the rounded panel corners to the dark new-session background", asy
localStorage.setItem("opencode-theme-id", "oc-2")
localStorage.setItem("opencode-color-scheme", "dark")
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([{ type: "draft", draftID, server, directory }]),
)
},
Expand Down
6 changes: 3 additions & 3 deletions packages/app/e2e/regression/new-session-reuses-draft.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down Expand Up @@ -115,13 +115,13 @@ test("a new draft opens at the head of the tab strip, not after the sessions", a
await page.addInitScript(
({ directory, seeded }) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem("opencode.window.browser.dat:tabs", JSON.stringify(seeded))
localStorage.setItem("codev.window.browser.dat:tabs", JSON.stringify(seeded))
},
{
directory: fixture.directory,
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/remote-session-settings.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ async function configureServers(page: Page, tabs: { type: "session"; server: str
await page.addInitScript(
({ serverB, tabs }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem("opencode.window.browser.dat:tabs", JSON.stringify(tabs))
localStorage.setItem("codev.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem("codev.window.browser.dat:tabs", JSON.stringify(tabs))
},
{ serverB, tabs },
)
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/remote-tab-busy.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ test("tab busy indicator reflects the tab server's own session status", async ({
await page.addInitScript(
({ serverA, serverB, sessionA, sessionB }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem("codev.global.dat:server", JSON.stringify({ list: [serverB] }))
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([
{ type: "session", server: serverA, sessionId: sessionA },
{ type: "session", server: serverB, sessionId: sessionB },
Expand Down
8 changes: 4 additions & 4 deletions packages/app/e2e/regression/review-open-file.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ test("opens and searches project files inline", async ({ page }) => {
({ directory, server, sessionID }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.global.dat:layout",
"codev.global.dat:layout",
JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }),
)
localStorage.setItem(
"opencode.global.dat:review-panel-v2",
"codev.global.dat:review-panel-v2",
JSON.stringify({ sidebarOpened: false, sidebarWidth: 240, expandMode: "collapse" }),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify([{ type: "session", server, sessionId: sessionID }]),
)
},
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/review-state-persistence.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,14 @@ async function setup(page: Page) {
({ directory, server, sessions }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))),
)
},
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/review-tab-switch.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ async function setup(page: Page) {
({ directory, server, sessions }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))),
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ test("keeps the review tree and terminal sized when both panels are open", async
await page.addInitScript(() => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:layout",
"codev.global.dat:layout",
JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }),
)
})
Expand Down
2 changes: 1 addition & 1 deletion packages/app/e2e/regression/session-actions-menu.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ async function boot(page: Page, options?: { share?: string }) {
}
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ test("shows loaded sessions before the directory path request resolves", async (

await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,14 +138,14 @@ async function configurePage(page: Page) {
({ directory, dirBase64, server, sessionIDs }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem(
"opencode.window.browser.dat:tabs",
"codev.window.browser.dat:tabs",
JSON.stringify(sessionIDs.map((sessionId) => ({ type: "session", server, dirBase64, sessionId }))),
)
},
Expand Down
2 changes: 1 addition & 1 deletion packages/app/e2e/regression/sidebar-persistence.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
8 changes: 4 additions & 4 deletions packages/app/e2e/regression/sidebar-pinned-sessions.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down Expand Up @@ -176,7 +176,7 @@ async function bootWith(page: Page, sessions: ReturnType<typeof manySessions>) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down Expand Up @@ -270,7 +270,7 @@ test("deleting a pinned session drops its pin", async ({ page }) => {
// The id must leave storage too: left behind, it would silently re-pin a
// future session that reused it.
await expect
.poll(async () => page.evaluate(() => localStorage.getItem("opencode.global.dat:sidebar.pinned") ?? ""))
.poll(async () => page.evaluate(() => localStorage.getItem("codev.global.dat:sidebar.pinned") ?? ""))
.not.toContain("ses_pin_0")
})

Expand All @@ -283,7 +283,7 @@ test("pins are stored per server, not in one flat list", async ({ page }) => {
// onto a different server. Asserting the exact key, not just "some key" —
// anything constant would satisfy the looser check.
const serverKey = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`
const stored = await page.evaluate(() => localStorage.getItem("opencode.global.dat:sidebar.pinned"))
const stored = await page.evaluate(() => localStorage.getItem("codev.global.dat:sidebar.pinned"))
expect(stored).not.toBeNull()
expect(JSON.parse(stored!)).toEqual({ sessions: { [serverKey]: [fixture.targetID] } })
})
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/sidebar-project-scope.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ test("lists only the last project's sessions on a fresh window", async ({ page }
await page.addInitScript(
([a, b]) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: {
local: [
Expand Down Expand Up @@ -91,7 +91,7 @@ test("shows no sessions once the selected project is deselected", async ({ page
await page.addInitScript(
([a, b]) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: {
local: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
2 changes: 1 addition & 1 deletion packages/app/e2e/regression/sidebar-toggle-search.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ async function boot(page: Page) {
})
await page.addInitScript((directory) => {
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
Expand Down
4 changes: 2 additions & 2 deletions packages/app/e2e/regression/subagent-child-navigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,13 +182,13 @@ async function configurePage(page: Page) {
({ directory, server, sessionId }) => {
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
localStorage.setItem(
"opencode.global.dat:server",
"codev.global.dat:server",
JSON.stringify({
projects: { local: [{ worktree: directory, expanded: true }] },
lastProject: { local: directory },
}),
)
localStorage.setItem("opencode.window.browser.dat:tabs", JSON.stringify([{ type: "session", server, sessionId }]))
localStorage.setItem("codev.window.browser.dat:tabs", JSON.stringify([{ type: "session", server, sessionId }]))
},
{ directory, server, sessionId: parentID },
)
Expand Down
Loading
Loading