claude-nomad 0.67.0 → 0.67.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.
- package/CHANGELOG.md +106 -156
- package/README.md +7 -1
- package/dist/nomad.mjs +710 -514
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,27 +1,85 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.67.2](https://github.com/funkadelic/claude-nomad/compare/v0.67.1...v0.67.2) (2026-08-24)
|
|
4
|
+
|
|
5
|
+
### What's new
|
|
6
|
+
|
|
7
|
+
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
8
|
+
|
|
9
|
+
- **`nomad adopt` no longer calls a broken shortcut adopted.** If a name in `~/.claude/` already points into your sync repo but the repo side is missing, broken, or unreadable, adopt used to report it as already adopted and leave it there. It now says which of those three it found, so you can tell a healthy setup from one that quietly stopped working. It still finishes cleanly, since it only looks and reports.
|
|
10
|
+
|
|
11
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to it.
|
|
12
|
+
|
|
13
|
+
- **A push no longer reports success after skipping a broken shared item.** When an item in your sync repo pointed at something that was no longer there, the push dropped it without a word, so the edits you made on that machine never reached the repo and the push still said it worked. It now warns and names the item. Two more cases used to skip every shared item in silence and now report once: a `shared/` folder that cannot be read at all, and a file sitting where that folder should be.
|
|
14
|
+
- **`nomad adopt` refuses a broken shared item instead of claiming it worked.** `nomad pull` cannot repair a broken pointer, since it copies from it, so adopt now stops and says so rather than sending you to a command that cannot help.
|
|
15
|
+
|
|
16
|
+
**On \*nix, Mac, and WSL2.** Note: native Windows keeps a real copy of each shared item, so this state is normal there and never reported.
|
|
17
|
+
|
|
18
|
+
- **`nomad doctor` stops sending you to a command that would refuse.** When a folder of your own sits where a shared item belongs and your sync repo already holds content under that name, doctor used to tell you to run `nomad adopt <name>`, which turns that exact case away. Doctor now describes the collision and gives you both ways out, and warns that either one throws away a copy.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
* stop reporting success when a shared item is broken in the sync repo ([#538](https://github.com/funkadelic/claude-nomad/issues/538)) ([10961b9](https://github.com/funkadelic/claude-nomad/commit/10961b910ff49b4b146436aee860ae2b7b321fb6))
|
|
23
|
+
* warn once about a broken shared folder and only suggest adopt when it can help ([#540](https://github.com/funkadelic/claude-nomad/issues/540)) ([8d3033d](https://github.com/funkadelic/claude-nomad/commit/8d3033d6f72ae45b4329fbc6a0e8d66367a63db7))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
* **tests:** skip the suite for docs-site-only changes ([#548](https://github.com/funkadelic/claude-nomad/issues/548)) ([52cbe18](https://github.com/funkadelic/claude-nomad/commit/52cbe18b9cd67e338f3a269d8ec42610312a4150))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Dependencies
|
|
32
|
+
|
|
33
|
+
* bump astro from 7.2.2 to 7.2.4 in /docs-site in the prod-dependencies group across 1 directory ([#545](https://github.com/funkadelic/claude-nomad/issues/545)) ([f888dbd](https://github.com/funkadelic/claude-nomad/commit/f888dbdb2e6caa2e8c6fdc8cf49113c990eea54a))
|
|
34
|
+
* bump the codeql-action group across 1 directory with 2 updates ([#544](https://github.com/funkadelic/claude-nomad/issues/544)) ([0754b7b](https://github.com/funkadelic/claude-nomad/commit/0754b7b0d38f6390ef319661219ed17cabfeb6ca))
|
|
35
|
+
* bump the dev-dependencies group across 1 directory with 2 updates ([#547](https://github.com/funkadelic/claude-nomad/issues/547)) ([1b0f539](https://github.com/funkadelic/claude-nomad/commit/1b0f5394e929e948082881486358f04347433330))
|
|
36
|
+
* bump the dev-dependencies group with 2 updates ([#541](https://github.com/funkadelic/claude-nomad/issues/541)) ([a1fef0c](https://github.com/funkadelic/claude-nomad/commit/a1fef0c37c7bcddf7571e5a40c8c78d620d8cd33))
|
|
37
|
+
* bump the stryker group from 9.6.1 to 10.0.0 ([#546](https://github.com/funkadelic/claude-nomad/issues/546)) ([e9980e8](https://github.com/funkadelic/claude-nomad/commit/e9980e8ec7c27307496946e2f45298d9c247e720))
|
|
38
|
+
|
|
39
|
+
## [0.67.1](https://github.com/funkadelic/claude-nomad/compare/v0.67.0...v0.67.1) (2026-08-20)
|
|
40
|
+
|
|
41
|
+
### What's new
|
|
42
|
+
|
|
43
|
+
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
44
|
+
|
|
45
|
+
- **A project in a folder named `sessions`, `tasks`, `plans`, or `cache` now syncs its own history.** Those names, along with `debug`, `jobs`, `security`, and a few more, belong to nomad's own working folders, so a project of yours that happened to share one was refused as though it held something private. Nothing in it was, and the name alone decided it. Those projects now sync like any other, and nomad still checks what is actually inside a folder exactly as before.
|
|
46
|
+
- **A per-host settings file sitting at the very top of a folder you share now stays out of your sync repo.** Inside a folder you opted into sharing, nomad already blocked `settings.local.json` and anything else shaped like a credential file at every level except the very top, where one could slip past and reach your other machines. The top level is now covered too.
|
|
47
|
+
|
|
48
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to it.
|
|
49
|
+
|
|
50
|
+
- **A pull no longer removes that project's transcripts from your sync repo.** The same name check ran during a pull, where it deleted rather than refused, so every pull stripped that project's saved history out of the sync repo. Each one left a backup under `~/.cache/claude-nomad/backup/`, but never put anything back. Pulls now leave those projects alone.
|
|
51
|
+
- **When a sync cannot remove or back up a file, it now tells you why.** These warnings sometimes printed the word `undefined` where the reason belongs, so you got a filename and nothing else. They now carry the real reason. A failure arriving in an unexpected form could also stop the cleanup partway through, leaving the files after the first problem unhandled and unmentioned. The pass now runs to the end and reports everything it did.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
* **config:** stop a project's own folder name from blocking its history ([#536](https://github.com/funkadelic/claude-nomad/issues/536)) ([1994c55](https://github.com/funkadelic/claude-nomad/commit/1994c55a32c62220e8d7291554f95099b2c12eba))
|
|
57
|
+
* **mirror:** name the reason in sync warnings instead of undefined ([#537](https://github.com/funkadelic/claude-nomad/issues/537)) ([e973ff3](https://github.com/funkadelic/claude-nomad/commit/e973ff392e369694e517c5aabfb26c996836378f))
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
* **codeql:** exclude test files from security scanning ([#534](https://github.com/funkadelic/claude-nomad/issues/534)) ([c86a6d3](https://github.com/funkadelic/claude-nomad/commit/c86a6d3c80a640e0a251181c8c0461edef2375da))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### Dependencies
|
|
66
|
+
|
|
67
|
+
* bump fast-uri from 3.1.4 to 3.1.5 ([#527](https://github.com/funkadelic/claude-nomad/issues/527)) ([6a8f6ba](https://github.com/funkadelic/claude-nomad/commit/6a8f6baa534dae9d9e6786acf96627c85bb8d400))
|
|
68
|
+
* bump js-yaml from 4.3.0 to 4.3.1 in /docs-site ([#529](https://github.com/funkadelic/claude-nomad/issues/529)) ([a4e541f](https://github.com/funkadelic/claude-nomad/commit/a4e541fd74100527306ebaa713a2a730ffe98af7))
|
|
69
|
+
* bump nanoid from 3.3.15 to 3.3.18 in /docs-site ([#531](https://github.com/funkadelic/claude-nomad/issues/531)) ([0a0f53e](https://github.com/funkadelic/claude-nomad/commit/0a0f53ee46e3b69babd82b84e39c6982791f8896))
|
|
70
|
+
* bump postcss from 8.5.15 to 8.5.26 in /docs-site ([#530](https://github.com/funkadelic/claude-nomad/issues/530)) ([413f75d](https://github.com/funkadelic/claude-nomad/commit/413f75db6c292785f6b7d67fbd629680d5b39e04))
|
|
71
|
+
* bump postcss from 8.5.16 to 8.5.26 ([#532](https://github.com/funkadelic/claude-nomad/issues/532)) ([b03bd62](https://github.com/funkadelic/claude-nomad/commit/b03bd62ab77249bdcc31c78ac2440da434b2de39))
|
|
72
|
+
* bump svgo from 4.0.1 to 4.0.2 in /docs-site ([#528](https://github.com/funkadelic/claude-nomad/issues/528)) ([a424693](https://github.com/funkadelic/claude-nomad/commit/a4246932d01a79082383d6a09e08e7542eb7a873))
|
|
73
|
+
|
|
3
74
|
## [0.67.0](https://github.com/funkadelic/claude-nomad/compare/v0.66.0...v0.67.0) (2026-08-18)
|
|
4
75
|
|
|
5
76
|
### What's new
|
|
6
77
|
|
|
7
78
|
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
8
79
|
|
|
9
|
-
- **Your backup cache no longer collects empty folders.** Every sync saves a copy of anything it is
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
it has changed anything. A sync that turns out to have nothing to save now clears its own folder
|
|
13
|
-
instead of leaving an empty one behind, and so does one that stops early.
|
|
14
|
-
- **`nomad clean --backups` removes empty backup folders whatever their age.** They hold nothing to
|
|
15
|
-
recover, so neither the 14-day default nor `--keep <N>` keeps one alive, and they no longer use up
|
|
16
|
-
the slots `--keep <N>` reserves: ask for the five newest and you get the five newest that actually
|
|
17
|
-
hold something. Backups holding anything at all, a file or even a link, are left exactly as
|
|
18
|
-
before. `nomad clean --backups --dry-run` always prints its preview, since it changes nothing and
|
|
19
|
-
never waits on another command.
|
|
20
|
-
- **`nomad adopt` no longer runs at the same time as a pull, push, or sync.** It waits its turn the
|
|
21
|
-
way those commands already wait for each other, so a cleanup or a sync running in another terminal
|
|
22
|
-
cannot remove or overwrite a backup that adopt is still writing. If another one is already
|
|
23
|
-
running, adopt says so and does nothing rather than starting a move it cannot finish safely.
|
|
24
|
-
Previewing with `nomad adopt <name> --dry-run` never waits, since it only reads and prints.
|
|
80
|
+
- **Your backup cache no longer collects empty folders.** Every sync saves a copy of anything it is about to overwrite into a dated folder under `~/.cache/claude-nomad/backup/`, and it creates that folder before it touches your files so a full disk or a permissions problem stops the sync before it has changed anything. A sync that turns out to have nothing to save now clears its own folder instead of leaving an empty one behind, and so does one that stops early.
|
|
81
|
+
- **`nomad clean --backups` removes empty backup folders whatever their age.** They hold nothing to recover, so neither the 14-day default nor `--keep <N>` keeps one alive, and they no longer use up the slots `--keep <N>` reserves: ask for the five newest and you get the five newest that actually hold something. Backups holding anything at all, a file or even a link, are left exactly as before. `nomad clean --backups --dry-run` always prints its preview, since it changes nothing and never waits on another command.
|
|
82
|
+
- **`nomad adopt` no longer runs at the same time as a pull, push, or sync.** It waits its turn the way those commands already wait for each other, so a cleanup or a sync running in another terminal cannot remove or overwrite a backup that adopt is still writing. If another one is already running, adopt says so and does nothing rather than starting a move it cannot finish safely. Previewing with `nomad adopt <name> --dry-run` never waits, since it only reads and prints.
|
|
25
83
|
|
|
26
84
|
|
|
27
85
|
### Added
|
|
@@ -39,53 +97,17 @@
|
|
|
39
97
|
|
|
40
98
|
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
41
99
|
|
|
42
|
-
- **A folder you share now carries everything inside it.** If you share a folder through
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
too. `--dry-run` gives exactly the same answer as the real run, so you can check a folder before
|
|
54
|
-
committing to it.
|
|
55
|
-
- **An interrupted `nomad adopt` now explains itself instead of writing a crash report.** If
|
|
56
|
-
another program has the directory open, or its permissions block the move partway through, the
|
|
57
|
-
command says what happened, where your content ended up, and what to run next. Your content is
|
|
58
|
-
safe in every one of these cases: either it was never touched on this machine, or it is already
|
|
59
|
-
in the repo.
|
|
60
|
-
|
|
61
|
-
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to
|
|
62
|
-
it.
|
|
63
|
-
|
|
64
|
-
- **A push no longer publishes a folder you never asked to share.** Windows keeps your shared
|
|
65
|
-
config as real file copies rather than symlinks, and a push used to pick up any folder sitting in
|
|
66
|
-
your Claude directory and publish it to your other machines. Sharing is now the same deliberate
|
|
67
|
-
step it has always been on macOS and Linux: run `nomad adopt <name>` once, then push. Your
|
|
68
|
-
existing shared folders keep syncing exactly as before.
|
|
69
|
-
- **`nomad doctor --verbose` names a folder your repo does not carry yet.** It lists the local
|
|
70
|
-
copies that are still private to this machine, and the command that shares one.
|
|
71
|
-
- **One unreadable file no longer ends your pull.** A single config file that another program has
|
|
72
|
-
open, or that your account cannot read, used to stop the whole pull with a crash report. Nomad
|
|
73
|
-
now names the file and the reason, then carries on: your settings, your skills, and your session
|
|
74
|
-
history all still sync, and the command finishes normally. The warning also says whether the file
|
|
75
|
-
is still there or has been removed, and points at the backup copy when there is one.
|
|
76
|
-
- **`nomad adopt` recovers cleanly when it cannot restore your local copy.** Adopt finishes by
|
|
77
|
-
copying the folder back out of the sync repo so this machine keeps a usable copy. If that copy
|
|
78
|
-
was blocked, the command used to end in a crash report, with the folder gone from your Claude
|
|
79
|
-
directory and nothing staged for publishing. It now stops with a plain message naming the folder
|
|
80
|
-
and the reason, stages the adopted content either way, and tells you to run `nomad pull` before
|
|
81
|
-
your next push and why that order matters. A half written folder left behind by the interrupted
|
|
82
|
-
copy is removed, so a later push cannot replace your adopted folder with the partial one.
|
|
83
|
-
- **A refused `nomad pull --force-remote` now tells you what actually clears it.** The old advice
|
|
84
|
-
did not work, and would land you back on the same refusal. The message now gives the steps that
|
|
85
|
-
finish the job and names the one that clears the check, and it says that the stuck rebase has
|
|
86
|
-
already been undone by that point, so retrying is now just an ordinary pull. It no longer calls
|
|
87
|
-
every listed file at risk, since the list can include files where the shared repo is simply ahead
|
|
88
|
-
of yours. The quickstart says the same thing and links to the matching recovery steps in the FAQ.
|
|
100
|
+
- **A folder you share now carries everything inside it.** If you share a folder through `sharedDirs`, its subfolders travel with it, including ones with everyday names like `sessions`, `plans`, `tasks`, and `cache`. Those names used to be refused wherever they appeared, so a push could fail, or `nomad adopt` could turn you away, over a folder holding nothing sensitive. Your Claude login, your credential files, your per-host settings, and your local history still never leave the machine, in either direction.
|
|
101
|
+
- **`nomad adopt` checks the whole folder before it moves anything.** It used to copy everything, so a file that never syncs between machines could land in your repo and fail your next push, on content you never chose to add. Adopt now stops before touching anything and names every path it objected to and why: a name that collides with the never-sync list, which renaming clears, or a name that looks like a credential file, where renaming only helps if the new name looks different too. `--dry-run` gives exactly the same answer as the real run, so you can check a folder before committing to it.
|
|
102
|
+
- **An interrupted `nomad adopt` now explains itself instead of writing a crash report.** If another program has the directory open, or its permissions block the move partway through, the command says what happened, where your content ended up, and what to run next. Your content is safe in every one of these cases: either it was never touched on this machine, or it is already in the repo.
|
|
103
|
+
|
|
104
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to it.
|
|
105
|
+
|
|
106
|
+
- **A push no longer publishes a folder you never asked to share.** Windows keeps your shared config as real file copies rather than symlinks, and a push used to pick up any folder sitting in your Claude directory and publish it to your other machines. Sharing is now the same deliberate step it has always been on macOS and Linux: run `nomad adopt <name>` once, then push. Your existing shared folders keep syncing exactly as before.
|
|
107
|
+
- **`nomad doctor --verbose` names a folder your repo does not carry yet.** It lists the local copies that are still private to this machine, and the command that shares one.
|
|
108
|
+
- **One unreadable file no longer ends your pull.** A single config file that another program has open, or that your account cannot read, used to stop the whole pull with a crash report. Nomad now names the file and the reason, then carries on: your settings, your skills, and your session history all still sync, and the command finishes normally. The warning also says whether the file is still there or has been removed, and points at the backup copy when there is one.
|
|
109
|
+
- **`nomad adopt` recovers cleanly when it cannot restore your local copy.** Adopt finishes by copying the folder back out of the sync repo so this machine keeps a usable copy. If that copy was blocked, the command used to end in a crash report, with the folder gone from your Claude directory and nothing staged for publishing. It now stops with a plain message naming the folder and the reason, stages the adopted content either way, and tells you to run `nomad pull` before your next push and why that order matters. A half written folder left behind by the interrupted copy is removed, so a later push cannot replace your adopted folder with the partial one.
|
|
110
|
+
- **A refused `nomad pull --force-remote` now tells you what actually clears it.** The old advice did not work, and would land you back on the same refusal. The message now gives the steps that finish the job and names the one that clears the check, and it says that the stuck rebase has already been undone by that point, so retrying is now just an ordinary pull. It no longer calls every listed file at risk, since the list can include files where the shared repo is simply ahead of yours. The quickstart says the same thing and links to the matching recovery steps in the FAQ.
|
|
89
111
|
|
|
90
112
|
|
|
91
113
|
### Added
|
|
@@ -114,39 +136,16 @@ it.
|
|
|
114
136
|
|
|
115
137
|
### What's new
|
|
116
138
|
|
|
117
|
-
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
the step that saves your local shared-config edits into the repo, every time it ran, even on a
|
|
123
|
-
healthy machine with nothing to rescue. That was the flag's only visible effect on a healthy repo,
|
|
124
|
-
and nothing told you it had happened. It now rescues a stuck repo and nothing else, and when a
|
|
125
|
-
rescue genuinely does replace your copies, the pull says how many and where your previous ones
|
|
126
|
-
were saved.
|
|
127
|
-
- **A pull now says what it did to your shared config.** On Windows your shared config is kept as
|
|
128
|
-
real file copies rather than symlinks, so every pull starts by copying your local edits into the
|
|
129
|
-
sync repo. That step used to be silent. It now prints a `Symlinks` section naming each file it
|
|
130
|
-
picked up, and each file it removed from the repo because you deleted it here. If a file cannot be
|
|
131
|
-
read at all, because another program is holding it open or its permissions changed, the pull names
|
|
132
|
-
it and says why rather than leaving a silent gap. `nomad diff` and `nomad pull --dry-run` read
|
|
133
|
-
from the same place, so a preview now matches what a real pull does.
|
|
134
|
-
- **Windows keeps the same things out of your sync repo that your other machines do.** The Windows
|
|
135
|
-
copy step used to hold back only files whose names looked like passwords or keys. It now skips
|
|
136
|
-
everything on the never-sync list, so the folders Claude Code uses for its own state, named things
|
|
137
|
-
like `sessions`, `tasks`, `plans`, and `cache`, stay on the machine even when they sit inside a
|
|
138
|
-
folder you share. If one of them is already sitting in your sync repo, the pull tells you, and
|
|
139
|
-
takes a backup copy before removing it.
|
|
139
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to it.
|
|
140
|
+
|
|
141
|
+
- **`nomad pull --force-remote` no longer discards edits you have not published.** The flag exists to rescue a sync repo that got stuck part-way through an update. On native Windows it also skipped the step that saves your local shared-config edits into the repo, every time it ran, even on a healthy machine with nothing to rescue. That was the flag's only visible effect on a healthy repo, and nothing told you it had happened. It now rescues a stuck repo and nothing else, and when a rescue genuinely does replace your copies, the pull says how many and where your previous ones were saved.
|
|
142
|
+
- **A pull now says what it did to your shared config.** On Windows your shared config is kept as real file copies rather than symlinks, so every pull starts by copying your local edits into the sync repo. That step used to be silent. It now prints a `Symlinks` section naming each file it picked up, and each file it removed from the repo because you deleted it here. If a file cannot be read at all, because another program is holding it open or its permissions changed, the pull names it and says why rather than leaving a silent gap. `nomad diff` and `nomad pull --dry-run` read from the same place, so a preview now matches what a real pull does.
|
|
143
|
+
- **Windows keeps the same things out of your sync repo that your other machines do.** The Windows copy step used to hold back only files whose names looked like passwords or keys. It now skips everything on the never-sync list, so the folders Claude Code uses for its own state, named things like `sessions`, `tasks`, `plans`, and `cache`, stay on the machine even when they sit inside a folder you share. If one of them is already sitting in your sync repo, the pull tells you, and takes a backup copy before removing it.
|
|
140
144
|
|
|
141
145
|
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
142
146
|
|
|
143
|
-
- **`nomad doctor` names the files that have drifted.** When it reports that your skills or your
|
|
144
|
-
|
|
145
|
-
again with `--verbose` to find out which files it meant.
|
|
146
|
-
- **`nomad pull --force-remote` tells you when there was nothing to rescue.** On a repo that is not
|
|
147
|
-
stuck it now says so and pulls normally, instead of appearing to do nothing. If it cannot tell
|
|
148
|
-
whether the repo is stuck, it says that too rather than reporting a clean repo. The help text,
|
|
149
|
-
README, and docs site now agree on what the flag does.
|
|
147
|
+
- **`nomad doctor` names the files that have drifted.** When it reports that your skills or your shared config no longer match the repo, it lists them. Before, you got a count and had to run it again with `--verbose` to find out which files it meant.
|
|
148
|
+
- **`nomad pull --force-remote` tells you when there was nothing to rescue.** On a repo that is not stuck it now says so and pulls normally, instead of appearing to do nothing. If it cannot tell whether the repo is stuck, it says that too rather than reporting a clean repo. The help text, README, and docs site now agree on what the flag does.
|
|
150
149
|
|
|
151
150
|
|
|
152
151
|
### Added
|
|
@@ -185,21 +184,9 @@ it.
|
|
|
185
184
|
|
|
186
185
|
### What's new
|
|
187
186
|
|
|
188
|
-
- **A stray dot or space at the end of a file name no longer hides a secret.** nomad never copies
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
`.env.`, did not match, so a file like that could end up in your sync repo. It matches now, and so
|
|
192
|
-
do the other files nomad always keeps out, such as `settings.local.json`. Nothing changes in how
|
|
193
|
-
you use nomad. It simply catches more ways of writing the same names it already blocked.
|
|
194
|
-
- **A `.claude` folder is recognized however it is capitalized.** If a project had a folder named
|
|
195
|
-
`.Claude` instead of `.claude`, nomad checked what was inside it less carefully than it should
|
|
196
|
-
have. Both are treated the same now.
|
|
197
|
-
- **A folder name nomad will never sync is turned down as soon as you add it.** You can ask nomad to
|
|
198
|
-
sync extra folders by listing their names in `path-map.json`. If a name you list is one nomad
|
|
199
|
-
refuses to sync, because it looks like a password file, or because it is a name that causes
|
|
200
|
-
trouble on one of the machines you sync to, you are told straight away and told why. Before,
|
|
201
|
-
nothing was said until a later `nomad push` stopped without explaining itself. `nomad doctor` also
|
|
202
|
-
lists any names in this situation and what to do about them.
|
|
187
|
+
- **A stray dot or space at the end of a file name no longer hides a secret.** nomad never copies password and key files (things like `.env`, `id_rsa`, or `server.pem`) out of the project folders you sync. It spots them by name, and a name with an extra dot or space on the end, such as `.env.`, did not match, so a file like that could end up in your sync repo. It matches now, and so do the other files nomad always keeps out, such as `settings.local.json`. Nothing changes in how you use nomad. It simply catches more ways of writing the same names it already blocked.
|
|
188
|
+
- **A `.claude` folder is recognized however it is capitalized.** If a project had a folder named `.Claude` instead of `.claude`, nomad checked what was inside it less carefully than it should have. Both are treated the same now.
|
|
189
|
+
- **A folder name nomad will never sync is turned down as soon as you add it.** You can ask nomad to sync extra folders by listing their names in `path-map.json`. If a name you list is one nomad refuses to sync, because it looks like a password file, or because it is a name that causes trouble on one of the machines you sync to, you are told straight away and told why. Before, nothing was said until a later `nomad push` stopped without explaining itself. `nomad doctor` also lists any names in this situation and what to do about them.
|
|
203
190
|
|
|
204
191
|
All of this applies on macOS, Linux, WSL2, and native Windows.
|
|
205
192
|
|
|
@@ -218,31 +205,11 @@ All of this applies on macOS, Linux, WSL2, and native Windows.
|
|
|
218
205
|
|
|
219
206
|
### What's new
|
|
220
207
|
|
|
221
|
-
- **Native Windows: deleting a shared config file now sticks.** On native Windows (PowerShell or
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
is copied to the backup directory first. The first pull after upgrading has no record yet, so
|
|
227
|
-
deletions start propagating from the pull after that. macOS, Linux, and WSL2 were never affected:
|
|
228
|
-
they symlink shared config, so deleting the file was always a deletion in the repo.
|
|
229
|
-
- **Native Windows: a name clash during a pull now explains itself.** If a file you created inside a
|
|
230
|
-
synced folder has the same name as one an incoming update adds, the pull stops before changing
|
|
231
|
-
anything. You used to be left with git's own error, which pointed at a copy inside the sync repo
|
|
232
|
-
and told you to move it, and following that advice looped, because the next pull copied your file
|
|
233
|
-
back over it. You now get the file under `~/.claude/` to act on and the two ways to finish, keep
|
|
234
|
-
the incoming version or keep both and merge them, and nomad clears its own copy out of the way for
|
|
235
|
-
you. Your file is untouched either way.
|
|
236
|
-
- **Native Windows shared-config changes show up in a preview first.** `nomad pull --dry-run` and
|
|
237
|
-
`nomad diff` now list both the edits being carried into the repo and the files being removed from
|
|
238
|
-
it, worked out before the pull so the preview and the real run agree.
|
|
239
|
-
- **`nomad doctor` notices a native Windows shared file that has drifted.** When a synced copy under
|
|
240
|
-
`~/.claude/` no longer matches the one in the repo, doctor warns about it instead of reporting the
|
|
241
|
-
machine as healthy. On the symlink platforms there is only ever one file, so there is nothing to
|
|
242
|
-
drift.
|
|
243
|
-
- **`nomad doctor` no longer recognizes `leftArrowOpensAgents`.** Claude Code dropped it from its
|
|
244
|
-
settings schema, so doctor will flag it as an unknown key if you still have it set. This one
|
|
245
|
-
applies everywhere, not just on Windows.
|
|
208
|
+
- **Native Windows: deleting a shared config file now sticks.** On native Windows (PowerShell or cmd), deleting a file inside a synced folder, say `~/.claude/commands/old.md`, used to leave it sitting in the sync repo, and the next `nomad pull` put it straight back. The deletion is now carried into the sync repo instead, so it survives the pull and reaches your other machines. Nothing is removed unless this machine's own record shows it had the file, and every removed file is copied to the backup directory first. The first pull after upgrading has no record yet, so deletions start propagating from the pull after that. macOS, Linux, and WSL2 were never affected: they symlink shared config, so deleting the file was always a deletion in the repo.
|
|
209
|
+
- **Native Windows: a name clash during a pull now explains itself.** If a file you created inside a synced folder has the same name as one an incoming update adds, the pull stops before changing anything. You used to be left with git's own error, which pointed at a copy inside the sync repo and told you to move it, and following that advice looped, because the next pull copied your file back over it. You now get the file under `~/.claude/` to act on and the two ways to finish, keep the incoming version or keep both and merge them, and nomad clears its own copy out of the way for you. Your file is untouched either way.
|
|
210
|
+
- **Native Windows shared-config changes show up in a preview first.** `nomad pull --dry-run` and `nomad diff` now list both the edits being carried into the repo and the files being removed from it, worked out before the pull so the preview and the real run agree.
|
|
211
|
+
- **`nomad doctor` notices a native Windows shared file that has drifted.** When a synced copy under `~/.claude/` no longer matches the one in the repo, doctor warns about it instead of reporting the machine as healthy. On the symlink platforms there is only ever one file, so there is nothing to drift.
|
|
212
|
+
- **`nomad doctor` no longer recognizes `leftArrowOpensAgents`.** Claude Code dropped it from its settings schema, so doctor will flag it as an unknown key if you still have it set. This one applies everywhere, not just on Windows.
|
|
246
213
|
|
|
247
214
|
|
|
248
215
|
### Added
|
|
@@ -268,17 +235,9 @@ All of this applies on macOS, Linux, WSL2, and native Windows.
|
|
|
268
235
|
|
|
269
236
|
### What's new
|
|
270
237
|
|
|
271
|
-
- **`nomad doctor` stops warning about settings you legitimately set.** The list of settings it
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
are no longer reported as unknown keys on an otherwise healthy machine. Entries that were never
|
|
275
|
-
settings at all have been dropped at the same time.
|
|
276
|
-
- **A new Claude Code setting is recognized within a day.** The job that tracks the official
|
|
277
|
-
settings list ran once a week, so a setting added on a Tuesday could be reported as unknown until
|
|
278
|
-
the following Monday. It now runs daily.
|
|
279
|
-
- **The list keeps its own bookkeeping straight from here.** When a setting Claude Code writes
|
|
280
|
-
ahead of its published documentation is later documented, it now moves across on its own instead
|
|
281
|
-
of being recorded in two places at once.
|
|
238
|
+
- **`nomad doctor` stops warning about settings you legitimately set.** The list of settings it recognizes has been updated and synced with the current Claude Code settings schema, so settings the app actually writes (quiet hours, the break reminder, the token-usage reminder, and others) are no longer reported as unknown keys on an otherwise healthy machine. Entries that were never settings at all have been dropped at the same time.
|
|
239
|
+
- **A new Claude Code setting is recognized within a day.** The job that tracks the official settings list ran once a week, so a setting added on a Tuesday could be reported as unknown until the following Monday. It now runs daily.
|
|
240
|
+
- **The list keeps its own bookkeeping straight from here.** When a setting Claude Code writes ahead of its published documentation is later documented, it now moves across on its own instead of being recorded in two places at once.
|
|
282
241
|
|
|
283
242
|
|
|
284
243
|
### Fixed
|
|
@@ -309,18 +268,9 @@ All of this applies on macOS, Linux, WSL2, and native Windows.
|
|
|
309
268
|
|
|
310
269
|
### What's new
|
|
311
270
|
|
|
312
|
-
- **Windows: your own edits to shared config are no longer reverted.** On Windows, editing a synced
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
publish. Your edit is now carried into the sync repo first, so it survives the pull and gets
|
|
316
|
-
published instead.
|
|
317
|
-
- **The secret prompt on push is readable and asks once per secret.** When a push finds a possible
|
|
318
|
-
secret it used to ask the same question several times over for one secret, and the snippet it
|
|
319
|
-
showed was mostly noise. It now asks once per secret and describes what was actually found, so you
|
|
320
|
-
can tell a real credential from a false positive at a glance.
|
|
321
|
-
- **Three ways that prompt could show you a secret it meant to hide are closed**, along with a case
|
|
322
|
-
where allowing one false positive could quietly let a real secret through beside it on the same
|
|
323
|
-
line.
|
|
271
|
+
- **Windows: your own edits to shared config are no longer reverted.** On Windows, editing a synced file like `~/.claude/CLAUDE.md` and then running `nomad pull` overwrote it from the repo, and `nomad sync` went on to publish the reverted version, silently undoing the change you ran sync to publish. Your edit is now carried into the sync repo first, so it survives the pull and gets published instead.
|
|
272
|
+
- **The secret prompt on push is readable and asks once per secret.** When a push finds a possible secret it used to ask the same question several times over for one secret, and the snippet it showed was mostly noise. It now asks once per secret and describes what was actually found, so you can tell a real credential from a false positive at a glance.
|
|
273
|
+
- **Three ways that prompt could show you a secret it meant to hide are closed**, along with a case where allowing one false positive could quietly let a real secret through beside it on the same line.
|
|
324
274
|
|
|
325
275
|
|
|
326
276
|
### Added
|
package/README.md
CHANGED
|
@@ -148,7 +148,13 @@ Native Windows cannot use symlinks, so claude-nomad keeps a real copy of your sh
|
|
|
148
148
|
the repo before they fetch, so an edit you have not published yet is captured rather than
|
|
149
149
|
overwritten. If a file cannot be read, because another program is holding it open or its permissions
|
|
150
150
|
changed, the pull warns naming the file and the reason, skips that one file, and finishes everything
|
|
151
|
-
else normally. Close whatever is holding it, or fix its permissions, and run again to pick it up.
|
|
151
|
+
else normally. Close whatever is holding it, or fix its permissions, and run again to pick it up. A
|
|
152
|
+
shared name whose copy in the sync repo is there but points at content that is not, usually because
|
|
153
|
+
the machine that shared it no longer has the original, is skipped the same way, with a warning
|
|
154
|
+
naming it. Remove it from the sync repo, or restore what it points at, by hand. A copy in the sync
|
|
155
|
+
repo that cannot be read at all is skipped and named too, with its own wording: nothing checked
|
|
156
|
+
where it leads, so the warning asks you to look at its permissions in the sync repo rather than to
|
|
157
|
+
restore anything.
|
|
152
158
|
|
|
153
159
|
```powershell
|
|
154
160
|
# 1. Install prerequisites and the CLI. (Using Scoop instead? scoop install gh gitleaks.)
|