Browse Source

fix(app): remove extra error page and use default error boundary

Adam 3 weeks ago
parent
commit
12e8ef3178

+ 0 - 4
packages/desktop/src/i18n/ar.ts

@@ -23,8 +23,4 @@ export const dict = {
   "desktop.cli.installed.message": "تم تثبيت CLI في {{path}}\n\nأعد تشغيل الطرفية لاستخدام الأمر 'opencode'.",
   "desktop.cli.failed.title": "فشل التثبيت",
   "desktop.cli.failed.message": "فشل تثبيت CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "فشل تشغيل OpenCode",
-  "desktop.error.serverStartFailed.description":
-    "تعذر بدء تشغيل خادم OpenCode المحلي. أعد تشغيل التطبيق، أو تحقق من إعدادات الشبكة (VPN/proxy) وحاول مرة أخرى.",
 }

+ 0 - 4
packages/desktop/src/i18n/br.ts

@@ -24,8 +24,4 @@ export const dict = {
   "desktop.cli.installed.message": "CLI instalada em {{path}}\n\nReinicie seu terminal para usar o comando 'opencode'.",
   "desktop.cli.failed.title": "Falha na instalação",
   "desktop.cli.failed.message": "Falha ao instalar a CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "Falha ao iniciar o OpenCode",
-  "desktop.error.serverStartFailed.description":
-    "Não foi possível iniciar o servidor local do OpenCode. Reinicie o aplicativo ou verifique suas configurações de rede (VPN/proxy) e tente novamente.",
 }

+ 0 - 4
packages/desktop/src/i18n/bs.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI je instaliran u {{path}}\n\nRestartuj terminal da bi koristio komandu 'opencode'.",
   "desktop.cli.failed.title": "Instalacija nije uspjela",
   "desktop.cli.failed.message": "Neuspjela instalacija CLI-a: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode se nije mogao pokrenuti",
-  "desktop.error.serverStartFailed.description":
-    "Lokalni OpenCode server se nije mogao pokrenuti. Restartuj aplikaciju ili provjeri mrežne postavke (VPN/proxy) i pokušaj ponovo.",
 }

+ 0 - 4
packages/desktop/src/i18n/da.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI installeret i {{path}}\n\nGenstart din terminal for at bruge 'opencode'-kommandoen.",
   "desktop.cli.failed.title": "Installation mislykkedes",
   "desktop.cli.failed.message": "Kunne ikke installere CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode kunne ikke starte",
-  "desktop.error.serverStartFailed.description":
-    "Den lokale OpenCode-server kunne ikke startes. Genstart appen, eller tjek dine netværksindstillinger (VPN/proxy) og prøv igen.",
 }

+ 0 - 4
packages/desktop/src/i18n/de.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI wurde in {{path}} installiert\n\nStarten Sie Ihr Terminal neu, um den Befehl 'opencode' zu verwenden.",
   "desktop.cli.failed.title": "Installation fehlgeschlagen",
   "desktop.cli.failed.message": "CLI konnte nicht installiert werden: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode konnte nicht gestartet werden",
-  "desktop.error.serverStartFailed.description":
-    "Der lokale OpenCode-Server konnte nicht gestartet werden. Starten Sie die App neu oder überprüfen Sie Ihre Netzwerkeinstellungen (VPN/Proxy) und versuchen Sie es erneut.",
 }

+ 0 - 4
packages/desktop/src/i18n/en.ts

@@ -24,8 +24,4 @@ export const dict = {
   "desktop.cli.installed.message": "CLI installed to {{path}}\n\nRestart your terminal to use the 'opencode' command.",
   "desktop.cli.failed.title": "Installation Failed",
   "desktop.cli.failed.message": "Failed to install CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode failed to start",
-  "desktop.error.serverStartFailed.description":
-    "The local OpenCode server could not be started. Restart the app, or check your network settings (VPN/proxy) and try again.",
 }

+ 0 - 4
packages/desktop/src/i18n/es.ts

@@ -24,8 +24,4 @@ export const dict = {
   "desktop.cli.installed.message": "CLI instalada en {{path}}\n\nReinicia tu terminal para usar el comando 'opencode'.",
   "desktop.cli.failed.title": "Instalación fallida",
   "desktop.cli.failed.message": "No se pudo instalar la CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode no pudo iniciarse",
-  "desktop.error.serverStartFailed.description":
-    "No se pudo iniciar el servidor local de OpenCode. Reinicia la aplicación o revisa tu configuración de red (VPN/proxy) y vuelve a intentarlo.",
 }

+ 0 - 4
packages/desktop/src/i18n/fr.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI installée dans {{path}}\n\nRedémarrez votre terminal pour utiliser la commande 'opencode'.",
   "desktop.cli.failed.title": "Échec de l'installation",
   "desktop.cli.failed.message": "Impossible d'installer la CLI : {{error}}",
-
-  "desktop.error.serverStartFailed.title": "Échec du démarrage d'OpenCode",
-  "desktop.error.serverStartFailed.description":
-    "Impossible de démarrer le serveur OpenCode local. Redémarrez l'application ou vérifiez vos paramètres réseau (VPN/proxy) et réessayez.",
 }

+ 0 - 4
packages/desktop/src/i18n/ja.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI を {{path}} にインストールしました\n\nターミナルを再起動して 'opencode' コマンドを使用してください。",
   "desktop.cli.failed.title": "インストールに失敗しました",
   "desktop.cli.failed.message": "CLI のインストールに失敗しました: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode の起動に失敗しました",
-  "desktop.error.serverStartFailed.description":
-    "ローカルの OpenCode サーバーを起動できませんでした。アプリを再起動するか、ネットワーク設定 (VPN/proxy) を確認して再試行してください。",
 }

+ 0 - 4
packages/desktop/src/i18n/ko.ts

@@ -24,8 +24,4 @@ export const dict = {
     "CLI가 {{path}}에 설치되었습니다\n\n터미널을 다시 시작하여 'opencode' 명령을 사용하세요.",
   "desktop.cli.failed.title": "설치 실패",
   "desktop.cli.failed.message": "CLI 설치 실패: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode 시작 실패",
-  "desktop.error.serverStartFailed.description":
-    "로컬 OpenCode 서버를 시작할 수 없습니다. 앱을 다시 시작하거나 네트워크 설정(VPN/proxy)을 확인한 후 다시 시도하세요.",
 }

+ 0 - 4
packages/desktop/src/i18n/no.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI installert til {{path}}\n\nStart terminalen på nytt for å bruke 'opencode'-kommandoen.",
   "desktop.cli.failed.title": "Installasjon mislyktes",
   "desktop.cli.failed.message": "Kunne ikke installere CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode kunne ikke starte",
-  "desktop.error.serverStartFailed.description":
-    "Den lokale OpenCode-serveren kunne ikke startes. Start appen på nytt, eller sjekk nettverksinnstillingene dine (VPN/proxy) og prøv igjen.",
 }

+ 0 - 4
packages/desktop/src/i18n/pl.ts

@@ -25,8 +25,4 @@ export const dict = {
     "CLI zainstalowane w {{path}}\n\nUruchom ponownie terminal, aby użyć polecenia 'opencode'.",
   "desktop.cli.failed.title": "Instalacja nie powiodła się",
   "desktop.cli.failed.message": "Nie udało się zainstalować CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "Nie udało się uruchomić OpenCode",
-  "desktop.error.serverStartFailed.description":
-    "Nie udało się uruchomić lokalnego serwera OpenCode. Uruchom ponownie aplikację lub sprawdź ustawienia sieciowe (VPN/proxy) i spróbuj ponownie.",
 }

+ 0 - 4
packages/desktop/src/i18n/ru.ts

@@ -24,8 +24,4 @@ export const dict = {
     "CLI установлен в {{path}}\n\nПерезапустите терминал, чтобы использовать команду 'opencode'.",
   "desktop.cli.failed.title": "Ошибка установки",
   "desktop.cli.failed.message": "Не удалось установить CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "Не удалось запустить OpenCode",
-  "desktop.error.serverStartFailed.description":
-    "Не удалось запустить локальный сервер OpenCode. Перезапустите приложение или проверьте настройки сети (VPN/proxy) и попробуйте снова.",
 }

+ 0 - 4
packages/desktop/src/i18n/zh.ts

@@ -23,8 +23,4 @@ export const dict = {
   "desktop.cli.installed.message": "CLI 已安装到 {{path}}\n\n重启终端以使用 'opencode' 命令。",
   "desktop.cli.failed.title": "安装失败",
   "desktop.cli.failed.message": "无法安装 CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode 启动失败",
-  "desktop.error.serverStartFailed.description":
-    "无法启动本地 OpenCode 服务器。请重启应用,或检查网络设置 (VPN/proxy) 后重试。",
 }

+ 0 - 4
packages/desktop/src/i18n/zht.ts

@@ -23,8 +23,4 @@ export const dict = {
   "desktop.cli.installed.message": "CLI 已安裝到 {{path}}\n\n重新啟動終端機以使用 'opencode' 命令。",
   "desktop.cli.failed.title": "安裝失敗",
   "desktop.cli.failed.message": "無法安裝 CLI: {{error}}",
-
-  "desktop.error.serverStartFailed.title": "OpenCode 啟動失敗",
-  "desktop.error.serverStartFailed.description":
-    "無法啟動本地 OpenCode 伺服器。請重新啟動應用程式,或檢查網路設定 (VPN/proxy) 後再試一次。",
 }

+ 7 - 37
packages/desktop/src/index.tsx

@@ -402,50 +402,20 @@ type ServerReadyData = { url: string; password: string | null }
 function ServerGate(props: { children: (data: Accessor<ServerReadyData>) => JSX.Element }) {
   const [serverData] = createResource(() => commands.awaitInitialization(new Channel<InitStep>() as any))
 
-  const errorMessage = () => {
-    const error = serverData.error
-    if (!error) return t("error.chain.unknown")
-    if (typeof error === "string") return error
-    if (error instanceof Error) return error.message
-    return String(error)
-  }
-
-  const restartApp = async () => {
-    await commands.killSidecar().catch(() => undefined)
-    await relaunch().catch(() => undefined)
-  }
+  if (serverData.state === "errored") throw serverData.error
 
   return (
     // Not using suspense as not all components are compatible with it (undefined refs)
     <Show
-      when={serverData.state === "errored"}
+      when={serverData.state !== "pending" && serverData()}
       fallback={
-        <Show
-          when={serverData.state !== "pending" && serverData()}
-          fallback={
-            <div class="h-screen w-screen flex flex-col items-center justify-center bg-background-base">
-              <Splash class="w-16 h-20 opacity-50 animate-pulse" />
-              <div data-tauri-decorum-tb class="flex flex-row absolute top-0 right-0 z-10 h-10" />
-            </div>
-          }
-        >
-          {(data) => props.children(data)}
-        </Show>
+        <div class="h-screen w-screen flex flex-col items-center justify-center bg-background-base">
+          <Splash class="w-16 h-20 opacity-50 animate-pulse" />
+          <div data-tauri-decorum-tb class="flex flex-row absolute top-0 right-0 z-10 h-10" />
+        </div>
       }
     >
-      <div class="h-screen w-screen flex flex-col items-center justify-center bg-background-base gap-4 px-6">
-        <div class="text-16-semibold">{t("desktop.error.serverStartFailed.title")}</div>
-        <div class="text-12-regular opacity-70 text-center max-w-xl">
-          {t("desktop.error.serverStartFailed.description")}
-        </div>
-        <div class="w-full max-w-3xl rounded border border-border bg-background-base overflow-auto max-h-64">
-          <pre class="p-3 whitespace-pre-wrap break-words text-11-regular">{errorMessage()}</pre>
-        </div>
-        <button class="px-3 py-2 rounded bg-primary text-primary-foreground" onClick={() => void restartApp()}>
-          {t("error.page.action.restart")}
-        </button>
-        <div data-tauri-decorum-tb class="flex flex-row absolute top-0 right-0 z-10 h-10" />
-      </div>
+      {(data) => props.children(data)}
     </Show>
   )
 }