feat(settings): Files → LSP is one nested panel - #894
Conversation
|
Important Review skippedToo many files! This PR contains 150 files, which is 50 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (150)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
/devin review |
f52f60b to
5bbb458
Compare
Language Servers stays the door. Nested switches for the agent tool, diagnostics-on-write, diagnostics-on-edit, format-on-write, lazy start, and diagnostic dedup live on the page behind that row, not as Files siblings. Search lands on the parent; opening it focuses the nested control. --no-lsp still forces the whole stack off.
Biome import order on the panel files, a tui changelog line for the nested settings row, and the mdbook output for the settings pages.
mdbook v0.5.2 after origin/main's zoom-stage book. Settings copy for the nested LSP page is in the rebuilt HTML; the searchindex hash follows the source.
Files → LSP is a nested page, so lsp.enabled names the other switches on that page, not beside it. Regenerated the settings reference (346 /settings rows) and rebuilt the handbook book.
The heading is already LSP. Repeating that word on the enterable row fails the settings-name architecture check and tells the operator nothing the heading did not.
The sweep session must construct `lsp`. Language servers ship off, so the factory returned null and the pin list went stale.
The nested LSP door needs both lsp.enabled and lsp.tool. The loop-side sweep stubs settings.get, so without those keys lsp stayed notRegistered and CI treated that as a hole.
The HUD polish on main draws pending tasks with status.shadowed, not the phase checkbox. This assertion was left on checkbox.unchecked and fails any GitHub merge that includes that polish.
cbd1d70 to
1b9b90e
Compare
# Conflicts: # packages/coding-agent/test/interactive-mode-todo-clear.test.ts
taskLine in modes/components/todo-board.ts draws a pending, unowned task with checkbox.unchecked. The assertion had been moved to status.shadowed on the premise that the HUD polish on main drew it that way; it does not, and the changed-suite leak gate ran the file and reported the failure.
isNestedLspKnob drops every lsp.* row from the Files tab, and the nested page draws only LSP_SETTING_PATHS. A new lsp row absent from that list reaches neither surface. The sweep derives the expected set from SETTINGS_SCHEMA at run time, so adding one turns the suite red.
The nested-panel bullet had opened a second Changed section above Added, with no blank line before that heading.
# Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/searchindex-abb5237d.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
# Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
Every write, delete and rename site was gated on `lsp.enabled`, except the ACP client-bridge write in `routeWriteThroughBridge`, which still notified `workspace/didChangeWatchedFiles` on `session.enableLsp` alone. A session with servers switched off but a client already running still reached the LSP layer through that path. Records the behavior change the nested panel introduces: with Language Servers off, which is the default, write and edit no longer inject diagnostics or format, even though those switches default on. Refs #894
# Conflicts: # docs/handbook/book/404.html # docs/handbook/book/acknowledgements.html # docs/handbook/book/appendix/glossary.html # docs/handbook/book/architecture/compaction.html # docs/handbook/book/architecture/config.html # docs/handbook/book/architecture/mcp.html # docs/handbook/book/architecture/memory.html # docs/handbook/book/architecture/overview.html # docs/handbook/book/architecture/providers.html # docs/handbook/book/architecture/sandbox.html # docs/handbook/book/architecture/secrets.html # docs/handbook/book/architecture/session-turn.html # docs/handbook/book/architecture/tui.html # docs/handbook/book/concepts/index.html # docs/handbook/book/concepts/model-contract.html # docs/handbook/book/concepts/permission-model.html # docs/handbook/book/concepts/sessions-turns-threads.html # docs/handbook/book/context/compaction-memory.html # docs/handbook/book/context/context-files.html # docs/handbook/book/context/goal-state.html # docs/handbook/book/context/reads-search.html # docs/handbook/book/edit/edit-repair.html # docs/handbook/book/edit/engine.html # docs/handbook/book/edit/roadmap.html # docs/handbook/book/features/advisor.html # docs/handbook/book/features/branching.html # docs/handbook/book/features/cockpit.html # docs/handbook/book/features/collab.html # docs/handbook/book/features/connectors.html # docs/handbook/book/features/cpu-limit.html # docs/handbook/book/features/doctor.html # docs/handbook/book/features/exec.html # docs/handbook/book/features/export-import.html # docs/handbook/book/features/extensions-authoring.html # docs/handbook/book/features/extensions.html # docs/handbook/book/features/feature-flags.html # docs/handbook/book/features/hooks-authoring.html # docs/handbook/book/features/hooks.html # docs/handbook/book/features/index.html # docs/handbook/book/features/keybindings.html # docs/handbook/book/features/lsp.html # docs/handbook/book/features/marketplace-authoring.html # docs/handbook/book/features/marketplace.html # docs/handbook/book/features/mcp.html # docs/handbook/book/features/memory.html # docs/handbook/book/features/personalities.html # docs/handbook/book/features/plan-mode.html # docs/handbook/book/features/plugins.html # docs/handbook/book/features/profiles.html # docs/handbook/book/features/python-repl.html # docs/handbook/book/features/review.html # docs/handbook/book/features/sandbox.html # docs/handbook/book/features/secrets.html # docs/handbook/book/features/skills-authoring.html # docs/handbook/book/features/skills.html # docs/handbook/book/features/speech.html # docs/handbook/book/features/subagents.html # docs/handbook/book/features/web-search.html # docs/handbook/book/foundations/architecture.html # docs/handbook/book/foundations/thesis.html # docs/handbook/book/foundations/verification.html # docs/handbook/book/index.html # docs/handbook/book/introduction.html # docs/handbook/book/models/prompts.html # docs/handbook/book/models/providers.html # docs/handbook/book/models/system-prompt.html # docs/handbook/book/observability/overview.html # docs/handbook/book/print.html # docs/handbook/book/reference/approval-mode.html # docs/handbook/book/reference/cli.html # docs/handbook/book/reference/environment-complete.html # docs/handbook/book/reference/environment.html # docs/handbook/book/reference/exit-codes.html # docs/handbook/book/reference/file-locations.html # docs/handbook/book/reference/hooks.html # docs/handbook/book/reference/index.html # docs/handbook/book/reference/keybindings-config.html # docs/handbook/book/reference/keybindings-ref.html # docs/handbook/book/reference/mcp-config.html # docs/handbook/book/reference/models-yml.html # docs/handbook/book/reference/project-trust.html # docs/handbook/book/reference/providers.html # docs/handbook/book/reference/rpc.html # docs/handbook/book/reference/sdk.html # docs/handbook/book/reference/settings-reference.html # docs/handbook/book/reference/settings.html # docs/handbook/book/reference/skills.html # docs/handbook/book/reference/slash-commands.html # docs/handbook/book/reference/theme.html # docs/handbook/book/reference/tools.html # docs/handbook/book/reference/tree-command.html # docs/handbook/book/repair/cascade.html # docs/handbook/book/repair/overview.html # docs/handbook/book/repair/per-model.html # docs/handbook/book/repair/soundness.html # docs/handbook/book/router/role-routing.html # docs/handbook/book/searcher-c2a407aa.js # docs/handbook/book/searchindex-f272b308.js # docs/handbook/book/using/authentication.html # docs/handbook/book/using/configuration.html # docs/handbook/book/using/configuring-providers.html # docs/handbook/book/using/custom-tools.html # docs/handbook/book/using/editing.html # docs/handbook/book/using/examples.html # docs/handbook/book/using/extending.html # docs/handbook/book/using/faq.html # docs/handbook/book/using/getting-started.html # docs/handbook/book/using/install.html # docs/handbook/book/using/mcp-setup.html # docs/handbook/book/using/migration-guide.html # docs/handbook/book/using/models.html # docs/handbook/book/using/quickstart.html # docs/handbook/book/using/roles-and-profiles.html # docs/handbook/book/using/safety.html # docs/handbook/book/using/sessions.html # docs/handbook/book/using/task-guides.html # docs/handbook/book/using/themes.html # docs/handbook/book/using/troubleshooting.html # docs/handbook/book/why/argot.html # docs/handbook/book/why/index.html # docs/handbook/book/why/innovations.html # docs/handbook/book/why/performance.html # docs/handbook/book/why/value.html
What
Files → LSP is one parent row. Entering it opens a nested page with one independent switch per capability:
The dependent rows remain hidden while Language Servers is off. With servers on, disabling the agent tool leaves formatting and injected diagnostics available; disabling either diagnostics path does not disable the tool. Session-level
--no-lspstill disables the complete stack.Global settings search finds the parent row. Search for a dependent setting lands on the parent and opens the nested page with that control focused when the master is on.
Correctness audit
LSP_SETTING_PATHSis the single ordered nested-page definition.lspEnabledcondition and disappears while the master is off.lsp.enabled, opens the parent page, and preserves the requested nested focus.lsp.enabled, andlsp.tool; write/edit formatting and diagnostics read their own independent settings.Unreleased; the root changelog was regenerated after merging currentorigin/main.lib.shalready called when kitty remote control is unavailable.Settings differential
Both frames were recorded from
proof/scenes/settings-lsp-panel.shat the same 131×36 terminal size. The off arm uses defaults; the on arm is seeded before launch withSCENE_SETTINGS='lsp.enabled: true'.Off — only the Language Servers master switch is present
On — every independent nested LSP switch is present
The PNGs differ byte-for-byte (
933cd6c5…off,df0139b3…on).Verification
bun scripts/verify-scene.ts settings-lsp-panelpassed.bash scripts/test-sandbox/run.sh bun test packages/coding-agent/test/modes/components/settings-lsp-panel.test.ts packages/coding-agent/test/architecture/an-off-feature-hides-its-knobs.test.ts packages/coding-agent/test/tools/index.test.ts packages/coding-agent/test/settings-search-ranking.test.ts— 38 passed, 0 failed, 123 assertions.bun run checkpassed TypeScript and Rust checks.bun run check:toolspassed.CHANGELOG_BASE=origin/main bun run changelog:checkpassed.bun run changelog:root:checkpassed after regeneration.