feat(tui): suggest plan mode from composer drafts#19901
Merged
fcoury-oai merged 2 commits intomainfrom Apr 28, 2026
Merged
Conversation
Contributor
|
Reviewed and tested. Looks good to me, works as expected. One nit/question- Do we want |
canvrno-oai
approved these changes
Apr 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
plan/planand the word plan in shell modeShift+Tabmode cycle and add thread-scoped dismissal withEscCleanShot.2026-04-28.at.10.38.14-converted.mp4
Why
The desktop app already nudges users toward Plan mode when their draft clearly signals planning intent. The TUI had the underlying
/planandShift+Tabflows, but no equivalent reminder at the moment the user was most likely to benefit from them.Details
The reminder is shown only when Plan mode is available, the draft contains standalone
plan, the user is not already in Plan mode, the composer is actionable, and the current thread has not dismissed the reminder. Slash-command and shell-command drafts are excluded.The first implementation used an extra composer row, but that moved the statusline whenever the heuristic fired. This version keeps the layout stable by rendering the reminder in the existing footer row instead.
Validation
INSTA_UPDATE=always cargo test -p codex-tui chatwidget::tests::plan_mode::plan_mode_nudge -- --nocapturejust fmtjust fix -p codex-tui./tools/argument-comment-lint/run.py -p codex-tuicargo insta pending-snapshotsgit diff --check