claude-nomad 0.63.2 → 0.64.0
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 +50 -0
- package/README.md +43 -29
- package/dist/nomad.mjs +579 -233
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.64.0](https://github.com/funkadelic/claude-nomad/compare/v0.63.2...v0.64.0) (2026-08-05)
|
|
4
|
+
|
|
5
|
+
### What's new
|
|
6
|
+
|
|
7
|
+
- **Native Windows: deleting a shared config file now sticks.** On native Windows (PowerShell or
|
|
8
|
+
cmd), deleting a file inside a synced folder, say `~/.claude/commands/old.md`, used to leave it
|
|
9
|
+
sitting in the sync repo, and the next `nomad pull` put it straight back. The deletion is now
|
|
10
|
+
carried into the sync repo instead, so it survives the pull and reaches your other machines.
|
|
11
|
+
Nothing is removed unless this machine's own record shows it had the file, and every removed file
|
|
12
|
+
is copied to the backup directory first. The first pull after upgrading has no record yet, so
|
|
13
|
+
deletions start propagating from the pull after that. macOS, Linux, and WSL2 were never affected:
|
|
14
|
+
they symlink shared config, so deleting the file was always a deletion in the repo.
|
|
15
|
+
- **Native Windows: a name clash during a pull now explains itself.** If a file you created inside a
|
|
16
|
+
synced folder has the same name as one an incoming update adds, the pull stops before changing
|
|
17
|
+
anything. You used to be left with git's own error, which pointed at a copy inside the sync repo
|
|
18
|
+
and told you to move it, and following that advice looped, because the next pull copied your file
|
|
19
|
+
back over it. You now get the file under `~/.claude/` to act on and the two ways to finish, keep
|
|
20
|
+
the incoming version or keep both and merge them, and nomad clears its own copy out of the way for
|
|
21
|
+
you. Your file is untouched either way.
|
|
22
|
+
- **Native Windows shared-config changes show up in a preview first.** `nomad pull --dry-run` and
|
|
23
|
+
`nomad diff` now list both the edits being carried into the repo and the files being removed from
|
|
24
|
+
it, worked out before the pull so the preview and the real run agree.
|
|
25
|
+
- **`nomad doctor` notices a native Windows shared file that has drifted.** When a synced copy under
|
|
26
|
+
`~/.claude/` no longer matches the one in the repo, doctor warns about it instead of reporting the
|
|
27
|
+
machine as healthy. On the symlink platforms there is only ever one file, so there is nothing to
|
|
28
|
+
drift.
|
|
29
|
+
- **`nomad doctor` no longer recognizes `leftArrowOpensAgents`.** Claude Code dropped it from its
|
|
30
|
+
settings schema, so doctor will flag it as an unknown key if you still have it set. This one
|
|
31
|
+
applies everywhere, not just on Windows.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
* **pull:** propagate Windows shared-config deletions into the sync repo ([#489](https://github.com/funkadelic/claude-nomad/issues/489)) ([3255fb7](https://github.com/funkadelic/claude-nomad/commit/3255fb7fc54e3c490627e0701d96226403020f7e))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
* **pull:** explain a Windows mirror collision instead of forwarding git advice ([#491](https://github.com/funkadelic/claude-nomad/issues/491)) ([2f13a61](https://github.com/funkadelic/claude-nomad/commit/2f13a619ca066ea707cc7b7e7e0e738a136ebf9f))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
* **doctor:** sync settings schema keys ([#488](https://github.com/funkadelic/claude-nomad/issues/488)) ([78bcf7c](https://github.com/funkadelic/claude-nomad/commit/78bcf7c17b8557f6f26e33bd74405fb8cd7228a8))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
* distinguish native Windows from WSL2 in the user docs ([#492](https://github.com/funkadelic/claude-nomad/issues/492)) ([f6b1e9e](https://github.com/funkadelic/claude-nomad/commit/f6b1e9ee1feba24150b03741a255793b4238f253))
|
|
52
|
+
|
|
3
53
|
## [0.63.2](https://github.com/funkadelic/claude-nomad/compare/v0.63.1...v0.63.2) (2026-08-04)
|
|
4
54
|
|
|
5
55
|
### What's new
|
package/README.md
CHANGED
|
@@ -58,13 +58,14 @@ survives different file paths and your secrets never ride along.
|
|
|
58
58
|
project folder no longer exists on this machine, a multi-host repo where this machine's
|
|
59
59
|
hostname-derived key matches no `hosts/<HOST>.json` or path-map entry (a sign `NOMAD_HOST` is
|
|
60
60
|
unset here, so per-host settings and session sync will not line up with the other hosts), synced
|
|
61
|
-
skills with local edits that differ from the shared copy,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
skills with local edits that differ from the shared copy, a native Windows shared-config copy that
|
|
62
|
+
has drifted from the repo's copy (a warning, not a failure), and settings drift in both
|
|
63
|
+
directions: keys present in the repo merge but absent from your live `settings.json` (behind; the
|
|
64
|
+
next `nomad pull` will restore them, fix: `nomad pull`) and keys present locally but not yet in
|
|
65
|
+
the repo (ahead; local-only additions, fix: `nomad capture-settings`). Each issue includes a fix
|
|
66
|
+
hint. By default the report is compact: it shows only checks that need action plus a one-line
|
|
67
|
+
verdict. Add `--verbose` (or `--all` / `-v`) to see the full per-check tree, including everything
|
|
68
|
+
that passed.
|
|
68
69
|
- **Self-healing sync.** Every overwrite is backed up first, and `nomad pull --force-remote`
|
|
69
70
|
recovers two kinds of stuck sync repo: a repo stuck mid-rebase or mid-merge (aborts the operation,
|
|
70
71
|
parks stranded work on a branch, refuses if shared config is at risk), and a repo where the rebase
|
|
@@ -130,9 +131,9 @@ That leaves two files to keep in step, and claude-nomad does it for you: `nomad
|
|
|
130
131
|
overwritten. Enabling Developer Mode does not change this; copies are used on every native Windows
|
|
131
132
|
host either way.
|
|
132
133
|
|
|
133
|
-
Two things
|
|
134
|
-
entry may not travel to a macOS or
|
|
135
|
-
260-character path limit.
|
|
134
|
+
Two things come from native Windows specifically, both covered in the bullets below: a
|
|
135
|
+
`.gitleaksignore` allow entry may not travel to a macOS, Linux, or WSL2 host, and deep session paths
|
|
136
|
+
can hit the native Windows 260-character path limit.
|
|
136
137
|
|
|
137
138
|
The native Windows steps are the same as above with a couple of PowerShell-specific swaps:
|
|
138
139
|
|
|
@@ -154,7 +155,9 @@ The native Windows steps are the same as above with a couple of PowerShell-speci
|
|
|
154
155
|
> nomad push
|
|
155
156
|
```
|
|
156
157
|
|
|
157
|
-
A few Windows
|
|
158
|
+
A few native Windows specifics worth knowing. WSL2 behaves like Linux, so the copy-sync and
|
|
159
|
+
path-length items below do not apply to it; the `.gitleaksignore` one can still reach it, from the
|
|
160
|
+
other side:
|
|
158
161
|
|
|
159
162
|
- **Installing gh:** `winget install GitHub.cli` (or `scoop install gh`), then `gh auth login`.
|
|
160
163
|
Needed before `nomad init` on the first host; later hosts only clone with it.
|
|
@@ -162,26 +165,37 @@ A few Windows-specific things worth knowing:
|
|
|
162
165
|
use Scoop). `nomad doctor` prints the same hint whenever gitleaks is missing from PATH.
|
|
163
166
|
- **Shared config is copied, not symlinked.** On macOS and Linux, files like `CLAUDE.md` and your
|
|
164
167
|
skills live in the sync repo and are symlinked into `~/.claude/`, so there is one source of truth
|
|
165
|
-
on disk. Creating a symlink on Windows needs Developer Mode or admin rights, so
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
`nomad sync` mirror your local copies into the repo before they fetch, so an unpublished edit
|
|
169
|
-
captured rather than reverted.
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
168
|
+
on disk. Creating a symlink on native Windows needs Developer Mode or admin rights, so there these
|
|
169
|
+
are real copies instead, whether or not you have Developer Mode enabled. WSL2 is unaffected and
|
|
170
|
+
behaves like Linux. What this means for you: nothing extra. On native Windows both `nomad pull`
|
|
171
|
+
and `nomad sync` mirror your local copies into the repo before they fetch, so an unpublished edit
|
|
172
|
+
is captured rather than reverted. A file you delete from a shared directory is handled the same
|
|
173
|
+
way: it is removed from the sync repo by the next pull, exactly as deleting inside a symlinked
|
|
174
|
+
directory already removes it on macOS or Linux. The removal is left uncommitted, so it publishes
|
|
175
|
+
on your next push and passes the same secret scan as everything else, and the file is snapshotted
|
|
176
|
+
to the backup dir first. The safety rule behind this: nomad only removes a file it has a record of
|
|
177
|
+
having given this machine, so a repo file this machine has never synced is never touched. That
|
|
178
|
+
record is also why the first pull after you upgrade to this version is an exception: there is
|
|
179
|
+
nothing to compare against yet, so a deletion made before that pull comes back once, and deleting
|
|
180
|
+
it again sticks. If a file you created has the same name as one another machine just created, the
|
|
181
|
+
pull stops before it changes anything and tells you which file under `~/.claude/` to move or
|
|
182
|
+
rename, with the two ways to finish. Nothing is lost either way: your file stays exactly as you
|
|
183
|
+
left it and the update simply waits for the next pull. The one command that deliberately takes the
|
|
184
|
+
repo's version is `nomad pull --force-remote`, which is what that flag is for; the copy it
|
|
185
|
+
replaces is snapshotted to the backup dir first. This is the same behavior claude-nomad's
|
|
186
|
+
`skills/` sync already has on every platform.
|
|
173
187
|
- **A `.gitleaksignore` allow entry may not travel across hosts.** gitleaks fingerprints each
|
|
174
|
-
finding using the file path exactly as it saw it: backslashes on Windows, forward slashes
|
|
175
|
-
macOS/Linux. If you allow a finding with `nomad push --allow` (or `nomad allow`) on
|
|
176
|
-
identical finding can reappear as "new" the first time it is scanned from a macOS
|
|
177
|
-
the same happens in reverse. This is a known gitleaks limitation, not a
|
|
178
|
-
allow it again from the other host.
|
|
188
|
+
finding using the file path exactly as it saw it: backslashes on native Windows, forward slashes
|
|
189
|
+
on macOS/Linux/WSL2. If you allow a finding with `nomad push --allow` (or `nomad allow`) on native
|
|
190
|
+
Windows, the identical finding can reappear as "new" the first time it is scanned from a macOS,
|
|
191
|
+
Linux, or WSL2 host, and the same happens in reverse. This is a known gitleaks limitation, not a
|
|
192
|
+
claude-nomad bug; just allow it again from the other host.
|
|
179
193
|
- **Line endings stay put.** A fresh `nomad init` writes a `.gitattributes` with `* -text`, so Git
|
|
180
194
|
never converts line endings between hosts. If you are joining a sync repo created before this file
|
|
181
195
|
existed, add that one line from any host (or watch for the `nomad doctor` warning that nudges
|
|
182
|
-
you), otherwise a Windows checkout with the common `core.autocrlf=true` Git default would
|
|
183
|
-
every text file's line endings, and every host would then see the whole tree as
|
|
184
|
-
changed.
|
|
196
|
+
you), otherwise a native Windows checkout with the common `core.autocrlf=true` Git default would
|
|
197
|
+
rewrite every text file's line endings, and every host would then see the whole tree as
|
|
198
|
+
permanently changed.
|
|
185
199
|
|
|
186
200
|
Everyday loop on any host:
|
|
187
201
|
|
|
@@ -307,8 +321,8 @@ independently from the CLI, but requires nomad `>= 0.35.0` because it calls rece
|
|
|
307
321
|
- `gh` ([GitHub CLI](https://cli.github.com/)), required by `nomad init`
|
|
308
322
|
|
|
309
323
|
Works on macOS, Linux (including WSL2), and native Windows (PowerShell or cmd). See
|
|
310
|
-
[Windows](#windows) above for the Windows equivalents of the install and host-label steps,
|
|
311
|
-
copy-sync trade-off, and the `.gitleaksignore` cross-host caveat.
|
|
324
|
+
[Windows](#windows) above for the native Windows equivalents of the install and host-label steps,
|
|
325
|
+
the copy-sync trade-off, and the `.gitleaksignore` cross-host caveat.
|
|
312
326
|
|
|
313
327
|
**Optional:** [curl](https://curl.se/) or [wget](https://www.gnu.org/software/wget/) for the
|
|
314
328
|
version-staleness check and `nomad doctor --check-schema`. The CLI works without them. The opt-in
|