From 0a9b7fafed980c6333206884fe2a9b94458c2ac5 Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Sun, 23 Nov 2025 10:37:45 +0000 Subject: [PATCH] Align Tauri dev flow with shared renderer --- .github/workflows/build-and-upload.yml | 3 -- packages/tauri-app/package.json | 4 ++ packages/tauri-app/scripts/dev-prep.js | 46 ++++++++++++++++++++ packages/tauri-app/src-tauri/tauri.conf.json | 5 ++- 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 packages/tauri-app/scripts/dev-prep.js diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 898eefc1..0f016523 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -337,9 +337,6 @@ jobs: - name: Ensure rollup native binary run: npm install @rollup/rollup-linux-x64-gnu --no-save - - name: Bundle server assets for Tauri - run: npm run bundle:server --workspace @codenomad/tauri-app - - name: Build Linux bundle (Tauri) run: npm run build --workspace @codenomad/tauri-app diff --git a/packages/tauri-app/package.json b/packages/tauri-app/package.json index c1621fcd..c110e616 100644 --- a/packages/tauri-app/package.json +++ b/packages/tauri-app/package.json @@ -4,10 +4,14 @@ "private": true, "scripts": { "dev": "tauri dev", + "dev:ui": "npm run dev --workspace @codenomad/ui", + "dev:prep": "node ./scripts/dev-prep.js", + "dev:bootstrap": "npm run dev:prep && npm run dev:ui", "prebuild": "node ./scripts/prebuild.js", "bundle:server": "npm --workspace @neuralnomads/codenomad run build && npm run prebuild", "build": "tauri build" }, + "devDependencies": { "@tauri-apps/cli": "^2.9.4" } diff --git a/packages/tauri-app/scripts/dev-prep.js b/packages/tauri-app/scripts/dev-prep.js new file mode 100644 index 00000000..abbb4c64 --- /dev/null +++ b/packages/tauri-app/scripts/dev-prep.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +const fs = require("fs") +const path = require("path") +const { execSync } = require("child_process") + +const root = path.resolve(__dirname, "..") +const workspaceRoot = path.resolve(root, "..", "..") +const uiRoot = path.resolve(root, "..", "ui") +const uiDist = path.resolve(uiRoot, "src", "renderer", "dist") +const uiLoadingDest = path.resolve(root, "src-tauri", "resources", "ui-loading") + +function ensureUiBuild() { + const loadingHtml = path.join(uiDist, "loading.html") + if (fs.existsSync(loadingHtml)) { + return + } + + console.log("[dev-prep] UI loader build missing; running workspace build…") + execSync("npm --workspace @codenomad/ui run build", { + cwd: workspaceRoot, + stdio: "inherit", + }) + + if (!fs.existsSync(loadingHtml)) { + throw new Error("[dev-prep] failed to produce loading.html after UI build") + } +} + +function copyUiLoadingAssets() { + const loadingSource = path.join(uiDist, "loading.html") + const assetsSource = path.join(uiDist, "assets") + + fs.rmSync(uiLoadingDest, { recursive: true, force: true }) + fs.mkdirSync(uiLoadingDest, { recursive: true }) + + fs.copyFileSync(loadingSource, path.join(uiLoadingDest, "loading.html")) + if (fs.existsSync(assetsSource)) { + fs.cpSync(assetsSource, path.join(uiLoadingDest, "assets"), { recursive: true }) + } + + console.log(`[dev-prep] copied loader bundle from ${uiDist}`) +} + +ensureUiBuild() +copyUiLoadingAssets() diff --git a/packages/tauri-app/src-tauri/tauri.conf.json b/packages/tauri-app/src-tauri/tauri.conf.json index b263485c..1f66ec67 100644 --- a/packages/tauri-app/src-tauri/tauri.conf.json +++ b/packages/tauri-app/src-tauri/tauri.conf.json @@ -4,10 +4,13 @@ "version": "0.1.0", "identifier": "ai.opencode.client", "build": { - "beforeDevCommand": "npm run prebuild", + "beforeDevCommand": "npm run dev:bootstrap", "beforeBuildCommand": "npm run bundle:server", "frontendDist": "resources/ui-loading" }, + + + "app": { "withGlobalTauri": true, "windows": [