d624ddde03
## Critical Fixes - #1: Server readiness — waitForServer() polls before loading window - #2: Restart timeout — 5s + SIGKILL prevents IPC handler from hanging - #3: changePort — now stops/restarts server on new port ## Important Fixes - #4: Tray cleanup — destroy old Tray before recreating - #5: IPC emission — server-status & port-changed events - #6: Disposer pattern — replaces removeAllListeners - #7: useSyncExternalStore — eliminates 5x re-renders ## Minor: #8-#16 (dead code, CSP, platform titlebar, types, errors, version) Tests: 76 / 15 suites (was 64/9)
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
/**
|
|
* OmniRoute Electron Types
|
|
*
|
|
* TypeScript definitions for the Electron API exposed to the renderer process.
|
|
*
|
|
* Updated to reflect:
|
|
* - Fix #6: onServerStatus/onPortChanged return disposer functions
|
|
* - Removed removeServerStatusListener/removePortChangedListener (replaced by disposers)
|
|
*/
|
|
|
|
export interface AppInfo {
|
|
name: string;
|
|
version: string;
|
|
platform: "win32" | "darwin" | "linux";
|
|
isDev: boolean;
|
|
port: number;
|
|
}
|
|
|
|
export interface ServerStatus {
|
|
status: "starting" | "running" | "stopped" | "restarting" | "error";
|
|
port: number;
|
|
}
|
|
|
|
export interface ElectronAPI {
|
|
// ── Invoke (async) ─────────────────────────────────────
|
|
getAppInfo(): Promise<AppInfo>;
|
|
openExternal(url: string): Promise<void>;
|
|
getDataDir(): Promise<string>;
|
|
restartServer(): Promise<{ success: boolean }>;
|
|
|
|
// ── Send (fire-and-forget) ─────────────────────────────
|
|
minimizeWindow(): void;
|
|
maximizeWindow(): void;
|
|
closeWindow(): void;
|
|
|
|
// ── Receive (returns disposer for cleanup) ─────────────
|
|
onServerStatus(callback: (data: ServerStatus) => void): () => void;
|
|
onPortChanged(callback: (port: number) => void): () => void;
|
|
|
|
// ── Static Properties ──────────────────────────────────
|
|
isElectron: boolean;
|
|
platform: "win32" | "darwin" | "linux";
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
electronAPI: ElectronAPI;
|
|
}
|
|
}
|
|
|
|
export {};
|