Window management, dialogue system, IPC and logging rewrite #8
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
mburchard/vite-electron-starter!8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/window-manager"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Complete rewrite of the Electron backend architecture, replacing the ad-hoc window and IPC handling with a structured, testable system.
Window Management
New
WindowControllerwith pack mode (auto-sizing to content), declarativeWindowPlacement, display awareness for multi-monitor setups, and a deferredwhenWindowReadylifecycle hook.WindowManagerhandles window creation and registry.Dialogue System
Custom dialogue windows replacing native Electron dialogs. Five visual types (confirm, error, info, success, warning), configurable buttons with variants, backend-owns-close principle, and lifecycle hooks. Convenience functions
showInfo,showSuccess,showWarning,showErrorfor common single-button dialogues. Full API reference indocumentation/dialog-system.md.Type-safe IPC
Four communication patterns (request-response, fire-and-forget, broadcast, targeted send) over typed
IpcChannels. Preload exposes a minimalwindow.backendAPI viacontextBridge.Logging Pipeline
PipelineAppendermerging backend and frontend events chronologically,RotatingFileAppenderfor daily log files,BackendForwardingAppenderfor renderer-to-main forwarding. Source map support in production builds.Core/Demo Separation
Demo code isolated in
demo/subdirectories within each module, deletable for a clean starter template.Testing and Tooling
156 tests across 9 suites covering WindowController, DialogService, IPC, preload, PipelineAppender, RotatingFileAppender, and shared utilities. Vite 7, TypeScript 5.9, ESLint 10 with antfu config, Vitest 4, separate tsconfig for build vs typecheck.
- Upgrade to Node 24, Electron 40.6.1, ESLint 10, @antfu/eslint-config 7.6.1, Vitest 4, TypeScript 5.9.3, Vite 7.3.1, pnpm 10.30.1 - Upgrade bit-log to 1.2.1 with explicit source map resolver via configureSourceMapResolver() and @jridgewell/trace-mapping - Replace dual Console + File logging with unified PipelineAppender that merges backend and frontend events into a single chronologically sorted log file with origin prefixes - Extract logging into logging/ subdirectory with PipelineAppender module - Refactor TypeScript configs: extract shared settings into tsconfig.base.json, replace tsconfig.vitest.json with flat tsconfig.typecheck.json - Add pnpm-workspace.yaml with trust policy and build dependency whitelist - Add .node-version (24), add doc comments, update screenshots - Add tests: IpcChannels validation, file-utils, PipelineAppender (buffer, flush, timer, origin prefix, path shortening) - Simplify getLogPath() to use app.getPath('logs') directly - Rewrite README with tech stack, feature overview, and logging docs - Bump version to 0.3.0- Add file header comments (@file, @author) to all modules - Add block-format JSDoc with @param/@returns to all functions, classes and interfaces - Fix Oxford British English: initialisation -> initialization, visualise -> visualize - Fix '/n' typo in WindowManager error log (was literal string, now '\n') - Reflow JSDoc comments in ipc.ts and preload.ts to remove old {type} annotations - Fix key ordering in tsconfig.test.json (references before include)