claude-nomad 0.62.5 → 0.62.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.62.6](https://github.com/funkadelic/claude-nomad/compare/v0.62.5...v0.62.6) (2026-07-25)
4
+
5
+
6
+ ### Fixed
7
+
8
+ * **nomad:** treat a Ctrl+C prompt abort as a user cancel ([#466](https://github.com/funkadelic/claude-nomad/issues/466)) ([6250627](https://github.com/funkadelic/claude-nomad/commit/62506279155fe02c067675271fa9bc02f341a14b))
9
+
3
10
  ## [0.62.5](https://github.com/funkadelic/claude-nomad/compare/v0.62.4...v0.62.5) (2026-07-24)
4
11
 
5
12
 
package/README.md CHANGED
@@ -313,6 +313,7 @@ branch on `$?` without parsing stderr text.
313
313
  | 2 | Usage | Bad argv: an unknown subcommand, an unknown flag, or a malformed flag value. |
314
314
  | 4 | Conflict | The sync repo is wedged (e.g. an unresolved rebase) and needs manual git resolution. |
315
315
  | 5 | Leak blocked | gitleaks confirmed a secret in the staged tree and the push was aborted. |
316
+ | 130 | Interrupted | You pressed Ctrl+C at an interactive prompt, so nomad stopped without finishing. |
316
317
 
317
318
  A run skipped because another nomad process already holds the lock also exits 0: this is an
318
319
  intentional no-op skip, not a failure, so a backgrounded shell-rc or cron invocation never raises a
@@ -323,7 +324,8 @@ false alarm from a concurrent run. Value `3` is reserved for future use.
323
324
  If `nomad` ever hits an unexpected bug, it no longer dumps a raw stack trace at you. Instead it
324
325
  prints a short "this looks like a bug" banner (with a link to the issue tracker) and writes a small
325
326
  report you can attach to a bug report if you choose. The exit code is unchanged: an unexpected crash
326
- exits `1`, and a documented failure still exits with its own code from the table above.
327
+ exits `1`, and a documented failure still exits with its own code from the table above. A prompt you
328
+ cancel yourself is not a crash: it exits `130` and writes no report.
327
329
 
328
330
  What this means for you:
329
331
 
package/dist/nomad.mjs CHANGED
@@ -204,7 +204,12 @@ var init_exit_codes = __esm({
204
204
  /** A wedged repo state (e.g. an unresolved rebase) needing manual git resolution. */
205
205
  CONFLICT: 4,
206
206
  /** gitleaks confirmed a secret in the staged tree and the push was aborted. */
207
- LEAK_BLOCKED: 5
207
+ LEAK_BLOCKED: 5,
208
+ /**
209
+ * The user interrupted an interactive prompt with Ctrl+C and nothing was
210
+ * left half-written. The conventional 128 + SIGINT(2) value.
211
+ */
212
+ INTERRUPTED: 130
208
213
  };
209
214
  }
210
215
  });
@@ -9172,7 +9177,7 @@ function parseSyncArgs(argv) {
9172
9177
  // package.json
9173
9178
  var package_default = {
9174
9179
  name: "claude-nomad",
9175
- version: "0.62.5",
9180
+ version: "0.62.6",
9176
9181
  type: "module",
9177
9182
  description: "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
9178
9183
  keywords: [
@@ -9496,6 +9501,15 @@ function shQuote(s) {
9496
9501
  return `'${escaped}'`;
9497
9502
  }
9498
9503
 
9504
+ // src/user-abort.ts
9505
+ var ABORT_NAMES = /* @__PURE__ */ new Set(["AbortError", "ExitPromptError"]);
9506
+ var ABORT_CODE = "ABORT_ERR";
9507
+ function isUserAbort(err) {
9508
+ if (typeof err !== "object" || err === null) return false;
9509
+ const { name, code } = err;
9510
+ return typeof name === "string" && ABORT_NAMES.has(name) || code === ABORT_CODE;
9511
+ }
9512
+
9499
9513
  // src/nomad.ts
9500
9514
  init_utils();
9501
9515
  init_exit_codes();
@@ -9505,6 +9519,10 @@ function handleTopLevelError(err) {
9505
9519
  fail(err.message);
9506
9520
  process.exit(err.code);
9507
9521
  }
9522
+ if (isUserAbort(err)) {
9523
+ warn("cancelled.");
9524
+ process.exit(EXIT.INTERRUPTED);
9525
+ }
9508
9526
  const issuesUrl = package_default.bugs?.url ?? "https://github.com/funkadelic/claude-nomad/issues";
9509
9527
  handleCrash(err, process.argv, {
9510
9528
  version: package_default.version,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-nomad",
3
- "version": "0.62.5",
3
+ "version": "0.62.6",
4
4
  "type": "module",
5
5
  "description": "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
6
6
  "keywords": [