/** * Electron main process constants * * Centralized configuration for window sizing, ports, and file names. */ // ============================================ // Window sizing constants for kanban layout // ============================================ // Calculation: 4 columns × 280px + 3 gaps × 20px + 40px padding = 1220px board content // With sidebar expanded (288px): 1220 + 288 = 1508px // Minimum window dimensions - reduced to allow smaller windows since kanban now supports horizontal scrolling export const MIN_WIDTH_COLLAPSED = 600; // Reduced - horizontal scrolling handles overflow export const MIN_HEIGHT = 500; // Reduced to allow more flexibility export const DEFAULT_WIDTH = 1600; export const DEFAULT_HEIGHT = 950; // ============================================ // Port defaults // ============================================ // Default ports (can be overridden via env) - will be dynamically assigned if these are in use // When launched via root init.mjs we pass: // - SERVER_PORT (backend API server) // - PORT (Vite dev server / static file server) // Guard against NaN from non-numeric environment variables const parsedServerPort = Number.parseInt(process.env.SERVER_PORT ?? '', 10); const parsedStaticPort = Number.parseInt(process.env.PORT ?? '', 10); export const DEFAULT_SERVER_PORT = Number.isFinite(parsedServerPort) ? parsedServerPort : 3008; export const DEFAULT_STATIC_PORT = Number.isFinite(parsedStaticPort) ? parsedStaticPort : 3007; // ============================================ // File names for userData storage // ============================================ export const API_KEY_FILENAME = '.api-key'; export const WINDOW_BOUNDS_FILENAME = 'window-bounds.json'; // ============================================ // Window bounds interface // ============================================ // Matches @automaker/types WindowBounds export interface WindowBounds { x: number; y: number; width: number; height: number; isMaximized: boolean; }