fix(tui): keep MCP boot detail out of chat - #5760
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @Hmbown's task in 1m 35s —— View job Review: fix(tui): keep MCP boot detail out of chat
SummaryClean, well-scoped removal. Reuse / simplification
This is a simplification note, not a blocker — no behavior is broken by leaving it. Tests
Provider/model/route safetyNot applicable — no model/provider selection logic touched. SecurityNot applicable — no secret handling, exec, or input-validation surface touched. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5512159052
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Constraint::Length(preview_height), // Pending input preview (0 if empty) | ||
| Constraint::Length(indicator_height), // Background-work chip (#5286, 0 if idle) | ||
| Constraint::Length(session_boot_height), // MCP+plugin boot receipt (0 if quiet) | ||
| Constraint::Length(plugin_cta_height), // Live plugin CTA (0 unless matched) |
There was a problem hiding this comment.
Preserve plugin boot diagnostics on a visible surface
On initial startup with an invalid, duplicate, or unreviewed plugin and no MCP problem, removing the session-boot layout slot here makes the plugin receipt unreachable. SessionBootSurface::activity_chip only creates MCP candidates, and initialization does not emit a replacement plugin toast, so users receive no indication that a plugin failed or needs setup unless they independently open /plugin; retain a compact plugin warning on its designated status surface while removing the MCP detail rows.
AGENTS.md reference: crates/tui/AGENTS.md:L8-L10
Useful? React with 👍 / 👎.
|
Claude finished @Hmbown's task in 2m 4s —— View job Review: fix(tui): keep MCP boot detail out of chat
SummaryThe second commit ( Confirming Codex's P2 finding: plugin diagnostics are now unreachable, not just de-emphasizedI traced this and it's a real regression, not just a nitpick.
Before this PR, the multi-row receipt was the only thing that surfaced this passively. This PR's stated intent ("MCP+plugin boot surface" per the module doc, Tests
Provider/model/route safety & SecurityNot applicable — no provider/model selection or secret/exec/input-validation surface touched. |
There was a problem hiding this comment.
Codewhale review
PR #5760 removes the retired MCP+plugin boot receipt renderer and McpServerAction metadata, updates the TUI frame layout slots to match, and adds a regression test ensuring failed MCP state appears only in the footer chip rather than consuming chat/composer rows.
Assessment
The change is focused and consistent. Frame slot indices are correctly shifted after deleting the session_boot row, dead action metadata is fully removed, and the new test covers the reported regression. No correctness issues found.
Advisory review by Codewhale (codewhale review --pr 5760 --post, head a9364824d92898e4c9e12b21ba64ed910450fe49). Line-specific findings are also posted as inline review comments; mechanical fixes arrive as committable suggestions you can apply from the Files tab. CODEOWNERS approval still governs merge.
|
Claude finished @Hmbown's task in 2m 11s —— View job Review: fix(tui): keep MCP boot detail out of chat
SummaryThe third commit, Nice catch bundled into the same commit: I re-verified the points earlier reviews already checked and confirm they still hold on this diff:
Minor notes (non-blocking)
Provider/model/route safety & SecurityNot applicable — no provider/model selection or secret/exec/input-validation surface touched. Note on verificationI could not run |
|
Claude finished @Hmbown's task in 1m 5s —— View job Review: fix(tui): keep MCP boot detail out of chat
Summary
This closes out the "single path" API cleanup implied by earlier reviews' dead-code notes — good incremental hygiene, no behavior change. Status of previously raised issues
Provider/model/route safety & SecurityNot applicable — no provider/model selection, secret handling, exec, or input-validation surface touched. Note on verification
|
There was a problem hiding this comment.
Codewhale review
PR removes the multi-row MCP boot receipt renderer and centralizes boot activity as a compact footer chip with typed severity. The refactor is coherent and the new tests cover the footer mapping and layout stability. A couple of semantic changes deserve confirmation.
Findings
- [WARNING] PluginBootSummary::is_quiet semantics changed (
crates/tui/src/tui/session_boot.rs:53)
is_quiet previously returned true only when no plugins were loaded and there were zero problems. It now returns true whenever problem_count() == 0, so a state with loaded plugins but no problems is considered quiet. This is intentional for the new footer notice, but any other caller expecting the old meaning will silently suppress plugin-loaded UI. - [INFO] ContentChanged is newly treated as needs_setup (
crates/tui/src/tui/session_boot.rs)
plugin_trust_needs_setup now includes PluginTrustStatus::ContentChanged, which was not counted before. This changes plugin boot classification and should be confirmed against the product spec (the test explicitly asserts it). - [INFO] McpServerBootRow::action removal is a breaking change (
crates/tui/src/tui/session_boot.rs)
The action field and McpServerAction enum were removed. The diff updates internal constructors and tests, but any other module constructing or matching McpServerBootRow will fail to compile. The PR verification presumably covers this, but it is worth a grep for remaining uses.
Assessment
The PR is well-structured and achieves its goal of removing multi-row boot output from the chat. Tests for the new footer mapping and composer stability are present. The main residual risk is semantic drift in is_quiet and ContentChanged classification; if those are intentional, the change looks good to merge.
Advisory review by Codewhale (codewhale review --pr 5760 --post, head e2c7225a2e7fa68a61afa699edb106415bb09113). Line-specific findings are also posted as inline review comments; mechanical fixes arrive as committable suggestions you can apply from the Files tab. CODEOWNERS approval still governs merge.
| #[must_use] | ||
| pub fn is_quiet(self) -> bool { | ||
| self.loaded == 0 && self.invalid == 0 && self.duplicate == 0 && self.needs_setup == 0 | ||
| self.problem_count() == 0 |
There was a problem hiding this comment.
[WARNING] PluginBootSummary::is_quiet semantics changed
is_quiet previously returned true only when no plugins were loaded and there were zero problems. It now returns true whenever problem_count() == 0, so a state with loaded plugins but no problems is considered quiet. This is intentional for the new footer notice, but any other caller expecting the old meaning will silently suppress plugin-loaded UI.
Closes #5759
Product change
Moves per-server MCP boot detail out of the chat/composer shell. The existing footer is the compact status surface;
/mcpremains the detailed diagnostic and action surface. The retired multi-row receipt renderer and its dead action metadata are removed rather than left as warning-producing legacy code.Verification
cargo fmt --all -- --checkgit diff --checkRUST_MIN_STACK=16777216 cargo test -p codewhale-tui --lib --locked failed_mcp_is_a_footer_chip_not_multiline_chat_boot_outputCODEWHALE_DEV_NEXTEST=0 ./scripts/dev-test.sh tui session_boot(12 passed)No live-terminal visual acceptance is claimed by this PR.