From 2db1e2d75065b11757bd37f1012976fead461b0f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 14 Apr 2026 22:50:06 +0300 Subject: [PATCH] fix(server): HMR WS port interferes between server & desktop --- apps/server/src/routes/assets.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index 017a054a45..7a7b06f164 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -6,6 +6,7 @@ import type serveStatic from "serve-static"; import { assetUrlFragment } from "../services/asset_path.js"; import auth from "../services/auth.js"; +import port from "../services/port.js"; import { getResourceDir, isDev } from "../services/utils.js"; import { doubleCsrfProtection as csrfMiddleware } from "./csrf_protection.js"; @@ -35,7 +36,15 @@ async function register(app: express.Application) { const { createServer: createViteServer } = await import("vite"); const clientDir = path.join(srcRoot, "../client"); const vite = await createViteServer({ - server: { middlewareMode: true }, + server: { + middlewareMode: true, + hmr: { + // Derive a unique HMR port from the application port so + // multiple dev instances (e.g. server on 8080, desktop on + // 37742) don't all fight over Vite's default port 24678. + port: port + 10 + } + }, appType: "spa", configFile: path.join(clientDir, "vite.config.mts"), base: `/${assetUrlFragment}/`