claude-nomad 0.64.1 → 0.66.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 +148 -0
- package/README.md +35 -77
- package/dist/nomad.mjs +1589 -1048
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,153 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.66.0](https://github.com/funkadelic/claude-nomad/compare/v0.65.0...v0.66.0) (2026-08-17)
|
|
4
|
+
|
|
5
|
+
### What's new
|
|
6
|
+
|
|
7
|
+
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
8
|
+
|
|
9
|
+
- **A folder you share now carries everything inside it.** If you share a folder through
|
|
10
|
+
`sharedDirs`, its subfolders travel with it, including ones with everyday names like `sessions`,
|
|
11
|
+
`plans`, `tasks`, and `cache`. Those names used to be refused wherever they appeared, so a push
|
|
12
|
+
could fail, or `nomad adopt` could turn you away, over a folder holding nothing sensitive. Your
|
|
13
|
+
Claude login, your credential files, your per-host settings, and your local history still never
|
|
14
|
+
leave the machine, in either direction.
|
|
15
|
+
- **`nomad adopt` checks the whole folder before it moves anything.** It used to copy everything,
|
|
16
|
+
so a file that never syncs between machines could land in your repo and fail your next push, on
|
|
17
|
+
content you never chose to add. Adopt now stops before touching anything and names every path it
|
|
18
|
+
objected to and why: a name that collides with the never-sync list, which renaming clears, or a
|
|
19
|
+
name that looks like a credential file, where renaming only helps if the new name looks different
|
|
20
|
+
too. `--dry-run` gives exactly the same answer as the real run, so you can check a folder before
|
|
21
|
+
committing to it.
|
|
22
|
+
- **An interrupted `nomad adopt` now explains itself instead of writing a crash report.** If
|
|
23
|
+
another program has the directory open, or its permissions block the move partway through, the
|
|
24
|
+
command says what happened, where your content ended up, and what to run next. Your content is
|
|
25
|
+
safe in every one of these cases: either it was never touched on this machine, or it is already
|
|
26
|
+
in the repo.
|
|
27
|
+
|
|
28
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to
|
|
29
|
+
it.
|
|
30
|
+
|
|
31
|
+
- **A push no longer publishes a folder you never asked to share.** Windows keeps your shared
|
|
32
|
+
config as real file copies rather than symlinks, and a push used to pick up any folder sitting in
|
|
33
|
+
your Claude directory and publish it to your other machines. Sharing is now the same deliberate
|
|
34
|
+
step it has always been on macOS and Linux: run `nomad adopt <name>` once, then push. Your
|
|
35
|
+
existing shared folders keep syncing exactly as before.
|
|
36
|
+
- **`nomad doctor --verbose` names a folder your repo does not carry yet.** It lists the local
|
|
37
|
+
copies that are still private to this machine, and the command that shares one.
|
|
38
|
+
- **One unreadable file no longer ends your pull.** A single config file that another program has
|
|
39
|
+
open, or that your account cannot read, used to stop the whole pull with a crash report. Nomad
|
|
40
|
+
now names the file and the reason, then carries on: your settings, your skills, and your session
|
|
41
|
+
history all still sync, and the command finishes normally. The warning also says whether the file
|
|
42
|
+
is still there or has been removed, and points at the backup copy when there is one.
|
|
43
|
+
- **`nomad adopt` recovers cleanly when it cannot restore your local copy.** Adopt finishes by
|
|
44
|
+
copying the folder back out of the sync repo so this machine keeps a usable copy. If that copy
|
|
45
|
+
was blocked, the command used to end in a crash report, with the folder gone from your Claude
|
|
46
|
+
directory and nothing staged for publishing. It now stops with a plain message naming the folder
|
|
47
|
+
and the reason, stages the adopted content either way, and tells you to run `nomad pull` before
|
|
48
|
+
your next push and why that order matters. A half written folder left behind by the interrupted
|
|
49
|
+
copy is removed, so a later push cannot replace your adopted folder with the partial one.
|
|
50
|
+
- **A refused `nomad pull --force-remote` now tells you what actually clears it.** The old advice
|
|
51
|
+
did not work, and would land you back on the same refusal. The message now gives the steps that
|
|
52
|
+
finish the job and names the one that clears the check, and it says that the stuck rebase has
|
|
53
|
+
already been undone by that point, so retrying is now just an ordinary pull. It no longer calls
|
|
54
|
+
every listed file at risk, since the list can include files where the shared repo is simply ahead
|
|
55
|
+
of yours. The quickstart says the same thing and links to the matching recovery steps in the FAQ.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
* carry your own subfolders inside a shared directory ([#522](https://github.com/funkadelic/claude-nomad/issues/522)) ([791eef9](https://github.com/funkadelic/claude-nomad/commit/791eef9685672eb16113f79b7160c3988fae8ebc))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
* **adopt:** say what happened when a move cannot finish ([#516](https://github.com/funkadelic/claude-nomad/issues/516)) ([d5e8add](https://github.com/funkadelic/claude-nomad/commit/d5e8addac0ba769f340b776ffeb5e96a95877eea))
|
|
66
|
+
* **adopt:** stop a native Windows adopt from ending in a crash report ([#514](https://github.com/funkadelic/claude-nomad/issues/514)) ([0e9bee9](https://github.com/funkadelic/claude-nomad/commit/0e9bee9cc6d32ce71db2f290897de9a256b3a10c))
|
|
67
|
+
* **adopt:** stop adopt from copying host-only files into your synced config ([#517](https://github.com/funkadelic/claude-nomad/issues/517)) ([9f92706](https://github.com/funkadelic/claude-nomad/commit/9f92706fa6ce06635b8c3fef0e76d34484a40696))
|
|
68
|
+
* **ci:** keep the drift PR updatable on a second push ([#523](https://github.com/funkadelic/claude-nomad/issues/523)) ([ff6cdc6](https://github.com/funkadelic/claude-nomad/commit/ff6cdc631002bdbabb5948b7d5c41634adc5a771))
|
|
69
|
+
* **pull:** keep a native Windows pull going when one shared file cannot be read ([#512](https://github.com/funkadelic/claude-nomad/issues/512)) ([32ea631](https://github.com/funkadelic/claude-nomad/commit/32ea63195f260556ebd246ca03d63f7ee1758753))
|
|
70
|
+
* **pull:** say what actually clears a refused recovery ([#515](https://github.com/funkadelic/claude-nomad/issues/515)) ([a97fed2](https://github.com/funkadelic/claude-nomad/commit/a97fed27a0c0439631594fe6c7213e6e6df45062))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### Dependencies
|
|
74
|
+
|
|
75
|
+
* bump astro from 7.2.0 to 7.2.2 in /docs-site in the prod-dependencies group across 1 directory ([#521](https://github.com/funkadelic/claude-nomad/issues/521)) ([4e5e4ca](https://github.com/funkadelic/claude-nomad/commit/4e5e4ca0d0a8d551f3fa743818bb3a196325254d))
|
|
76
|
+
* bump starlight-links-validator from 0.25.2 to 0.25.3 in /docs-site in the dev-dependencies group across 1 directory ([#520](https://github.com/funkadelic/claude-nomad/issues/520)) ([77d1a24](https://github.com/funkadelic/claude-nomad/commit/77d1a24303a14c8d8556d9d69ece4990572797f4))
|
|
77
|
+
* bump the codeql-action group with 2 updates ([#519](https://github.com/funkadelic/claude-nomad/issues/519)) ([9e45462](https://github.com/funkadelic/claude-nomad/commit/9e45462797059f52efbfbaec8d2a65d52455b3a9))
|
|
78
|
+
* bump the dev-dependencies group across 1 directory with 5 updates ([#518](https://github.com/funkadelic/claude-nomad/issues/518)) ([2feb689](https://github.com/funkadelic/claude-nomad/commit/2feb6893c61e815940fd182995b01c3be93be728))
|
|
79
|
+
|
|
80
|
+
## [0.65.0](https://github.com/funkadelic/claude-nomad/compare/v0.64.1...v0.65.0) (2026-08-13)
|
|
81
|
+
|
|
82
|
+
### What's new
|
|
83
|
+
|
|
84
|
+
**On native Windows (PowerShell or cmd).** Note: WSL2 behaves like Linux and none of these apply to
|
|
85
|
+
it.
|
|
86
|
+
|
|
87
|
+
- **`nomad pull --force-remote` no longer discards edits you have not published.** The flag exists
|
|
88
|
+
to rescue a sync repo that got stuck part-way through an update. On native Windows it also skipped
|
|
89
|
+
the step that saves your local shared-config edits into the repo, every time it ran, even on a
|
|
90
|
+
healthy machine with nothing to rescue. That was the flag's only visible effect on a healthy repo,
|
|
91
|
+
and nothing told you it had happened. It now rescues a stuck repo and nothing else, and when a
|
|
92
|
+
rescue genuinely does replace your copies, the pull says how many and where your previous ones
|
|
93
|
+
were saved.
|
|
94
|
+
- **A pull now says what it did to your shared config.** On Windows your shared config is kept as
|
|
95
|
+
real file copies rather than symlinks, so every pull starts by copying your local edits into the
|
|
96
|
+
sync repo. That step used to be silent. It now prints a `Symlinks` section naming each file it
|
|
97
|
+
picked up, and each file it removed from the repo because you deleted it here. If a file cannot be
|
|
98
|
+
read at all, because another program is holding it open or its permissions changed, the pull names
|
|
99
|
+
it and says why rather than leaving a silent gap. `nomad diff` and `nomad pull --dry-run` read
|
|
100
|
+
from the same place, so a preview now matches what a real pull does.
|
|
101
|
+
- **Windows keeps the same things out of your sync repo that your other machines do.** The Windows
|
|
102
|
+
copy step used to hold back only files whose names looked like passwords or keys. It now skips
|
|
103
|
+
everything on the never-sync list, so the folders Claude Code uses for its own state, named things
|
|
104
|
+
like `sessions`, `tasks`, `plans`, and `cache`, stay on the machine even when they sit inside a
|
|
105
|
+
folder you share. If one of them is already sitting in your sync repo, the pull tells you, and
|
|
106
|
+
takes a backup copy before removing it.
|
|
107
|
+
|
|
108
|
+
**On all supported platforms, i.e. \*nix, Mac, WSL2, and native Windows.**
|
|
109
|
+
|
|
110
|
+
- **`nomad doctor` names the files that have drifted.** When it reports that your skills or your
|
|
111
|
+
shared config no longer match the repo, it lists them. Before, you got a count and had to run it
|
|
112
|
+
again with `--verbose` to find out which files it meant.
|
|
113
|
+
- **`nomad pull --force-remote` tells you when there was nothing to rescue.** On a repo that is not
|
|
114
|
+
stuck it now says so and pulls normally, instead of appearing to do nothing. If it cannot tell
|
|
115
|
+
whether the repo is stuck, it says that too rather than reporting a clean repo. The help text,
|
|
116
|
+
README, and docs site now agree on what the flag does.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### Added
|
|
120
|
+
|
|
121
|
+
* **doctor:** open with the nomad wordmark and name the diverging files ([#508](https://github.com/funkadelic/claude-nomad/issues/508)) ([1fea0c7](https://github.com/funkadelic/claude-nomad/commit/1fea0c7913b38f934d529d888a0aef96dc1dfc08))
|
|
122
|
+
* make the win32 pre-pull mirror visible and gate what it writes ([#503](https://github.com/funkadelic/claude-nomad/issues/503)) ([8d3a76d](https://github.com/funkadelic/claude-nomad/commit/8d3a76dd42c89efd38b2a76b2684b8b4014878ac))
|
|
123
|
+
* **pull:** report the shared files a pull removes, not just the ones it captures ([#510](https://github.com/funkadelic/claude-nomad/issues/510)) ([9ab6ef5](https://github.com/funkadelic/claude-nomad/commit/9ab6ef5b9961a8542eb25a650ada27bd3bdf9de6))
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### Fixed
|
|
127
|
+
|
|
128
|
+
* **mirror:** report what the never-sync cleanup actually removed ([#509](https://github.com/funkadelic/claude-nomad/issues/509)) ([6596ed3](https://github.com/funkadelic/claude-nomad/commit/6596ed341d4e764b29a56bb73f900aa6dd48fcc9))
|
|
129
|
+
* **mirror:** warn when the win32 mirror skips a name it cannot stat ([#505](https://github.com/funkadelic/claude-nomad/issues/505)) ([5806db6](https://github.com/funkadelic/claude-nomad/commit/5806db6e2d2861747738d498d0255fe0483a6650))
|
|
130
|
+
* **pull:** make --force-remote mean wedge recovery again ([#506](https://github.com/funkadelic/claude-nomad/issues/506)) ([2bf8d5d](https://github.com/funkadelic/claude-nomad/commit/2bf8d5d3b19e8c022ff1137be96b0f009e5503df))
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
|
|
135
|
+
* fail the gitleaks install on a download error, not a checksum mismatch ([#504](https://github.com/funkadelic/claude-nomad/issues/504)) ([724dd3c](https://github.com/funkadelic/claude-nomad/commit/724dd3c276bdea113f9719e5b62ee0741a3c3885))
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### Documentation
|
|
139
|
+
|
|
140
|
+
* describe what the force-remote recovery warning actually counts ([#507](https://github.com/funkadelic/claude-nomad/issues/507)) ([6235858](https://github.com/funkadelic/claude-nomad/commit/6235858e40459e136deff4b081187c89b9e7b670))
|
|
141
|
+
* keep the Windows explainer in one place ([#511](https://github.com/funkadelic/claude-nomad/issues/511)) ([9a9287f](https://github.com/funkadelic/claude-nomad/commit/9a9287f87d86e2353ca4a0d936346482e37a1041))
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
### Dependencies
|
|
145
|
+
|
|
146
|
+
* bump @astrojs/starlight from 0.41.6 to 0.41.7 in /docs-site in the prod-dependencies group ([#499](https://github.com/funkadelic/claude-nomad/issues/499)) ([61ecb3f](https://github.com/funkadelic/claude-nomad/commit/61ecb3fef0213c6bc0f2a36713da0e166e356238))
|
|
147
|
+
* bump astro from 7.1.6 to 7.2.0 in /docs-site ([#500](https://github.com/funkadelic/claude-nomad/issues/500)) ([4909e02](https://github.com/funkadelic/claude-nomad/commit/4909e02e5754081432e567cae2344989ab8b1309))
|
|
148
|
+
* bump the codeql-action group across 1 directory with 2 updates ([#498](https://github.com/funkadelic/claude-nomad/issues/498)) ([ad3310d](https://github.com/funkadelic/claude-nomad/commit/ad3310d33e9662ae407d304ef949efd1bebf9c3e))
|
|
149
|
+
* bump the dev-dependencies group across 1 directory with 4 updates ([#501](https://github.com/funkadelic/claude-nomad/issues/501)) ([446c6da](https://github.com/funkadelic/claude-nomad/commit/446c6dae3905609bef1d3ec4366d58e50651c44a))
|
|
150
|
+
|
|
3
151
|
## [0.64.1](https://github.com/funkadelic/claude-nomad/compare/v0.64.0...v0.64.1) (2026-08-07)
|
|
4
152
|
|
|
5
153
|
### What's new
|
package/README.md
CHANGED
|
@@ -71,7 +71,8 @@ survives different file paths and your secrets never ride along.
|
|
|
71
71
|
parks stranded work on a branch, refuses if shared config is at risk), and a repo where the rebase
|
|
72
72
|
was interrupted but the git index was left with unmerged entries and no active operation (clears
|
|
73
73
|
the index via `git reset --mixed HEAD`, surfaces any orphaned stash entry left by the interrupted
|
|
74
|
-
autostash, never discards working-tree edits).
|
|
74
|
+
autostash, never discards working-tree edits). On a repo that is not stuck, the flag reports there
|
|
75
|
+
is nothing to recover and pulls normally instead of doing nothing silently.
|
|
75
76
|
- **Easy off.** `nomad eject` replaces every managed `~/.claude/` symlink with a real copy in one
|
|
76
77
|
step, so your setup keeps working after you delete the sync checkout and uninstall the CLI.
|
|
77
78
|
|
|
@@ -118,27 +119,41 @@ export NOMAD_HOST=<your-host-label> # add to ~/.zshrc or ~/.bashrc
|
|
|
118
119
|
$ nomad pull
|
|
119
120
|
```
|
|
120
121
|
|
|
122
|
+
Everyday loop on any host:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
$ nomad doctor # confirm setup
|
|
126
|
+
$ nomad sync # pull config, then publish local changes, in one step
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
`nomad sync` is the command to reach for day to day: it always pulls first (so changes from your
|
|
130
|
+
other machines land before anything is pushed, and work that exists only on this machine is kept,
|
|
131
|
+
not deleted) and then pushes, under one lock, so there is no ordering to remember. Output is compact
|
|
132
|
+
by default: a run prints only a short Sync summary, not the full status tree; pass
|
|
133
|
+
`nomad sync --verbose` (or `--all` / `-v`) to see the full tree. `nomad pull` and `nomad push` are
|
|
134
|
+
still available as lower-level commands for cases `sync` does not cover: recovering a wedged repo
|
|
135
|
+
with `nomad pull --force-remote`, or resolving a detected secret without the interactive menu via
|
|
136
|
+
`nomad push --redact-all` / `--allow` / `--allow-all` (see [Changing settings](#changing-settings)
|
|
137
|
+
and [Recovery flows](https://funkadelic.github.io/claude-nomad/recovery/)). The
|
|
138
|
+
[FAQ](https://funkadelic.github.io/claude-nomad/faq/) covers what `sync` does under the hood and the
|
|
139
|
+
push/pull order it enforces.
|
|
140
|
+
|
|
121
141
|
### Windows
|
|
122
142
|
|
|
123
143
|
claude-nomad runs natively on Windows (PowerShell or cmd), and WSL2 works too. The everyday loop is
|
|
124
144
|
the same either way; the difference is under the hood.
|
|
125
145
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
host either way.
|
|
133
|
-
|
|
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.
|
|
137
|
-
|
|
138
|
-
The native Windows steps are the same as above with a couple of PowerShell-specific swaps:
|
|
146
|
+
Native Windows cannot use symlinks, so claude-nomad keeps a real copy of your shared config in
|
|
147
|
+
`~/.claude/` instead of a symlink. `nomad pull` and `nomad sync` both mirror your local copies into
|
|
148
|
+
the repo before they fetch, so an edit you have not published yet is captured rather than
|
|
149
|
+
overwritten. If a file cannot be read, because another program is holding it open or its permissions
|
|
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.
|
|
139
152
|
|
|
140
153
|
```powershell
|
|
141
|
-
# 1. Install the CLI.
|
|
154
|
+
# 1. Install prerequisites and the CLI. (Using Scoop instead? scoop install gh gitleaks.)
|
|
155
|
+
> winget install GitHub.cli
|
|
156
|
+
> winget install gitleaks.gitleaks
|
|
142
157
|
> npm i -g claude-nomad
|
|
143
158
|
|
|
144
159
|
# 2. Create your private sync repo and scaffold it.
|
|
@@ -155,66 +170,9 @@ The native Windows steps are the same as above with a couple of PowerShell-speci
|
|
|
155
170
|
> nomad push
|
|
156
171
|
```
|
|
157
172
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
- **Installing gh:** `winget install GitHub.cli` (or `scoop install gh`), then `gh auth login`.
|
|
163
|
-
Needed before `nomad init` on the first host; later hosts only clone with it.
|
|
164
|
-
- **Installing gitleaks:** `winget install gitleaks.gitleaks` (or `scoop install gitleaks` if you
|
|
165
|
-
use Scoop). `nomad doctor` prints the same hint whenever gitleaks is missing from PATH.
|
|
166
|
-
- **Shared config is copied, not symlinked.** On macOS and Linux, files like `CLAUDE.md` and your
|
|
167
|
-
skills live in the sync repo and are symlinked into `~/.claude/`, so there is one source of truth
|
|
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.
|
|
187
|
-
- **A `.gitleaksignore` allow entry may not travel across hosts.** gitleaks fingerprints each
|
|
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.
|
|
193
|
-
- **Line endings stay put.** A fresh `nomad init` writes a `.gitattributes` with `* -text`, so Git
|
|
194
|
-
never converts line endings between hosts. If you are joining a sync repo created before this file
|
|
195
|
-
existed, add that one line from any host (or watch for the `nomad doctor` warning that nudges
|
|
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.
|
|
199
|
-
|
|
200
|
-
Everyday loop on any host:
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
$ nomad doctor # confirm setup
|
|
204
|
-
$ nomad sync # pull config, then publish local changes, in one step
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
`nomad sync` is the command to reach for day to day: it always pulls first (so changes from your
|
|
208
|
-
other machines land before anything is pushed, and work that exists only on this machine is kept,
|
|
209
|
-
not deleted) and then pushes, under one lock, so there is no ordering to remember. Output is compact
|
|
210
|
-
by default: a run prints only a short Sync summary, not the full status tree; pass
|
|
211
|
-
`nomad sync --verbose` (or `--all` / `-v`) to see the full tree. `nomad pull` and `nomad push` are
|
|
212
|
-
still available as lower-level commands for cases `sync` does not cover: recovering a wedged repo
|
|
213
|
-
with `nomad pull --force-remote`, or resolving a detected secret without the interactive menu via
|
|
214
|
-
`nomad push --redact-all` / `--allow` / `--allow-all` (see [Changing settings](#changing-settings)
|
|
215
|
-
and [Recovery flows](https://funkadelic.github.io/claude-nomad/recovery/)). The
|
|
216
|
-
[FAQ](https://funkadelic.github.io/claude-nomad/faq/) covers what `sync` does under the hood and the
|
|
217
|
-
push/pull order it enforces.
|
|
173
|
+
See the full explainer at <https://funkadelic.github.io/claude-nomad/quickstart/#windows> for how
|
|
174
|
+
the copy-sync behaves on pull and push, why a `.gitleaksignore` allow entry may not travel to a
|
|
175
|
+
macOS, Linux, or WSL2 host, the 260-character path limit, and the line-endings setting.
|
|
218
176
|
|
|
219
177
|
### Make your sessions follow you
|
|
220
178
|
|
|
@@ -321,8 +279,8 @@ independently from the CLI, but requires nomad `>= 0.35.0` because it calls rece
|
|
|
321
279
|
- `gh` ([GitHub CLI](https://cli.github.com/)), required by `nomad init`
|
|
322
280
|
|
|
323
281
|
Works on macOS, Linux (including WSL2), and native Windows (PowerShell or cmd). See
|
|
324
|
-
[Windows](#windows) above for the native Windows equivalents of the install and host-label steps
|
|
325
|
-
the copy-sync trade-off
|
|
282
|
+
[Windows](#windows) above for the native Windows equivalents of the install and host-label steps and
|
|
283
|
+
the copy-sync trade-off.
|
|
326
284
|
|
|
327
285
|
**Optional:** [curl](https://curl.se/) or [wget](https://www.gnu.org/software/wget/) for the
|
|
328
286
|
version-staleness check and `nomad doctor --check-schema`. The CLI works without them. The opt-in
|