flotilla/electron/main.ts
Gaurav Chaudhary f8565aecb0 Add desktop live reload and explicit local startup
Refs #51

Signed-off-by: Gaurav Chaudhary <chaudharygaurav2004@gmail.com>
2026-09-11 17:23:30 +05:30

40 lines
1.4 KiB
TypeScript

import {app} from "electron"
import {createCapacitorElectronApp} from "@capawesome/capacitor-electron"
const devServerUrl = process.env.FLOTILLA_DESKTOP_DEV_URL
// Capawesome 0.1.1 has no public option to force local assets over an inherited dev URL.
if (app.isPackaged || process.argv.includes("--desktop-local") || !devServerUrl) {
delete process.env.CAPACITOR_ELECTRON_DEV_SERVER_URL
} else {
const url = new URL(devServerUrl)
if (
url.protocol !== "http:" ||
url.hostname !== "127.0.0.1" ||
devServerUrl !== `${url.origin}/` ||
process.env.CAPACITOR_ELECTRON_DEV_SERVER_URL !== devServerUrl
) {
throw new Error("Desktop development requires the matching loopback URL from cap run.")
}
}
createCapacitorElectronApp({
window: {width: 1200, height: 800},
csp: {
// SvelteKit's meta CSP owns scripts; the platform default would block its hashed bootstrap.
policy: "base-uri 'self'; object-src 'none'",
// Capawesome 0.1.1's dev policy, plus Flotilla's analytics origin and blob workers.
devPolicy: [
"default-src 'self'",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://plausible.coracle.social",
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data: blob:",
"font-src 'self' data:",
"media-src 'self' blob:",
"connect-src 'self' https: wss: ws: http:",
"worker-src 'self' blob:",
"object-src 'none'",
"base-uri 'self'",
].join("; "),
},
})