Closed as duplicate
Closed as duplicate
Copy link
Labels
Description
Summary
On the OpenCode desktop/web UI, after undoing (staging a revert) a message, there is no discoverable control to redo/cancel that revert. The documented TUI redo keybind (Ctrl+X then R) does not work in the desktop/web UI, because Ctrl+R is intercepted by the browser as a page reload. As a result, a staged undo cannot be reverted from the interface.
Environment
- opencode version: 2.0.26
- OS: Windows 10.0.26200.9457 (Windows_NT 10.0.26200, x64)
- Terminal: N/A (OpenCode desktop app / web UI)
- Shell: C:\WINDOWS\system32\cmd.exe
- Install/channel: OpenCode Desktop (bundled CLI at %APPDATA%\ai.opencode.desktop\cli\2.0.26\opencode-cli.exe)
- Active plugins: None found
Reproduction
- Open a session in the OpenCode desktop app (web UI).
- Undo / revert the most recent message so a revert is staged.
- Look for a way to redo/cancel the revert: there is no visible "Redo" button, banner, or menu item.
- Press
Ctrl+XthenR(the TUI redo binding). The UI briefly shows the OpenCode splash icon and reloads (becauseCtrl+Rreloads the page), and the revert remains staged.
Expected Behavior
After a staged undo, the user should be able to cancel/redo it from the UI via a visible control, and the redo keybind should not collide with the browser's reload shortcut.
Actual Behavior
- No redo/cancel control is discoverable in the desktop/web UI.
Ctrl+XthenRtriggers a page reload instead of redo; the staged revert stays.- The staged revert is only visible server-side via
GET /api/session/{id}(e.g."revert": {"messageID": "...", "snapshot": "...", "files": []}) and could only be cleared via the API.
Additional Context
DELETE /api/session/{id}/revertclears the staged revert and works when the session is idle (confirmed on 2.0.26).DELETE /api/session/{id}/revertreturnsSessionBusyError(HTTP 409) while the model is generating, so it cannot be used during an active response.- Undo is only reversible while uncommitted; sending a new message commits it.
- No logs captured (desktop app).
Activity
opencode-agent commentedon Oct 14, 2026
Thanks for the detailed report, @YUNQIYE! I think this is a duplicate of #55192, which reports the same gap in the 2.0 desktop app: after an undo there's no visible restore/redo control and nothing on screen shows that a revert is pending.
About the keybind:
Ctrl+XthenRis the TUI's redo binding. The desktop/web app doesn't define a keybind for redo, soCtrl+Rgoes to the webview and reloads the page. For now, you can cancel a staged revert in the desktop app by typing/redoin the composer or by choosing Redo from the command palette. Both are available while a revert is staged.Possible duplicates and related issues, ordered from most to least likely:
/undowhile a response is still generatingThe bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different.
opencode-agent commentedon Oct 15, 2026
Closing this as a duplicate of #55192, since there's been no reply saying how this one is different. #55192 covers the missing restore/redo control in the desktop app after an undo, so please follow and add to that issue instead.
Until it's addressed, you can cancel a staged revert in the desktop app by typing
/redoin the composer or by choosing Redo from the command palette.Ctrl+XRis only a TUI binding, which is why the desktop app reloads the page.If your problem turns out to be different from #55192, please comment here and say how. Thanks again for the detailed report, @YUNQIYE!