summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-21 04:11:09 -0600
committerAdam <[email protected]>2025-12-21 04:11:09 -0600
commitbf663905579d198d63ff1641112ec4f682cee09a (patch)
tree1fc97fdbb3b4adf732cac9e7303811da4e2a7c37 /packages
parent184643f0db48fe35dfbb32f5234bd8d28691c234 (diff)
downloadopencode-bf663905579d198d63ff1641112ec4f682cee09a.tar.gz
opencode-bf663905579d198d63ff1641112ec4f682cee09a.zip
fix(desktop): better error reporting
Diffstat (limited to 'packages')
-rw-r--r--packages/desktop/src/pages/error.tsx30
-rw-r--r--packages/desktop/vite.config.ts1
2 files changed, 26 insertions, 5 deletions
diff --git a/packages/desktop/src/pages/error.tsx b/packages/desktop/src/pages/error.tsx
index 352b9f3e8..c7330c298 100644
--- a/packages/desktop/src/pages/error.tsx
+++ b/packages/desktop/src/pages/error.tsx
@@ -62,12 +62,32 @@ function formatInitError(error: InitError): string {
}
}
-function formatError(error: unknown): string {
+function formatErrorChain(error: unknown, depth = 0): string {
if (!error) return "Unknown error"
- if (isInitError(error)) return formatInitError(error)
- if (error instanceof Error) return `${error.name}: ${error.message}\n\n${error.stack}`
- if (typeof error === "string") return error
- return JSON.stringify(error, null, 2)
+
+ const indent = depth > 0 ? `\n${"─".repeat(40)}\nCaused by:\n` : ""
+
+ if (isInitError(error)) {
+ return indent + formatInitError(error)
+ }
+
+ if (error instanceof Error) {
+ const parts = [indent + `${error.name}: ${error.message}`]
+ if (error.stack) {
+ parts.push(error.stack)
+ }
+ if (error.cause) {
+ parts.push(formatErrorChain(error.cause, depth + 1))
+ }
+ return parts.join("\n\n")
+ }
+
+ if (typeof error === "string") return indent + error
+ return indent + JSON.stringify(error, null, 2)
+}
+
+function formatError(error: unknown): string {
+ return formatErrorChain(error, 0)
}
interface ErrorPageProps {
diff --git a/packages/desktop/vite.config.ts b/packages/desktop/vite.config.ts
index a388884cd..57071a894 100644
--- a/packages/desktop/vite.config.ts
+++ b/packages/desktop/vite.config.ts
@@ -10,5 +10,6 @@ export default defineConfig({
},
build: {
target: "esnext",
+ sourcemap: true,
},
})