feat(desktop): self-contained — bundle the frontend

- build:renderer builds Fabric.Frontend with relative base and copies
  the static bundle into renderer/; dist/pack scripts run it first.
- main.js: production loads renderer/index.html when present (falls
  back to offline.html); packaged app no longer needs a separate
  frontend server (still talks to Center/Guild backends, which the
  login screen points at — file:// origin is CORS-allowed).
- package files += renderer/**; gitignore renderer/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
h z
2026-05-16 12:11:43 +01:00
parent f641d42a8b
commit 97c4e7ad96
4 changed files with 50 additions and 7 deletions

View File

@@ -12,11 +12,12 @@
"scripts": {
"start": "electron .",
"start:dev": "FABRIC_DESKTOP_URL=http://localhost:5173 electron .",
"pack": "electron-builder --dir",
"dist": "electron-builder",
"dist:linux": "electron-builder --linux AppImage deb tar.gz",
"dist:mac": "electron-builder --mac dmg zip",
"dist:win": "electron-builder --win nsis zip"
"build:renderer": "node scripts/build-renderer.mjs",
"pack": "npm run build:renderer && electron-builder --dir",
"dist": "npm run build:renderer && electron-builder",
"dist:linux": "npm run build:renderer && electron-builder --linux AppImage deb tar.gz",
"dist:mac": "npm run build:renderer && electron-builder --mac dmg zip",
"dist:win": "npm run build:renderer && electron-builder --win nsis zip"
},
"devDependencies": {
"electron": "^37.2.1",
@@ -34,7 +35,8 @@
"preload.js",
"offline.html",
"package.json",
"assets/**"
"assets/**",
"renderer/**"
],
"asar": true,
"icon": "build/icon.png",