Log ·
A better message box, and a record of what each turn changed
The morning went into the message box, where you spend most of your time in Keleuo. In the afternoon the work turned to the other side of the conversation: once the agent has finished, what did it actually change?
Long pastes turn into pills
Pasting a stack trace or a log used to fill the message box with hundreds of lines, and then fill the chat with them again once sent. Now anything over 10 lines or 1,000 characters goes in as a small pill, Pasted text #1 · 40 lines, at the cursor. The cursor steps over it and one Backspace removes it. A card above the box opens it back up as text if you want to edit it. The agent still gets the full text when you send.
In the chat, pastes fold to a single line you can open. Claude Code's own paste markers fold the same way, so older conversations tidy up too.
Lists keep going
Shift+Enter on a line that starts with 1., -, * or • starts the next item at the same indent. Shift+Enter on an empty item ends the list. Enter still sends, and Undo takes back a continued item like any other edit.
A slash command picker
Type / at the start of a message and a list opens, filtered as you type: the project's skills and your own, commands, plugin skills (shown as plugin:name), then Claude Code's built-in commands. Each row says what the command does and where it comes from. Four built-ins are left out on purpose, /clear, /resume, /exit and /model, because they would fight with how Keleuo manages sessions.
Up and Down move, Tab or Enter picks, Escape closes, and a click works too. If you type a name in full, Enter sends it straight away.
Markdown, highlighted while you write
The message box now shows Markdown as you type it. Code sits on a faint background, headings and bold text are bold, italics are italic, and the Markdown characters themselves (#, **, backticks, list markers, >) fade back. Links show blue and underlined, with the brackets and address dimmed. A fenced block that names its language, like typescript or rs, gets the same colours the code viewer uses.
When a message has a fenced block in it, the whole box switches to the code font, since a text box can only use one font at a time. View > Monospace When a Message Has Code turns that off. What gets sent is the plain text you typed.
What did this turn change?
A turn that changed files now ends with a card listing them, each with lines added and removed. Click a file to see its diff, or click Changes to open the new Changes panel on that turn.
The Changes panel sits in a tab beside Files and can show this turn or the whole session. Code comes first, then tests, then generated files like lock files, build output and snapshots, folded at the bottom.
The card also catches files changed by a command rather than by the agent's edit tools, such as a formatter, sed or a code generator. Those are marked "by a command". When a turn starts, Keleuo notes the state of the git working tree without touching it, and compares when the turn ends. These files open as a diff against that starting point too, unless they are over 2 MB or were deleted. This needs a git repository, and it works over SSH.
A better diff view
Long lines in a diff used to be cut off. Now the diff scrolls sideways while the line numbers and +/- marks stay put on the left, and an added or removed line is coloured all the way to the edge.
A narrow strip beside the diff maps the whole file, red where lines went and green where they came, with a box showing the part on screen. Click it to jump, or drag along it to scroll.
Settings in one place
Cmd+, opens a Settings window. General has appearance, which view new sessions open in, and whether sessions reopen at start. Chat has the cost display, the end-of-turn card, the command-change detection, Markdown marks, the code font switch and long-paste pills. Terminals has font size and history, and Notifications has the Dock alerts. Changes save and take effect at once, and the menus stay in step.
Terminals remember what they showed
Each shell terminal saves its last 3,000 lines of scrollback and its screen, colours included, two seconds after output stops. After a restart you get that back, then a quiet ── restored ── line, then a fresh shell. Wrapped lines reflow to the new width. Nothing is saved while a full-screen program has the screen.
Cmd+K clears the screen and scrollback, as it does in Terminal.app, and clears the saved copy with them. Saved terminals older than 30 days are deleted.
Closing and quitting check first
Closing a file tab with unsaved changes asks Save, Don't Save or Cancel, however you close it: Cmd+W, the close button, a middle click or the tab's menu. Closing a session in the middle of a turn, or with a command still running in its terminals, asks too.
Quitting looks at everything. It asks about unsaved files first, with a Save All option, then tells you how many sessions are still working. Yes quits, and the next time Keleuo starts it sends each of those sessions one message to carry on. No quits without that. Cancel stays. If nothing would be lost, Keleuo just closes.
The Dock tells you when a session needs you
If a session starts waiting on you while you're looking at something else, the Dock icon bounces once and its badge counts the sessions waiting. That covers a permission prompt, a question in its terminal, or a finished turn. It never bounces for the session in front of you, and a burst of waits counts once. Keleuo > Alert When a Session Asks and Alert When a Turn Finishes switch each kind off.
Smaller things
- Name a session before it starts: the session browser has a Session name field beside Start a new session here. Leave it empty and the session is named after its first message, as before.
- The model menu lists Fable, Opus, Sonnet and Haiku (Claude Code's aliases for the newest model in each family), then the last six models you typed, then Other model… for anything else.
- Right-click in the file tree for New File and New Folder. A file the agent creates appears in the tree as soon as it exists.
- The Run button on a
!command in the chat is a green pill with a play icon, so it no longer looks like every other label. scripts/restartrebuilds Keleuo, quits the running copy and starts the new one. It asks the app to quit, so you get the same unsaved-work questions, and Cancel means no restart.- Messages sent mid-turn, subagent reports and finished background tasks are read correctly now. Background subagents no longer stay "running" in the Agent list after they finish.
- The focused panel is marked by its tab alone: blue in the group you're typing in, grey elsewhere. The blue line under the tabs is gone.
- On the folded sidebar, the list that slides out keeps the rail's row heights, so a click lands on the session you aimed at. Right-clicking a session there opens its menu again, which now also has Reveal in Finder and Copy folder path.
- Sessions over SSH failed to connect on macOS because the path to the connection's socket was longer than macOS allows. It now lives in a short private folder, and a failed connection shows a notice in the window.
- The README caught up with two days of features and dropped a few claims that were no longer true.