feat: integrate Electron for desktop app
- Add electron-vite + Electron Forge tooling - Create Electron main process with embedded Express server - Create preload script with native dialog IPC bridge - Refactor server.ts to export createExpressApp() (dual web/electron) - Adapt renderQueue.ts for packaged binaries + pre-built bundle - Add ensureBrowser() for Chrome Headless Shell pre-download - Add scripts/bundle-remotion.js for packaging - Data persists in ~/Library/Application Support/Bradly/ - Web mode preserved via npm run dev:web
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Electron Forge Configuration — Bradly Desktop App
|
||||
*
|
||||
* Handles packaging and creating distributable installers.
|
||||
* Currently targets macOS (.dmg) only.
|
||||
*/
|
||||
import type { ForgeConfig } from '@electron-forge/shared-types';
|
||||
import { MakerDMG } from '@electron-forge/maker-dmg';
|
||||
|
||||
const config: ForgeConfig = {
|
||||
packagerConfig: {
|
||||
name: 'Bradly',
|
||||
executableName: 'bradly',
|
||||
asar: {
|
||||
// Remotion compositor binaries MUST be outside app.asar
|
||||
// because they are native executables that need direct filesystem access
|
||||
unpack: '{**/node_modules/@remotion/compositor-*/**,**/node_modules/@remotion/renderer/**}',
|
||||
},
|
||||
// Ignore development files during packaging
|
||||
ignore: [
|
||||
/^\/src$/,
|
||||
/^\/scripts$/,
|
||||
/^\/uploads$/,
|
||||
/^\/renders$/,
|
||||
/^\/\.vscode$/,
|
||||
/^\/\.git$/,
|
||||
/^\/\.env/,
|
||||
/^\/\.antigravity$/,
|
||||
/^\/vite\.config\.ts$/,
|
||||
/^\/electron\.vite\.config\.ts$/,
|
||||
/^\/tsconfig\.json$/,
|
||||
/^\/ABOUT\.md$/,
|
||||
/^\/AGENTS\.md$/,
|
||||
/^\/README\.md$/,
|
||||
/^\/schema\.sql$/,
|
||||
/^\/backend_endpoint\.py$/,
|
||||
],
|
||||
},
|
||||
makers: [
|
||||
new MakerDMG({
|
||||
format: 'ULFO',
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
||||
Reference in New Issue
Block a user