summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorLuke Parker <[email protected]>2026-04-19 13:06:07 +1000
committerGitHub <[email protected]>2026-04-19 13:06:07 +1000
commitb34ca44abed7eb214cdaff26467ff786d17da523 (patch)
tree9b31966e177ca510da7260b33e1fa063524d7f53 /packages
parent40ba8f357024351c7437d8227e18906a2aadf824 (diff)
downloadopencode-b34ca44abed7eb214cdaff26467ff786d17da523.tar.gz
opencode-b34ca44abed7eb214cdaff26467ff786d17da523.zip
fix incorrect config directory by lazily loading electron-store (#23373)
Diffstat (limited to 'packages')
-rw-r--r--packages/desktop-electron/src/main/migrate.ts8
-rw-r--r--packages/desktop-electron/src/main/server.ts12
-rw-r--r--packages/desktop-electron/src/main/store.ts6
3 files changed, 14 insertions, 12 deletions
diff --git a/packages/desktop-electron/src/main/migrate.ts b/packages/desktop-electron/src/main/migrate.ts
index bad1349ee..70e3dc9c7 100644
--- a/packages/desktop-electron/src/main/migrate.ts
+++ b/packages/desktop-electron/src/main/migrate.ts
@@ -4,7 +4,7 @@ import { existsSync, readdirSync, readFileSync } from "node:fs"
import { homedir } from "node:os"
import { join } from "node:path"
import { CHANNEL } from "./constants"
-import { getStore, store } from "./store"
+import { getStore } from "./store"
const TAURI_MIGRATED_KEY = "tauriMigrated"
@@ -67,7 +67,7 @@ function migrateFile(datPath: string, filename: string) {
}
export function migrate() {
- if (store.get(TAURI_MIGRATED_KEY)) {
+ if (getStore().get(TAURI_MIGRATED_KEY)) {
log.log("tauri migration: already done, skipping")
return
}
@@ -77,7 +77,7 @@ export function migrate() {
if (!existsSync(dir)) {
log.log("tauri migration: no tauri data directory found, nothing to migrate")
- store.set(TAURI_MIGRATED_KEY, true)
+ getStore().set(TAURI_MIGRATED_KEY, true)
return
}
@@ -87,5 +87,5 @@ export function migrate() {
}
log.log("tauri migration: complete")
- store.set(TAURI_MIGRATED_KEY, true)
+ getStore().set(TAURI_MIGRATED_KEY, true)
}
diff --git a/packages/desktop-electron/src/main/server.ts b/packages/desktop-electron/src/main/server.ts
index 5a6050013..55dfdf6e9 100644
--- a/packages/desktop-electron/src/main/server.ts
+++ b/packages/desktop-electron/src/main/server.ts
@@ -1,33 +1,33 @@
import { app } from "electron"
import { DEFAULT_SERVER_URL_KEY, WSL_ENABLED_KEY } from "./constants"
import { getUserShell, loadShellEnv } from "./shell-env"
-import { store } from "./store"
+import { getStore } from "./store"
export type WslConfig = { enabled: boolean }
export type HealthCheck = { wait: Promise<void> }
export function getDefaultServerUrl(): string | null {
- const value = store.get(DEFAULT_SERVER_URL_KEY)
+ const value = getStore().get(DEFAULT_SERVER_URL_KEY)
return typeof value === "string" ? value : null
}
export function setDefaultServerUrl(url: string | null) {
if (url) {
- store.set(DEFAULT_SERVER_URL_KEY, url)
+ getStore().set(DEFAULT_SERVER_URL_KEY, url)
return
}
- store.delete(DEFAULT_SERVER_URL_KEY)
+ getStore().delete(DEFAULT_SERVER_URL_KEY)
}
export function getWslConfig(): WslConfig {
- const value = store.get(WSL_ENABLED_KEY)
+ const value = getStore().get(WSL_ENABLED_KEY)
return { enabled: typeof value === "boolean" ? value : false }
}
export function setWslConfig(config: WslConfig) {
- store.set(WSL_ENABLED_KEY, config.enabled)
+ getStore().set(WSL_ENABLED_KEY, config.enabled)
}
export async function spawnLocalServer(hostname: string, port: number, password: string) {
diff --git a/packages/desktop-electron/src/main/store.ts b/packages/desktop-electron/src/main/store.ts
index 709e820e2..61f0c0a49 100644
--- a/packages/desktop-electron/src/main/store.ts
+++ b/packages/desktop-electron/src/main/store.ts
@@ -4,6 +4,10 @@ import { SETTINGS_STORE } from "./constants"
const cache = new Map<string, Store>()
+// We cannot instantiate the electron-store at module load time because
+// module import hoisting causes this to run before app.setPath("userData", ...)
+// in index.ts has executed, which would result in files being written to the default directory
+// (e.g. bad: %APPDATA%\@opencode-ai\desktop-electron\opencode.settings vs good: %APPDATA%\ai.opencode.desktop.dev\opencode.settings).
export function getStore(name = SETTINGS_STORE) {
const cached = cache.get(name)
if (cached) return cached
@@ -11,5 +15,3 @@ export function getStore(name = SETTINGS_STORE) {
cache.set(name, next)
return next
}
-
-export const store = getStore(SETTINGS_STORE)