Garry Tan and Claude Fable 5
5a6dd6bf88
fix(browse): stop on a dead daemon is success — never boots a daemon to stop it ( #2254 )
...
Two changes, one contract:
- Pre-server short-circuit: `browse stop` is handled BEFORE ensureServer().
No daemon state → "nothing to stop", exit 0. Stale state (dead pid AND
dead port) → clean the state file, exit 0. The old flow routed stop
through ensureServer(), which started a fresh daemon + Chromium
(multi-second boot, resource churn) purely so it could be told to shut
down — or crashed on the stale state.
- Reconnect branch: a connection error while sending `stop` where the pid
turns out dead (daemon died mid-flight, between the short-circuit check
and the send) is treated as SUCCESS — the desired end state (no daemon)
already holds — instead of the crash-restart path.
Integration tests (stop-dead-daemon.test.ts, real spawned CLI + scratch
BROWSE_STATE_FILE): stop with no state exits 0 and spawns nothing (a
spawned daemon would have written the state file); stop with a stale state
file (dead pid + verified-closed port) exits 0, cleans the state, and
spawns nothing.
Tests: stop-dead-daemon 2 pass; busy-daemon-iron-rule 8 pass;
busy-daemon-recovery 1 pass (11/11 combined).
Fixes #2254 .
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-16 10:59:06 -07:00
..
2026-08-15 09:37:04 -07:00
2026-03-26 11:15:24 -06:00
2026-03-28 08:35:24 -06:00
2026-08-15 22:20:30 -07:00
2026-05-07 20:14:59 -07:00
2026-05-09 08:06:47 -07:00
2026-05-13 12:22:30 -04:00
2026-08-15 22:20:30 -07:00
2026-05-24 01:43:51 -07:00
2026-04-28 20:08:04 -07:00
2026-05-14 21:55:29 -07:00
2026-04-28 20:08:04 -07:00
2026-05-14 21:46:50 -07:00
2026-04-16 13:49:04 -07:00
2026-08-15 11:42:19 -07:00
2026-08-16 10:59:06 -07:00
2026-08-15 11:42:19 -07:00
2026-04-28 20:08:04 -07:00
2026-04-28 20:08:04 -07:00
2026-05-27 16:09:38 -07:00
2026-04-28 20:08:04 -07:00
2026-08-14 22:02:07 -07:00
2026-05-01 07:21:28 -07:00
2026-08-15 11:42:19 -07:00
2026-05-21 21:21:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 22:20:30 -07:00
2026-08-15 22:20:30 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-03-23 22:15:23 -07:00
2026-04-17 00:45:13 -07:00
2026-05-07 20:14:59 -07:00
2026-04-08 00:41:55 -07:00
2026-05-09 08:06:47 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 09:37:04 -07:00
2026-04-18 23:25:33 +08:00
2026-04-10 17:13:15 -10:00
2026-08-15 22:20:30 -07:00
2026-08-14 09:28:56 -07:00
2026-03-26 11:15:24 -06:00
2026-08-15 11:42:19 -07:00
2026-08-14 22:02:07 -07:00
2026-05-20 07:35:01 -07:00
2026-05-25 10:57:15 -07:00
2026-04-21 21:58:27 -07:00
2026-08-15 11:42:19 -07:00
2026-08-15 11:42:19 -07:00
2026-08-15 22:20:30 -07:00
2026-08-16 10:59:04 -07:00
2026-04-06 00:47:04 -07:00
2026-05-27 16:09:38 -07:00
2026-05-27 16:09:38 -07:00
2026-08-14 09:28:56 -07:00
2026-08-15 11:42:19 -07:00
2026-04-28 00:57:28 -07:00
2026-04-06 00:47:04 -07:00
2026-04-20 13:20:30 +08:00
2026-03-20 12:22:11 -07:00
2026-08-15 11:42:19 -07:00
2026-08-16 10:59:05 -07:00
2026-05-07 20:14:59 -07:00
2026-05-07 20:14:59 -07:00
2026-05-20 07:35:01 -07:00
2026-05-24 01:43:51 -07:00
2026-08-15 11:42:19 -07:00
2026-05-20 06:56:41 -07:00
2026-05-30 14:57:07 -07:00
2026-05-14 21:46:50 -07:00
2026-05-20 07:35:01 -07:00
2026-08-15 09:37:04 -07:00
2026-04-23 10:23:40 -07:00
2026-08-15 09:37:04 -07:00
2026-08-15 22:20:30 -07:00
2026-05-20 06:56:41 -07:00
2026-08-15 09:37:04 -07:00
2026-04-23 10:23:40 -07:00
2026-08-15 22:20:30 -07:00
2026-05-20 07:35:01 -07:00
2026-08-15 09:37:04 -07:00
2026-08-14 09:28:56 -07:00
2026-08-15 09:37:04 -07:00
2026-08-15 09:37:04 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-05-13 12:22:30 -04:00
2026-05-07 20:14:59 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-08-15 09:37:04 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-05-14 21:55:29 -07:00
2026-08-15 22:20:30 -07:00
2026-05-07 20:14:59 -07:00
2026-05-27 16:09:38 -07:00
2026-08-15 09:37:04 -07:00
2026-03-28 08:35:24 -06:00
2026-06-18 10:45:05 -07:00
2026-08-15 09:37:04 -07:00
2026-08-15 22:20:30 -07:00
2026-08-15 11:42:19 -07:00
2026-08-16 10:59:06 -07:00
2026-04-25 22:52:15 -07:00
2026-05-27 16:09:38 -07:00
2026-04-28 20:08:04 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-04-28 20:08:04 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-03-13 00:31:41 -07:00
2026-05-14 21:55:29 -07:00
2026-06-09 21:02:30 -07:00
2026-08-14 22:02:07 -07:00
2026-03-26 11:15:24 -06:00
2026-08-15 11:42:19 -07:00
2026-04-04 10:17:05 -07:00
2026-08-16 10:59:06 -07:00
2026-08-16 10:59:04 -07:00
2026-08-15 22:20:30 -07:00