From 2269677deda0cf8d1bd66df44ba89d8fae38f49b Mon Sep 17 00:00:00 2001 From: Naiyuan Qing <145280634+NevilleQingNY@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:03:18 +0800 Subject: [PATCH] fix(desktop): restructure to standard electron-vite layout for HMR - Move renderer files to src/renderer/src/ (electron-vite standard) - Move index.html to src/renderer/ - Remove root: '.' config that broke HMR - Use ELECTRON_RENDERER_URL instead of VITE_DEV_SERVER_URL - Update tsconfig paths for new structure This fixes hot module replacement not working after the monorepo restructure. The previous non-standard directory layout with root: '.' caused electron-vite's HMR to fail silently. Co-Authored-By: Claude Opus 4.5 --- apps/desktop/electron.vite.config.ts | 10 +--------- apps/desktop/src/main/index.ts | 3 ++- apps/desktop/{ => src/renderer}/index.html | 2 +- apps/desktop/src/{ => renderer/src}/App.tsx | 0 .../src}/components/agent-settings-dialog.tsx | 0 .../{ => renderer/src}/components/api-key-dialog.tsx | 0 .../{ => renderer/src}/components/cron-job-list.tsx | 0 .../src}/components/device-confirm-dialog.tsx | 0 .../src/{ => renderer/src}/components/device-list.tsx | 0 .../src/{ => renderer/src}/components/local-chat.tsx | 0 .../src/{ => renderer/src}/components/oauth-dialog.tsx | 0 .../src/{ => renderer/src}/components/qr-code.tsx | 0 .../src/{ => renderer/src}/components/remote-chat.tsx | 0 .../src/{ => renderer/src}/components/skill-list.tsx | 0 .../src/{ => renderer/src}/components/tool-list.tsx | 0 .../src/{ => renderer/src}/hooks/use-channels.ts | 0 .../src/{ => renderer/src}/hooks/use-cron-jobs.ts | 0 .../src/{ => renderer/src}/hooks/use-devices.ts | 0 .../src/{ => renderer/src}/hooks/use-heartbeat.ts | 0 apps/desktop/src/{ => renderer/src}/hooks/use-hub.ts | 0 .../src/{ => renderer/src}/hooks/use-local-chat.ts | 0 .../src/{ => renderer/src}/hooks/use-provider.ts | 0 .../desktop/src/{ => renderer/src}/hooks/use-skills.ts | 0 apps/desktop/src/{ => renderer/src}/hooks/use-tools.ts | 0 .../src/{ => renderer/src}/lib/parse-user-agent.ts | 0 apps/desktop/src/{ => renderer/src}/main.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/channels.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/chat.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/crons.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/home.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/layout.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/skills.tsx | 0 apps/desktop/src/{ => renderer/src}/pages/tools.tsx | 0 .../desktop/src/{ => renderer/src}/stores/chat-mode.ts | 0 apps/desktop/src/{ => renderer/src}/vite-env.d.ts | 0 apps/desktop/tsconfig.json | 2 +- 36 files changed, 5 insertions(+), 12 deletions(-) rename apps/desktop/{ => src/renderer}/index.html (77%) rename apps/desktop/src/{ => renderer/src}/App.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/agent-settings-dialog.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/api-key-dialog.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/cron-job-list.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/device-confirm-dialog.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/device-list.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/local-chat.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/oauth-dialog.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/qr-code.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/remote-chat.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/skill-list.tsx (100%) rename apps/desktop/src/{ => renderer/src}/components/tool-list.tsx (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-channels.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-cron-jobs.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-devices.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-heartbeat.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-hub.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-local-chat.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-provider.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-skills.ts (100%) rename apps/desktop/src/{ => renderer/src}/hooks/use-tools.ts (100%) rename apps/desktop/src/{ => renderer/src}/lib/parse-user-agent.ts (100%) rename apps/desktop/src/{ => renderer/src}/main.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/channels.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/chat.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/crons.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/home.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/layout.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/skills.tsx (100%) rename apps/desktop/src/{ => renderer/src}/pages/tools.tsx (100%) rename apps/desktop/src/{ => renderer/src}/stores/chat-mode.ts (100%) rename apps/desktop/src/{ => renderer/src}/vite-env.d.ts (100%) diff --git a/apps/desktop/electron.vite.config.ts b/apps/desktop/electron.vite.config.ts index 6b2d9996..a8502ec8 100644 --- a/apps/desktop/electron.vite.config.ts +++ b/apps/desktop/electron.vite.config.ts @@ -18,18 +18,10 @@ export default defineConfig({ }, }, renderer: { - root: '.', - build: { - rollupOptions: { - input: { - index: path.resolve(__dirname, 'index.html'), - }, - }, - }, plugins: [react(), tailwindcss()], resolve: { alias: { - '@': path.resolve(__dirname, 'src'), + '@': path.resolve(__dirname, 'src/renderer/src'), }, }, }, diff --git a/apps/desktop/src/main/index.ts b/apps/desktop/src/main/index.ts index efcf3036..dbd0bb49 100644 --- a/apps/desktop/src/main/index.ts +++ b/apps/desktop/src/main/index.ts @@ -55,7 +55,8 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)) // APP_ROOT points to apps/desktop (two levels up from out/main/) process.env.APP_ROOT = path.join(__dirname, '../..') -export const VITE_DEV_SERVER_URL = process.env['VITE_DEV_SERVER_URL'] +// electron-vite uses ELECTRON_RENDERER_URL for dev server +export const VITE_DEV_SERVER_URL = process.env['ELECTRON_RENDERER_URL'] // electron-vite outputs to out/ directory export const MAIN_DIST = path.join(__dirname) export const RENDERER_DIST = path.join(__dirname, '../renderer') diff --git a/apps/desktop/index.html b/apps/desktop/src/renderer/index.html similarity index 77% rename from apps/desktop/index.html rename to apps/desktop/src/renderer/index.html index d17771da..c16bdc87 100644 --- a/apps/desktop/index.html +++ b/apps/desktop/src/renderer/index.html @@ -7,6 +7,6 @@
- + diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/renderer/src/App.tsx similarity index 100% rename from apps/desktop/src/App.tsx rename to apps/desktop/src/renderer/src/App.tsx diff --git a/apps/desktop/src/components/agent-settings-dialog.tsx b/apps/desktop/src/renderer/src/components/agent-settings-dialog.tsx similarity index 100% rename from apps/desktop/src/components/agent-settings-dialog.tsx rename to apps/desktop/src/renderer/src/components/agent-settings-dialog.tsx diff --git a/apps/desktop/src/components/api-key-dialog.tsx b/apps/desktop/src/renderer/src/components/api-key-dialog.tsx similarity index 100% rename from apps/desktop/src/components/api-key-dialog.tsx rename to apps/desktop/src/renderer/src/components/api-key-dialog.tsx diff --git a/apps/desktop/src/components/cron-job-list.tsx b/apps/desktop/src/renderer/src/components/cron-job-list.tsx similarity index 100% rename from apps/desktop/src/components/cron-job-list.tsx rename to apps/desktop/src/renderer/src/components/cron-job-list.tsx diff --git a/apps/desktop/src/components/device-confirm-dialog.tsx b/apps/desktop/src/renderer/src/components/device-confirm-dialog.tsx similarity index 100% rename from apps/desktop/src/components/device-confirm-dialog.tsx rename to apps/desktop/src/renderer/src/components/device-confirm-dialog.tsx diff --git a/apps/desktop/src/components/device-list.tsx b/apps/desktop/src/renderer/src/components/device-list.tsx similarity index 100% rename from apps/desktop/src/components/device-list.tsx rename to apps/desktop/src/renderer/src/components/device-list.tsx diff --git a/apps/desktop/src/components/local-chat.tsx b/apps/desktop/src/renderer/src/components/local-chat.tsx similarity index 100% rename from apps/desktop/src/components/local-chat.tsx rename to apps/desktop/src/renderer/src/components/local-chat.tsx diff --git a/apps/desktop/src/components/oauth-dialog.tsx b/apps/desktop/src/renderer/src/components/oauth-dialog.tsx similarity index 100% rename from apps/desktop/src/components/oauth-dialog.tsx rename to apps/desktop/src/renderer/src/components/oauth-dialog.tsx diff --git a/apps/desktop/src/components/qr-code.tsx b/apps/desktop/src/renderer/src/components/qr-code.tsx similarity index 100% rename from apps/desktop/src/components/qr-code.tsx rename to apps/desktop/src/renderer/src/components/qr-code.tsx diff --git a/apps/desktop/src/components/remote-chat.tsx b/apps/desktop/src/renderer/src/components/remote-chat.tsx similarity index 100% rename from apps/desktop/src/components/remote-chat.tsx rename to apps/desktop/src/renderer/src/components/remote-chat.tsx diff --git a/apps/desktop/src/components/skill-list.tsx b/apps/desktop/src/renderer/src/components/skill-list.tsx similarity index 100% rename from apps/desktop/src/components/skill-list.tsx rename to apps/desktop/src/renderer/src/components/skill-list.tsx diff --git a/apps/desktop/src/components/tool-list.tsx b/apps/desktop/src/renderer/src/components/tool-list.tsx similarity index 100% rename from apps/desktop/src/components/tool-list.tsx rename to apps/desktop/src/renderer/src/components/tool-list.tsx diff --git a/apps/desktop/src/hooks/use-channels.ts b/apps/desktop/src/renderer/src/hooks/use-channels.ts similarity index 100% rename from apps/desktop/src/hooks/use-channels.ts rename to apps/desktop/src/renderer/src/hooks/use-channels.ts diff --git a/apps/desktop/src/hooks/use-cron-jobs.ts b/apps/desktop/src/renderer/src/hooks/use-cron-jobs.ts similarity index 100% rename from apps/desktop/src/hooks/use-cron-jobs.ts rename to apps/desktop/src/renderer/src/hooks/use-cron-jobs.ts diff --git a/apps/desktop/src/hooks/use-devices.ts b/apps/desktop/src/renderer/src/hooks/use-devices.ts similarity index 100% rename from apps/desktop/src/hooks/use-devices.ts rename to apps/desktop/src/renderer/src/hooks/use-devices.ts diff --git a/apps/desktop/src/hooks/use-heartbeat.ts b/apps/desktop/src/renderer/src/hooks/use-heartbeat.ts similarity index 100% rename from apps/desktop/src/hooks/use-heartbeat.ts rename to apps/desktop/src/renderer/src/hooks/use-heartbeat.ts diff --git a/apps/desktop/src/hooks/use-hub.ts b/apps/desktop/src/renderer/src/hooks/use-hub.ts similarity index 100% rename from apps/desktop/src/hooks/use-hub.ts rename to apps/desktop/src/renderer/src/hooks/use-hub.ts diff --git a/apps/desktop/src/hooks/use-local-chat.ts b/apps/desktop/src/renderer/src/hooks/use-local-chat.ts similarity index 100% rename from apps/desktop/src/hooks/use-local-chat.ts rename to apps/desktop/src/renderer/src/hooks/use-local-chat.ts diff --git a/apps/desktop/src/hooks/use-provider.ts b/apps/desktop/src/renderer/src/hooks/use-provider.ts similarity index 100% rename from apps/desktop/src/hooks/use-provider.ts rename to apps/desktop/src/renderer/src/hooks/use-provider.ts diff --git a/apps/desktop/src/hooks/use-skills.ts b/apps/desktop/src/renderer/src/hooks/use-skills.ts similarity index 100% rename from apps/desktop/src/hooks/use-skills.ts rename to apps/desktop/src/renderer/src/hooks/use-skills.ts diff --git a/apps/desktop/src/hooks/use-tools.ts b/apps/desktop/src/renderer/src/hooks/use-tools.ts similarity index 100% rename from apps/desktop/src/hooks/use-tools.ts rename to apps/desktop/src/renderer/src/hooks/use-tools.ts diff --git a/apps/desktop/src/lib/parse-user-agent.ts b/apps/desktop/src/renderer/src/lib/parse-user-agent.ts similarity index 100% rename from apps/desktop/src/lib/parse-user-agent.ts rename to apps/desktop/src/renderer/src/lib/parse-user-agent.ts diff --git a/apps/desktop/src/main.tsx b/apps/desktop/src/renderer/src/main.tsx similarity index 100% rename from apps/desktop/src/main.tsx rename to apps/desktop/src/renderer/src/main.tsx diff --git a/apps/desktop/src/pages/channels.tsx b/apps/desktop/src/renderer/src/pages/channels.tsx similarity index 100% rename from apps/desktop/src/pages/channels.tsx rename to apps/desktop/src/renderer/src/pages/channels.tsx diff --git a/apps/desktop/src/pages/chat.tsx b/apps/desktop/src/renderer/src/pages/chat.tsx similarity index 100% rename from apps/desktop/src/pages/chat.tsx rename to apps/desktop/src/renderer/src/pages/chat.tsx diff --git a/apps/desktop/src/pages/crons.tsx b/apps/desktop/src/renderer/src/pages/crons.tsx similarity index 100% rename from apps/desktop/src/pages/crons.tsx rename to apps/desktop/src/renderer/src/pages/crons.tsx diff --git a/apps/desktop/src/pages/home.tsx b/apps/desktop/src/renderer/src/pages/home.tsx similarity index 100% rename from apps/desktop/src/pages/home.tsx rename to apps/desktop/src/renderer/src/pages/home.tsx diff --git a/apps/desktop/src/pages/layout.tsx b/apps/desktop/src/renderer/src/pages/layout.tsx similarity index 100% rename from apps/desktop/src/pages/layout.tsx rename to apps/desktop/src/renderer/src/pages/layout.tsx diff --git a/apps/desktop/src/pages/skills.tsx b/apps/desktop/src/renderer/src/pages/skills.tsx similarity index 100% rename from apps/desktop/src/pages/skills.tsx rename to apps/desktop/src/renderer/src/pages/skills.tsx diff --git a/apps/desktop/src/pages/tools.tsx b/apps/desktop/src/renderer/src/pages/tools.tsx similarity index 100% rename from apps/desktop/src/pages/tools.tsx rename to apps/desktop/src/renderer/src/pages/tools.tsx diff --git a/apps/desktop/src/stores/chat-mode.ts b/apps/desktop/src/renderer/src/stores/chat-mode.ts similarity index 100% rename from apps/desktop/src/stores/chat-mode.ts rename to apps/desktop/src/renderer/src/stores/chat-mode.ts diff --git a/apps/desktop/src/vite-env.d.ts b/apps/desktop/src/renderer/src/vite-env.d.ts similarity index 100% rename from apps/desktop/src/vite-env.d.ts rename to apps/desktop/src/renderer/src/vite-env.d.ts diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json index bacb42a6..56a23f01 100644 --- a/apps/desktop/tsconfig.json +++ b/apps/desktop/tsconfig.json @@ -15,7 +15,7 @@ "jsx": "react-jsx", "baseUrl": ".", "paths": { - "@/*": ["./src/*"], + "@/*": ["./src/renderer/src/*"], "@multica/ui/*": ["../../packages/ui/src/*"], "@multica/store/*": ["../../packages/store/src/*"] },