claude-code-arcane 2.9.7 → 2.9.8

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.8](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.7...v2.9.8) (2026-09-09)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **statusline:** point the global install at the script it owns ([1a8aada](https://github.com/SebastianLuser/claude-code-arcane/commit/1a8aada612e7f2bad2d60450306c0d51887f6b65))
7
+
1
8
  ## [2.9.7](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.6...v2.9.7) (2026-09-08)
2
9
 
3
10
 
package/dist/cli.js CHANGED
@@ -397,6 +397,14 @@ import os from "os";
397
397
  function arcaneHome() {
398
398
  return process.env.ARCANE_HOME ?? path3.join(os.homedir(), ".arcane");
399
399
  }
400
+ var RELATIVE_STATUSLINE_COMMAND = "bash .claude/statusline.sh";
401
+ function statuslineCommand(target) {
402
+ if (path3.resolve(target) !== path3.resolve(os.homedir())) {
403
+ return RELATIVE_STATUSLINE_COMMAND;
404
+ }
405
+ const script = path3.join(target, ".claude", "statusline.sh").replace(/\\/g, "/");
406
+ return `bash "${script}"`;
407
+ }
400
408
  function getPackageRoot() {
401
409
  const thisFile = fileURLToPath(import.meta.url);
402
410
  return path3.resolve(path3.dirname(thisFile), "..");
@@ -1243,7 +1251,7 @@ var Installer = class {
1243
1251
  if (this.hasStatusline) {
1244
1252
  settings.statusLine = {
1245
1253
  type: "command",
1246
- command: "bash .claude/statusline.sh"
1254
+ command: statuslineCommand(this.target)
1247
1255
  };
1248
1256
  }
1249
1257
  const activeStyle = this.merged.output_styles[0];
@@ -1926,7 +1934,7 @@ async function addCommand(items = []) {
1926
1934
  manifest.profile_command = manifest.profiles.filter((p3) => p3 !== "core").join("+");
1927
1935
  }
1928
1936
  if (statuslineAdded) {
1929
- addStatuslineToSettings(claudeDir);
1937
+ addStatuslineToSettings(target, claudeDir);
1930
1938
  }
1931
1939
  } else {
1932
1940
  const result = addSkill(root, target, item, manifest.installed_skills);
@@ -2046,14 +2054,14 @@ function mergePermissions(claudeDir, newPerms) {
2046
2054
  settings.permissions = perms;
2047
2055
  writeJsonSync(settingsPath, settings);
2048
2056
  }
2049
- function addStatuslineToSettings(claudeDir) {
2057
+ function addStatuslineToSettings(target, claudeDir) {
2050
2058
  const settingsPath = path14.join(claudeDir, "settings.json");
2051
2059
  if (!fs12.existsSync(settingsPath)) return;
2052
2060
  const settings = readJsonSync(settingsPath);
2053
2061
  if (settings.statusLine) return;
2054
2062
  settings.statusLine = {
2055
2063
  type: "command",
2056
- command: "bash .claude/statusline.sh"
2064
+ command: statuslineCommand(target)
2057
2065
  };
2058
2066
  writeJsonSync(settingsPath, settings);
2059
2067
  }
@@ -2867,22 +2875,29 @@ function syncUnhashedFiles(root, claudeDir, merged, dryRun) {
2867
2875
  fs15.mkdirSync(path17.dirname(t.dst), { recursive: true });
2868
2876
  fs15.copyFileSync(t.src, t.dst);
2869
2877
  }
2870
- const activeStyle = merged.output_styles[0];
2871
- if (activeStyle) {
2872
- const settingsPath = path17.join(claudeDir, "settings.json");
2873
- if (fs15.existsSync(settingsPath)) {
2874
- try {
2875
- const settings = JSON.parse(fs15.readFileSync(settingsPath, "utf-8"));
2876
- if (settings.outputStyle !== activeStyle) {
2877
- changed.push(`settings.json (outputStyle: ${activeStyle})`);
2878
- if (!dryRun) {
2879
- settings.outputStyle = activeStyle;
2880
- fs15.writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}
2878
+ const settingsPath = path17.join(claudeDir, "settings.json");
2879
+ if (fs15.existsSync(settingsPath)) {
2880
+ try {
2881
+ const settings = JSON.parse(fs15.readFileSync(settingsPath, "utf-8"));
2882
+ let dirty = false;
2883
+ const activeStyle = merged.output_styles[0];
2884
+ if (activeStyle && settings.outputStyle !== activeStyle) {
2885
+ changed.push(`settings.json (outputStyle: ${activeStyle})`);
2886
+ settings.outputStyle = activeStyle;
2887
+ dirty = true;
2888
+ }
2889
+ const wanted = statuslineCommand(path17.dirname(claudeDir));
2890
+ const current = settings.statusLine;
2891
+ if (wanted !== RELATIVE_STATUSLINE_COMMAND && current && current.command !== wanted) {
2892
+ changed.push("settings.json (statusLine path)");
2893
+ settings.statusLine = { ...current, command: wanted };
2894
+ dirty = true;
2895
+ }
2896
+ if (dirty && !dryRun) {
2897
+ fs15.writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}
2881
2898
  `, "utf-8");
2882
- }
2883
- }
2884
- } catch {
2885
2899
  }
2900
+ } catch {
2886
2901
  }
2887
2902
  }
2888
2903
  return changed;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-arcane",
3
- "version": "2.9.7",
3
+ "version": "2.9.8",
4
4
  "description": "Skills, agents, hooks and rules for Claude Code — installable via npx claude-code-arcane",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,7 +57,6 @@ hooks:
57
57
  - session-stop.sh
58
58
  - log-agent.sh
59
59
  - log-agent-stop.sh
60
- - statusline.sh
61
60
 
62
61
  permissions:
63
62
  allow: