Compare commits

...

1 Commits

Author SHA1 Message Date
805f0db300 feat(frontend): file:// bundle support (HashRouter + build:desktop)
- main.tsx: use HashRouter when loaded over file:// (packaged desktop
  has no server for History API path routing); keep BrowserRouter on
  the http web build.
- add build:desktop script (vite build --base=./ --outDir dist-desktop)
  so assets resolve under file://; gitignore dist-desktop.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 12:11:34 +01:00
3 changed files with 11 additions and 4 deletions

1
.gitignore vendored
View File

@@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
dist-desktop

View File

@@ -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",

View File

@@ -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(
<StrictMode>
<BrowserRouter>
<Router>
<AuthProvider>
<App />
</AuthProvider>
</BrowserRouter>
</Router>
</StrictMode>,
)