claude-nomad 0.58.1 → 0.60.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 +53 -0
- package/README.md +62 -6
- package/dist/nomad.mjs +1560 -1106
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.60.0](https://github.com/funkadelic/claude-nomad/compare/v0.59.0...v0.60.0) (2026-07-15)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Added
|
|
7
|
+
|
|
8
|
+
* **links:** preserve live gsd hook entries across regenerateSettings ([#421](https://github.com/funkadelic/claude-nomad/issues/421)) ([10a18ca](https://github.com/funkadelic/claude-nomad/commit/10a18ca7ed6c1851cdc43e46ad616527d41a1f92))
|
|
9
|
+
* **sync:** compact output with merged tree and no-op collapse ([#415](https://github.com/funkadelic/claude-nomad/issues/415)) ([9bb9cdd](https://github.com/funkadelic/claude-nomad/commit/9bb9cdd7e901ea463d5c1fb5b66ffc39b2864f8a))
|
|
10
|
+
* **sync:** compact summary-only output by default, add --verbose ([#420](https://github.com/funkadelic/claude-nomad/issues/420)) ([b5b95b3](https://github.com/funkadelic/claude-nomad/commit/b5b95b372634a0b372023b399e7f16bb0063ff74))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
* **lint:** enable sonarjs recommended ruleset with triaged exclusions ([#422](https://github.com/funkadelic/claude-nomad/issues/422)) ([f92fce8](https://github.com/funkadelic/claude-nomad/commit/f92fce8533e06814d5e3f58c1f120adf3e00ded7))
|
|
16
|
+
* **tests:** make Defender exclusion step non-fatal ([#419](https://github.com/funkadelic/claude-nomad/issues/419)) ([413a906](https://github.com/funkadelic/claude-nomad/commit/413a9065ef152dfaedd76b325de749070e2165ab))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Testing
|
|
20
|
+
|
|
21
|
+
* **integration:** cover extras deny-set, host overrides, and skills sync in round-trip ([#418](https://github.com/funkadelic/claude-nomad/issues/418)) ([70074b5](https://github.com/funkadelic/claude-nomad/commit/70074b5c5a8831a93726576e346e7e89ac511ffa))
|
|
22
|
+
* **pull:** fix flaky incomingChanges tests via shared mock instance ([#417](https://github.com/funkadelic/claude-nomad/issues/417)) ([6589887](https://github.com/funkadelic/claude-nomad/commit/6589887d0ac1c77f7696b89a1a518e469e913dae))
|
|
23
|
+
* **vitest:** raise subprocess project maxWorkers to 2 ([#423](https://github.com/funkadelic/claude-nomad/issues/423)) ([8fa28b5](https://github.com/funkadelic/claude-nomad/commit/8fa28b5a2ef4cae4816f5b6ad23bf90189a611d1))
|
|
24
|
+
|
|
25
|
+
## [0.59.0](https://github.com/funkadelic/claude-nomad/compare/v0.58.1...v0.59.0) (2026-07-14)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
* native Windows support via win32 copy-sync modality ([#399](https://github.com/funkadelic/claude-nomad/issues/399)) ([524bce8](https://github.com/funkadelic/claude-nomad/commit/524bce8a3a4a1d900fb28778ed25ba7dd28ffb5d))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
* add pinned actionlint job and single-source node version via .nvmrc ([#413](https://github.com/funkadelic/claude-nomad/issues/413)) ([e9fde67](https://github.com/funkadelic/claude-nomad/commit/e9fde67b50cbe0f0244a242a8dc9b9a8c7079079))
|
|
36
|
+
* drop the windows node 22 test leg ([#402](https://github.com/funkadelic/claude-nomad/issues/402)) ([1973b89](https://github.com/funkadelic/claude-nomad/commit/1973b89439b0d32db72c3046aca6d96b43d2a86c))
|
|
37
|
+
* **pages:** deploy docs on release publish instead of every main push ([#411](https://github.com/funkadelic/claude-nomad/issues/411)) ([c0f2658](https://github.com/funkadelic/claude-nomad/commit/c0f2658a8ed0369ef7216d08c7df07bb0635b9d1))
|
|
38
|
+
* platform stub helper and extras-sync collision-guard split ([#401](https://github.com/funkadelic/claude-nomad/issues/401)) ([5b3f906](https://github.com/funkadelic/claude-nomad/commit/5b3f906943004be5f3cf3411b6d0a250ce61ff04))
|
|
39
|
+
* **sonar:** fix doctor check smells and suppress S5976 for tests ([#409](https://github.com/funkadelic/claude-nomad/issues/409)) ([52e506e](https://github.com/funkadelic/claude-nomad/commit/52e506ebaa9a55b29d7946b408fd2db4b623cdc4))
|
|
40
|
+
* **tests:** declare shell pwsh on windows gitleaks step, drop lint ignore ([#414](https://github.com/funkadelic/claude-nomad/issues/414)) ([21a620f](https://github.com/funkadelic/claude-nomad/commit/21a620fb841fe7eb2432044f5ee69f8c0d11736b))
|
|
41
|
+
* **tests:** speed up windows leg via Defender scanning exclusion ([#412](https://github.com/funkadelic/claude-nomad/issues/412)) ([a7409bc](https://github.com/funkadelic/claude-nomad/commit/a7409bcf6e5ee4372a0e86c01ddde6653d531e40))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Testing
|
|
45
|
+
|
|
46
|
+
* isolate subprocess-heavy tests into a bounded vitest project ([#403](https://github.com/funkadelic/claude-nomad/issues/403)) ([579de5b](https://github.com/funkadelic/claude-nomad/commit/579de5b3583a4968e109fd8987ac25f8b7a9cc54))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Dependencies
|
|
50
|
+
|
|
51
|
+
* bump actions/labeler from 6.1.0 to 6.2.0 ([#405](https://github.com/funkadelic/claude-nomad/issues/405)) ([e582f9d](https://github.com/funkadelic/claude-nomad/commit/e582f9df0897614472a10b6ebbe30e2d94f3c9e9))
|
|
52
|
+
* bump astro in /docs-site in the prod-dependencies group ([#408](https://github.com/funkadelic/claude-nomad/issues/408)) ([7726450](https://github.com/funkadelic/claude-nomad/commit/7726450933cb54e320e60aa2903ca091c8e6206c))
|
|
53
|
+
* bump the codeql-action group across 1 directory with 2 updates ([#404](https://github.com/funkadelic/claude-nomad/issues/404)) ([ddd61c3](https://github.com/funkadelic/claude-nomad/commit/ddd61c34185d2702681d3a8af63ece19dbcfb4c1))
|
|
54
|
+
* bump the dev-dependencies group across 1 directory with 5 updates ([#410](https://github.com/funkadelic/claude-nomad/issues/410)) ([e9e98f8](https://github.com/funkadelic/claude-nomad/commit/e9e98f819cf80feeff59627678369cd63dd4b9df))
|
|
55
|
+
|
|
3
56
|
## [0.58.1](https://github.com/funkadelic/claude-nomad/compare/v0.58.0...v0.58.1) (2026-07-11)
|
|
4
57
|
|
|
5
58
|
|
package/README.md
CHANGED
|
@@ -114,6 +114,57 @@ export NOMAD_HOST=<your-host-label> # add to ~/.zshrc or ~/.bashrc
|
|
|
114
114
|
$ nomad pull
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
+
### Windows
|
|
118
|
+
|
|
119
|
+
claude-nomad also runs natively on Windows, no WSL required (WSL2 still works fine too, if you
|
|
120
|
+
prefer it). The steps are the same as above with a couple of PowerShell-specific swaps:
|
|
121
|
+
|
|
122
|
+
```powershell
|
|
123
|
+
# 1. Install the CLI.
|
|
124
|
+
> npm i -g claude-nomad
|
|
125
|
+
|
|
126
|
+
# 2. Create your private sync repo and scaffold it.
|
|
127
|
+
> nomad init
|
|
128
|
+
|
|
129
|
+
# 3. Add a stable host label. PowerShell has no ~/.bashrc equivalent, so set it
|
|
130
|
+
# as a persistent user environment variable instead, then restart your
|
|
131
|
+
# terminal so the new value is picked up.
|
|
132
|
+
> [System.Environment]::SetEnvironmentVariable('NOMAD_HOST', '<your-host-label>', 'User')
|
|
133
|
+
# Using cmd instead of PowerShell? The equivalent one-liner is:
|
|
134
|
+
# setx NOMAD_HOST <your-host-label>
|
|
135
|
+
|
|
136
|
+
# 4. Publish the scaffold to your private repo.
|
|
137
|
+
> nomad push
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
A few Windows-specific things worth knowing:
|
|
141
|
+
|
|
142
|
+
- **Installing gh:** `winget install GitHub.cli` (or `scoop install gh`), then `gh auth login`.
|
|
143
|
+
Needed before `nomad init` on the first host; later hosts only clone with it.
|
|
144
|
+
- **Installing gitleaks:** `winget install gitleaks.gitleaks` (or `scoop install gitleaks` if you
|
|
145
|
+
use Scoop). `nomad doctor` prints the same hint whenever gitleaks is missing from PATH.
|
|
146
|
+
- **Shared config is copied, not symlinked.** On macOS and Linux, files like `CLAUDE.md` and your
|
|
147
|
+
skills live in the sync repo and are symlinked into `~/.claude/`, so there is one source of truth
|
|
148
|
+
on disk. Creating a symlink on Windows needs Developer Mode or admin rights, so on Windows these
|
|
149
|
+
are real copies instead. What this means for you: after editing a shared file on Windows, run
|
|
150
|
+
`nomad push` before your next `nomad pull` or `nomad sync`. `nomad sync` always pulls first, and
|
|
151
|
+
the pull half overlays the repo's copy onto yours (the prior content is snapshotted to the backup
|
|
152
|
+
dir first, so it is recoverable, but it is still reverted in place); pushing first is what
|
|
153
|
+
actually captures your edit. This is the same behavior claude-nomad's `skills/` sync already has
|
|
154
|
+
on every platform.
|
|
155
|
+
- **A `.gitleaksignore` allow entry may not travel across hosts.** gitleaks fingerprints each
|
|
156
|
+
finding using the file path exactly as it saw it: backslashes on Windows, forward slashes on
|
|
157
|
+
macOS/Linux. If you allow a finding with `nomad push --allow` (or `nomad allow`) on Windows, the
|
|
158
|
+
identical finding can reappear as "new" the first time it is scanned from a macOS/Linux host, and
|
|
159
|
+
the same happens in reverse. This is a known gitleaks limitation, not a claude-nomad bug; just
|
|
160
|
+
allow it again from the other host.
|
|
161
|
+
- **Line endings stay put.** A fresh `nomad init` writes a `.gitattributes` with `* -text`, so Git
|
|
162
|
+
never converts line endings between hosts. If you are joining a sync repo created before this file
|
|
163
|
+
existed, add that one line from any host (or watch for the `nomad doctor` warning that nudges
|
|
164
|
+
you), otherwise a Windows checkout with the common `core.autocrlf=true` Git default would rewrite
|
|
165
|
+
every text file's line endings, and every host would then see the whole tree as permanently
|
|
166
|
+
changed.
|
|
167
|
+
|
|
117
168
|
Everyday loop on any host:
|
|
118
169
|
|
|
119
170
|
```bash
|
|
@@ -123,12 +174,13 @@ $ nomad sync # pull config, then publish local changes, in one step
|
|
|
123
174
|
|
|
124
175
|
`nomad sync` is the command to reach for day to day: it always pulls first (so changes from your
|
|
125
176
|
other machines land before anything is pushed, and work that exists only on this machine is kept,
|
|
126
|
-
not deleted) and then pushes, under one lock, so there is no ordering to remember.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
[
|
|
177
|
+
not deleted) and then pushes, under one lock, so there is no ordering to remember. Output is compact
|
|
178
|
+
by default: a run prints only a short Sync summary, not the full status tree; pass
|
|
179
|
+
`nomad sync --verbose` (or `--all` / `-v`) to see the full tree. `nomad pull` and `nomad push` are
|
|
180
|
+
still available as lower-level commands for cases `sync` does not cover: recovering a wedged repo
|
|
181
|
+
with `nomad pull --force-remote`, or resolving a detected secret without the interactive menu via
|
|
182
|
+
`nomad push --redact-all` / `--allow` / `--allow-all` (see [Changing settings](#changing-settings)
|
|
183
|
+
and [Recovery flows](https://funkadelic.github.io/claude-nomad/recovery/)). The
|
|
132
184
|
[FAQ](https://funkadelic.github.io/claude-nomad/faq/) covers what `sync` does under the hood and the
|
|
133
185
|
push/pull order it enforces.
|
|
134
186
|
|
|
@@ -235,6 +287,10 @@ independently from the CLI, but requires nomad `>= 0.35.0` because it calls rece
|
|
|
235
287
|
- [`gitleaks`](https://github.com/gitleaks/gitleaks) (required for `nomad push`)
|
|
236
288
|
- `gh` ([GitHub CLI](https://cli.github.com/)), required by `nomad init`
|
|
237
289
|
|
|
290
|
+
Works on macOS, Linux (including WSL2), and native Windows (PowerShell or cmd). See
|
|
291
|
+
[Windows](#windows) above for the Windows equivalents of the install and host-label steps, the
|
|
292
|
+
copy-sync trade-off, and the `.gitleaksignore` cross-host caveat.
|
|
293
|
+
|
|
238
294
|
**Optional:** [curl](https://curl.se/) or [wget](https://www.gnu.org/software/wget/) for the
|
|
239
295
|
version-staleness check and `nomad doctor --check-schema`. The CLI works without them. The opt-in
|
|
240
296
|
`nomad doctor --check-remote` flag reads the locally-cached `origin/main` remote-tracking ref (no
|