Log ·
Long pastes become pills, and lists keep going
Most of today went into the message box.
A long paste is one unit
Pasting a stack trace or a log used to fill the message box, and then the chat, with hundreds of lines. Now a paste of 10 lines or 1,000 characters goes in as a small pill, Pasted text #1 · 40 lines, right where the cursor was. The cursor steps over it, one Backspace removes it, and a card above the box lets you open it back up as text or drop it. When the message is sent, the full text goes to the agent in its place, so nothing is lost.
In the chat, pastes fold to a single line you can open. That works for Claude Code's own paste markers too, so older conversations tidy up as well.
Why: a long paste buried the message around it, in the box and again in the chat. As one unit it stays visible and easy to remove, and the agent still gets every line.
Lists keep going
On a line that starts with 1., -, * or •, Shift+Enter now starts the next item with the same indent. On an empty item it ends the list instead. Enter still sends.
The edit happens at the cursor, so pasted pills stay pills and Undo takes it back.
New files from anywhere in the tree
Right-clicking in the file tree offers New File and New Folder: over a folder they go in it, over a file they go beside it, and over the empty space below they go at the project root. A file the agent creates also shows up in the tree as soon as it exists.
Pick a slash command from a list
Typing / at the start of a message lists what it can name, filtered as you type: the project's skills and your own, commands, plugin skills (shown as plugin:name), then Claude Code's own commands. Each row says what it does and where it comes from. A few of Claude Code's commands are left out, /clear, /resume, /exit and /model, because they would work against Keleuo.
Up and Down move through the list, Tab or Enter takes the highlighted one, and Enter on a name typed in full sends it. Escape closes the list, and a click picks.
The message box highlights Markdown
As you type, code spans and fenced blocks sit on a faint background, headings and bold text show bold, and italics show italic. Quotes and Markdown's own characters (#, **, backticks, list markers, >) are quieter. Links show their text blue and underlined with the brackets and address dimmed, and a bare web address is a link too.
A fenced block that names its language, such as typescript or rs, is coloured the way the code viewer colours that language. When a message holds a fenced block, the whole box switches to the code font. View > Monospace When a Message Has Code turns that off.
None of this changes what is sent. It only changes how the message looks while you write it.
See what a turn changed
A new Changes panel, in a tab beside Files, lists each file this turn or this session changed, with lines added and removed and a "new" mark on new files. Code comes first, then tests, then generated files such as lock files, build output and snapshots, which are folded. A file opens as the diff of what the session changed in it.
A turn that changed files now ends with a card listing them. Each file opens as its diff, and Changes opens the panel on that turn.
Files changed by a command rather than the agent's edit tools, such as a formatter, sed or a code generator, are included too and marked "by a command". Keleuo finds them with git: when a turn starts it notes the state of the working tree without touching it, and when the turn ends it compares. This needs the project to be a git repository, and it works over SSH as well.
A better diff view
Long lines in a diff are no longer cut off. The view scrolls sideways while the line numbers and the +/- marks stay put at the left, and a change's colour fills the whole row.
A strip beside the diff maps the whole file: red where lines were removed, green where they were added, and a box for the part on screen. Clicking the strip jumps there.
Terminals keep what they showed
Each shell terminal now saves its scrollback (the last 3,000 lines) and its screen, with their colours, two seconds after its output stops. After a restart, a terminal shows that first, then a quiet ── restored ── line, then a new shell. Wrapped lines reflow and tabs line up. Nothing is saved while a full-screen program has the screen.
Cmd+K clears the screen and the scrollback, as in Terminal.app, and the saved copy with them. Saved terminals older than 30 days are removed.
Name a session before it starts
The session browser has an optional Session name field next to Start a new session here. A name typed there is kept like a rename, so it wins over the title taken from the first message. Left empty, the session is named after its first message, as before. It works for a session started in a git worktree too.
More models to choose from
The model menu had Haiku, Sonnet and Opus. It now lists Fable, Opus, Sonnet and Haiku, which are Claude Code's aliases for the latest model in each family, then the last six model names typed in, and Other model… for any name Claude Code accepts, such as a specific version. The picked model is ticked, and an alias shows the version it runs as.
Closing and quitting ask before anything is lost
A file tab with unsaved changes now asks Save, Don't Save or Cancel when it closes, whether by Cmd+W, its close button, a middle click or its menu. Closing a session that is mid-turn, or whose terminals are running a command, asks Close or Cancel, after asking about any unsaved files in it.
Quitting asks too, from Cmd+Q, the menu, the window's close button or a restart. It asks about unsaved files first (with Save All), then says how many sessions are working and offers three answers: Yes quits, and when Keleuo starts again it sends each of those sessions one message to carry on; No quits; Cancel stays. With only terminal commands running, it asks whether to quit anyway. When there is nothing to lose, it just closes.
scripts/restart now asks Keleuo to quit instead of stopping it, so the same question comes up there, and Cancel means no restart.
The Dock says when a session needs you
When a session starts waiting on you (a permission prompt, a question in its terminal, or a finished turn) while you are looking at something else, the Dock icon bounces once and its badge counts the sessions waiting. It bounces once per wait, never for the session in front of you, and a burst counts as one. Keleuo > Alert When a Session Asks and Alert When a Turn Finishes turn each kind off.
Smaller things
- The Run button on a
!command in the chat is now a green pill with a play icon that reacts to the pointer, instead of a label that looked like all the others. - A
scripts/restartthat builds Keleuo, quits the running copy and starts the new one in the same folder. It works from a terminal inside Keleuo, so the app can restart itself onto a change. - The README caught up with two days of features, and dropped a few claims that no longer held.
- Messages sent while a turn is running, subagent reports and finished background tasks are now read correctly. Finished background subagents no longer stay "running" in the Agent list, and messages sent mid-turn no longer go missing from the chat after a restart.
- The focused panel is now shown by its tab alone, without a blue line under the tabs. The tab's accent is blue in the focused group and grey elsewhere, so it still says where typing goes.
- Shift+Enter in the middle of a list item no longer leaves two spaces after the marker.
- On the folded sidebar, the list that peeks out now keeps the rail's row heights, so a click lands on the session you aimed at. The full list is still Cmd+Shift+B.