summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-30 14:31:08 -0600
committerAdam <[email protected]>2025-12-30 14:31:16 -0600
commit7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2 (patch)
treeaf85031dc9ae3baf76bb478d77447d609d3aa3f9
parent2039c6936f56d679fae9e48cdf0d33727ab64c00 (diff)
downloadopencode-7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2.tar.gz
opencode-7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2.zip
feat(desktop): upgrade to latest version on error page
-rw-r--r--packages/app/src/pages/error.tsx42
1 files changed, 39 insertions, 3 deletions
diff --git a/packages/app/src/pages/error.tsx b/packages/app/src/pages/error.tsx
index 61d2df4f1..4326206d8 100644
--- a/packages/app/src/pages/error.tsx
+++ b/packages/app/src/pages/error.tsx
@@ -2,6 +2,7 @@ import { TextField } from "@opencode-ai/ui/text-field"
import { Logo } from "@opencode-ai/ui/logo"
import { Button } from "@opencode-ai/ui/button"
import { Component, Show } from "solid-js"
+import { createStore } from "solid-js/store"
import { usePlatform } from "@/context/platform"
import { Icon } from "@opencode-ai/ui/icon"
@@ -181,6 +182,25 @@ interface ErrorPageProps {
export const ErrorPage: Component<ErrorPageProps> = (props) => {
const platform = usePlatform()
+ const [store, setStore] = createStore({
+ checking: false,
+ version: undefined as string | undefined,
+ })
+
+ async function checkForUpdates() {
+ if (!platform.checkUpdate) return
+ setStore("checking", true)
+ const result = await platform.checkUpdate()
+ setStore("checking", false)
+ if (result.updateAvailable && result.version) setStore("version", result.version)
+ }
+
+ async function installUpdate() {
+ if (!platform.update || !platform.restart) return
+ await platform.update()
+ await platform.restart()
+ }
+
return (
<div class="relative flex-1 h-screen w-screen min-h-0 flex flex-col items-center justify-center bg-background-base font-sans">
<div class="w-2/3 max-w-3xl flex flex-col items-center justify-center gap-8">
@@ -198,9 +218,25 @@ export const ErrorPage: Component<ErrorPageProps> = (props) => {
label="Error Details"
hideLabel
/>
- <Button size="large" onClick={platform.restart}>
- Restart
- </Button>
+ <div class="flex items-center gap-3">
+ <Button size="large" onClick={platform.restart}>
+ Restart
+ </Button>
+ <Show when={platform.checkUpdate}>
+ <Show
+ when={store.version}
+ fallback={
+ <Button size="large" variant="ghost" onClick={checkForUpdates} disabled={store.checking}>
+ {store.checking ? "Checking..." : "Check for updates"}
+ </Button>
+ }
+ >
+ <Button size="large" onClick={installUpdate}>
+ Update to {store.version}
+ </Button>
+ </Show>
+ </Show>
+ </div>
<div class="flex flex-col items-center gap-2">
<div class="flex items-center justify-center gap-1">
Please report this error to the OpenCode team