[BUG] Windows: the `/plugins` "Configure options" panel corrupts (ghost rows, duplicated labels/help, dropped chars) on the first navigation keypress when a plugin has many knobs or long option descriptions; and enum-style options have no picker

Open 💬 0 comments Opened Jul 4, 2026 by manderse21

Summary. On Windows, opening a plugin's /plugins -> "Configure options" panel renders cleanly, but the first up/down keypress corrupts the frame: labels and help text duplicate, the caret appears on multiple rows, a value is drawn against the wrong label, and characters drop. It happens when the panel is tall -- many userConfig knobs and/or long option descriptions.

Environment. Reproduced on Claude Code 2.1.200, Windows 11, Windows Terminal + PowerShell, from a plugin with 17 userConfig options whose descriptions ranged 61..1295 characters. Those descriptions have since been shortened to <= ~200 chars as a local workaround, so that specific plugin no longer triggers it; the underlying defect reproduces from any sufficiently tall config panel (see Repro). Current build 2.1.201 shows no config-panel fix in the intervening changelog.

Mechanism (from the bundled renderer). The config panel (component ynn -> YNe) renders ALL knob rows plus the selected knob's FULL description as an uncapped hint line -- no pagination, no scroll, no maxHeight. So the panel's rendered height changes every time you navigate to a knob with a different-length description. CC's custom TUI renderer diffs frames incrementally and only full-repaints on resize/offscreen; the height change a navigation produces drives its repaint/scroll path, which leaves ghost rows on Windows. This is the same renderer/failure family as #59750 (the claude agents panel on Windows Terminal) and the 2.1.183 "duplicated rows, merged text in Windows Terminal" changelog fix.

Repro. Install any plugin with ~15+ userConfig options (or a couple with ~1000-char descriptions), run /plugins -> select it -> "Configure options", then press down a few times on a terminal shorter than the panel. With the original 17-option manifest, panel height was ~27 rows with a short option active and ~44 with the longest active (80-col), so a ~24-30 row terminal overflows as you navigate.

Second, separate defect (enum options). Every userConfig option renders as a free-text field regardless of declared type, and the manifest cannot declare an enumerated value set (the option schema is strict; type is limited to string|number|boolean|directory|file, and an enum key is rejected). So an option that is semantically an enum (e.g. off|suggest|shim) is blind free-text with no allowed-value picker or cycle. Please consider an enum/select userConfig type, and a boolean toggle, in the config panel.

Suggested fixes. (a) Bound the panel: paginate the knob list and cap/scroll the description hint so panel height cannot exceed the viewport; (b) fix the renderer's height-change repaint on Windows so a content-height delta does not ghost; (c) add an enum/select (and boolean) userConfig option type with a picker/toggle in the panel.

View original on GitHub ↗