Three holes from the T-511 adversarial review pass:
- An entry containing the PATH separator smuggled extra tokens into
the joined PATH — a stray trailing ':' yields an EMPTY token, which
POSIX shells resolve as CWD (the dot-in-PATH hazard). The CLI verb
and the settings control now reject such entries, and applyPathPreset
skips malformed stored values that predate the check.
- The gitdir pointer a worktree resolution follows is repo-controlled
text; the resolved main root is now validated (must hold a real
.git directory) before its preset key is trusted, so a crafted
pointer can't alias an arbitrary path's preset.
- A pane spawned with a cwd below the workspace root hashed the
subdirectory and silently missed the workspace preset; the lookup
now keys any in-workspace cwd to the workspace root
(presetLookupRoot).
Also: the Add button pairs buttonBackground with its own
buttonHoverBackground token instead of borrowing the list-item hover
token, and the hosted-Claude leg gains an end-to-end orchestrator test
(preset lookup → spawn env).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The UI half of D-106 (D-6 parity with `clide env path`): an ordered
preset editor — add/remove/reorder, a missing-dir warning, a worktree
note naming the shared main repo, and capture-from-login-shell
suggestions adopted with one click. Writes land on the same user-scope
key the CLI verbs use and publish on the same channel, so both
surfaces stay live off the store notifier.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The drawing-card feature batch (icon/image/compare/graph/d2 cards, --stdin,
tool resolution) added widget + wiring code that dipped total coverage under
the 95% floor — surfaced by `make release` (push-check skips coverage). Cover
the gaps: ProblemsController.refresh, every SVG shape-type bbox + the style
vocabulary, _spawnD2 via a real /bin/cat, the icon-show bus path + error
branches, and quad/arc/close marker paths.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ToolsSettingsExtension adds a Tools settings category — a path field per
tool (app.tools.<name>) plus a Re-detect action (tools.detect) — and keeps
the live resolver in sync as paths are edited (supporterBinariesFrom). en
+ nl catalogs. Completes the D-104 UI surface.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>