From 5d482500bc6a8ac4f46c615e86e6f76bdd225e24 Mon Sep 17 00:00:00 2001 From: Silberengel Date: Thu, 16 Apr 2026 22:10:49 +0200 Subject: [PATCH] bug-fixes --- electron/main.cjs | 5 ++++- package-lock.json | 4 ++-- package.json | 4 ++-- vite.config.ts | 32 +++++++++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/electron/main.cjs b/electron/main.cjs index 51e72263..42d3cacb 100644 --- a/electron/main.cjs +++ b/electron/main.cjs @@ -340,7 +340,10 @@ function createWindow() { preload: path.join(__dirname, 'preload.cjs'), contextIsolation: true, nodeIntegration: false, - sandbox: true + sandbox: true, + // Packaged shell is loopback `http://127.0.0.1` → public HTTPS APIs; Chromium CORS blocks + // renderer `fetch` unless disabled for this window (IPC + net.fetch still used as defense). + webSecurity: !app.isPackaged } }) diff --git a/package-lock.json b/package-lock.json index 744f48e2..30ad7113 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "imwald", - "version": "23.0.10", + "version": "23.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "imwald", - "version": "23.0.10", + "version": "23.0.11", "license": "MIT", "dependencies": { "@asciidoctor/core": "^3.0.4", diff --git a/package.json b/package.json index 6f8c69e8..651f5fb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "imwald", - "version": "23.0.10", + "version": "23.0.11", "description": "Imwald — a user-friendly Nostr client focused on relay feed browsing, publications, and relay discovery", "private": true, "type": "module", @@ -34,7 +34,7 @@ "i18n:gaps": "npx tsx scripts/export-en-parity-gaps.ts", "i18n:translate-de": "PYTHONUNBUFFERED=1 .venv-i18n/bin/python scripts/auto_translate_i18n.py de", "electron:dev": "concurrently -k -n vite,electron -c blue,green \"vite --host\" \"wait-on http://127.0.0.1:5173 && cross-env NODE_ENV=development electron .\"", - "build:electron": "cross-env VITE_PROXY_SERVER=https://jumble.imwald.eu VITE_READ_ALOUD_TTS_URL=https://jumble.imwald.eu/api/piper-tts VITE_LANGUAGE_TOOL_URL=https://jumble.imwald.eu/api/languagetool VITE_TRANSLATE_URL=https://jumble.imwald.eu/api/translate tsc -b && vite build", + "build:electron": "tsc -b && vite build --mode electron", "electron:pack": "npm run build:electron && electron-builder", "og:image": "node scripts/generate-og-png.mjs" }, diff --git a/vite.config.ts b/vite.config.ts index d7a74ab6..b2b41af1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -88,11 +88,41 @@ export default defineConfig(({ mode }) => { const devIndexRelayTarget = env.VITE_DEV_INDEX_RELAY_TARGET?.trim() || 'http://127.0.0.1:4000' + /** + * Desktop shell (`vite build --mode electron`): always bake public Imwald API origins into the bundle. + * Relying on `cross-env` in npm scripts alone is fragile (skipped builds, CI, wrong script). `define` + * wins over empty/missing `.env.*` for these keys. + */ + const electronImwaldPublicDefaults = { + VITE_PROXY_SERVER: 'https://jumble.imwald.eu', + VITE_READ_ALOUD_TTS_URL: 'https://jumble.imwald.eu/api/piper-tts', + VITE_LANGUAGE_TOOL_URL: 'https://jumble.imwald.eu/api/languagetool', + VITE_TRANSLATE_URL: 'https://jumble.imwald.eu/api/translate' + } as const + const electronImwaldDefines: Record = + mode === 'electron' + ? Object.fromEntries( + ( + [ + 'VITE_PROXY_SERVER', + 'VITE_READ_ALOUD_TTS_URL', + 'VITE_LANGUAGE_TOOL_URL', + 'VITE_TRANSLATE_URL' + ] as const + ).map((key) => { + const fromEnv = env[key]?.trim() + const fallback = electronImwaldPublicDefaults[key] + return [`import.meta.env.${key}`, JSON.stringify(fromEnv || fallback)] + }) + ) + : {} + return { base: '/', define: { 'import.meta.env.GIT_COMMIT': getGitHash(), - 'import.meta.env.APP_VERSION': getAppVersion() + 'import.meta.env.APP_VERSION': getAppVersion(), + ...electronImwaldDefines }, resolve: { alias: {