Skip to content

TODO list

Every programmer keeps a TODO list somewhere: a notebook, a TODO.md, a text file on the desktop. cornercase keeps one next to the shells and agents it is about, in a column on the right of the pane.

search projects, workspa…1use serde::Deserialize;TODO4clear done×2Projects3#[derive(Debug, Deserialize)]○fix the 500 on /returns when4pub struct Address {the address has no second line▾work5pub lines: Vec<String>,○add a test for▸×web-shop(3)6pub city: String,Address::first_lineorders-api(2)!7pub postcode: String,○reply to the design review8}○update the release notes▾◆personal9book the dentistblog(1)10impl Address {renew the domaindotfiles(1)11pub fn first_line(&self) -> &str {12self.lines.first().unwrap()+ New TODO+ New13}14}Workspaces~~▾main↓2~▸nvim~›bash~+ Tab~~▾feat/dark-mode~◐claude~Opus 5.5·7%~+ Tab~~▾feat/gift-cards~◐codex~gpt-5.4·20%~+ Tab~~+ New~~IssuesChanges~FilesTODO~Settings~Usagesrc/returns/address.rs 11,1 AllQuit
The list, with the items left to do on top and the done ones below.

Click TODO at the bottom of the sidebar, under Changes, to open the panel, and again (or × in the panel, or Esc) to close it. It takes the same column as the changes panel, the files panel and the Flow panel, so only one of them shows at a time: opening one closes the others. Drag its left border to make it wider or narrower, like the changes panel.

In the compact layout, a ☐ button in the top bar opens it over the whole screen.

While at least one item is left to do, the button shows a grey dot after its name, TODO ●, like Remote ● (and ☐ ● in the compact layout), so a closed list still tells you something is waiting. The dot carries no number and goes away once every item is done or the list is empty. Turn it off in settings → UI → TODO dot.

There is one list, the same whichever project or workspace is active. The header shows how many items are left to do. When the list is longer than the panel, the wheel scrolls it and ↑ n more / ↓ n more show how many items are hidden.

  • Add: click + New TODO at the bottom of the list, type, and press Enter. The field stays open for the next item; press Enter on an empty field to close it, or Esc to close the field and the panel.
  • Edit: click an item’s text. The cursor goes where you clicked; Enter saves, Esc leaves the text as it was. Saving an empty text keeps the old one.
  • Check: click the ○ before an item. A done item gets a green ✓, is dimmed and struck through, and goes to the bottom of the list; click the ✓ to uncheck it and it goes back to the end of the items left to do.
  • Reorder: drag an item up or down. A line shows where it will land; done items stay below the others.
TODO4×○fix the 500 on /returns whenthe address has no second line○add a test forAddress::first_line○reply to the design review○update the release notes+ask legal about the new returnwindow
A new item being typed. Long items wrap onto more lines.

While a field is open, the keys go to it instead of your program: type, paste, move with ← →, ↑ ↓ across the lines of a long item, Home and End, and delete with Backspace and Delete. A pasted text with several lines becomes one item. A click anywhere outside the field saves it and gives the keys back to the program in the active pane.

An item is often the next thing to tell an agent. Hover an item left to do and click the ▸ just left of its ×: a menu lists every agent running, in the order of the agents section, each with its status icon, its project, its workspace when the project has several, and the agent, such as ● web-shop › feat/dark-mode · claude. Pick one and the item’s text is typed into that agent and sent, as cornercase send --enter would do. Once the agent has taken it, the item is checked off and a message at the bottom right says sent to claude in web-shop › feat/dark-mode.

What send refuses, the button refuses too: an agent waiting for your answer to a question or a permission prompt, one still resuming its conversation after a restart, a Claude Code showing a dialog, a panel, its shell mode or its feedback survey instead of its input box, or a program that stopped reading its input. The message says why and the item stays to do; sort the agent out and send again. The item also stays to do when the agent did not record the prompt within ten seconds: read its pane before sending again. For an agent whose prompts cornercase cannot confirm (a / command, an agent it does not read), the text is sent but the item stays to do, and the message says sent to claude in web-shop › feat/dark-mode, not confirmed: stays to do. An item you edit while it is being sent is not checked off. With no agent running, the message says no agent is running.

Done items and the item being edited have no button; to send an item again, uncheck it first. In the compact layout the button always shows, dimmed, since there is no hover. A script or an agent can do the same with cornercase todo send, and cornercase todo also edits, unchecks, reorders, clears done items and undoes a removal.

Hover an item and click × to delete it; the item you are editing shows its × all the time. Done items can go all at once with clear done in the header. Either way nothing asks first: a message at the bottom right says what went, with an undo button that puts it back where it was for a few seconds.

The list is saved in todos.json, next to the saved session, and every attached client sees the same one.