claude-nomad 0.51.0 → 0.51.1

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,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.51.1](https://github.com/funkadelic/claude-nomad/compare/v0.51.0...v0.51.1) (2026-06-18)
4
+
5
+
6
+ ### Fixed
7
+
8
+ * **doctor:** handle diverged settings keys honestly instead of advising blind pull ([#315](https://github.com/funkadelic/claude-nomad/issues/315)) ([39f8148](https://github.com/funkadelic/claude-nomad/commit/39f81480285693e08575f5ab4ecbb8b182eeb233))
9
+
3
10
  ## [0.51.0](https://github.com/funkadelic/claude-nomad/compare/v0.50.3...v0.51.0) (2026-06-18)
4
11
 
5
12
 
package/dist/nomad.mjs CHANGED
@@ -1306,7 +1306,7 @@ function classifySettingsDrift(merged, settings) {
1306
1306
  for (const key of Object.keys(merged)) {
1307
1307
  if (!settingsKeys.has(key)) {
1308
1308
  behind.push(key);
1309
- } else if (!deepEqual(merged[key], settings[key])) {
1309
+ } else if (!deepEqual(normalizeNodePathsDeep(merged[key]), normalizeNodePathsDeep(settings[key]))) {
1310
1310
  changed.push(key);
1311
1311
  }
1312
1312
  }
@@ -1337,10 +1337,13 @@ function partitionByCaptureExclusion(keys) {
1337
1337
  }
1338
1338
  return { promotable, excluded };
1339
1339
  }
1340
- var BIN_NODE_RE = /^(?:[A-Za-z]:)?[\\/](?:.*[\\/])?bin[\\/]node$/;
1340
+ var BIN_NODE_RE = /^"?(?:[A-Za-z]:)?[\\/](?:.*[\\/])?bin[\\/]node"?$/;
1341
+ var LEADING_BIN_NODE_RE = /^"?(?:[A-Za-z]:)?[\\/](?:[^"\s]*[\\/])?bin[\\/]node"?(?=\s)/;
1341
1342
  function normalizeNodePathsDeep(value) {
1342
1343
  if (typeof value === "string") {
1343
- return BIN_NODE_RE.test(value) ? "node" : value;
1344
+ if (BIN_NODE_RE.test(value)) return "node";
1345
+ const lead = LEADING_BIN_NODE_RE.exec(value);
1346
+ return lead ? "node" + value.slice(lead[0].length) : value;
1344
1347
  }
1345
1348
  if (Array.isArray(value)) {
1346
1349
  return value.map(normalizeNodePathsDeep);
@@ -3258,7 +3261,7 @@ function emitDriftRows(section2, missing, changed, promotable, excluded, hostFil
3258
3261
  if (changed.length > 0) {
3259
3262
  addItem(
3260
3263
  section2,
3261
- `${yellow(warnGlyph)} settings.json drift: merged keys with changed values: ${changed.join(", ")} (run 'nomad pull')`
3264
+ `${yellow(warnGlyph)} settings.json drift: ${changed.join(", ")} diverged from the base+host merge (run 'nomad diff' to inspect; 'nomad pull' overwrites local with the repo, or edit the base/host file to keep local)`
3262
3265
  );
3263
3266
  }
3264
3267
  if (promotable.length > 0 && hostFileExists) {
@@ -6660,7 +6663,7 @@ function parsePushArgs(argv) {
6660
6663
  // package.json
6661
6664
  var package_default = {
6662
6665
  name: "claude-nomad",
6663
- version: "0.51.0",
6666
+ version: "0.51.1",
6664
6667
  type: "module",
6665
6668
  description: "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
6666
6669
  keywords: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-nomad",
3
- "version": "0.51.0",
3
+ "version": "0.51.1",
4
4
  "type": "module",
5
5
  "description": "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
6
6
  "keywords": [