feat: implement terminal style chat history#1778
feat: implement terminal style chat history#1778PratyushChauhan wants to merge 5 commits intopingdotgg:mainfrom
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
|
Video: 2026-04-06.14-55-36.mp4 |
apps/web/src/components/ChatView.tsx
Outdated
| setComposerCursor(next.length); | ||
| return true; | ||
| } | ||
| } |
There was a problem hiding this comment.
ArrowUp unconditionally overrides multi-line cursor navigation
Medium Severity
The ArrowUp/ArrowDown history navigation activates unconditionally whenever user messages exist, with no check for cursor position or whether the prompt is multi-line. Since the composer supports multi-line input via Shift+Enter, pressing ArrowUp in a multi-line draft replaces the entire text with a historical message instead of moving the cursor up within the text. The handler is registered at COMMAND_PRIORITY_HIGH and calls event.preventDefault(), completely blocking normal Lexical cursor movement.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit a068222. Configure here.
- Clear navigation history when resetting the local composer state - Drop any saved draft so a new thread starts clean
- Unify ArrowUp/ArrowDown prompt history handling in ChatView - Preserve draft restoration when leaving history mode
ApprovabilityVerdict: Needs human review This PR adds a new user-facing feature (terminal-style history navigation) that changes keyboard handling behavior. Additionally, an unresolved review comment identifies a bug where the implementation breaks normal cursor navigation in multi-line prompts. Human review recommended to address the identified issue before merging. You can customize Macroscope's approvability policy. Learn more. |
- Clear prompt history state when sending a plan or slash command - Prevent stale draft restoration after submission
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cd7686d. Configure here.
- Recompute the composer trigger after loading the next draft - Keeps autocomplete state in sync with the restored prompt


What Changed
Pressing
↑/↓in the composer input navigates through previously sent user messages, shell-style. The live draft is saved when you first press↑and restored when you↓back past the most recent message. History index resets on send.Why
Retyping or slightly tweaking a previous prompt is a common workflow. Every terminal does this — it's muscle memory. The composer already had the full message history available; this just wires
↑/↓intoonComposerCommandKey(where Enter/Tab/menu-navigation already live) using two refs. No new files, no new state, no re-renders.UI Changes
No visual changes — interaction only. Navigation only activates when no autocomplete menu is open, so
@-mention and/-command menus are unaffected.Checklist
Note
Low Risk
Low risk UI-only keyboard interaction change scoped to the chat composer; primary risk is minor UX regressions or conflicts with existing menu navigation.
Overview
Adds terminal-style prompt history navigation to the chat composer:
ArrowUpcycles through previously sent user messages andArrowDownmoves back toward the live draft, restoring the saved draft when returning to index-1.Introduces
historyIndexRef/savedDraftRefto track history without new state, and resets this history whenever the composer is cleared (thread change, send, plan follow-up submission, or standalone slash command).Reviewed by Cursor Bugbot for commit 7387819. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add terminal-style chat history navigation to the composer
savedDraftRefand restored when navigating back to index-1.-1and the saved draft is cleared.Macroscope summarized 7387819.