Plugin enable toggle is a no-op: enabledPlugins resolver interprets values with inverted polarity (Desktop 3.10.1, macOS arm64)
Nobody has claimed this yet.
- 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 processzcode-host-local-1 - macOS arm64 (Darwin 25.6.0)
- User-scope plugins from
zcode-plugins-official,claude-plugins-official,ponytailmarketplaces
Evidence
- 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 tofalse(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. bootstrap.app.startup.plugins.completedin the CLI log reportedenabledPluginCount: 5, matching only thefalse/absent built-ins — contradicting the config file.- Clicking a toggle (e.g. Context7) recorded
plugin-management.setPluginEnabled OK (~90ms)in the desktop log, thenlistPlugins+getPluginsOverviewrefresh;config.jsonwas rewritten (mtime bumped) but content stayed byte-identical (md5 unchanged). After refresh the toggle still showed disabled. Reproduced on 4 separate clicks. - Confirming test: quitting the app, manually inverting every boolean in
plugins.enabledPlugins, and relaunching made all plugins render enabled and load correctly. - 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 notelistPluginsis 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 OKat 09:27:12, 09:52:40, 09:53:11, 10:00:37~/.zcode/cli/log/zcode-2026-09-01.jsonl:bootstrap.app.startup.plugins.completedwithenabledPluginCount: 5vs 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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