claude-nomad 0.55.0 → 0.55.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 +25 -0
- package/dist/nomad.mjs +30 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.55.1](https://github.com/funkadelic/claude-nomad/compare/v0.55.0...v0.55.1) (2026-06-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Fixed
|
|
7
|
+
|
|
8
|
+
* **config:** raise gitleaks scan timeout from 5 min to 15 min ([#367](https://github.com/funkadelic/claude-nomad/issues/367)) ([30e7344](https://github.com/funkadelic/claude-nomad/commit/30e73443be6d58330716418dced44aa6cf772623))
|
|
9
|
+
* **doctor:** de-backtrack super-linear regexes and group test hook ([#363](https://github.com/funkadelic/claude-nomad/issues/363)) ([4fdbdaa](https://github.com/funkadelic/claude-nomad/commit/4fdbdaa595d3e62cf87cab8e147da130c574f272))
|
|
10
|
+
* **push:** bound gitleaks scans and show dry-run leak-scan spinner ([#365](https://github.com/funkadelic/claude-nomad/issues/365)) ([a04d06a](https://github.com/funkadelic/claude-nomad/commit/a04d06a9624f9fa60d68cc01c69009fb0908e05f))
|
|
11
|
+
* **remap:** match Claude Code's transcript-dir path encoder ([#360](https://github.com/funkadelic/claude-nomad/issues/360)) ([77a4835](https://github.com/funkadelic/claude-nomad/commit/77a4835629a04fbf045930b1938b2404f0b00922))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Documentation
|
|
15
|
+
|
|
16
|
+
* correct path-encoding rule and note Windows-style paths ([#362](https://github.com/funkadelic/claude-nomad/issues/362)) ([970aae4](https://github.com/funkadelic/claude-nomad/commit/970aae42ebba734a878f9712ac304f0c393b9398))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Testing
|
|
20
|
+
|
|
21
|
+
* use specific assertions for length and exit-code checks ([#364](https://github.com/funkadelic/claude-nomad/issues/364)) ([95549d4](https://github.com/funkadelic/claude-nomad/commit/95549d4694e5f0dc09ac1aa13d4240e01cb264f9))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Dependencies
|
|
25
|
+
|
|
26
|
+
* **deps-dev:** bump the dev-dependencies group with 6 updates ([#366](https://github.com/funkadelic/claude-nomad/issues/366)) ([70d1057](https://github.com/funkadelic/claude-nomad/commit/70d10578eb8d58010b160b88a6d61eaa9e8405a0))
|
|
27
|
+
|
|
3
28
|
## [0.55.0](https://github.com/funkadelic/claude-nomad/compare/v0.54.0...v0.55.0) (2026-06-28)
|
|
4
29
|
|
|
5
30
|
|
package/dist/nomad.mjs
CHANGED
|
@@ -423,7 +423,7 @@ function allSharedLinks(map) {
|
|
|
423
423
|
}
|
|
424
424
|
return [...SHARED_LINKS, ...extras];
|
|
425
425
|
}
|
|
426
|
-
var SETTINGS_SCHEMA_URL, NPM_REGISTRY_LATEST_URL, GITLEAKS_PINNED_VERSION, HOST, SHARED_LINKS, GSD_PREFIX, GSD_DROPPED_NAMES, SUPPORTED_EXTRAS, ALWAYS_NEVER_SYNC, PUSH_ALLOWED_STATIC;
|
|
426
|
+
var SETTINGS_SCHEMA_URL, NPM_REGISTRY_LATEST_URL, GITLEAKS_PINNED_VERSION, GITLEAKS_SCAN_TIMEOUT_MS, HOST, SHARED_LINKS, GSD_PREFIX, GSD_DROPPED_NAMES, SUPPORTED_EXTRAS, ALWAYS_NEVER_SYNC, PUSH_ALLOWED_STATIC;
|
|
427
427
|
var init_config = __esm({
|
|
428
428
|
"src/config.ts"() {
|
|
429
429
|
"use strict";
|
|
@@ -434,6 +434,7 @@ var init_config = __esm({
|
|
|
434
434
|
SETTINGS_SCHEMA_URL = "https://json.schemastore.org/claude-code-settings.json";
|
|
435
435
|
NPM_REGISTRY_LATEST_URL = "https://registry.npmjs.org/claude-nomad/latest";
|
|
436
436
|
GITLEAKS_PINNED_VERSION = "8.30.1";
|
|
437
|
+
GITLEAKS_SCAN_TIMEOUT_MS = 9e5;
|
|
437
438
|
HOST = (process.env.NOMAD_HOST || hostname()).toLowerCase();
|
|
438
439
|
SHARED_LINKS = ["CLAUDE.md", "commands", "rules", "my-statusline.cjs"];
|
|
439
440
|
GSD_PREFIX = "gsd-";
|
|
@@ -523,13 +524,23 @@ function sortKeysDeep(value) {
|
|
|
523
524
|
}
|
|
524
525
|
return value;
|
|
525
526
|
}
|
|
526
|
-
var encodePath;
|
|
527
|
+
var ENCODE_MAX, hashPath, encodePath;
|
|
527
528
|
var init_utils_json = __esm({
|
|
528
529
|
"src/utils.json.ts"() {
|
|
529
530
|
"use strict";
|
|
530
531
|
init_config();
|
|
531
532
|
init_utils();
|
|
532
|
-
|
|
533
|
+
ENCODE_MAX = 200;
|
|
534
|
+
hashPath = (s) => {
|
|
535
|
+
let h2 = 0;
|
|
536
|
+
for (let i = 0; i < s.length; i++) h2 = (h2 << 5) - h2 + s.charCodeAt(i) | 0;
|
|
537
|
+
return h2;
|
|
538
|
+
};
|
|
539
|
+
encodePath = (absPath) => {
|
|
540
|
+
const enc = absPath.replace(/[^a-zA-Z0-9]/g, "-");
|
|
541
|
+
if (enc.length <= ENCODE_MAX) return enc;
|
|
542
|
+
return `${enc.slice(0, ENCODE_MAX)}-${Math.abs(hashPath(absPath)).toString(36)}`;
|
|
543
|
+
};
|
|
533
544
|
}
|
|
534
545
|
});
|
|
535
546
|
|
|
@@ -769,7 +780,7 @@ var init_push_gitleaks_config = __esm({
|
|
|
769
780
|
"use strict";
|
|
770
781
|
init_config();
|
|
771
782
|
init_utils();
|
|
772
|
-
OVERLAY_EXTEND_RE =
|
|
783
|
+
OVERLAY_EXTEND_RE = /^[ \t]*(?:\[[ \t]*extend[ \t]*\]|extend[ \t]*[.=])/m;
|
|
773
784
|
TABLE_HEADER_RE = /^\s*\[/;
|
|
774
785
|
OVERLAY_ALLOWLIST_HEADER_RE = /^\s*\[\[?\s*allowlists?\s*\]\]?/;
|
|
775
786
|
OVERLAY_INLINE_ALLOWLIST_RE = /^[ \t]*allowlists?[ \t]*[.=]/m;
|
|
@@ -912,10 +923,11 @@ function scanStagedTree(repoDir, forwardStreams = false) {
|
|
|
912
923
|
];
|
|
913
924
|
if (toml !== null) args.push("--config", toml);
|
|
914
925
|
const opts = { cwd: repoDir, stdio: ["ignore", "pipe", "pipe"] };
|
|
926
|
+
const gitleaksOpts = { ...opts, timeout: GITLEAKS_SCAN_TIMEOUT_MS };
|
|
915
927
|
try {
|
|
916
928
|
execFileSync8("git", ["init", "-q"], opts);
|
|
917
929
|
execFileSync8("git", ["add", "-A"], opts);
|
|
918
|
-
execFileSync8("gitleaks", args,
|
|
930
|
+
execFileSync8("gitleaks", args, gitleaksOpts);
|
|
919
931
|
return [];
|
|
920
932
|
} catch (err) {
|
|
921
933
|
const e = err;
|
|
@@ -945,7 +957,10 @@ function scanFile(filePath, forwardStreams = false) {
|
|
|
945
957
|
`--report-path=${reportPath}`
|
|
946
958
|
];
|
|
947
959
|
if (toml !== null) args.push("--config", toml);
|
|
948
|
-
const opts = {
|
|
960
|
+
const opts = {
|
|
961
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
962
|
+
timeout: GITLEAKS_SCAN_TIMEOUT_MS
|
|
963
|
+
};
|
|
949
964
|
try {
|
|
950
965
|
execFileSync8("gitleaks", args, opts);
|
|
951
966
|
return [];
|
|
@@ -966,6 +981,7 @@ function scanFile(filePath, forwardStreams = false) {
|
|
|
966
981
|
var init_push_gitleaks_scan = __esm({
|
|
967
982
|
"src/push-gitleaks.scan.ts"() {
|
|
968
983
|
"use strict";
|
|
984
|
+
init_config();
|
|
969
985
|
init_push_gitleaks_config();
|
|
970
986
|
init_utils_fs();
|
|
971
987
|
}
|
|
@@ -3285,7 +3301,7 @@ function stripCommentsAndStrings(src) {
|
|
|
3285
3301
|
function classifySource(src) {
|
|
3286
3302
|
const code = stripCommentsAndStrings(src);
|
|
3287
3303
|
const cjs = /\brequire\s*\(/.test(code) || /\bmodule\.exports\b/.test(code) || /\bexports\.\w/.test(code);
|
|
3288
|
-
const esm = /^[
|
|
3304
|
+
const esm = /^[ \t]*import\s/m.test(code) || /^[ \t]*export\s/m.test(code) || /\bimport\.meta\b/.test(code);
|
|
3289
3305
|
if (cjs && !esm) return "cjs";
|
|
3290
3306
|
if (esm && !cjs) return "esm";
|
|
3291
3307
|
if (cjs && esm) return "cjs";
|
|
@@ -3344,8 +3360,12 @@ function expandHome(token) {
|
|
|
3344
3360
|
const h2 = home();
|
|
3345
3361
|
return token.replace(/^\$\{HOME\}/, h2).replace(/^\$HOME/, h2).replace(/^~/, h2);
|
|
3346
3362
|
}
|
|
3363
|
+
var TRAILING_SHELL_PUNCT = /* @__PURE__ */ new Set(["'", '"', "`", ";", ")", "|", "&", ">"]);
|
|
3347
3364
|
function stripShellPunctuation(token) {
|
|
3348
|
-
|
|
3365
|
+
const stripped = token.replace(/^['"]+/, "");
|
|
3366
|
+
let end = stripped.length;
|
|
3367
|
+
while (end > 0 && TRAILING_SHELL_PUNCT.has(stripped[end - 1])) end--;
|
|
3368
|
+
return stripped.slice(0, end);
|
|
3349
3369
|
}
|
|
3350
3370
|
function* claudePathsIn(command) {
|
|
3351
3371
|
const claudePrefix = `${claudeHome()}/`;
|
|
@@ -6541,7 +6561,7 @@ function runDryRunPreview(st, map, repo) {
|
|
|
6541
6561
|
renderNoScanTree(st, { noMapHint: true });
|
|
6542
6562
|
return;
|
|
6543
6563
|
}
|
|
6544
|
-
const verdict = previewPushLeaks(map);
|
|
6564
|
+
const verdict = withSpinner("Scanning for secrets", () => previewPushLeaks(map));
|
|
6545
6565
|
renderPushTree(st, verdict);
|
|
6546
6566
|
if (verdict.recovery !== null) fail(verdict.recovery);
|
|
6547
6567
|
}
|
|
@@ -7209,7 +7229,7 @@ function parsePushArgs(argv) {
|
|
|
7209
7229
|
// package.json
|
|
7210
7230
|
var package_default = {
|
|
7211
7231
|
name: "claude-nomad",
|
|
7212
|
-
version: "0.55.
|
|
7232
|
+
version: "0.55.1",
|
|
7213
7233
|
type: "module",
|
|
7214
7234
|
description: "Sync Claude Code config (~/.claude/) across machines via a private Git repo, with path remapping and per-host settings overrides.",
|
|
7215
7235
|
keywords: [
|
package/package.json
CHANGED