claude-nomad 0.69.1 → 0.69.2

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.
Files changed (4) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +41 -11
  3. package/dist/nomad.mjs +1591 -1325
  4. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.69.2](https://github.com/funkadelic/claude-nomad/compare/v0.69.1...v0.69.2) (2026-09-19)
4
+
5
+
6
+ ### What's new
7
+
8
+ **On native Windows (PowerShell, cmd, or Git Bash).** WSL2 behaves like Linux, so these do not apply to it.
9
+
10
+ * `nomad allow`, and choosing Allow when `nomad push` finds a possible secret, no longer add a duplicate line to a `.gitleaksignore` saved with Windows line endings.
11
+ * The cleanup commands `nomad eject` prints now use forward slashes, so you can paste them into Git Bash as they are.
12
+
13
+ **On every platform**
14
+
15
+ * `nomad pull` no longer overwrites a setting you changed on this machine but haven't saved to your sync repo. It stops, names each one, and tells you to save it with `nomad capture-settings` or delete it. `nomad sync` and `nomad pull --dry-run` flag the same settings.
16
+ * When a setting is removed from your sync repo, whether you removed it or another machine did, a pull removes it here too, but only if you haven't edited it on this machine. The pull names each setting it removes, `nomad doctor` warns about them beforehand, and the settings file from before the pull is kept in `~/.cache/claude-nomad/backup/`.
17
+ * Settings that can hold a secret, such as `env` or `apiKeyHelper`, are never printed, so a pull can't list them. When it replaces some that your sync repo doesn't track, it now tells you how many. Keep values like these in `~/.claude/settings.local.json`, which nomad never touches.
18
+ * `nomad eject` now also deletes the records nomad keeps about this machine, so setting nomad up here again starts fresh.
19
+
20
+
21
+ ### Fixed
22
+
23
+ * **eject:** forget this machine's sync records ([#615](https://github.com/funkadelic/claude-nomad/issues/615)) ([899abd8](https://github.com/funkadelic/claude-nomad/commit/899abd82b2ffd1acd3f6faf36d8e1d26402eb6c7))
24
+ * **pull:** keep a setting you changed when the repo drops it ([#614](https://github.com/funkadelic/claude-nomad/issues/614)) ([f60cc98](https://github.com/funkadelic/claude-nomad/commit/f60cc98989296938f560db58cd05950280f335c7))
25
+ * **pull:** name the settings a pull removes ([#613](https://github.com/funkadelic/claude-nomad/issues/613)) ([8266fc9](https://github.com/funkadelic/claude-nomad/commit/8266fc90a19e3119782354751c8e1ee9c225e6b2))
26
+ * **pull:** stop overwriting settings you have not saved to the repo ([#606](https://github.com/funkadelic/claude-nomad/issues/606)) ([160abba](https://github.com/funkadelic/claude-nomad/commit/160abbaa10766786b58f3a73906fd2feb6c6e097))
27
+ * **pull:** stop refusing a setting you removed from the repo ([#612](https://github.com/funkadelic/claude-nomad/issues/612)) ([d7d620c](https://github.com/funkadelic/claude-nomad/commit/d7d620cf25534aa0d4d65afe0fcbd834d35b7c50))
28
+ * **pull:** warn before replacing a credential setting not in the repo ([#610](https://github.com/funkadelic/claude-nomad/issues/610)) ([db739f5](https://github.com/funkadelic/claude-nomad/commit/db739f510ac7a8fde6c7139f0ea00a22cf3c4aec))
29
+ * **redact:** stop adding duplicate lines to a Windows-style .gitleaksignore ([#609](https://github.com/funkadelic/claude-nomad/issues/609)) ([07152de](https://github.com/funkadelic/claude-nomad/commit/07152de8c26b31ee2ce93a45b1c5ef948e83b558))
30
+ * **redact:** stop re-appending a fingerprint to a CRLF .gitleaksignore ([07152de](https://github.com/funkadelic/claude-nomad/commit/07152de8c26b31ee2ce93a45b1c5ef948e83b558))
31
+
32
+
33
+ ### Changed
34
+
35
+ * split four oversized source files ([#608](https://github.com/funkadelic/claude-nomad/issues/608)) ([8a08ba7](https://github.com/funkadelic/claude-nomad/commit/8a08ba7d27cfb0dab9a7d9c89b69872c13d200c9))
36
+
37
+
38
+ ### Dependencies
39
+
40
+ * bump devalue from 5.8.1 to 5.9.2 in /docs-site ([#611](https://github.com/funkadelic/claude-nomad/issues/611)) ([ad47cbc](https://github.com/funkadelic/claude-nomad/commit/ad47cbcf98ee7cf85628e741b834487ce806cf37))
41
+
3
42
  ## [0.69.1](https://github.com/funkadelic/claude-nomad/compare/v0.69.0...v0.69.1) (2026-09-15)
4
43
 
5
44
 
package/README.md CHANGED
@@ -66,9 +66,10 @@ session history survives different file paths and your secrets never ride along.
66
66
  warning, not a failure), and settings drift in both directions: keys present in the repo merge but
67
67
  absent from your live `settings.json` (behind; the next `nomad pull` will restore them, fix:
68
68
  `nomad pull`) and keys present locally but not yet in the repo (ahead; local-only additions, fix:
69
- `nomad capture-settings`). Each issue includes a fix hint. By default the report is compact: it
70
- shows only checks that need action plus a one-line verdict. Add `--verbose` (or `--all` / `-v`) to
71
- see the full per-check tree, including everything that passed.
69
+ `nomad capture-settings`), plus a warning for a local setting the next pull will remove because
70
+ the repo dropped it. Each issue includes a fix hint. By default the report is compact: it shows
71
+ only checks that need action plus a one-line verdict. Add `--verbose` (or `--all` / `-v`) to see
72
+ the full per-check tree, including everything that passed.
72
73
  - **Self-healing sync.** Every overwrite is backed up first, and `nomad pull --force-remote`
73
74
  recovers two kinds of stuck sync repo: a repo stuck mid-rebase or mid-merge (aborts the operation,
74
75
  parks stranded work on a branch, refuses if shared config is at risk), and a repo where the rebase
@@ -217,6 +218,34 @@ it:
217
218
  before the next `nomad pull` overwrites them. Add `--host` to land machine-specific values (such
218
219
  as absolute paths) in `hosts/<HOST>.json` instead of the shared base.
219
220
 
221
+ If `nomad pull` finds settings on this machine that your sync repo does not track, it leaves
222
+ `~/.claude/settings.json` as it is, so those settings are not lost. It lists the settings by name
223
+ and suggests two fixes: run `nomad capture-settings` to save them to the repo (add `--host` for
224
+ values that belong to this machine only), or delete them from `~/.claude/settings.json` if you no
225
+ longer want them. Your shared files, skills, sessions, and project extras still update, and the
226
+ command exits with a non-zero status so a scripted or cron-driven pull does not report success. Once
227
+ you have saved or deleted the settings, the next pull proceeds normally.
228
+
229
+ Credential settings are the one exception. Keys that can hold a secret (`env`, `apiKeyHelper`,
230
+ `awsAuthRefresh`, `awsCredentialExport`, `otelHeadersHelper`) are never printed, so pull cannot list
231
+ them and will not stop for them. When it finds some your repo does not track, it writes
232
+ `settings.json` as usual and tells you how many it replaced. Keep values like these in
233
+ `~/.claude/settings.local.json`, which nomad never touches.
234
+
235
+ A setting that another machine removed from the repo is removed here too. Each time nomad writes
236
+ your settings, on a pull or a `nomad capture-settings`, it records which settings it wrote on this
237
+ machine, with a fingerprint of each value. A setting in that record that the repo no longer carries,
238
+ and that still has the value nomad wrote, is one nomad put there, so the next pull removes it. The
239
+ pull names each setting it removes (so does `nomad pull --dry-run`), and the file from before the
240
+ pull stays in `~/.cache/claude-nomad/backup/`. A setting missing from the record is one you added,
241
+ and one you changed since is yours now, so either is kept and listed as above. A removal is handled
242
+ the same whether it arrives with this pull or reached your repo earlier through an edit you made, a
243
+ `nomad push`, or a `nomad pull --dry-run`.
244
+
245
+ A machine that has not finished a pull yet, or whose cache folder was cleared, has nothing recorded.
246
+ There a removal that reached the repo earlier is still listed as a setting you added. Save it or
247
+ delete it as above and pull again.
248
+
220
249
  During `nomad push` and `nomad pull`, long-running steps (rebase, secret scan, git push, session
221
250
  sync) show an animated progress indicator on an interactive terminal so the CLI does not look hung.
222
251
  In CI and when output is piped, only plain text lines are printed, with no ANSI control codes, so
@@ -301,14 +330,15 @@ skips with a `⚠︎` when the ref is unavailable, and is non-fatal in all cases
301
330
  Every `nomad` subcommand exits with one of a small set of codes, so a script or cron wrapper can
302
331
  branch on `$?` without parsing stderr text.
303
332
 
304
- | Code | Name | Meaning |
305
- | ---- | --------------- | ------------------------------------------------------------------------------------ |
306
- | 0 | Success | Completed successfully. |
307
- | 1 | Generic failure | Unclassified failure; the default for any error not covered below. |
308
- | 2 | Usage | Bad argv: an unknown subcommand, an unknown flag, or a malformed flag value. |
309
- | 4 | Conflict | The sync repo is wedged (e.g. an unresolved rebase) and needs manual git resolution. |
310
- | 5 | Leak blocked | gitleaks confirmed a secret in the staged tree and the push was aborted. |
311
- | 130 | Interrupted | You pressed Ctrl+C at an interactive prompt, so nomad stopped without finishing. |
333
+ | Code | Name | Meaning |
334
+ | ---- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
335
+ | 0 | Success | Completed successfully. |
336
+ | 1 | Generic failure | Unclassified failure; the default for any error not covered below. |
337
+ | 2 | Usage | Bad argv: an unknown subcommand, an unknown flag, or a malformed flag value. |
338
+ | 4 | Conflict | The sync repo is wedged (e.g. an unresolved rebase) and needs manual git resolution. |
339
+ | 5 | Leak blocked | gitleaks confirmed a secret in the staged tree and the push was aborted. |
340
+ | 6 | Settings blocked | Pull (or the pull half of `nomad sync`) found settings on this machine that are not in the sync repo, so it did not write your settings file. |
341
+ | 130 | Interrupted | You pressed Ctrl+C at an interactive prompt, so nomad stopped without finishing. |
312
342
 
313
343
  A run skipped because another nomad process already holds the lock also exits 0: this is an
314
344
  intentional no-op skip, not a failure, so a backgrounded shell-rc or cron invocation never raises a