Add checkpoint rewind menu#2588
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 |
ApprovabilityVerdict: Needs human review New feature adding a checkpoint rewind menu with a dialog component, command palette integration, and double-Escape keybinding. Introduces new user-facing behavior and UI components that warrant human review. You can customize Macroscope's approvability policy. Learn more. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 277e57a. Configure here.

Summary
Screenshots
What Changed
checkpoint.rewindcommand with the defaultEsc Escshortcut.thread.checkpoint.revertcommand.Verification:
bun fmtbun lintbun typecheckbun run test --filter @t3tools/webbun run test -- src/keybindings.test.tsinpackages/contractsbun run test -- src/keybindings.test.ts -t "checkpoint rewind|double-Escape"inapps/serverbun run test:browser -- src/components/ChatView.browser.tsx -t "checkpoint rewind"inapps/webNote
Medium Risk
Adds a new checkpoint rewind UI flow and extends keybinding handling to support 2-step sequences, which can affect global keyboard handling and checkpoint revert UX. Risk is mitigated by extensive unit/browser test coverage and limited scope to a new command and dialog.
Overview
Adds a checkpoint rewind dialog that lets users select a prior prompt/checkpoint (with diff stats) and restore by dispatching
thread.checkpoint.revert, including disabled states and automatic closing on thread/navigation changes.Introduces the
checkpoint.rewindcommand surfaced via a new Command Palette action and a default double-Escape shortcut (esc esc). The keybinding system is extended end-to-end (contracts/shared/server/web) to support 2-key sequences (conflict detection, label formatting, encoding/decoding), and the existing per-message rewind affordance now opens the dialog pre-selected instead of immediately reverting.Reviewed by Cursor Bugbot for commit 109c7c0. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add checkpoint rewind dialog triggered by double-Escape or command palette
RewindCheckpointDialogthat lets users select and restore a prior conversation checkpoint, dispatchingthread.checkpoint.revertwithout a confirmation modal.esc esc) when terminal is not focused, or via a new 'Rewind checkpoint' action in the command palette.deriveRewindCheckpointCandidates, associating each user prompt with the next assistant checkpoint and aggregating diff stats, sorted newest first.Esc Esc).onRevertUserMessageno longer triggers an immediate revert — it now opens the rewind dialog pre-selected instead.Macroscope summarized 109c7c0.