summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop-electron
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-24 13:27:36 +0800
committerGitHub <[email protected]>2026-04-24 13:27:36 +0800
commit2e156b8990a1e72cfb231eadafe76e4e60c096ea (patch)
tree1a68b80f480b5f6327f77115571699054e76519a /packages/desktop-electron
parent3bfe6a1ef6cf41bc7f05339d63ab8d6032c6e8e1 (diff)
downloadopencode-2e156b8990a1e72cfb231eadafe76e4e60c096ea.tar.gz
opencode-2e156b8990a1e72cfb231eadafe76e4e60c096ea.zip
fix(desktop): avoid relaunching without installing updates (#23806)
Diffstat (limited to 'packages/desktop-electron')
-rw-r--r--packages/desktop-electron/src/main/index.ts21
-rw-r--r--packages/desktop-electron/src/renderer/index.tsx2
2 files changed, 18 insertions, 5 deletions
diff --git a/packages/desktop-electron/src/main/index.ts b/packages/desktop-electron/src/main/index.ts
index ae9f58118..c9f16606a 100644
--- a/packages/desktop-electron/src/main/index.ts
+++ b/packages/desktop-electron/src/main/index.ts
@@ -337,11 +337,16 @@ function setupAutoUpdater() {
})
}
-let updateReady = false
+let downloadedUpdateVersion: string | undefined
async function checkUpdate() {
if (!UPDATER_ENABLED) return { updateAvailable: false }
- updateReady = false
+ if (downloadedUpdateVersion) {
+ logger.log("returning cached downloaded update", {
+ version: downloadedUpdateVersion,
+ })
+ return { updateAvailable: true, version: downloadedUpdateVersion }
+ }
logger.log("checking for updates", {
currentVersion: app.getVersion(),
channel: autoUpdater.channel,
@@ -367,7 +372,7 @@ async function checkUpdate() {
logger.log("update available", { version })
await autoUpdater.downloadUpdate()
logger.log("update download completed", { version })
- updateReady = true
+ downloadedUpdateVersion = version
return { updateAvailable: true, version }
} catch (error) {
logger.error("update check failed", error)
@@ -376,7 +381,15 @@ async function checkUpdate() {
}
async function installUpdate() {
- if (!updateReady) return
+ if (!downloadedUpdateVersion) {
+ logger.log("install update skipped", {
+ reason: "no downloaded update ready",
+ })
+ return
+ }
+ logger.log("installing downloaded update", {
+ version: downloadedUpdateVersion,
+ })
killSidecar()
autoUpdater.quitAndInstall()
}
diff --git a/packages/desktop-electron/src/renderer/index.tsx b/packages/desktop-electron/src/renderer/index.tsx
index 56fe9fa51..91ea1ae07 100644
--- a/packages/desktop-electron/src/renderer/index.tsx
+++ b/packages/desktop-electron/src/renderer/index.tsx
@@ -170,7 +170,7 @@ const createPlatform = (): Platform => {
return window.api.checkUpdate()
},
- update: async () => {
+ updateAndRestart: async () => {
const config = await window.api.getWindowConfig().catch(() => ({ updaterEnabled: false }))
if (!config.updaterEnabled) return
await window.api.installUpdate()