- delete electron/settings, the settings preload and window, the
config-presets IPC channels, the Configuration menu and the preset
watcher in scripts/electron-dev.mjs; config-manager.ts keeps only the
user locale (still read from config-presets.json so the saved
language survives)
- electron/main/env-loader.ts parses .env with dotenv instead of a
hand-written parser; electron:compile bundles dependencies
- drop the unreachable development branches in port-manager.ts and
next-server.ts, the duplicated locale normalisation in menu-i18n.ts,
the unused electronAPI members, resources/entitlements.mac.plist
- scripts/copy-dereferenced.cjs shared by afterPack and
prepare-electron-build
- CI: delete ci.yml, move type check and concurrency into test.yml,
Node 24 everywhere, docker-build only on main
- remove unused dependencies (@xmldom/xmldom, remark-gfm,
@anthropic-ai/tokenizer, @testing-library/user-event, concurrently,
wait-on, eslint, eslint-config-next, @vitest/coverage-v8, shx),
.eslintrc.json and the vitest coverage block
* feat: redraw the app icon on a white tile with shorter bottom boxes
Same org chart shape as before, redrawn as a vector so edges are sharp.
The white tile keeps the icon visible on dark docks, taskbars and tabs,
so dark mode now uses the same image and favicon-white.svg is removed.
The desktop icon is now 1024x1024.
* chore: add SVG sources for the app icon and favicons
resources/icon.svg renders resources/icon.png; resources/favicon.svg renders
the favicon .ico and .png files.
* fix: add a title to the icon SVG sources for the Biome a11y check
* feat(electron): add desktop application support with electron
- implement complete Electron main process architecture with window management,
app menu, IPC handlers, and settings window
- integrate Next.js server for production builds with embedded standalone server
- add configuration management with persistent storage and env file support
- create preload scripts with secure context bridge for renderer communication
- set up electron-builder configuration for multi-platform packaging (macOS,
Windows, Linux)
- add GitHub Actions workflow for automated release builds
- include development scripts for hot-reload during Electron development
* feat(electron): enhance security and stability
- encrypt API keys using Electron safeStorage API before persisting to disk
- add error handling and rollback for preset switching failures
- extract inline styles to external CSS file and remove unsafe-inline from CSP
- implement dynamic port allocation with automatic fallback for production builds
* fix(electron): add maintainer field for Linux .deb package
- add maintainer email to linux configuration in electron-builder.yml
- required for building .deb packages
* fix(electron): use shx for cross-platform file copying
- replace Unix-only cp -r with npx shx cp -r
- add shx as devDependency for Windows compatibility
* fix(electron): fix runtime icon path for all platforms
- use icon.png directly instead of platform-specific formats
- electron-builder handles icon conversion during packaging
- macOS uses embedded icon from app bundle, no explicit path needed
- add icon.png to extraResources for Windows/Linux runtime access
* fix(electron): add security warning for plaintext API key storage
- warn user when safeStorage is unavailable (Linux without keyring)
- fail secure: throw error if encryption fails instead of storing plaintext
- prevent duplicate warnings with hasWarnedAboutPlaintext flag
* fix(electron): add remaining review fixes
- Add Windows ARM64 architecture support
- Add IPC input validation with config key whitelist
- Add server.js existence check before starting Next.js server
- Make afterPack throw error on missing directories
- Add workflow permissions for release job
---------
Co-authored-by: dayuan.jiang <[email protected]>