diff --git a/.gitignore b/.gitignore index a547bf3..49080bc 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ dist-ssr *.njsproj *.sln *.sw? +dist-desktop diff --git a/package.json b/package.json index 53b27d7..10247c2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "preview": "vite preview" + "preview": "vite preview", + "build:desktop": "tsc -b && vite build --base=./ --outDir dist-desktop" }, "dependencies": { "axios": "^1.16.0", diff --git a/src/main.tsx b/src/main.tsx index 28ed1a9..9ca2f6e 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,16 +1,21 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import { BrowserRouter } from 'react-router-dom' +import { BrowserRouter, HashRouter } from 'react-router-dom' import './index.css' import App from './App.tsx' import { AuthProvider } from './auth/AuthContext' +// The packaged desktop app loads the bundled SPA over file://, where the +// History API has no server to back path routing — use HashRouter there. +// The web build (served over http behind nginx) keeps clean BrowserRouter URLs. +const Router = window.location.protocol === 'file:' ? HashRouter : BrowserRouter + createRoot(document.getElementById('root')!).render( - + - + , )