diff --git a/packages/studio/src/telemetry/system.ts b/packages/studio/src/telemetry/system.ts index f785c1b96..73d5fc1f1 100644 --- a/packages/studio/src/telemetry/system.ts +++ b/packages/studio/src/telemetry/system.ts @@ -12,6 +12,7 @@ export interface BrowserSystemMeta { device_pixel_ratio: number; timezone_offset_minutes: number; is_mobile: boolean; + studio_version: string; } const EMPTY_META: BrowserSystemMeta = { @@ -22,6 +23,7 @@ const EMPTY_META: BrowserSystemMeta = { device_pixel_ratio: 0, timezone_offset_minutes: 0, is_mobile: false, + studio_version: "dev", }; let cached: BrowserSystemMeta | null = null; @@ -43,6 +45,9 @@ export function getBrowserSystemMeta(): BrowserSystemMeta { device_pixel_ratio: window.devicePixelRatio, timezone_offset_minutes: new Date().getTimezoneOffset(), is_mobile: /Android|iPhone|iPad/i.test(ua), + studio_version: typeof __STUDIO_VERSION__ !== "undefined" ? __STUDIO_VERSION__ : "dev", }; return cached; } + +declare const __STUDIO_VERSION__: string; diff --git a/packages/studio/vite.config.ts b/packages/studio/vite.config.ts index 57713807f..fd213fd6f 100644 --- a/packages/studio/vite.config.ts +++ b/packages/studio/vite.config.ts @@ -21,6 +21,8 @@ async function loadRuntimeSourceForDev( return null; } +const studioPkg = JSON.parse(readFileSync(resolve(__dirname, "package.json"), "utf-8")); + // ── Bridge Hono fetch → Node http response ─────────────────────────────────── async function bridgeHonoResponse( @@ -167,7 +169,7 @@ function devProjectApi(): Plugin { export default defineConfig({ plugins: [react(), devProjectApi()], define: { - __STUDIO_VERSION__: JSON.stringify(process.env.npm_package_version ?? "dev"), + __STUDIO_VERSION__: JSON.stringify(studioPkg.version), }, resolve: { alias: {