Skip to content

Panel and keys

<leader>v opens and closes the review; <leader>r cycles where it sits. <leader> is OpenCode’s own prefix, ctrl+x unless you changed it. From the palette it is /changes/review and /diff belong to OpenCode itself.

PlacementWhat it is for
RightA pane down the right of the window, with the conversation still beside it
FullThe whole window, for when you are reading rather than chatting

w switches between them from inside the panel. At half width the file list stays — it narrows rather than disappearing, because a review you cannot change file in is a diff viewer.

Three, all optional, given where the plugin is listed:

opencode.json
{
"plugin": [
["@opencode-cockpit/review", { "variant": "full", "source": "branch" }]
]
}
variantright (default) or full — where it opens
sourceworktree (default), branch, or session — what it opens on
keybindsoverrides for the two global keys, e.g. { "cockpit.review.open": "<leader>d" }

Through the bundle, the same options go under a review key:

opencode.json
{
"plugin": [["opencode-cockpit", { "review": { "variant": "full" } }]]
}

The keys inside the panel are not configurable. They are a closed set that only exists while the panel is open, and the panel gives them straight back when it closes.

The panel takes the keyboard while it is open, and gives it straight back when it closes.

KeyDoes
<leader>vOpen or close the review
<leader>rMove it: right pane, full screen
j k Move
tabSwitch pane
return l Open a file, or fold a folder
h Back to the file list
d u pgdn pgupScroll the diff
vStart a selection, or cancel it
c nComment here, or reply to the thread here
fComment on the whole file
xRemove the thread you are on
space mMark read, and go to the next unread
sSubmit the review
bNext source: uncommitted, or what this branch changes
gReload the diff
wRight pane or full screen
pShow what the panel is costing
q escClose

Submit is s and source is b, which looks arbitrary until you try it the other way: they were s and S for an afternoon, two meanings on one letter separated only by a shift, and one of them sends your review to the agent.

Two rows, always, because the body’s height is measured from them — a footer that grew would shove the diff about every time something happened. So anything it has to say replaces the keys rather than being added to them, in this order:

  1. Trouble. Something threw. It is also written to trouble.log beside the review’s threads, with the stack and what was on screen at the time.
  2. The numbers, if you pressed p — how long a frame costs, how many were dropped, how often the row cache hit.
  3. The keys, which is what you see the rest of the time.

The numbers are always being kept, whether or not you are looking at them. A debug mode you have to remember to switch on is off during every problem worth seeing.

A comment is a band across the diff rather than a box: a tinted row spanning the full width is the boundary, so it needs no characters to draw one. Inside it, a dim line says where the thread is and how it stands, and an inverted badge says who is speaking — YOU or AGENT. The thread your cursor is on gets one coloured column in its margin and shows what you can do to it.