summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop-electron
diff options
context:
space:
mode:
Diffstat (limited to 'packages/desktop-electron')
-rw-r--r--packages/desktop-electron/electron.vite.config.ts21
-rw-r--r--packages/desktop-electron/package.json2
-rw-r--r--packages/desktop-electron/src/renderer/index.tsx20
3 files changed, 42 insertions, 1 deletions
diff --git a/packages/desktop-electron/electron.vite.config.ts b/packages/desktop-electron/electron.vite.config.ts
index f28c7b6c1..a352e03fd 100644
--- a/packages/desktop-electron/electron.vite.config.ts
+++ b/packages/desktop-electron/electron.vite.config.ts
@@ -1,3 +1,4 @@
+import { sentryVitePlugin } from "@sentry/vite-plugin"
import { defineConfig } from "electron-vite"
import appPlugin from "@opencode-ai/app/vite"
import * as fs from "node:fs/promises"
@@ -12,6 +13,23 @@ const OPENCODE_SERVER_DIST = "../opencode/dist/node"
const nodePtyPkg = `@lydell/node-pty-${process.platform}-${process.arch}`
+const sentry =
+ process.env.SENTRY_AUTH_TOKEN && process.env.SENTRY_ORG && process.env.SENTRY_PROJECT
+ ? sentryVitePlugin({
+ authToken: process.env.SENTRY_AUTH_TOKEN,
+ org: process.env.SENTRY_ORG,
+ project: process.env.SENTRY_PROJECT,
+ telemetry: false,
+ release: {
+ name: process.env.SENTRY_RELEASE ?? process.env.VITE_SENTRY_RELEASE,
+ },
+ sourcemaps: {
+ assets: "./out/renderer/**",
+ filesToDeleteAfterUpload: "./out/renderer/**/*.map",
+ },
+ })
+ : false
+
export default defineConfig({
main: {
define: {
@@ -61,13 +79,14 @@ export default defineConfig({
},
},
renderer: {
- plugins: [appPlugin],
+ plugins: [appPlugin, sentry],
publicDir: "../../../app/public",
root: "src/renderer",
define: {
"import.meta.env.VITE_OPENCODE_CHANNEL": JSON.stringify(channel),
},
build: {
+ sourcemap: true,
rollupOptions: {
input: {
main: "src/renderer/index.html",
diff --git a/packages/desktop-electron/package.json b/packages/desktop-electron/package.json
index 258615951..799270457 100644
--- a/packages/desktop-electron/package.json
+++ b/packages/desktop-electron/package.json
@@ -38,6 +38,8 @@
"@lydell/node-pty": "catalog:",
"@opencode-ai/app": "workspace:*",
"@opencode-ai/ui": "workspace:*",
+ "@sentry/solid": "catalog:",
+ "@sentry/vite-plugin": "catalog:",
"@solid-primitives/i18n": "2.2.1",
"@solid-primitives/storage": "catalog:",
"@solidjs/meta": "catalog:",
diff --git a/packages/desktop-electron/src/renderer/index.tsx b/packages/desktop-electron/src/renderer/index.tsx
index 91ea1ae07..52dd6bef8 100644
--- a/packages/desktop-electron/src/renderer/index.tsx
+++ b/packages/desktop-electron/src/renderer/index.tsx
@@ -14,6 +14,7 @@ import {
ServerConnection,
useCommand,
} from "@opencode-ai/app"
+import * as Sentry from "@sentry/solid"
import type { AsyncStorage } from "@solid-primitives/storage"
import { MemoryRouter } from "@solidjs/router"
import { createEffect, createResource, onCleanup, onMount, Show } from "solid-js"
@@ -29,6 +30,25 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
throw new Error(t("error.dev.rootNotFound"))
}
+if (import.meta.env.VITE_SENTRY_DSN) {
+ Sentry.init({
+ dsn: import.meta.env.VITE_SENTRY_DSN,
+ environment: import.meta.env.VITE_SENTRY_ENVIRONMENT ?? import.meta.env.MODE,
+ release: import.meta.env.VITE_SENTRY_RELEASE ?? `desktop-electron@${pkg.version}`,
+ initialScope: {
+ tags: {
+ platform: "desktop-electron",
+ },
+ },
+ integrations: (integrations) => {
+ return integrations.filter(
+ (i) =>
+ i.name !== "Breadcrumbs" && !(import.meta.env.OPENCODE_CHANNEL === "prod" && i.name === "GlobalHandlers"),
+ )
+ },
+ })
+}
+
void initI18n()
const deepLinkEvent = "opencode:deep-link"