zai-org / zai-org/feedback

Plugin enable toggle is a no-op: enabledPlugins resolver interprets values with inverted polarity (Desktop 3.10.1, macOS arm64)

Open
#451 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Summary

In ZCode Desktop 3.10.1, the Settings → Plugins enable/disable toggle is a no-op: the plugin resolver reads plugins.enabledPlugins in ~/.zcode/cli/config.json with inverted polarity relative to what the UI toggle writes. Toggling a plugin on can never make it enabled (and vice versa).

Environment

  • ZCode Desktop 3.10.1 (dev.zcode.app), host process zcode-host-local-1
  • macOS arm64 (Darwin 25.6.0)
  • User-scope plugins from zcode-plugins-official, claude-plugins-official, ponytail marketplaces

Evidence

  1. UI state was the exact complement of the config file (14/14 entries): all 11 entries set to true (e.g. code-review@claude-plugins-official, ponytail@ponytail, context7@claude-plugins-official) rendered disabled and their commands/skills/MCP did not load; the 3 entries set to false (document-skills@zcode-plugins-official, zcode-guide@zcode-plugins-official, zcode-cua@zcode-plugins-official) rendered enabled and their skills/MCP servers did load in sessions.
  2. bootstrap.app.startup.plugins.completed in the CLI log reported enabledPluginCount: 5, matching only the false/absent built-ins — contradicting the config file.
  3. Clicking a toggle (e.g. Context7) recorded plugin-management.setPluginEnabled OK (~90ms) in the desktop log, then listPlugins + getPluginsOverview refresh; config.json was rewritten (mtime bumped) but content stayed byte-identical (md5 unchanged). After refresh the toggle still showed disabled. Reproduced on 4 separate clicks.
  4. Confirming test: quitting the app, manually inverting every boolean in plugins.enabledPlugins, and relaunching made all plugins render enabled and load correctly.
  5. No secondary state store exists (checked ~/.zcode/cli/db/db.sqlite, ~/.zcode/v2/*.json, ~/Library/Application Support/ZCode, defaults) — the resolver simply interprets the one map inverted. Also note listPlugins is served from the host's in-memory cache, so on-disk fixes require an app restart to show up.

Expected

An explicit enabledPlugins entry of true means enabled; the UI toggle writes that value and the resolver honors it.

Actual

The resolver treats true as disabled, so the toggle cannot change the effective state in either direction.

Workaround (for other affected users)

Quit ZCode, invert all booleans under plugins.enabledPlugins in ~/.zcode/cli/config.json, relaunch. Do not use the UI toggles until fixed — they rewrite the opposite of what resolves.

Log pointers (local timestamps, 2026-09-01)

  • ~/.zcode/v2/logs/2026-09-01.log: plugin-management.setPluginEnabled OK at 09:27:12, 09:52:40, 09:53:11, 10:00:37
  • ~/.zcode/cli/log/zcode-2026-09-01.jsonl: bootstrap.app.startup.plugins.completed with enabledPluginCount: 5 vs 14 config entries

Happy to provide redacted config/logs if useful. Reported in-app via the feedback system as well (with diagnostic logs attached).

— saefullohmaslul (maslulsaefulloh@gmail.com)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the mismatch with ~/.zcode/cli/config.json and the plugin-management.setPluginEnabled and bootstrap.app.startup.plugins.completed log entries; the report notes that a restart is needed because listPlugins uses an in-memory cache. Inspect the plugin resolver and toggle path, then verify that explicit true values enable plugins, false values disable them, and the UI state matches after restart.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.