Skip to content

feat(web): remove Build/Plan toggle from the composer - #5551

Open
t3dotgg wants to merge 4 commits into
mainfrom
t3code/remove-build-plan-toggle
Open

feat(web): remove Build/Plan toggle from the composer#5551
t3dotgg wants to merge 4 commits into
mainfrom
t3code/remove-build-plan-toggle

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Aug 6, 2026

Copy link
Copy Markdown
Member

The Build/Plan toggle in the composer input box is gone. Plan mode is now a legacy feature: Settings → Beta has a "Restore plan mode (legacy)" switch that brings the toggle back for anyone still relying on the old workflow.

With the flag off (the default), the composer no longer shows the Build/Plan control, the compact "…" menu drops its Chat/Plan radio group, the /plan and /default slash commands disappear from the command menu, and Shift+Tab no longer flips modes. The effective interaction mode is also forced to "build" while the flag is off — even for threads that had plan mode persisted — so nobody can be trapped in plan mode with the toggle hidden. The next send persists the forced mode back to the thread.

Implementation: a new planModeEnabled client setting (default false) in the contracts schema, gating plus mode clamping in ChatComposer/ChatView, and a Beta settings row wired into settings search.


Change made by Claude Fable 5 via Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Client-side UI and interaction-mode gating only; default-off behavior may surprise users with existing plan threads until they send a message or enable the beta flag.

Overview
Plan mode is now legacy and hidden by default. A new client setting planModeEnabled (default false) in the settings contract controls whether Build/Plan is available at all.

With the flag off, ChatView forces the effective interaction mode to default even when a thread still has plan mode stored, so users are not stuck without UI to exit; the next send is expected to persist default. The composer hides the Build/Plan toggle, drops /plan and /default from the slash menu, disables Shift+Tab mode switching, and treats standalone /plan//default as normal message text.

With the flag on, behavior matches the prior plan-mode workflow (toggle, shortcuts, and slash commands). Settings → Beta adds Restore plan mode (legacy) wired into settings search; desktop settings tests include the new default field.

Reviewed by Cursor Bugbot for commit a7f0fc2. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Remove Build/Plan toggle from the composer behind a planModeEnabled beta flag

  • Adds planModeEnabled (default false) to ClientSettingsSchema in settings.ts; the flag can be toggled via a new switch in the Beta settings panel.
  • When planModeEnabled is false, the interaction mode is forced to DEFAULT_INTERACTION_MODE in ChatView, and the /plan//default slash commands are treated as plain text.
  • Hides the Build/Plan toggle UI, its Shift+Tab shortcut, and the /plan//default command palette entries in ChatComposer when the flag is off.
  • Adds a 'Restore plan mode (legacy)' entry to settings search pointing to the Beta section.
  • Behavioral Change: Plan mode is now off by default for all users; existing composer interaction-mode state is ignored unless the beta flag is re-enabled.

Macroscope summarized a7f0fc2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 15a6fda3-a4d8-4233-9e67-a444aebebc53

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread apps/web/src/components/chat/ChatComposer.tsx Outdated
@macroscopeapp

macroscopeapp Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR changes default runtime behavior by disabling plan mode for all users and has an unresolved high-severity review comment about existing plan-mode threads losing their Implement/Refine UI. The interaction between legacy threads and the new default deserves human verification.

You can customize Macroscope's approvability policy. Learn more.

@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 7, 2026
t3dotgg and others added 2 commits August 6, 2026 19:39
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…g/t3code into t3code/remove-build-plan-toggle

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a7f0fc2. Configure here.

// send persists "default" back to the thread.
const interactionMode = settings.planModeEnabled
? (composerInteractionMode ?? activeThread?.interactionMode ?? DEFAULT_INTERACTION_MODE)
: DEFAULT_INTERACTION_MODE;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plan-ready threads lose Implement UI

High Severity

Forcing interactionMode to default when planModeEnabled is off, and removing the interactionMode === 'plan' escape hatch, prevents threads already in plan mode from using Implement/Refine or /default. This leaves users with a 'Plan Ready' sidebar state but no way to act on it.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a7f0fc2. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant