Electron desktop wrapper for ADT Studio.
This app packages the Studio frontend and API sidecar into a desktop build using electron-vite + electron-builder.
During build, it:
- builds Studio and API artifacts first;
- bundles Electron main/preload/renderer into
out/; - copies generated assets needed by Electron;
- creates platform installers in
release/.
- Node.js 20+
pnpm- Java (required for Windows signing via
jsign.jar) - Platform toolchains for your target OS:
- Windows: code signing token (Azure Trusted Signing)
- macOS: Apple Developer credentials (for notarization)
From repository root:
pnpm installpnpm buildRun a local production-like preview (build first, then launch):
pnpm --filter @adt/desktop startFrom repository root:
# Build unpacked app (no installer)
pnpm --filter @adt/desktop build:unpack
# Build Windows installer (NSIS)
pnpm --filter @adt/desktop build:win
# Build macOS package (DMG)
pnpm --filter @adt/desktop build:mac
# Build Linux package (AppImage)
pnpm --filter @adt/desktop build:linuxAll generated artifacts are written to:
apps/desktop/release/
-
Windows signing is handled by
scripts/sign-windows.js, wired throughelectron-builder'swin.signcallback. It is invoked once per.exe(both the inner app and the NSIS installer) and signs viajsign+ Azure Trusted Signing. Requires:AZ_TOKEN— short-lived access token (CI obtains it via OAuth)jsign.jarnext to this directory (CI downloads it; locally, download from Maven Central intoapps/desktop/jsign.jar)javaon PATH
-
macOS signing + notarization is handled by
electron-builder's built-in support — no custom script. Requires:CSC_LINKandCSC_KEY_PASSWORDfor the Developer ID certificateAPPLE_ID,APPLE_APP_SPECIFIC_PASSWORD,APPLE_TEAM_IDfor notarytool
To skip signing in CI or local tests:
SKIP_NOTARIZE=true pnpm --filter @adt/desktop build:win- Enter the desktop app folder:
cd apps/desktop - You may need to grant execute permission to the script (optional).
- Run
mac-sign-release:./scripts/mac-sign-release.sh
- App bundle identifier is configured in
electron-builder.js(appId). - macOS entitlements are in
build/entitlements.mac.plist. - Installer naming and platform targets are also configured in
electron-builder.js.