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 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, and settings drift in both directions:
62
- keys present in the repo merge but absent from your live `settings.json` (behind; the next
63
- `nomad pull` will restore them, fix: `nomad pull`) and keys present locally but not yet in the
64
- repo (ahead; local-only additions, fix: `nomad capture-settings`). Each issue includes a fix hint.
65
- By default the report is compact: it shows only checks that need action plus a one-line verdict.
66
- Add `--verbose` (or `--all` / `-v`) to see the full per-check tree, including everything that
67
- passed.
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 are genuinely Windows-only, both covered in the bullets below: a `.gitleaksignore` allow
134
- entry may not travel to a macOS or Linux host, and deep session paths can hit Windows's
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-specific things worth knowing:
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 on native Windows
166
- these are real copies instead, whether or not you have Developer Mode enabled. WSL2 is unaffected
167
- and behaves like Linux. What this means for you: nothing extra. On Windows both `nomad pull` and
168
- `nomad sync` mirror your local copies into the repo before they fetch, so an unpublished edit is
169
- captured rather than reverted. The one command that deliberately takes the repo's version is
170
- `nomad pull --force-remote`, which is what that flag is for; the copy it replaces is snapshotted
171
- to the backup dir first. This is the same behavior claude-nomad's `skills/` sync already has on
172
- every platform.
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 on
175
- macOS/Linux. If you allow a finding with `nomad push --allow` (or `nomad allow`) on Windows, the
176
- identical finding can reappear as "new" the first time it is scanned from a macOS/Linux host, and
177
- the same happens in reverse. This is a known gitleaks limitation, not a claude-nomad bug; just
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 rewrite
183
- every text file's line endings, and every host would then see the whole tree as permanently
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, the
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