bigpowers 2.83.0 → 2.83.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/.pi/package.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.83.1](https://github.com/danielvm-git/bigpowers/compare/v2.83.0...v2.83.1) (2026-07-24)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **install:** resolve EEXIST errors during update by cleaning old symlinks first ([8a9a81f](https://github.com/danielvm-git/bigpowers/commit/8a9a81fa949489c594c2078d847d0e4d8e3e8b12))
|
|
7
|
+
|
|
1
8
|
# [2.83.0](https://github.com/danielvm-git/bigpowers/compare/v2.82.4...v2.83.0) (2026-07-24)
|
|
2
9
|
|
|
3
10
|
|
package/bin/setup.js
CHANGED
|
@@ -232,11 +232,24 @@ async function main() {
|
|
|
232
232
|
process.exit(0);
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
// ── Step 4:
|
|
235
|
+
// ── Step 4: Clean old symlinks ─────────────────────────────────────────
|
|
236
236
|
const s = await spinner();
|
|
237
237
|
s.start('Preparing installation...');
|
|
238
238
|
await sleep(200);
|
|
239
239
|
|
|
240
|
+
// Uninstall existing symlinks for selected tools before reinstalling
|
|
241
|
+
if (hasExisting) {
|
|
242
|
+
s.message('Cleaning old symlinks...');
|
|
243
|
+
for (const toolId of selectedTools) {
|
|
244
|
+
try {
|
|
245
|
+
uninstallTool(toolId, ROOT);
|
|
246
|
+
} catch {
|
|
247
|
+
// Ignore errors during cleanup — tool might not be installed yet
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
await sleep(100);
|
|
251
|
+
}
|
|
252
|
+
|
|
240
253
|
s.message('Syncing skills...');
|
|
241
254
|
try {
|
|
242
255
|
runInherited('bash scripts/sync-skills.sh');
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -18,9 +18,9 @@ function linkSkills(skillsDir, targetDir) {
|
|
|
18
18
|
const src = path.join(skillsDir, entry.name);
|
|
19
19
|
const dst = path.join(targetDir, entry.name);
|
|
20
20
|
|
|
21
|
+
// Remove existing symlink or directory
|
|
21
22
|
try {
|
|
22
|
-
|
|
23
|
-
if (stat.isSymbolicLink()) fs.unlinkSync(dst);
|
|
23
|
+
fs.rmSync(dst, { force: true, recursive: true });
|
|
24
24
|
} catch {}
|
|
25
25
|
|
|
26
26
|
fs.symlinkSync(src, dst);
|
|
@@ -33,17 +33,17 @@ function linkDir(src, dst) {
|
|
|
33
33
|
`Link source missing: ${src} (run bash scripts/sync-skills.sh first)`
|
|
34
34
|
);
|
|
35
35
|
}
|
|
36
|
+
// Remove existing symlink or directory
|
|
36
37
|
try {
|
|
37
|
-
|
|
38
|
-
if (stat.isSymbolicLink()) fs.unlinkSync(dst);
|
|
38
|
+
fs.rmSync(dst, { force: true, recursive: true });
|
|
39
39
|
} catch {}
|
|
40
40
|
fs.symlinkSync(src, dst);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function linkFile(src, dst) {
|
|
44
|
+
// Remove existing symlink or file
|
|
44
45
|
try {
|
|
45
|
-
|
|
46
|
-
if (stat.isSymbolicLink()) fs.unlinkSync(dst);
|
|
46
|
+
fs.rmSync(dst, { force: true });
|
|
47
47
|
} catch {}
|
|
48
48
|
fs.symlinkSync(src, dst);
|
|
49
49
|
}
|
|
@@ -73,9 +73,9 @@ function linkHook(src, dst) {
|
|
|
73
73
|
`Hook source missing: ${src} (expected under repo skills/ or scripts/hooks/; fix path or restore file)`
|
|
74
74
|
);
|
|
75
75
|
}
|
|
76
|
+
// Remove existing symlink or file
|
|
76
77
|
try {
|
|
77
|
-
|
|
78
|
-
if (stat.isSymbolicLink()) fs.unlinkSync(dst);
|
|
78
|
+
fs.rmSync(dst, { force: true });
|
|
79
79
|
} catch {}
|
|
80
80
|
fs.symlinkSync(src, dst);
|
|
81
81
|
try { fs.chmodSync(src, 0o755); } catch {}
|