This document explains how the Windows desktop app works, how it is packaged, and how to verify that releases are safe to ship.
The Windows desktop app is designed so non-technical users can install a local video generator without manually setting up Node.js, Python, or FFmpeg.
The current desktop flow is more resilient than the original implementation:
edge-ttsThe Windows app is made of these parts:
resources/app-bundleEdge-TTSCurrent desktop modules:
electron/electron-main.tselectron/debug-runtime.tselectron/dependency-service.tselectron/server-manager.tselectron/window-manager.tselectron/ipc.tsAt launch, the desktop app:
The setup window is now a real control surface:
Install Missing Dependencies repairs the bundled runtime when possibleLaunch App starts the backend and opens the portalSkip also starts the app instead of silently closing the setup windowVoice generation on Windows now follows this order:
edge-tts.exe-m edge_ttsedge-ttsSystem.SpeechWhy this matters:
edge-tts installedThe new Windows offline speech fallback is especially important for fresh installs and partially broken voice runtimes.
The desktop build now includes these protections:
contextIsolation: truesandbox: truewindow.open() are guardedIf you must disable Chromium web security for debugging:
set REMOTION_DISABLE_WEB_SECURITY=1
Do not enable this in normal releases unless you fully understand the risk.
npm run electron:verify-bundle
This checks source-side requirements such as:
requirements.txtportable-python/python.exeportable-python/Scripts/edge-tts.exenpm run electron:compile
npm run electron:debug
This enables:
console.*, window.onerror, and unhandled rejection forwarding into desktop diagnosticsnpm run electron:build
This now performs:
npm run electron:pack
The unpacked app is typically created in:
release/win-unpacked/
npm run electron:verify-release
This checks the unpacked release for:
resources/app-bundle/requirements.txtedge-tts.exenpm run electron:release
This requires a valid GH_TOKEN for GitHub publishing.
package.jsonThe app should no longer stop at that single point of failure.
Check these in order:
npm run electron:verify-bundlenpm run electron:verify-releaseIf Windows offline speech is available, the app can still narrate even when Edge-TTS is unavailable.
That behavior was fixed. If it happens again, treat it as a bug and check:
Possible causes:
Use:
npm run electron:verify-release
and inspect the startup error dialog if one appears.
Run:
npm run electron:debug
Then check:
By default these are written under:
%LOCALAPPDATA%\Automated Video Generator\
Important subfolders:
logs\diagnostics\crashDumps\The tray menu now also includes:
Open Desktop LogOpen Diagnostics FolderToggle DevToolsThat usually means your dev machine is using globally installed tools that are not actually bundled.
Always verify the packaged output, not just the dev environment.
Important desktop files:
electron/electron-main.tselectron/debug-runtime.tselectron/dependency-service.tselectron/server-manager.tselectron/window-manager.tselectron/ipc.tselectron/electron-preload.tselectron/electron-setup.htmlscripts/verify-desktop-bundle.cjsscripts/setup-portable-python.cjselectron-builder.config.jssrc/lib/voice-generator.ts