From 96f3f527f40f41ad2562bcd8399e22a7fe91556b Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 17:16:25 -0600 Subject: [PATCH] feat(config): add Electron Forge configuration for packaging and distribution, including support for multiple platforms and fuses plugin --- forge.config.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 forge.config.js diff --git a/forge.config.js b/forge.config.js new file mode 100644 index 0000000..72ba0b5 --- /dev/null +++ b/forge.config.js @@ -0,0 +1,73 @@ +const { FusesPlugin } = require('@electron-forge/plugin-fuses'); +const { FuseV1Options, FuseVersion } = require('@electron/fuses'); + +module.exports = { + packagerConfig: { + asar: { + unpack: 'build/exe/**/*', + }, + executableName: 'reticulum-meshchatx', + name: 'Reticulum MeshChatX', + appBundleId: 'com.sudoivan.reticulummeshchatx', + icon: 'electron/build/icon', + // osxSign: {}, // Uncomment and configure for macOS signing + // osxNotarize: { ... }, // Uncomment and configure for macOS notarization + }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-squirrel', + config: { + name: 'reticulum_meshchatx', + }, + }, + { + name: '@electron-forge/maker-zip', + platforms: ['darwin'], + }, + { + name: '@electron-forge/maker-deb', + config: { + options: { + maintainer: 'Sudo-Ivan', + homepage: 'https://git.quad4.io/RNS-Things/MeshChatX', + categories: ['Network'], + }, + }, + }, + { + name: '@electron-forge/maker-rpm', + config: {}, + }, + { + name: '@electron-forge/maker-flatpak', + config: { + options: { + categories: ['Network'], + runtime: 'org.freedesktop.Platform', + runtimeVersion: '23.08', + sdk: 'org.freedesktop.Sdk', + base: 'org.electronjs.Electron2.BaseApp', + baseVersion: '23.08', + }, + }, + }, + ], + plugins: [ + { + name: '@electron-forge/plugin-auto-unpack-natives', + config: {}, + }, + // Fuses are used to enable/disable various Electron functionality + // at package time, before code signing the application + new FusesPlugin({ + version: FuseVersion.V1, + [FuseV1Options.RunAsNode]: false, + [FuseV1Options.EnableCookieEncryption]: true, + [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, + [FuseV1Options.EnableNodeCliInspectArguments]: false, + [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, + [FuseV1Options.OnlyLoadAppFromAsar]: true, + }), + ], +};