diff --git a/forge.config.ts b/forge.config.ts index df5089e8..7cead5b8 100644 --- a/forge.config.ts +++ b/forge.config.ts @@ -94,9 +94,9 @@ function removeCodeSignatures(dir: string) { const config: ForgeConfig = { packagerConfig: { - name: 'Cyd', - executableName: os.platform() == 'linux' ? 'cyd' : 'Cyd', - appBundleId: 'systems.lockdown.cyd', + name: process.env.CYD_ENV == 'prod' ? 'Cyd' : 'Cyd Dev', + executableName: os.platform() == 'linux' ? (process.env.CYD_ENV == 'prod' ? 'cyd' : 'cyd-dev') : (process.env.CYD_ENV == 'prod' ? 'Cyd' : 'Cyd Dev'), + appBundleId: process.env.CYD_ENV == 'prod' ? 'systems.lockdown.cyd' : 'systems.lockdown.cyd-dev', appCopyright: `Copyright ${new Date().getFullYear()} Lockdown Systems LLC`, asar: true, icon: path.join(assetsPath, 'icon'), @@ -121,7 +121,7 @@ const config: ForgeConfig = { // Windows new MakerSquirrel({ iconUrl: "https://releases.lockdown.systems/cyd/icon.ico", - name: "Cyd", + name: process.env.CYD_ENV == 'prod' ? "Cyd" : "CydDev", setupIcon: path.join(assetsPath, "installer-icon.ico"), loadingGif: path.join(assetsPath, "installer-loading.gif"), windowsSign: process.env.WINDOWS_RELEASE === 'true' ? { @@ -133,13 +133,13 @@ const config: ForgeConfig = { }), // macOS DMG new MakerDMG({ - name: `Cyd ${version}`, + name: process.env.CYD_ENV == 'prod' ? `Cyd ${version}` : `Cyd Dev ${version}`, background: path.join(assetsPath, 'dmg-background.png'), icon: path.join(assetsPath, 'installer-icon.icns'), iconSize: 110, overwrite: true, contents: [ - { "x": 270, "y": 142, "type": "file", "path": `${process.cwd()}/out/Cyd-darwin-universal/Cyd.app` }, + { "x": 270, "y": 142, "type": "file", "path": process.env.CYD_ENV == 'prod' ? `${process.cwd()}/out/Cyd-darwin-universal/Cyd.app` : `${process.cwd()}/out/Cyd Dev-darwin-universal/Cyd Dev.app` }, { "x": 428, "y": 142, "type": "link", "path": "/Applications" } ], additionalDMGOptions: { @@ -156,7 +156,16 @@ const config: ForgeConfig = { macUpdateManifestBaseUrl: `https://releases.lockdown.systems/cyd/${process.env.CYD_ENV}/macos/universal` }), // Linux RPM - new MakerRpm({}), + new MakerRpm({ + // @ts-expect-error I think the typescript definitions are wrong, but this should work + icon: path.join(assetsPath, 'icon.png'), + homepage: 'https://cyd.social', + categories: ['Utility', 'Network'], + description: 'Claw back your data from Big Tech', + productName: process.env.CYD_ENV == 'prod' ? "Cyd" : "Cyd Dev", + bin: process.env.CYD_ENV == 'prod' ? "cyd" : "cyd-dev", + name: process.env.CYD_ENV == 'prod' ? "cyd" : "cyd-dev", + }), // Linux Debian new MakerDeb({ options: { @@ -165,7 +174,9 @@ const config: ForgeConfig = { homepage: 'https://cyd.social', categories: ['Utility', 'Network'], description: 'Claw back your data from Big Tech', - productName: "Cyd", + productName: process.env.CYD_ENV == 'prod' ? "Cyd" : "Cyd Dev", + bin: process.env.CYD_ENV == 'prod' ? "cyd" : "cyd-dev", + name: process.env.CYD_ENV == 'prod' ? "cyd" : "cyd-dev", } }) ], @@ -210,8 +221,8 @@ const config: ForgeConfig = { console.log('🍎 Preparing to codesign macOS app bundle'); - const universalBuildPath = path.join(__dirname, 'out', 'Cyd-darwin-universal'); - const appPath = path.join(universalBuildPath, "Cyd.app"); + const universalBuildPath = path.join(__dirname, 'out', process.env.CYD_ENV == 'prod' ? 'Cyd-darwin-universal' : 'Cyd Dev-darwin-universal'); + const appPath = path.join(universalBuildPath, process.env.CYD_ENV == 'prod' ? "Cyd.app" : "Cyd Dev.app"); const identity = "Developer ID Application: Lockdown Systems LLC (G762K6CH36)"; const entitlementDefault = path.join(assetsPath, 'entitlements', 'default.plist'); const entitlementGpu = path.join(assetsPath, 'entitlements', 'gpu.plist'); diff --git a/scripts/make-dev-linux.sh b/scripts/make-dev-linux.sh index 317e4645..251f8c29 100755 --- a/scripts/make-dev-linux.sh +++ b/scripts/make-dev-linux.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=dev -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make diff --git a/scripts/make-dev-macos.sh b/scripts/make-dev-macos.sh index 550bde72..0c9d97dd 100755 --- a/scripts/make-dev-macos.sh +++ b/scripts/make-dev-macos.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=dev -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make --arch universal \ No newline at end of file diff --git a/scripts/make-dev-windows.ps1 b/scripts/make-dev-windows.ps1 index 9d2a4870..d347b329 100644 --- a/scripts/make-dev-windows.ps1 +++ b/scripts/make-dev-windows.ps1 @@ -1,6 +1,6 @@ #!/usr/bin/env pwsh $env:CYD_ENV = "dev" -$env:DEBUG = "electron-packager,electron-universal,electron-forge*" +$env:DEBUG = "electron-packager,electron-universal,electron-forge*,electron-installer*" $env:WINDOWS_RELEASE = "false" # https://github.com/Squirrel/Squirrel.Windows/issues/1838#issuecomment-1514089628 diff --git a/scripts/make-local-linux.sh b/scripts/make-local-linux.sh index 2b4bd615..487c2369 100755 --- a/scripts/make-local-linux.sh +++ b/scripts/make-local-linux.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=local -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make \ No newline at end of file diff --git a/scripts/make-local-macos.sh b/scripts/make-local-macos.sh index 80064331..ec476a96 100755 --- a/scripts/make-local-macos.sh +++ b/scripts/make-local-macos.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=local -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make --arch universal \ No newline at end of file diff --git a/scripts/make-prod-linux.sh b/scripts/make-prod-linux.sh index ae414c34..bd5e385a 100755 --- a/scripts/make-prod-linux.sh +++ b/scripts/make-prod-linux.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=prod -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make diff --git a/scripts/make-prod-macos.sh b/scripts/make-prod-macos.sh index 77f090d9..190e6ee5 100755 --- a/scripts/make-prod-macos.sh +++ b/scripts/make-prod-macos.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=prod -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge make --arch universal \ No newline at end of file diff --git a/scripts/make-prod-windows.ps1 b/scripts/make-prod-windows.ps1 index 1daa5b55..6c4acfe6 100644 --- a/scripts/make-prod-windows.ps1 +++ b/scripts/make-prod-windows.ps1 @@ -1,6 +1,6 @@ #!/usr/bin/env pwsh $env:CYD_ENV = "prod" -$env:DEBUG = "electron-packager,electron-universal,electron-forge*" +$env:DEBUG = "electron-packager,electron-universal,electron-forge*,electron-installer*" $env:WINDOWS_RELEASE = "false" # https://github.com/Squirrel/Squirrel.Windows/issues/1838#issuecomment-1514089628 diff --git a/scripts/publish-dev-macos.sh b/scripts/publish-dev-macos.sh index bb72c5e5..cf71ee32 100755 --- a/scripts/publish-dev-macos.sh +++ b/scripts/publish-dev-macos.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=dev -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge publish --arch universal \ No newline at end of file diff --git a/scripts/publish-dev-windows.ps1 b/scripts/publish-dev-windows.ps1 index 7031a8b9..9883368e 100644 --- a/scripts/publish-dev-windows.ps1 +++ b/scripts/publish-dev-windows.ps1 @@ -1,6 +1,6 @@ #!/usr/bin/env pwsh $env:CYD_ENV = "dev" -$env:DEBUG = "electron-packager,electron-universal,electron-forge*" +$env:DEBUG = "electron-packager,electron-universal,electron-forge*,electron-installer*" $env:WINDOWS_RELEASE = "true" # https://github.com/Squirrel/Squirrel.Windows/issues/1838#issuecomment-1514089628 diff --git a/scripts/publish-prod-macos.sh b/scripts/publish-prod-macos.sh index 3e7c56dd..491a07b3 100755 --- a/scripts/publish-prod-macos.sh +++ b/scripts/publish-prod-macos.sh @@ -1,6 +1,6 @@ #!/bin/sh export CYD_ENV=prod -export DEBUG=electron-packager,electron-universal,electron-forge* +export DEBUG=electron-packager,electron-universal,electron-forge*,electron-installer* ./scripts/clean.sh electron-forge publish --arch universal \ No newline at end of file diff --git a/scripts/publish-prod-windows.ps1 b/scripts/publish-prod-windows.ps1 index 673786a3..bda27671 100644 --- a/scripts/publish-prod-windows.ps1 +++ b/scripts/publish-prod-windows.ps1 @@ -1,6 +1,6 @@ #!/usr/bin/env pwsh $env:CYD_ENV = "prod" -$env:DEBUG = "electron-packager,electron-universal,electron-forge*" +$env:DEBUG = "electron-packager,electron-universal,electron-forge*,electron-installer*" $env:WINDOWS_RELEASE = "true" # https://github.com/Squirrel/Squirrel.Windows/issues/1838#issuecomment-1514089628 diff --git a/src/main.ts b/src/main.ts index 3f46524d..5fede183 100644 --- a/src/main.ts +++ b/src/main.ts @@ -49,6 +49,14 @@ if (!fs.existsSync(configPath)) { } const config: Config = JSON.parse(fs.readFileSync(configPath, 'utf8')); +// Set the app name +if (config.mode == "prod") { + // cyd with a lowercase c, for backwards compatibility + app.setName('cyd'); +} else { + app.setName('Cyd Dev'); +} + // Handle creating/removing shortcuts on Windows when installing/uninstalling. if (require('electron-squirrel-startup')) { app.quit(); @@ -71,13 +79,13 @@ async function initializeApp() { // Display message in dev mode if (config.mode == "dev") { dialog.showMessageBoxSync({ - title: `Cyd ${app.getVersion()}`, + title: `Cyd Dev ${app.getVersion()}`, message: `You're running Cyd ${app.getVersion()}. It uses the dev server and it might contain bugs.`, type: 'info', }); } else if (config.mode == "local") { dialog.showMessageBoxSync({ - title: `Cyd ${app.getVersion()}`, + title: `Cyd Local ${app.getVersion()}`, message: `You're running Cyd ${app.getVersion()} in local mode.`, type: 'info', }); @@ -154,7 +162,7 @@ async function createWindow() { webviewTag: true, preload: path.join(__dirname, './preload.js') }, - icon: icon + icon: icon, }); // Handle power monitor events @@ -249,6 +257,14 @@ async function createWindow() { } }); + ipcMain.handle('getMode', async () => { + try { + return config.mode; + } catch (error) { + throw new Error(packageExceptionForReport(error as Error)); + } + }); + ipcMain.handle('getPlatform', async () => { try { return os.platform(); diff --git a/src/preload.ts b/src/preload.ts index 67f88fbf..f38c3638 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -24,6 +24,9 @@ contextBridge.exposeInMainWorld('electron', { getVersion: (): Promise => { return ipcRenderer.invoke('getVersion') }, + getMode: (): Promise => { + return ipcRenderer.invoke('getMode') + }, getPlatform: (): Promise => { return ipcRenderer.invoke('getPlatform') }, diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index f03413f3..a4860fbd 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -99,6 +99,14 @@ onMounted(async () => { } isReady.value = true; + + // Change the app title + const mode = await window.electron.getMode(); + if (mode === 'prod') { + document.title = 'Cyd'; + } else { + document.title = `Cyd (${mode})`; + } }); diff --git a/src/renderer/src/main.ts b/src/renderer/src/main.ts index 5d57db97..f8eac8f1 100644 --- a/src/renderer/src/main.ts +++ b/src/renderer/src/main.ts @@ -29,6 +29,7 @@ declare global { electron: { checkForUpdates: () => void; getVersion: () => Promise; + getMode: () => Promise; getPlatform: () => Promise; getAPIURL: () => Promise; getDashURL: () => Promise; diff --git a/src/renderer/src/views/AboutView.vue b/src/renderer/src/views/AboutView.vue index 48e2cac7..a4e54db0 100644 --- a/src/renderer/src/views/AboutView.vue +++ b/src/renderer/src/views/AboutView.vue @@ -3,6 +3,7 @@ import { ref, onMounted } from "vue"; const currentYear = new Date().getFullYear(); const appVersion = ref(""); +const mode = ref("prod"); defineProps<{ shouldShow: boolean; @@ -18,6 +19,7 @@ const termsClicked = async () => { onMounted(async () => { appVersion.value = await window.electron.getVersion(); + mode.value = await window.electron.getMode(); }); @@ -36,6 +38,7 @@ onMounted(async () => {

Cyd + {{ mode != 'prod' ? 'Dev' : '' }} version {{ appVersion }}