refactor(web): composer mode controls and footer actions live in ComposerFooterControls#22720
Continues the ChatComposer split.
ComposerFooterModeControls (the runtime mode select and the plan/build toggle) and ComposerFooterPrimaryActions (the context meter and send actions) move unchanged into ComposerFooterControls.tsx. The runtime mode option list ChatComposer filters stays in ChatComposer.
| before | this PR | |
|---|---|---|
| ChatComposer.tsx lines | 6,923 | 6,700 |
| ComposerFooterControls.tsx lines | n/a | 227 |
| Renders, 20 typed chars | 678 | 678 |
Renders measured with the shared fiber counter (rc-init.js) on a seeded dev server: typing 20 characters into an existing thread's composer, median of 3 runs. This is a move only; it does not change renders.
Tests run: vp lint and vp fmt --check on the changed files, tsc-rs --noEmit for apps/web, and reactCompilerCoverage.test.ts for the changed files (0 bailouts).
🤖 Generated with Claude Code
Checks
- SuccessfulCodeRabbitGitHub
Review completed
- Successful
Skipped - Not affected
- Skipped
- Skipped
- Skipped
- SuccessfulRemove preview downloadGitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- SuccessfulLabel PR 22720GitHub
- Successful
- Successful
- Successful
- SuccessfulPrepare PR size configGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulCheckGitHub
- SuccessfulNative fingerprint diffGitHub
- SkippedRustGitHub
- SkippedRelease SmokeGitHub
- Skipped
- SuccessfulTestGitHub
- SuccessfulBuild and TypecheckGitHub
- SuccessfulTest WebGitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- SuccessfulLabel PR 22720GitHub
- SkippedDeploy web previewGitHub
- SkippedEAS PreviewGitHub
- SuccessfulTest Server 3GitHub
- SuccessfulTest Server 8GitHub
- SuccessfulTest Server 6GitHub
- SuccessfulChangesGitHub
- SuccessfulTest Server 5GitHub
- SuccessfulTest Server 2GitHub
- SuccessfulTest Server 4GitHub
- SuccessfulTest Server 7GitHub
- SuccessfulTest Server 1GitHub
- SuccessfulNative fingerprint diffGitHub
- SuccessfulLintGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulPrepare PR size configGitHub
Added 1 commit
- refactor(web): composer mode controls and footer actions live in ComposerFooterControls8c483f8
Approvability
Verdict: Approved at 8c483f8
Macroscope's review found this PR approvable — This PR relocates existing composer mode controls and footer actions into a dedicated module without changing their implementation, inputs, or render sites. It is a contained structural refactor with no product-default, schema, or production-infrastructure changes.
You can add or adjust custom eligibility rules. Learn more.
No actionable comments were generated in the recent review. 🎉
ℹ️ Recent review info
⚙️ Run configuration
- Configuration used: Path: .coderabbit.config.ts
- Review profile: CHILL
- Plan: Team
- Run ID:
cbcd8dc5-d1d1-455a-8316-b16a231e8be4
📥 Commits
Reviewing files that changed from the base of the PR and between 7ccabf41dd3ddd91da2f990c070845d79e4a9e6f and 8c483f867955bff4383fe6014589cab135984d68.
📒 Files selected for processing: 2
apps/web/src/components/chat/ChatComposer.tsxapps/web/src/components/chat/ComposerFooterControls.tsx
Limit details: You’ve used all 10 included reviews currently available.
📝 Walkthrough
Footer mode controls and primary actions moved from
ChatComposer.tsxtoComposerFooterControls.tsx.ChatComposer.tsximports the controls and removes the local implementations and unused imports.Changes: Composer footer controls
Layer / File(s) Summary Footer control implementations
apps/web/src/components/chat/ComposerFooterControls.tsxAdds runtime-mode and interaction-mode controls. Adds primary actions that render context-window status and pass composer state and handlers to ComposerPrimaryActions.ChatComposer integration
apps/web/src/components/chat/ChatComposer.tsxImports the footer controls and removes their local implementations and associated unused imports. Priority: ⬇️ Low
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Refactor
Suggested reviewers:
t3dotgg
Merge Risk: ⚪ Minimal · up to 8c483
The footer controls appear to behave as before, with no identified issue blocking merge after normal checks.
Pre-merge checks: Passed 3 · Failed 1
Failed Failed checks: 1 warning
Check name Status Explanation Resolution Description check Warning The description explains the refactor and reports focused verification, but it omits the required Problem and Scope and approval sections. It does not explain why the change is needed or provide a tri… Add a Problem section that states the need for this split. Add a Scope and approval section that links the triaged issue or maintainer approval, or explains why this focused refactor qualifies to proceed without prior approval. Passed Passed checks: 3 passed
Check name Status Explanation Title check Passed The title clearly and specifically describes moving composer mode controls and footer actions into ComposerFooterControls. Linked Issues check Passed Check skipped because no linked issues were found for this pull request. Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check
Explanation
The description explains the refactor and reports focused verification, but it omits the required Problem and Scope and approval sections. It does not explain why the change is needed or provide a triaged issue, maintainer approval, or justification for proceeding without one.
Resolution
Add a Problem section that states the need for this split. Add a Scope and approval section that links the triaged issue or maintainer approval, or explains why this focused refactor qualifies to proceed without prior approval.
✨ Finishing Touches
📝 Generate docstrings
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
- Commit to this branch
- Create a new PR
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Usage-based review receipt
- Mode: Continue automatically
- Reviewed files: 2
- Charged: $0.50
- View usage details
Note
This review was completed with usage-based billing: files reviewed beyond your plan's included limits are billed at $0.25/file. View usage-based billing.
Comment @coderabbitai help to get the list of available commands.