Преглед изворни кода

chore: show version on error page

Adam пре 3 месеци
родитељ
комит
76ac1ccb6b

+ 3 - 0
packages/app/src/context/platform.tsx

@@ -5,6 +5,9 @@ export type Platform = {
   /** Platform discriminator */
   platform: "web" | "tauri"
 
+  /** App version */
+  version?: string
+
   /** Open a URL in the default browser */
   openLink(url: string): void
 

+ 2 - 0
packages/app/src/entry.tsx

@@ -2,6 +2,7 @@
 import { render } from "solid-js/web"
 import { App } from "@/app"
 import { Platform, PlatformProvider } from "@/context/platform"
+import pkg from "../package.json"
 
 const root = document.getElementById("root")
 if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
@@ -12,6 +13,7 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
 
 const platform: Platform = {
   platform: "web",
+  version: pkg.version,
   openLink(url: string) {
     window.open(url, "_blank")
   },

+ 16 - 11
packages/app/src/pages/error.tsx

@@ -1,7 +1,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 } from "solid-js"
+import { Component, Show } from "solid-js"
 import { usePlatform } from "@/context/platform"
 import { Icon } from "@opencode-ai/ui/icon"
 
@@ -138,16 +138,21 @@ export const ErrorPage: Component<ErrorPageProps> = (props) => {
         <Button size="large" onClick={platform.restart}>
           Restart
         </Button>
-        <div class="flex items-center justify-center gap-1">
-          Please report this error to the OpenCode team
-          <button
-            type="button"
-            class="flex items-center text-text-interactive-base gap-1"
-            onClick={() => platform.openLink("https://opencode.ai/desktop-feedback")}
-          >
-            <div>on Discord</div>
-            <Icon name="discord" class="text-text-interactive-base" />
-          </button>
+        <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
+            <button
+              type="button"
+              class="flex items-center text-text-interactive-base gap-1"
+              onClick={() => platform.openLink("https://opencode.ai/desktop-feedback")}
+            >
+              <div>on Discord</div>
+              <Icon name="discord" class="text-text-interactive-base" />
+            </button>
+          </div>
+          <Show when={platform.version}>
+            <p class="text-xs text-text-weak">Version: {platform.version}</p>
+          </Show>
         </div>
       </div>
     </div>

+ 2 - 0
packages/app/tsconfig.json

@@ -11,6 +11,7 @@
     "jsx": "preserve",
     "jsxImportSource": "solid-js",
     "allowJs": true,
+    "resolveJsonModule": true,
     "strict": true,
     "noEmit": false,
     "emitDeclarationOnly": true,
@@ -20,5 +21,6 @@
       "@/*": ["./src/*"]
     }
   },
+  "include": ["src", "package.json"],
   "exclude": ["dist", "ts-dist"]
 }

+ 2 - 0
packages/desktop/src/index.tsx

@@ -13,6 +13,7 @@ import { createMenu } from "./menu"
 import { check, Update } from "@tauri-apps/plugin-updater"
 import { invoke } from "@tauri-apps/api/core"
 import { relaunch } from "@tauri-apps/plugin-process"
+import pkg from "../package.json"
 
 const root = document.getElementById("root")
 if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
@@ -25,6 +26,7 @@ let update: Update | null = null
 
 const platform: Platform = {
   platform: "tauri",
+  version: pkg.version,
 
   async openDirectoryPickerDialog(opts) {
     const result = await open({

+ 2 - 1
packages/desktop/tsconfig.json

@@ -9,6 +9,7 @@
     "jsx": "preserve",
     "jsxImportSource": "solid-js",
     "allowJs": true,
+    "resolveJsonModule": true,
     "strict": true,
     "isolatedModules": true,
     "noEmit": true,
@@ -16,5 +17,5 @@
     "outDir": "node_modules/.ts-dist"
   },
   "references": [{ "path": "../app" }],
-  "include": ["src"]
+  "include": ["src", "package.json"]
 }