diff options
| author | Adam <[email protected]> | 2025-12-30 14:31:08 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-30 14:31:16 -0600 |
| commit | 7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2 (patch) | |
| tree | af85031dc9ae3baf76bb478d77447d609d3aa3f9 | |
| parent | 2039c6936f56d679fae9e48cdf0d33727ab64c00 (diff) | |
| download | opencode-7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2.tar.gz opencode-7adb6e495ab3894ba5b020d7a0a203c8c0a17ae2.zip | |
feat(desktop): upgrade to latest version on error page
| -rw-r--r-- | packages/app/src/pages/error.tsx | 42 |
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 |
