@haus-tech/haus-workflow 5.9.0 → 5.9.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.1](https://github.com/WeAreHausTech/haus-workflow/compare/v5.9.0...v5.9.1) (2026-09-24)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **plugins:** read user-scope enabled state from settings.json, not the merged plugin list ([#594](https://github.com/WeAreHausTech/haus-workflow/issues/594)) ([7f93cb9](https://github.com/WeAreHausTech/haus-workflow/commit/7f93cb9c7d3bd01868f8fec4c73582b00e361561)), closes [#593](https://github.com/WeAreHausTech/haus-workflow/issues/593)
8
+
3
9
  ## [5.9.0](https://github.com/WeAreHausTech/haus-workflow/compare/v5.8.0...v5.9.0) (2026-09-24)
4
10
 
5
11
  ### Features
package/dist/cli.js CHANGED
@@ -2754,6 +2754,9 @@ function findManagedInstall(state, pin) {
2754
2754
  const id = pluginId(pin);
2755
2755
  return state.installed.find((p) => p.id === id && (p.scope ?? MANAGED_SCOPE) === MANAGED_SCOPE);
2756
2756
  }
2757
+ function isEnabledAtUserScope(state, pin) {
2758
+ return (state.userEnabledPlugins ?? {})[pluginId(pin)] !== false;
2759
+ }
2757
2760
  function isPluginActive(state, pin) {
2758
2761
  if (!state.available) return false;
2759
2762
  const id = pluginId(pin);
@@ -2795,7 +2798,7 @@ function planBuiltin(pin, state) {
2795
2798
  reason: `plugin ${id} is not installed at ${MANAGED_SCOPE} scope`
2796
2799
  };
2797
2800
  }
2798
- const enabled = installed.enabled !== false;
2801
+ const enabled = isEnabledAtUserScope(state, pin);
2799
2802
  if (wantEnabled && !enabled) {
2800
2803
  return {
2801
2804
  pin,
@@ -7276,6 +7279,18 @@ async function readMarketplaceRefs(configDir) {
7276
7279
  }
7277
7280
  return out;
7278
7281
  }
7282
+ async function readUserEnabledPlugins(configDir) {
7283
+ const settings = await readJson(
7284
+ path37.join(configDir, "settings.json")
7285
+ );
7286
+ const raw = settings?.enabledPlugins;
7287
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return {};
7288
+ const out = {};
7289
+ for (const [id, value] of Object.entries(raw)) {
7290
+ if (typeof value === "boolean") out[id] = value;
7291
+ }
7292
+ return out;
7293
+ }
7279
7294
  async function readClonedPluginVersion(installLocation) {
7280
7295
  const manifest = await readJson(
7281
7296
  path37.join(installLocation, ".claude-plugin", "plugin.json")
@@ -7351,7 +7366,8 @@ async function probePluginEnv(deps = {}) {
7351
7366
  warn2("Claude Code returned unreadable plugin state \u2014 leaving global plugins untouched.");
7352
7367
  return { available: false, installed: [], marketplaces: [] };
7353
7368
  }
7354
- return { available: true, installed, marketplaces };
7369
+ const userEnabledPlugins = await readUserEnabledPlugins(configDir);
7370
+ return { available: true, installed, marketplaces, userEnabledPlugins };
7355
7371
  }
7356
7372
  function stepArgs(step, pin) {
7357
7373
  const id = pluginId(pin);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "5.9.0",
3
+ "version": "5.9.1",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {