From 56831b7257bc8014e6dc558ccdb450cbc433401b Mon Sep 17 00:00:00 2001 From: Akisolu Date: Fri, 7 Aug 2026 13:46:20 -0400 Subject: [PATCH 1/5] fix(crusher-shim): improve path result handling in printInstallResult function Signed-off-by: Akisolu --- scripts/crusher-shim.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/crusher-shim.js b/scripts/crusher-shim.js index e2531f7d..3425652d 100644 --- a/scripts/crusher-shim.js +++ b/scripts/crusher-shim.js @@ -14,7 +14,11 @@ function printInstallResult(result) { console.log(`Shim directory: ${result.dir}`); if (result.installed.length) console.log(`Installed: ${result.installed.join(', ')}`); if (result.skipped.length) console.log(`Not found on this machine (skipped): ${result.skipped.join(', ')}`); - const changed = result.pathResult.filter(r => r.changed); + const rawPathResult = result?.pathResult; + const pathResultArray = Array.isArray(rawPathResult) + ? rawPathResult + : (rawPathResult ? [rawPathResult] : []); + const changed = pathResultArray.filter(r => r && r.changed); if (changed.length) { console.log(`PATH updated in: ${changed.map(r => r.path).join(', ')}`); console.log('Open a new terminal (or `source` the file above) for it to take effect.'); From 266e845d8ecd480308dd91b42358f4ffc6f6a7a4 Mon Sep 17 00:00:00 2001 From: Akisolu Date: Fri, 7 Aug 2026 14:33:36 -0400 Subject: [PATCH 2/5] fix(windows): resolve PS 5.1 inline node syntax error Signed-off-by: Akisolu --- scripts/install.ps1 | 2 +- scripts/lib/apply-commit-privacy.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 scripts/lib/apply-commit-privacy.js diff --git a/scripts/install.ps1 b/scripts/install.ps1 index 29f833b3..a75469c8 100644 --- a/scripts/install.ps1 +++ b/scripts/install.ps1 @@ -218,7 +218,7 @@ if (-not $DryRun) { # but only `egc init` configured the filter that keeps that promise -- # this quick-start script (the README's own documented command) never # did (2026-08-01 audit finding). Best-effort: must not fail the install. - node -e 'const rootDir = process.argv[1]; const { applyCommitPrivacyFilterCli } = require(rootDir + "/scripts/lib/memory-filters"); applyCommitPrivacyFilterCli({ projectDir: process.cwd(), scriptPath: rootDir + "/scripts/check-state-leak.js", log: m => console.log(" " + m) });' $RootDir + node scripts/lib/apply-commit-privacy.js $RootDir if ($LASTEXITCODE -ne 0) { Write-Host " note: commit-privacy filter setup failed (non-fatal)" } # Write harness config diff --git a/scripts/lib/apply-commit-privacy.js b/scripts/lib/apply-commit-privacy.js new file mode 100644 index 00000000..f2b9eccc --- /dev/null +++ b/scripts/lib/apply-commit-privacy.js @@ -0,0 +1,15 @@ +const path = require('path'); +const { applyCommitPrivacyFilterCli } = require('./memory-filters'); + +const rootDir = process.argv[2] || process.cwd(); +const scriptPath = path.join(rootDir, 'scripts', 'check-state-leak.js'); + +try { + applyCommitPrivacyFilterCli({ + projectDir: process.cwd(), + scriptPath: scriptPath, + log: (m) => console.log(' ' + m) + }); +} catch (err) { + console.log(` note: commit-privacy filter setup failed (non-fatal): ${err.message}`); +} \ No newline at end of file From 691261c19dac65a54dab65a97bb84ba40e229855 Mon Sep 17 00:00:00 2001 From: Akisolu Date: Fri, 7 Aug 2026 16:07:40 -0400 Subject: [PATCH 3/5] fix(review): address cubic-dev-ai feedback regarding path labels and exit codes Signed-off-by: Akisolu --- scripts/crusher-shim.js | 6 +++++- scripts/lib/apply-commit-privacy.js | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/crusher-shim.js b/scripts/crusher-shim.js index 3425652d..df725a7b 100644 --- a/scripts/crusher-shim.js +++ b/scripts/crusher-shim.js @@ -17,7 +17,11 @@ function printInstallResult(result) { const rawPathResult = result?.pathResult; const pathResultArray = Array.isArray(rawPathResult) ? rawPathResult - : (rawPathResult ? [rawPathResult] : []); + : (rawPathResult ? [{ + ...rawPathResult, + path: rawPathResult.path || 'Windows Shim Directory' // <-- AƱadimos un label por defecto + }] : []); + const changed = pathResultArray.filter(r => r && r.changed); if (changed.length) { console.log(`PATH updated in: ${changed.map(r => r.path).join(', ')}`); diff --git a/scripts/lib/apply-commit-privacy.js b/scripts/lib/apply-commit-privacy.js index f2b9eccc..28741f08 100644 --- a/scripts/lib/apply-commit-privacy.js +++ b/scripts/lib/apply-commit-privacy.js @@ -12,4 +12,5 @@ try { }); } catch (err) { console.log(` note: commit-privacy filter setup failed (non-fatal): ${err.message}`); -} \ No newline at end of file + process.exitCode = 1; +} From 1859a4a0c129c47ccd0b8832664f9eb56e149c3d Mon Sep 17 00:00:00 2001 From: Akisolu Date: Fri, 7 Aug 2026 16:25:25 -0400 Subject: [PATCH 4/5] fix(windows): apply review feedback for path resolution and uninstall shim printer Signed-off-by: Akisolu --- scripts/crusher-shim.js | 25 ++++++++++++++++--------- scripts/install.ps1 | 2 +- scripts/lib/apply-commit-privacy.js | 22 +++++++++------------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/scripts/crusher-shim.js b/scripts/crusher-shim.js index df725a7b..3c07c4e9 100644 --- a/scripts/crusher-shim.js +++ b/scripts/crusher-shim.js @@ -10,18 +10,24 @@ const { install, uninstall, status } = require('./lib/crusher/shim-install'); +function toPathResultArray(rawPathResult) { + if (Array.isArray(rawPathResult)) { + return rawPathResult; + } + if (rawPathResult) { + return [{ + ...rawPathResult, + path: rawPathResult.path || 'Windows user PATH (registry)' + }]; + } + return []; +} + function printInstallResult(result) { console.log(`Shim directory: ${result.dir}`); if (result.installed.length) console.log(`Installed: ${result.installed.join(', ')}`); if (result.skipped.length) console.log(`Not found on this machine (skipped): ${result.skipped.join(', ')}`); - const rawPathResult = result?.pathResult; - const pathResultArray = Array.isArray(rawPathResult) - ? rawPathResult - : (rawPathResult ? [{ - ...rawPathResult, - path: rawPathResult.path || 'Windows Shim Directory' // <-- AƱadimos un label por defecto - }] : []); - + const pathResultArray = toPathResultArray(result.pathResult); const changed = pathResultArray.filter(r => r && r.changed); if (changed.length) { console.log(`PATH updated in: ${changed.map(r => r.path).join(', ')}`); @@ -34,7 +40,8 @@ function printInstallResult(result) { function printUninstallResult(result) { console.log(`Shim directory: ${result.dir}`); console.log(result.removed.length ? `Removed: ${result.removed.join(', ')}` : 'Nothing to remove.'); - const changed = result.pathResult.filter(r => r.changed); + const pathResultArray = toPathResultArray(result.pathResult); + const changed = pathResultArray.filter(r => r && r.changed); if (changed.length) console.log(`PATH entry removed from: ${changed.map(r => r.path).join(', ')}`); } diff --git a/scripts/install.ps1 b/scripts/install.ps1 index a75469c8..739b9262 100644 --- a/scripts/install.ps1 +++ b/scripts/install.ps1 @@ -218,7 +218,7 @@ if (-not $DryRun) { # but only `egc init` configured the filter that keeps that promise -- # this quick-start script (the README's own documented command) never # did (2026-08-01 audit finding). Best-effort: must not fail the install. - node scripts/lib/apply-commit-privacy.js $RootDir + node "$RootDir/scripts/lib/apply-commit-privacy.js" $RootDir if ($LASTEXITCODE -ne 0) { Write-Host " note: commit-privacy filter setup failed (non-fatal)" } # Write harness config diff --git a/scripts/lib/apply-commit-privacy.js b/scripts/lib/apply-commit-privacy.js index 28741f08..679e5ec9 100644 --- a/scripts/lib/apply-commit-privacy.js +++ b/scripts/lib/apply-commit-privacy.js @@ -1,16 +1,12 @@ const path = require('path'); -const { applyCommitPrivacyFilterCli } = require('./memory-filters'); +const { applyCommitPrivacyFilterCli } = require('./apply-commit-privacy-filter-cli'); -const rootDir = process.argv[2] || process.cwd(); -const scriptPath = path.join(rootDir, 'scripts', 'check-state-leak.js'); +const scriptPath = process.argv[2] + ? path.resolve(process.argv[2], 'scripts', 'git-hooks', 'commit-privacy-filter.js') + : undefined; -try { - applyCommitPrivacyFilterCli({ - projectDir: process.cwd(), - scriptPath: scriptPath, - log: (m) => console.log(' ' + m) - }); -} catch (err) { - console.log(` note: commit-privacy filter setup failed (non-fatal): ${err.message}`); - process.exitCode = 1; -} +applyCommitPrivacyFilterCli({ + projectDir: process.cwd(), + scriptPath: scriptPath, + log: (m) => console.log(' ' + m) +}); From 0dc1b8cd5bb9e152514abcd68ba5605933de6749 Mon Sep 17 00:00:00 2001 From: Akisolu Date: Fri, 7 Aug 2026 16:39:07 -0400 Subject: [PATCH 5/5] fix(review): restore correct module imports and target script path Signed-off-by: Akisolu --- scripts/lib/apply-commit-privacy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/lib/apply-commit-privacy.js b/scripts/lib/apply-commit-privacy.js index 679e5ec9..882249f3 100644 --- a/scripts/lib/apply-commit-privacy.js +++ b/scripts/lib/apply-commit-privacy.js @@ -1,8 +1,8 @@ const path = require('path'); -const { applyCommitPrivacyFilterCli } = require('./apply-commit-privacy-filter-cli'); +const { applyCommitPrivacyFilterCli } = require('./memory-filters'); const scriptPath = process.argv[2] - ? path.resolve(process.argv[2], 'scripts', 'git-hooks', 'commit-privacy-filter.js') + ? path.resolve(process.argv[2], 'scripts', 'check-state-leak.js') : undefined; applyCommitPrivacyFilterCli({