chore: set up notarization

This commit is contained in:
haritabh-z01 2025-07-04 15:47:04 +05:30
parent 8ead8d1454
commit 4b499e656e
4 changed files with 29 additions and 10 deletions

View file

@ -245,6 +245,7 @@ const config: ForgeConfig = {
name: "Amical",
executableName: "Amical",
icon: "./assets/logo.icns", // Path to your icon file
appBundleId: "com.amical.desktop", // Proper bundle ID
extraResource: [
"../../packages/native-helpers/swift-helper/bin",
"./src/db/migrations",
@ -261,13 +262,17 @@ const config: ForgeConfig = {
osxSign: {
identity: process.env.CODESIGNING_IDENTITY,
},
// Notarization for macOS
...(process.env.SKIP_NOTARIZATION === "true"
? {}
: {
osxNotarize: {
appleId: process.env.APPLE_ID!,
appleIdPassword: process.env.APPLE_APP_PASSWORD!,
teamId: process.env.APPLE_TEAM_ID!,
},
}),
}),
// Notarization for macOS (configure when ready for distribution)
// osxNotarize: {
// appleId: process.env.APPLE_ID,
// appleIdPassword: process.env.APPLE_APP_PASSWORD,
// teamId: process.env.APPLE_TEAM_ID,
// },
//! issues with monorepo setup and module resolutions
//! when forge walks paths via flora-colossus
prune: false,

View file

@ -72,8 +72,11 @@ export class AppManager {
this.windowManager.createOrShowMainWindow();
// tRPC handler is now set up in WindowManager when windows are created
if (process.platform === "darwin" && app.dock) {
if (app.dock) {
app.dock.show();
logger.main.info("Explicitly showing app in dock");
} else {
logger.main.warn("app.dock is not available");
}
}

View file

@ -42,10 +42,15 @@ export class WindowManager {
);
}
this.mainWindow.on("closed", () => {
this.mainWindow.on("close", () => {
// Detach window before it's destroyed
ServiceManager.getInstance()!
.getTRPCHandler()!
.detachWindow(this.mainWindow!);
});
this.mainWindow.on("closed", () => {
// Window is already destroyed, just clean up reference
this.mainWindow = null;
});
@ -92,10 +97,15 @@ export class WindowManager {
);
}
this.widgetWindow.on("closed", () => {
this.widgetWindow.on("close", () => {
// Detach window before it's destroyed
ServiceManager.getInstance()!
.getTRPCHandler()!
.detachWindow(this.widgetWindow!);
});
this.widgetWindow.on("closed", () => {
// Window is already destroyed, just clean up reference
this.widgetWindow = null;
});

View file

@ -4,6 +4,7 @@ dotenv.config();
import { app } from "electron";
import started from "electron-squirrel-startup";
import { AppManager } from "./core/app-manager";
import { updateElectronApp } from "update-electron-app";
if (started) {
app.quit();
@ -11,7 +12,7 @@ if (started) {
// Set up auto-updater for production builds
if (app.isPackaged) {
require("update-electron-app")();
updateElectronApp();
}
const appManager = new AppManager();