Files
web-terminal/desktop/resources/README.md
Yaojia Wang cf8cfccab4 feat(desktop): Electron all-in-one desktop shell (Mac/Windows) embedding the server
Add a `desktop/` Electron app that embeds the existing Node server + node-pty
(all-in-one): the window loads http://127.0.0.1:<port>/ and reuses the frontend
unchanged; other LAN devices can still connect. The server needs zero changes —
startServer(cfg)/loadConfig already support programmatic embedding.

- Pure, unit-tested modules: port, shell, server-config, deep-link, notify-policy,
  notifications, live-poll, prefs, settings-store (94 tests; desktop/src ~97% cov)
- Electron glue: main/window/tray/menu/preload/embedded-server/logger
  (hardened: contextIsolation, sandbox, deny foreign-origin navigation)
- Native value: OS notifications driven by /live-sessions status, tray, deep links
- Packaging (electron-builder -> arm64 .dmg): ships dist/ + public/ + node_modules
  on-disk under Resources so the server resolves its deps from /Applications;
  node-pty rebuilt for the Electron ABI
- Docs: docs/DESKTOP_PLAN.md; PROGRESS_LOG updated

Verified: desktop tsc clean; 1401 tests pass; coverage >=80% (desktop/src 97/95/100/97);
.dmg built and launch-tested on arm64 (server boots, UI serves 200, node-pty loads).
2026-07-02 06:13:17 +02:00

14 lines
653 B
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# desktop/resources
App + tray icons for electron-builder packaging.
Required for `npm run dist:mac` / `dist:win` (P1 packaging, not needed for dev/typecheck/tests):
- `icon.icns` — macOS app icon (1024×1024 source, `.icns`).
- `icon.ico` — Windows app icon (256×256 `.ico`).
- `trayTemplate.png` / `trayTemplate@2x.png` — menubar/tray icon (macOS template image, monochrome).
Generate from `../../public/icon.svg` (the existing PWA icon) with any icon toolchain
(e.g. `electron-icon-builder`, or `iconutil` on macOS). These are binary assets and
are intentionally not committed as placeholders — add them before the first packaged build.