claude-nomad 0.57.1 → 0.58.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,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.58.1](https://github.com/funkadelic/claude-nomad/compare/v0.58.0...v0.58.1) (2026-07-11)
4
+
5
+
6
+ ### Fixed
7
+
8
+ * **sync:** distinguish push/pull/sync summary headers ([#396](https://github.com/funkadelic/claude-nomad/issues/396)) ([e88a3d6](https://github.com/funkadelic/claude-nomad/commit/e88a3d61eaeedd5c6ab7c8d85c3c3e201226e430))
9
+
10
+ ## [0.58.0](https://github.com/funkadelic/claude-nomad/compare/v0.57.1...v0.58.0) (2026-07-11)
11
+
12
+
13
+ ### Added
14
+
15
+ * **preview:** render an Extras section in pull/diff dry-run previews ([#394](https://github.com/funkadelic/claude-nomad/issues/394)) ([6b929dc](https://github.com/funkadelic/claude-nomad/commit/6b929dc7c63aad905ba267f793b31308fa7cb76e))
16
+
3
17
  ## [0.57.1](https://github.com/funkadelic/claude-nomad/compare/v0.57.0...v0.57.1) (2026-07-08)
4
18
 
5
19
 
package/dist/nomad.mjs CHANGED
@@ -5592,7 +5592,7 @@ function syncedSections(st) {
5592
5592
  ];
5593
5593
  }
5594
5594
  function summarySection(st) {
5595
- const s = section("Summary");
5595
+ const s = section("Push summary");
5596
5596
  const unmapped = st.remap.unmapped + st.extras.unmapped;
5597
5597
  addItem(s, summaryRow("push", unmapped, st.remap.collisions, st.extras.skipped));
5598
5598
  return s;
@@ -6350,9 +6350,23 @@ function computePreview(ts, map, verb = "pull") {
6350
6350
  if (localOnly > 0) {
6351
6351
  addItem(sessions, `${localOnly} local-only present, not in repo (push to reconcile)`);
6352
6352
  }
6353
+ const extras = section("Extras");
6354
+ let extrasSkipped = 0;
6355
+ let extrasUnmapped = 0;
6356
+ if (existsSync38(join45(repo, "path-map.json")) && existsSync38(join45(repo, "shared", "extras"))) {
6357
+ const extrasResult = remapExtrasPull(ts, { dryRun: true });
6358
+ for (const entry of extrasResult.wouldPull) {
6359
+ addItem(extras, entry);
6360
+ }
6361
+ extrasSkipped = extrasResult.skipped;
6362
+ extrasUnmapped = extrasResult.unmapped;
6363
+ }
6353
6364
  const summary = section("Summary");
6354
- addItem(summary, summaryRow(verb, remapResult.unmapped, 0, 0, localOnly));
6355
- renderTree([links, settingsSection, sessions, summary]);
6365
+ addItem(
6366
+ summary,
6367
+ summaryRow(verb, remapResult.unmapped + extrasUnmapped, 0, extrasSkipped, localOnly)
6368
+ );
6369
+ renderTree([links, settingsSection, sessions, extras, summary]);
6356
6370
  return { unmapped: remapResult.unmapped, collisions: 0, localOnly };
6357
6371
  }
6358
6372
 
@@ -6488,6 +6502,7 @@ function recoverForceRemote(mode, repo) {
6488
6502
  init_utils();
6489
6503
  init_utils_fs();
6490
6504
  init_utils_json();
6505
+ var PULL_SUMMARY_HEADER = "Pull summary";
6491
6506
  function captureHead(repo) {
6492
6507
  try {
6493
6508
  return gitCaptureRaw(["rev-parse", "HEAD"], repo).trim();
@@ -6509,7 +6524,7 @@ function buildWetPullSections(ts, map, prePostHeads) {
6509
6524
  const remapResult = withSpinner("Syncing sessions", () => remapPull(ts));
6510
6525
  const extrasResult = remapExtrasPull(ts, { prePostHeads });
6511
6526
  const localOnly = scanLocalOnly();
6512
- const summary = section("Summary");
6527
+ const summary = section(PULL_SUMMARY_HEADER);
6513
6528
  addItem(
6514
6529
  summary,
6515
6530
  summaryRow(
@@ -7140,7 +7155,7 @@ init_utils_fs();
7140
7155
  init_utils_json();
7141
7156
  function pullHasNoSyncedItems(sections) {
7142
7157
  return sections.every(
7143
- (s) => s.header === "Settings" || s.header === "Summary" || s.items.length === 0
7158
+ (s) => s.header === "Settings" || s.header === PULL_SUMMARY_HEADER || s.items.length === 0
7144
7159
  );
7145
7160
  }
7146
7161
  function isNoopSync(pull, pushOutcome) {
@@ -7150,7 +7165,7 @@ function isNoopSync(pull, pushOutcome) {
7150
7165
  return pullHasNoSyncedItems(pull.sections);
7151
7166
  }
7152
7167
  function pullPhrase(pull) {
7153
- const summary = pull.sections.find((s) => s.header === "Summary");
7168
+ const summary = pull.sections.find((s) => s.header === PULL_SUMMARY_HEADER);
7154
7169
  return summary?.items[0] ?? "applied";
7155
7170
  }
7156
7171
  function reconciledNotes(pull) {
@@ -7164,7 +7179,7 @@ function reconciledNotes(pull) {
7164
7179
  return notes;
7165
7180
  }
7166
7181
  function buildSyncSummarySection(pull, pushOutcome) {
7167
- const s = section("Summary");
7182
+ const s = section("Sync summary");
7168
7183
  if (!pushOutcome.ok) {
7169
7184
  addItem(s, `pull: applied, push: failed (${pushOutcome.message})`);
7170
7185
  return s;
@@ -7854,7 +7869,7 @@ function parseSyncArgs(argv) {
7854
7869
  // package.json
7855
7870
  var package_default = {
7856
7871
  name: "claude-nomad",
7857
- version: "0.57.1",
7872
+ version: "0.58.1",
7858
7873
  type: "module",
7859
7874
  description: "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
7860
7875
  keywords: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-nomad",
3
- "version": "0.57.1",
3
+ "version": "0.58.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": [