claude-code-arcane 2.9.4 → 2.9.5
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 +7 -0
- package/dist/cli.js +27 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.9.5](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.4...v2.9.5) (2026-09-07)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **update:** record the hash Arcane shipped, not the customized one on disk ([921c89d](https://github.com/SebastianLuser/claude-code-arcane/commit/921c89d25eb8167e1efbcd27ae233faf3beb85c8))
|
|
7
|
+
|
|
1
8
|
## [2.9.4](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.3...v2.9.4) (2026-09-07)
|
|
2
9
|
|
|
3
10
|
|
package/dist/cli.js
CHANGED
|
@@ -2515,7 +2515,12 @@ Update available: ${chalk7.red(installedVersion)} -> ${chalk7.green(currentVersi
|
|
|
2515
2515
|
arcane_version: currentVersion,
|
|
2516
2516
|
source_version: currentVersion,
|
|
2517
2517
|
updated_at: (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "Z"),
|
|
2518
|
-
content_hashes:
|
|
2518
|
+
content_hashes: hashesToRecord(
|
|
2519
|
+
installedHashes,
|
|
2520
|
+
manifest.content_hashes ?? null,
|
|
2521
|
+
items,
|
|
2522
|
+
opts.force ?? false
|
|
2523
|
+
),
|
|
2519
2524
|
installed_skills: merged.skills,
|
|
2520
2525
|
installed_rules: allRules,
|
|
2521
2526
|
installed_agents: merged.agents,
|
|
@@ -2556,7 +2561,12 @@ Refreshed ${unhashed.length} file(s); no other changes to apply.`) : chalk7.gree
|
|
|
2556
2561
|
arcane_version: currentVersion,
|
|
2557
2562
|
source_version: currentVersion,
|
|
2558
2563
|
updated_at: (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "Z"),
|
|
2559
|
-
content_hashes:
|
|
2564
|
+
content_hashes: hashesToRecord(
|
|
2565
|
+
newHashes,
|
|
2566
|
+
manifest.content_hashes ?? null,
|
|
2567
|
+
items,
|
|
2568
|
+
opts.force ?? false
|
|
2569
|
+
),
|
|
2560
2570
|
installed_skills: merged.skills,
|
|
2561
2571
|
installed_rules: allRules,
|
|
2562
2572
|
installed_agents: merged.agents,
|
|
@@ -2621,19 +2631,25 @@ function granularAgentDivisions(entries) {
|
|
|
2621
2631
|
for (const division of whole) partial.delete(division);
|
|
2622
2632
|
return partial;
|
|
2623
2633
|
}
|
|
2624
|
-
function
|
|
2625
|
-
const
|
|
2626
|
-
skills: { ...
|
|
2627
|
-
rules: { ...
|
|
2628
|
-
agents: { ...
|
|
2629
|
-
hooks: { ...
|
|
2634
|
+
function hashesToRecord(fresh, previous, items, force) {
|
|
2635
|
+
const recorded = {
|
|
2636
|
+
skills: { ...fresh.skills },
|
|
2637
|
+
rules: { ...fresh.rules },
|
|
2638
|
+
agents: { ...fresh.agents },
|
|
2639
|
+
hooks: { ...fresh.hooks }
|
|
2630
2640
|
};
|
|
2631
2641
|
for (const item of items) {
|
|
2632
|
-
if (item.action !== "keep-foreign") continue;
|
|
2633
2642
|
const bucket = `${item.type}s`;
|
|
2634
|
-
|
|
2643
|
+
if (item.action === "keep-foreign") {
|
|
2644
|
+
delete recorded[bucket][item.name];
|
|
2645
|
+
continue;
|
|
2646
|
+
}
|
|
2647
|
+
if (item.action === "skip-customized" && !force) {
|
|
2648
|
+
const asInstalled = previous?.[bucket]?.[item.name];
|
|
2649
|
+
if (asInstalled) recorded[bucket][item.name] = asInstalled;
|
|
2650
|
+
}
|
|
2635
2651
|
}
|
|
2636
|
-
return
|
|
2652
|
+
return recorded;
|
|
2637
2653
|
}
|
|
2638
2654
|
function computeUpdatePlan(manifestHashes, installedHashes, sourceHashes, owned, exemptAgentDivisions = /* @__PURE__ */ new Set()) {
|
|
2639
2655
|
const items = [];
|