mirror of
https://github.com/storytold/wordcraft.git
synced 2026-11-10 04:09:53 -06:00
Each desktop window is its own process with one document, so the window commands work across processes. Every window joins a small registry in the settings folder (windows/<id>.json, mode 0600, rewritten every 30 s, removed on exit; stale and malformed entries are ignored or cleaned up) and serves a minimal authenticated loopback channel that can only focus, place and scroll the window. The full control channel stays opt-in. - engine: view.switchWindows, view.arrangeAll, view.sideBySide and view.syncScroll record what to do in Session::windows and ask the UI; disabled where there is no window host (web, CLI, MCP). - ui-egui: WindowHost service, tiling and half-screen geometry, sync-scroll plumbing in the canvas, ribbon buttons and keytips, strings in every catalog. - desktop app: registry and peer channel (4 KiB lines, constant-time key check, 2 s first-line deadline, 16 connections at most). - Parity 393/434 -> 397/434; docs updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>