Sebastien Tardif
0d6a1dcb53
fix(install): trap SIGINT so Ctrl+C exits cleanly during upgrade doctor ( #76386 )
...
* style: restore exec approval e2e formatting
* fix(install): trap SIGINT so Ctrl+C exits cleanly during upgrade doctor
Three changes to fix the install script's Ctrl+C handling:
1. Add INT/TERM signal traps that clean up temp files and exit with
the correct signal exit codes (130 for SIGINT, 143 for SIGTERM).
2. Preserve signal exit codes (>128) through run_quiet_step so the
doctor path can distinguish user cancellation from normal errors.
Non-signal failures still return 1, preserving existing caller
semantics for all other installer steps.
3. Fix guardCancel in onboard-helpers.ts: exit(0) changed to exit(1)
so Clack prompt cancellation (Escape/Ctrl+C) is treated as failure,
not success. This prevents the installer from continuing with plugin
updates after the user explicitly cancelled.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
* fix(install): abort dashboard launch on doctor cancellation
When a user cancels the interactive upgrade-doctor prompt (Clack
cancellation exits 1, SIGINT exits 130), clear should_open_dashboard
so the installer does not launch a dead dashboard after an incomplete
upgrade.
Also propagate non-zero exit from run_doctor() so the non-interactive
upgrade path correctly skips dashboard launch on failure.
* fix: guard every run_doctor caller and add focused tests
The existing-config path called run_doctor without checking its return
value, so a failed or cancelled doctor would still launch the dashboard.
Now both run_doctor call sites guard the return value with if-then.
Adds focused tests verifying: every run_doctor caller is guarded,
dashboard flag is cleared on doctor failure, signal exit codes
propagate through run_quiet_step, and SIGINT (exit 130) triggers
abort_install_int.
* retrigger proof check
* fix: exit 130 on Clack cancellation so installer treats it as SIGINT
guardCancel now exits with 130 (SIGINT convention) instead of 1. When
the user presses Ctrl+C at an interactive doctor prompt, the installer
sees doctor_exit=130 and calls abort_install_int, aborting cleanly
instead of continuing after exit 1.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
* fix: narrow exit 130 to doctor-prompter path only
Revert guardCancel to exit 0 by default (matching main) and pass
exit code 130 only from doctor-prompter where the installer needs
to distinguish user cancellation from normal failures.
This preserves the existing cancellation behavior for configure,
wizard, gateway, and daemon prompts while keeping the SIGINT
convention for the installer's doctor subprocess.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
---------
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 06:19:44 +00:00
..
2026-06-01 05:37:45 +02:00
2026-07-01 03:43:03 -07:00
2026-06-20 03:29:15 +02:00
2026-06-26 18:54:45 -05:00
2026-06-21 21:39:41 +02:00
2026-06-21 18:19:07 +02:00
2026-06-18 16:17:02 +02:00
2026-06-17 11:05:53 +02:00
2026-06-21 22:33:59 +02:00
2026-07-05 21:38:54 -04:00
2026-06-23 14:01:29 +02:00
2026-06-04 20:49:50 -04:00
2026-06-21 07:40:06 +02:00
2026-06-19 14:00:38 -06:00
2026-07-05 08:00:23 -04:00
2026-06-21 10:06:48 +02:00
2026-07-05 10:57:19 -07:00
2026-06-23 17:08:08 +02:00
2026-06-23 17:18:47 +02:00
2026-06-23 16:41:01 +02:00
2026-06-23 14:01:29 +02:00
2026-07-04 13:47:14 -07:00
2026-06-20 04:20:02 +08:00
2026-06-20 04:04:40 +08:00
2026-06-07 12:39:48 +02:00
2026-07-05 02:22:11 -07:00
2026-06-20 21:36:42 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-18 16:50:56 +08:00
2026-07-05 08:00:23 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 05:58:12 +02:00
2026-06-04 20:49:50 -04:00
2026-06-18 15:18:54 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-22 21:27:47 +08:00
2026-06-04 20:49:50 -04:00
2026-06-19 17:22:14 +02:00
2026-06-20 15:07:19 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-21 19:59:55 +02:00
2026-06-21 21:39:41 +02:00
2026-06-04 20:49:50 -04:00
2026-06-22 05:11:25 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-23 17:30:37 +02:00
2026-06-06 22:56:48 -07:00
2026-07-04 13:49:20 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 22:18:09 +02:00
2026-06-04 20:49:50 -04:00
2026-06-23 10:31:05 +02:00
2026-07-04 14:56:50 -04:00
2026-06-15 14:23:57 +08:00
2026-06-23 10:35:28 +02:00
2026-07-05 09:23:45 -07:00
2026-07-01 22:05:26 -05:00
2026-06-04 20:49:50 -04:00
2026-06-24 13:46:26 -07:00
2026-06-19 10:40:18 -07:00
2026-06-20 03:32:08 +02:00
2026-06-23 17:27:32 +08:00
2026-06-04 20:49:50 -04:00
2026-06-20 20:12:30 +02:00
2026-06-21 18:04:47 +02:00
2026-07-05 20:40:16 -04:00
2026-06-22 10:42:21 +00:00
2026-07-05 09:23:45 -07:00
2026-06-10 15:37:15 +09:00
2026-06-16 22:24:00 +08:00
2026-06-21 11:42:29 +02:00
2026-06-06 20:53:08 +02:00
2026-06-04 20:49:50 -04:00
2026-06-16 21:15:55 +02:00
2026-06-20 21:41:34 +02:00
2026-06-10 15:58:30 -07:00
2026-06-21 12:11:01 +02:00
2026-06-18 20:46:11 +02:00
2026-06-17 16:12:47 +02:00
2026-06-04 20:49:50 -04:00
2026-06-21 11:13:13 +02:00
2026-07-04 15:30:48 -04:00
2026-07-05 08:00:23 -04:00
2026-06-23 09:51:38 +02:00
2026-06-16 22:01:44 +02:00
2026-06-23 13:43:44 +02:00
2026-06-19 05:47:19 +02:00
2026-06-20 06:10:37 +08:00
2026-06-23 13:43:44 +02:00
2026-06-20 02:02:37 +02:00
2026-07-05 13:10:19 -04:00
2026-07-05 08:00:23 -04:00
2026-07-05 14:21:14 +02:00
2026-06-18 03:38:14 +02:00
2026-07-05 13:36:27 +02:00
2026-06-23 16:26:42 +02:00
2026-06-26 21:41:14 -05:00
2026-06-26 21:41:14 -05:00
2026-06-18 12:14:01 +08:00
2026-06-18 20:57:55 +02:00
2026-07-05 08:00:23 -04:00
2026-06-22 14:14:20 +08:00
2026-06-21 07:40:06 +02:00
2026-06-21 20:13:50 +02:00
2026-06-21 11:30:45 +02:00
2026-06-20 16:26:00 +02:00
2026-06-22 03:18:24 +02:00
2026-07-03 19:53:43 -07:00
2026-06-20 12:20:16 +02:00
2026-07-05 12:40:31 +02:00
2026-06-04 20:49:50 -04:00
2026-06-21 10:16:09 +02:00
2026-06-04 20:49:50 -04:00
2026-06-23 16:46:39 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-24 13:24:43 +08:00
2026-06-07 12:36:13 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-21 11:55:25 +02:00
2026-07-05 14:21:14 +02:00
2026-06-21 11:04:38 +02:00
2026-06-07 09:27:18 +02:00
2026-06-16 14:19:01 +08:00
2026-06-10 18:06:31 +09:00
2026-06-21 20:05:22 +02:00
2026-06-04 20:49:50 -04:00
2026-06-19 07:23:24 +02:00
2026-06-11 15:32:58 +01:00
2026-06-23 14:14:43 +02:00
2026-07-03 15:36:11 +00:00
2026-07-05 01:56:40 -04:00
2026-06-21 07:40:05 +02:00
2026-06-22 18:44:21 +08:00
2026-06-21 10:54:09 +02:00
2026-07-04 00:03:49 -07:00
2026-06-18 20:38:29 +08:00
2026-07-05 15:16:11 -04:00
2026-07-06 06:19:44 +00:00
2026-06-22 21:07:57 -04:00
2026-06-21 23:00:30 +02:00
2026-06-23 13:17:42 +08:00
2026-06-07 08:42:16 +02:00
2026-07-01 20:24:38 -05:00
2026-07-01 20:24:38 -05:00
2026-06-22 21:07:57 -04:00
2026-07-01 20:24:38 -05:00
2026-07-01 20:42:25 -07:00
2026-06-15 19:27:55 +02:00
2026-06-23 13:54:42 +08:00
2026-07-01 22:05:26 -05:00
2026-07-01 22:05:26 -05:00
2026-07-05 10:57:19 -07:00
2026-06-21 04:02:14 +02:00
2026-07-05 12:53:06 -07:00
2026-07-05 08:00:23 -04:00
2026-06-21 19:07:02 +02:00
2026-06-19 10:01:28 +08:00
2026-06-21 22:19:54 +02:00
2026-06-04 20:49:50 -04:00
2026-07-06 00:34:17 +01:00
2026-06-15 14:23:57 +08:00
2026-06-19 00:54:57 +02:00
2026-06-04 20:49:50 -04:00
2026-06-07 09:44:35 +02:00
2026-06-04 20:49:50 -04:00
2026-06-20 19:28:42 +02:00
2026-06-21 08:57:25 +02:00
2026-06-04 20:49:50 -04:00
2026-06-14 22:26:58 -07:00
2026-06-04 20:49:50 -04:00
2026-06-20 22:45:25 +02:00
2026-06-04 20:49:50 -04:00
2026-06-23 15:20:29 +02:00
2026-06-23 18:00:53 +02:00
2026-06-21 19:59:55 +02:00
2026-06-26 18:54:45 -05:00
2026-06-21 10:31:00 +02:00
2026-06-04 20:49:50 -04:00
2026-07-05 21:38:54 -04:00
2026-06-20 21:44:09 +02:00
2026-06-16 20:37:36 +02:00
2026-06-21 11:15:14 +02:00
2026-06-23 11:29:24 +02:00
2026-06-20 20:02:45 +01:00
2026-06-21 11:23:08 +02:00
2026-06-07 07:14:37 +02:00
2026-06-29 00:39:06 -07:00
2026-06-17 22:04:48 +08:00
2026-07-05 22:18:09 +02:00
2026-06-17 02:53:00 +02:00
2026-06-19 08:18:01 +02:00
2026-07-04 08:22:39 -07:00
2026-07-05 16:16:26 -07:00
2026-07-05 16:16:26 -07:00
2026-07-04 08:22:39 -07:00
2026-06-21 22:02:05 +02:00
2026-06-24 09:51:08 +08:00
2026-06-21 16:53:49 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 23:01:01 -07:00
2026-06-04 20:49:50 -04:00
2026-07-05 13:25:36 +02:00
2026-07-04 08:00:15 +02:00
2026-07-04 08:00:15 +02:00
2026-06-21 21:27:57 +02:00
2026-06-21 11:52:46 +02:00
2026-06-30 15:54:11 -07:00
2026-07-04 01:56:21 +02:00
2026-07-05 08:00:23 -04:00
2026-06-22 05:11:25 +02:00
2026-06-26 07:51:07 +01:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 08:00:23 -04:00
2026-06-20 20:13:24 +01:00
2026-07-05 08:00:23 -04:00
2026-07-05 16:16:26 -07:00
2026-06-20 22:23:30 +02:00
2026-07-05 16:16:26 -07:00
2026-06-21 22:19:54 +02:00
2026-06-21 17:32:43 +02:00
2026-07-01 03:28:23 -07:00
2026-06-21 16:53:49 +02:00
2026-07-05 08:00:23 -04:00
2026-06-23 12:01:34 +02:00
2026-06-20 08:28:29 +02:00
2026-06-22 05:11:25 +02:00
2026-06-21 11:15:14 +02:00
2026-06-16 03:57:44 +02:00
2026-07-05 04:23:58 -07:00
2026-07-04 13:38:53 -04:00
2026-06-21 15:18:57 +02:00
2026-07-05 10:57:19 -07:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 08:00:23 -04:00
2026-06-21 08:16:47 +02:00
2026-06-21 17:51:44 +02:00
2026-06-23 13:34:20 +02:00
2026-06-24 10:22:56 +08:00
2026-06-23 14:01:29 +02:00
2026-07-05 18:40:20 -04:00
2026-06-19 14:00:38 -06:00
2026-06-16 02:55:19 +02:00
2026-06-19 07:57:19 +02:00
2026-06-23 14:30:29 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-21 17:46:59 +02:00
2026-06-16 20:37:36 +02:00
2026-06-21 22:26:44 +02:00
2026-07-05 08:00:23 -04:00
2026-07-05 23:01:01 -07:00
2026-06-21 17:08:40 +02:00
2026-07-01 19:51:15 -07:00
2026-06-23 13:38:40 +02:00
2026-07-04 01:56:21 +02:00
2026-06-04 20:49:50 -04:00
2026-07-05 08:00:23 -04:00
2026-06-22 11:44:21 +08:00
2026-06-23 13:02:39 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-06-22 05:11:25 +02:00
2026-06-05 08:14:42 -07:00
2026-06-23 14:08:20 +08:00
2026-07-05 08:00:23 -04:00
2026-07-04 23:19:38 +01:00
2026-06-21 21:53:58 +02:00
2026-07-05 12:53:06 -07:00
2026-06-22 03:15:26 +02:00
2026-07-04 01:56:21 +02:00
2026-07-03 17:15:17 -07:00
2026-06-24 22:54:00 +08:00
2026-07-05 08:00:23 -04:00
2026-06-22 18:44:21 +08:00
2026-06-19 05:47:19 +02:00
2026-07-01 21:21:31 -05:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-03 17:58:15 -07:00
2026-06-07 12:14:09 +02:00
2026-06-04 20:49:50 -04:00
2026-06-21 18:56:26 +02:00
2026-06-23 13:44:14 +08:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 08:00:23 -04:00
2026-07-05 08:00:23 -04:00
2026-06-04 20:49:50 -04:00
2026-06-21 22:56:54 +02:00
2026-07-05 14:19:13 -04:00
2026-06-29 07:58:40 -07:00
2026-06-04 20:49:50 -04:00
2026-07-05 10:57:19 -07:00
2026-06-10 15:37:15 +09:00
2026-06-07 01:11:24 +02:00
2026-07-01 03:58:21 -07:00
2026-06-22 04:32:34 +02:00
2026-06-18 22:39:43 +02:00
2026-06-18 23:26:21 +02:00
2026-06-18 23:33:44 +02:00
2026-06-20 15:19:22 +02:00
2026-06-20 15:16:15 +02:00
2026-06-23 14:01:29 +02:00
2026-07-05 12:16:41 -07:00
2026-06-23 12:40:25 +02:00
2026-06-20 03:12:16 +02:00
2026-07-05 14:25:57 -04:00
2026-06-20 02:02:37 +02:00
2026-06-04 20:49:50 -04:00
2026-06-04 20:49:50 -04:00
2026-07-05 08:00:23 -04:00
2026-07-06 01:06:02 +01:00
2026-07-05 08:00:23 -04:00
2026-06-20 02:31:40 +08:00
2026-06-26 21:41:14 -05:00
2026-06-21 22:19:54 +02:00
2026-06-26 21:41:14 -05:00
2026-07-05 12:53:06 -07:00
2026-06-21 16:59:51 +02:00
2026-06-21 18:43:05 +02:00
2026-07-05 11:12:55 -07:00
2026-07-05 08:55:05 -07:00
2026-06-21 21:32:17 +02:00
2026-06-04 20:49:50 -04:00
2026-07-05 12:16:41 -07:00
2026-06-20 15:16:15 +02:00
2026-06-04 20:49:50 -04:00
2026-06-20 15:43:04 +02:00
2026-06-04 20:49:50 -04:00
2026-07-05 12:53:06 -07:00
2026-06-07 11:33:36 +02:00