You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(one): stop orphaned server, double menu dialogs, and update crash-loop
Four user-reported issues with the desktop shell:
1. Orphaned server on quit/restart. `node one.mjs` is only a launcher — it
spawns `objectstack serve` as a grandchild. kill_current() used
Child::kill() (SIGKILL), which the launcher can't forward, so the real
server was orphaned and kept holding the port + SQLite DB. Now the launcher
runs as a process-group leader and shutdown sends SIGTERM to the whole group
(graceful, forwarded to the server) with a SIGKILL fallback; taskkill /T on
Windows. Validated: port listeners drop to 0 after shutdown.
2. "Repeated refresh" on second launch was a consequence of #1 — the orphan
held standalone.db, so the new server hit a lock conflict, crashed, and the
supervisor restarted it in a loop, re-navigating the window each time. Fixed
by #1 (no orphan -> no conflict).
3. Two windows per menu click. A single click is delivered to both the tray's
on_menu_event and the global app handler, running every action twice (two
update dialogs, two Finder windows for Open Data/Reveal Logs). Added a short
dedup window in handle_menu_id.
4. "Check for updates" gave no feedback and could be clicked repeatedly. Added
CHECKING/INSTALLING atomic guards (concurrent clicks are no-ops), an
update-checking event ("Checking for updates…"), and real download progress
via update-progress; splash + injected banner render both.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments