From 8e1dc705c9676463c4c7918e5051cf6811455512 Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Fri, 20 Feb 2026 10:59:59 -0600
Subject: [PATCH 1/2] wip(app): beta badge
---
packages/app/src/components/titlebar.tsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx
index a90178abdd87..5ef6a2150bff 100644
--- a/packages/app/src/components/titlebar.tsx
+++ b/packages/app/src/components/titlebar.tsx
@@ -287,6 +287,9 @@ export function Titlebar() {
+
+ BETA
+
From 0cfcee6f497a47e389c3dd922c45ac1f88bed969 Mon Sep 17 00:00:00 2001
From: Brendan Allan
Date: Thu, 16 Apr 2026 13:56:12 +0800
Subject: [PATCH 2/2] derive badge from OPENCODE_CHANNEL + animate
---
packages/app/src/components/titlebar.tsx | 76 ++++++++++---------
packages/app/src/env.d.ts | 1 +
.../desktop-electron/electron.vite.config.ts | 3 +
3 files changed, 44 insertions(+), 36 deletions(-)
diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx
index 5ef6a2150bff..b7edb85ede09 100644
--- a/packages/app/src/components/titlebar.tsx
+++ b/packages/app/src/components/titlebar.tsx
@@ -252,44 +252,48 @@ export function Titlebar() {
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ {["beta", "dev"].includes(import.meta.env.VITE_OPENCODE_CHANNEL) && (
+
+ {import.meta.env.VITE_OPENCODE_CHANNEL.toUpperCase()}
+
+ )}
+
-
-
- BETA
-
diff --git a/packages/app/src/env.d.ts b/packages/app/src/env.d.ts
index 89721f34f294..22e52f9919fb 100644
--- a/packages/app/src/env.d.ts
+++ b/packages/app/src/env.d.ts
@@ -3,6 +3,7 @@ import "solid-js"
interface ImportMetaEnv {
readonly VITE_OPENCODE_SERVER_HOST: string
readonly VITE_OPENCODE_SERVER_PORT: string
+ readonly OPENCODE_CHANNEL?: "dev" | "beta" | "prod"
}
interface ImportMeta {
diff --git a/packages/desktop-electron/electron.vite.config.ts b/packages/desktop-electron/electron.vite.config.ts
index e2b296a3e207..d0e6c42b6c8c 100644
--- a/packages/desktop-electron/electron.vite.config.ts
+++ b/packages/desktop-electron/electron.vite.config.ts
@@ -60,6 +60,9 @@ export default defineConfig({
plugins: [appPlugin],
publicDir: "../../../app/public",
root: "src/renderer",
+ define: {
+ "import.meta.env.VITE_OPENCODE_CHANNEL": JSON.stringify(channel),
+ },
build: {
rollupOptions: {
input: {