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 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: stripForeign(installedHashes, items),
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: stripForeign(newHashes, items),
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 stripForeign(hashes, items) {
2625
- const stripped = {
2626
- skills: { ...hashes.skills },
2627
- rules: { ...hashes.rules },
2628
- agents: { ...hashes.agents },
2629
- hooks: { ...hashes.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
- delete stripped[bucket][item.name];
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 stripped;
2652
+ return recorded;
2637
2653
  }
2638
2654
  function computeUpdatePlan(manifestHashes, installedHashes, sourceHashes, owned, exemptAgentDivisions = /* @__PURE__ */ new Set()) {
2639
2655
  const items = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-arcane",
3
- "version": "2.9.4",
3
+ "version": "2.9.5",
4
4
  "description": "Skills, agents, hooks and rules for Claude Code — installable via npx claude-code-arcane",
5
5
  "type": "module",
6
6
  "bin": {