From 3315a7addae57f0fd8462b2682406192a76772cf Mon Sep 17 00:00:00 2001 From: Sajal Jain Date: Thu, 21 Mar 2024 15:30:10 -0700 Subject: [PATCH 1/5] test packaging as non signed dmg --- packages/flowtest-electron/electron-main.js | 18 +---------- packages/flowtest-electron/package.json | 34 ++++++++++++++++++--- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/packages/flowtest-electron/electron-main.js b/packages/flowtest-electron/electron-main.js index 18dddde..cde02c3 100644 --- a/packages/flowtest-electron/electron-main.js +++ b/packages/flowtest-electron/electron-main.js @@ -8,7 +8,7 @@ const registerRendererEventHandlers = require('./src/ipc/collection'); let mainWindow; let watcher; -function createWindow() { +app.on('ready', async () => { // Create the browser window. mainWindow = new BrowserWindow({ width: 1280, @@ -37,19 +37,6 @@ function createWindow() { watcher = new Watcher(); registerRendererEventHandlers(mainWindow, watcher); -} - -// This method will be called when Electron has finished -// initialization and is ready to create browser windows. -// Some APIs can only be used after this event occurs. -app.whenReady().then(() => { - createWindow; - - app.on('activate', function () { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow(); - }); }); // Quit when all windows are closed, except on macOS. There, it's common @@ -59,6 +46,3 @@ app.on('window-all-closed', function () { //if (process.platform !== 'darwin') app.quit(); }); - -// In this file you can include the rest of your app's specific main process -// code. You can also put them in separate files and require them here. diff --git a/packages/flowtest-electron/package.json b/packages/flowtest-electron/package.json index 8c50bc9..b9ee00f 100644 --- a/packages/flowtest-electron/package.json +++ b/packages/flowtest-electron/package.json @@ -1,17 +1,20 @@ { "name": "flowtest-electron", "version": "1.0.0", - "homepage": ".", - "description": "", + "homepage": "https://github.com/FlowTestAI/FlowTest/tree/main", + "description": "OpenSource IDE for designing API powered flows", "main": "electron-main.js", "scripts": { "start": "electron .", - "test": "jest" + "test": "jest", + "pack": "electron-builder --dir", + "dist": "electron-builder" }, - "author": "", + "author": "Sajal Jain ", "license": "MIT", "devDependencies": { "electron": "^29.0.0", + "electron-builder": "^24.13.3", "jest": "^29.7.0" }, "dependencies": { @@ -27,5 +30,28 @@ "openai": "^4.29.1", "path": "^0.12.7", "uuid": "^9.0.1" + }, + "build": { + "appId": "com.flowtestai.app", + "productName": "FlowTestAI", + "directories": { + "buildResources": "resources", + "output": "dist" + }, + "files": [ + "**/*" + ], + "win": { + "target": "nsis" + }, + "mac": { + "target": "dmg" + }, + "linux": { + "target": [ + "AppImage", + "deb" + ] + } } } From 315fe0119af998b02ad2d2066daed73728636563 Mon Sep 17 00:00:00 2001 From: Sajal Jain Date: Thu, 21 Mar 2024 20:46:08 -0700 Subject: [PATCH 2/5] Add identity and notorizing the package --- packages/flowtest-electron/notarize.js | 19 +++++++++++++++++++ packages/flowtest-electron/package.json | 8 +++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 packages/flowtest-electron/notarize.js diff --git a/packages/flowtest-electron/notarize.js b/packages/flowtest-electron/notarize.js new file mode 100644 index 0000000..1e851fa --- /dev/null +++ b/packages/flowtest-electron/notarize.js @@ -0,0 +1,19 @@ +require('dotenv').config(); +const { notarize } = require('electron-notarize'); + +exports.default = async function notarizing(context) { + const { electronPlatformName, appOutDir } = context; + if (electronPlatformName !== 'darwin') { + return; + } + + const appName = context.packager.appInfo.productFilename; + + return await notarize({ + appBundleId: 'com.flowtestai.app', + appPath: `${appOutDir}/${appName}.app`, + appleId: process.env.APPLE_ID, + appleIdPassword: process.env.APPLE_ID_PASSWORD, + teamId: process.env.TEAM_ID, + }); +}; diff --git a/packages/flowtest-electron/package.json b/packages/flowtest-electron/package.json index b9ee00f..4bfb8f7 100644 --- a/packages/flowtest-electron/package.json +++ b/packages/flowtest-electron/package.json @@ -4,6 +4,9 @@ "homepage": "https://github.com/FlowTestAI/FlowTest/tree/main", "description": "OpenSource IDE for designing API powered flows", "main": "electron-main.js", + "bugs": { + "url": "https://github.com/FlowTestAI/FlowTest/issues" + }, "scripts": { "start": "electron .", "test": "jest", @@ -13,6 +16,7 @@ "author": "Sajal Jain ", "license": "MIT", "devDependencies": { + "@electron/notarize": "^2.3.0", "electron": "^29.0.0", "electron-builder": "^24.13.3", "jest": "^29.7.0" @@ -41,11 +45,13 @@ "files": [ "**/*" ], + "afterSign": "notarize.js", "win": { "target": "nsis" }, "mac": { - "target": "dmg" + "target": "dmg", + "identity": "Sajal Jain (7R825R8PU5)" }, "linux": { "target": [ From b7d3abf7282f8b88841c581e3cd9e429a96e5b87 Mon Sep 17 00:00:00 2001 From: Sajal Jain Date: Sat, 23 Mar 2024 08:52:49 -0700 Subject: [PATCH 3/5] add proper apple identity and notorization creds --- packages/flowtest-electron/notarize.js | 5 ++++- packages/flowtest-electron/package.json | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/flowtest-electron/notarize.js b/packages/flowtest-electron/notarize.js index 1e851fa..85120ba 100644 --- a/packages/flowtest-electron/notarize.js +++ b/packages/flowtest-electron/notarize.js @@ -1,5 +1,5 @@ require('dotenv').config(); -const { notarize } = require('electron-notarize'); +const { notarize } = require('@electron/notarize'); exports.default = async function notarizing(context) { const { electronPlatformName, appOutDir } = context; @@ -9,6 +9,9 @@ exports.default = async function notarizing(context) { const appName = context.packager.appInfo.productFilename; + console.log(appOutDir); + console.log(appName); + return await notarize({ appBundleId: 'com.flowtestai.app', appPath: `${appOutDir}/${appName}.app`, diff --git a/packages/flowtest-electron/package.json b/packages/flowtest-electron/package.json index 4bfb8f7..f983683 100644 --- a/packages/flowtest-electron/package.json +++ b/packages/flowtest-electron/package.json @@ -45,13 +45,15 @@ "files": [ "**/*" ], - "afterSign": "notarize.js", "win": { "target": "nsis" }, "mac": { "target": "dmg", - "identity": "Sajal Jain (7R825R8PU5)" + "category": "public.app-category.developer-tools", + "identity": "Sajal Jain (Z25C545DT5)", + "hardenedRuntime": true, + "gatekeeperAssess": false }, "linux": { "target": [ From 5fdf48e4c117a4fcf422617a78a2bc4a3928a1b9 Mon Sep 17 00:00:00 2001 From: Sajal Jain Date: Wed, 27 Mar 2024 20:53:06 -0700 Subject: [PATCH 4/5] notorize the app --- packages/flowtest-electron/notarize.js | 3 --- packages/flowtest-electron/package.json | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/flowtest-electron/notarize.js b/packages/flowtest-electron/notarize.js index 85120ba..96a3e6b 100644 --- a/packages/flowtest-electron/notarize.js +++ b/packages/flowtest-electron/notarize.js @@ -9,9 +9,6 @@ exports.default = async function notarizing(context) { const appName = context.packager.appInfo.productFilename; - console.log(appOutDir); - console.log(appName); - return await notarize({ appBundleId: 'com.flowtestai.app', appPath: `${appOutDir}/${appName}.app`, diff --git a/packages/flowtest-electron/package.json b/packages/flowtest-electron/package.json index f983683..8c3e1b2 100644 --- a/packages/flowtest-electron/package.json +++ b/packages/flowtest-electron/package.json @@ -45,6 +45,7 @@ "files": [ "**/*" ], + "afterSign": "notarize.js", "win": { "target": "nsis" }, From 92e5a147de137589c17c86c201f448b96cb60078 Mon Sep 17 00:00:00 2001 From: Sajal Jain Date: Wed, 27 Mar 2024 22:19:52 -0700 Subject: [PATCH 5/5] add menu template to be displayed --- packages/flowtest-electron/electron-main.js | 6 ++- packages/flowtest-electron/electron-menu.js | 59 +++++++++++++++++++++ packages/flowtest-electron/package.json | 3 +- 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 packages/flowtest-electron/electron-menu.js diff --git a/packages/flowtest-electron/electron-main.js b/packages/flowtest-electron/electron-main.js index cde02c3..832b068 100644 --- a/packages/flowtest-electron/electron-main.js +++ b/packages/flowtest-electron/electron-main.js @@ -1,7 +1,8 @@ // Modules to control application life and create native browser window -const { app, BrowserWindow } = require('electron'); +const { app, BrowserWindow, Menu } = require('electron'); const path = require('path'); const url = require('url'); +const template = require('./electron-menu'); const Watcher = require('./src/app/watcher'); const registerRendererEventHandlers = require('./src/ipc/collection'); @@ -9,6 +10,9 @@ let mainWindow; let watcher; app.on('ready', async () => { + const menu = Menu.buildFromTemplate(template); + Menu.setApplicationMenu(menu); + // Create the browser window. mainWindow = new BrowserWindow({ width: 1280, diff --git a/packages/flowtest-electron/electron-menu.js b/packages/flowtest-electron/electron-menu.js new file mode 100644 index 0000000..28b233d --- /dev/null +++ b/packages/flowtest-electron/electron-menu.js @@ -0,0 +1,59 @@ +const { shell } = require('electron'); + +const template = [ + { + label: 'FlowTestAI', + submenu: [ + { type: 'separator' }, + { + role: 'quit', + label: 'Exit FlowTestAI', + }, + ], + }, + { + label: 'Edit', + submenu: [ + { role: 'undo' }, + { role: 'redo' }, + { type: 'separator' }, + { role: 'cut' }, + { role: 'copy' }, + { role: 'paste' }, + { role: 'selectAll' }, + { type: 'separator' }, + { role: 'hide' }, + { role: 'hideOthers' }, + ], + }, + { + label: 'View', + submenu: [ + { role: 'toggledevtools' }, + { type: 'separator' }, + { role: 'resetzoom' }, + { role: 'zoomin' }, + { role: 'zoomout' }, + { type: 'separator' }, + { role: 'togglefullscreen' }, + ], + }, + { + role: 'window', + submenu: [{ role: 'minimize' }, { role: 'close', accelerator: 'CommandOrControl+Shift+Q' }], + }, + { + role: 'help', + label: 'Help', + submenu: [ + { + label: 'About', + click: async () => { + await shell.openExternal('https://github.com/FlowTestAI/FlowTest'); + }, + }, + ], + }, +]; + +module.exports = template; diff --git a/packages/flowtest-electron/package.json b/packages/flowtest-electron/package.json index 8c3e1b2..4e26d85 100644 --- a/packages/flowtest-electron/package.json +++ b/packages/flowtest-electron/package.json @@ -1,5 +1,6 @@ { - "name": "flowtest-electron", + "name": "flowtestai", + "productName": "FlowTestAI", "version": "1.0.0", "homepage": "https://github.com/FlowTestAI/FlowTest/tree/main", "description": "OpenSource IDE for designing API powered flows",