Repository navigation
Releases: devswha/ovis
Releases · devswha/ovis
Release list
Ovis v0.4.13
New features
- herdr web ui is now called Ovis. It installs and updates as before.
- Commands the chat cannot show, like /config or /usage, open the terminal over the chat.
- Reopen an agent's earlier sessions from a workspace's menu or by typing /resume.
- From a message, rewind Claude Code, Grok or Antigravity in the terminal; the chat follows.
- New workspace and New tab start an agent with its model, effort, skills and first message.
- A command sent from the chat says what became of it: accepted, waiting, done or ran.
- Command Code agents show their conversation in the chat.
- Agent rows show what herdr plugins report, such as the Quota plugin's usage left.
Improvements
- Close a command's screen and Claude Code and many other agents bring the chat back.
- More answers as cards: omp's /model and /handoff, Claude Code's /goal, OpenCode questions.
- The chat lists the commands and skills OpenCode and Codex report for each pane.
- A finished agent you read in one browser reads as seen in your other browsers too.
- Long Claude Code and omp tasks update faster in the chat.
- Settings says when a change could not be saved, and lets you try again.
Bug fixes
- Opening the app no longer flashes the default theme before yours.
- Pages load lighter: one project icon request per folder instead of about 33.
- Mouse wheel and swipes scroll terminal history on Windows and other mirrored panes.
- In macOS Safari, Backspace no longer skips a press after a Korean syllable.
- Two Codex panes in one folder each show their own chat again.
- One missed health check no longer shows herdr as offline.
- A first message to a new workspace or tab no longer waits forever if its agent quits.
- GJC, OmO, omp, Hermes and OpenCode show their questions and results more reliably.
Full changelog
Added
- Claude Code, grok and Antigravity messages in Chat offer Rewind in terminal: it sends nothing,
preserves your draft and opens the pane's terminal with a hint to run the agent's own/rewind.
Chat follows the native conversation when the agent records its new branch.
(#1500) - Chat sends wait while Claude Code's rewind dialog is open in the terminal, so a message cannot
land in the dialog's own text field.
(#1500) - Sending a bare
/goalto Claude Code from Chat now shows its goal status (the condition and how
long it has run, or that no goal is set) in a card with Close, instead of leaving the dialog in
the terminal.
(#1450) - Command Code (
cmd) agent panes now show their conversation in the web UI: transcript
resolution from~/.commandcode/projects/,/treebranch projection, model and context
window from Command Code's catalog, permission prompts, and skill discovery.
(#1399 by @diegolhambi) - An ordinary command sent from Chat says what became of it under its bubble, from evidence only:
accepted, waiting for your answer (with a way to the card), done with what showed it, runs in
the terminal (with Open Terminal), or no result seen. A command the agent keeps no transcript
turn for still shows its sent row. A terminal screen that
changed after the send folds under the chip as an unconfirmed preview, never proof that the
command finished. Terminal-only commands instead leave one quiet row with Ran in terminal and
Open Terminal, without outcome chips or unconfirmed previews. Hermes informational result cards
keep showing what the agent printed.
(#1450) - Settings → Terminal → Follow herdr's focus: when herdr moves to another pane (a click in its
window,herdr tab focus, a script), this device opens that pane too. Off by default, and set per
device, so a phone open on another pane stays there.
(#1432) - Hermes
/help,/status,/version,/profileand/reload-skillssent from Chat show what
Hermes printed in a card closed with Dismiss, which sends nothing to the pane.
(#1450) - Chat lists the commands and skills an OpenCode v2 pane's own background service reports for its
folder, refreshed when they change, and settles a command it sent from that session's own events.
The service is only read, never started, and only when it is the process its service.json names.
(#1489) - An
@skillsent from Chat to OpenCode v2, at once or queued, is typed through OpenCode's own
autocomplete so the skill is attached; when the row does not show, the message says the skill
went as plain text and points to the terminal.
(#1489) - An OpenCode 1.x question is a card in Chat with each option and its description, answered from
the card.
(#1489) - Chat lists a Codex pane's skills as the running Codex daemon of that pane's own Codex home reports
them (Codex 0.157 or later; on Linux, or when the server's Codex home is set), and a gjc pane's
skills as the SDK broker it is bound to reports them, asked through the gjc CLI in the background.
The daemon and the broker are never started for this; without one, the skills read from disk stay.
(#1489) - New workspace and New tab start an agent with its model, effort and first message where the
agent's command line takes them (Claude Code and Codex:--modeland the effort level; Codex also
takes the message as its own argument, behind--so a message likelogoutis never a command).
For Claude Code and every other agent the message is queued on the PC as the pane's first pending
message and sent once when the agent is ready, through the page that started it; it shows as a
pending message that can be discarded or sent now. If that page disconnects, reloads or leaves the tab
first, the message is held, never sent on its own, until someone sends it now or discards it. A message the PC
could not queue, or one an older PC ignores, stays in the new tab's message box and the dialog says
so. Pending first messages are kept in memory: restarting the web UI's server drops them. A Codex
message with a tab or a line break is sent as the first message rather than on its command line,
and the PC refuses launch arguments with control characters, an unknown effort level or a model
that is not one word. Under the message, the agent's skills in the
folder are listed before it runs, each a chip that puts the skill as the agent types it into the
message ($name,/name, or@namefor OpenCode 2). A first message to OpenCode attaches its
@skillas any Chat send does; before OpenCode has a session nothing tells its version, so the@
is sent as the plain text it is.
In a desktop window the chat's composer can show a New tab with an agent… button that opens the
dialog on the pane's workspace; it is off until turned on in Settings → Chat → Composer (New tab
button), and the tab menu opens the dialog either way.
(#1512) - omp's
/handoffruns from Chat, with or without focus instructions: while omp writes the
handoff document, Chat shows a card that cancels it, and afterwards Chat stays on the same
conversation, which omp compacts in place.
(#1450) - omp's model picker shows in the chat as a card, as Claude Code's, Codex's and OmO's lists do: pick
a model and it is picked for the session, the model in use named on the card./modelsent from
an omp chat opens it: the chat sends it as/switch, because omp's own/modelopens its role
hub, whose picks are saved as the default for later sessions.
(#1377 by @evanwy0223) - OpenCode 2.0 or later: its questions are answered from the chat's prompt card through OpenCode's
own background service instead of keystrokes, one question at a time with Back to change an earlier
answer, and sent together after the last. Permissions, OpenCode 1 and other prompts keep the
existing generic fallback card and Terminal.
(#1257 by @bardiz12) - HTTP requests and WebSocket handshakes now carry request IDs and write bounded completion
records in the app's state directory, so the owner can correlate a response with its request.
(#1558) - A workspace's row menu has Earlier sessions…: the sessions each agent kept for the workspace's
folder, read from the agent's own store on the PC, newest first with the title, the first prompt
and the time. Resume starts the agent on that session in a new tab of the workspace; a session a
pane already shows is opened by selecting that pane instead. Picking/resumein the chat's menu
opens the same list, and the terminal command's row offers it. A PC whose bridge cannot list
sessions yet has no such item.
(#1494) - Agent rows show what herdr plugins report on a pane, such as the Quota plugin's usage left or a
task's progress, in a small dim line under the row. They follow the$nametokens of your herdr
[ui.sidebar.agents]rows (every token where none are set), change live, and say a long value
whole in the tooltip and in a phone's ⋯ sheet. A line a plugin reports for the agent now updates
as soon as herdr says it.
(#1341) HERDR_WEB_TAILSCALE_HTTPS_PORTnames the HTTPS port the installer publishes the app on wi...
remote-v32
SSH remote bridge runtimes with SHA-256 manifest.
herdr web ui v0.4.12
New features
- Agent menus list each agent's skills and commands, grouped by where they come from.
- New Codex theme is the default, plus Dracula, Nord, Vesper and herdr's own theme pairs.
- Pick a separate dark and light theme in Settings, as herdr does.
- Web pages from this PC, like a dev server, can open in a panel beside the pane.
- Choose the mode Claude Code and Codex start in for new workspaces and tabs.
- Add and manage subscription accounts, and import plan limits from a hub.
- OmO's todo list shows as plan progress, and its /model list shows as a card.
- The installed app can fold Chrome's title bar away and use the header instead.
Improvements
- The tab strip's + opens a shell tab right away; agent tabs come from the tab's menu.
- A cleaner sidebar: one-line rows, branch names under repos, and reorderable pins.
- Split views use one row per half, and the header is quieter on a computer.
- Earlier agent questions and teammate messages read as cards instead of raw JSON or tags.
- The chat follows a writing agent every second and shows Working... sooner.
- Status lines, errors and notices are shorter and say what to do next.
- Every touch control is now at least 44px, so taps land where you aim.
- Screen readers hear loading, sending and reconnecting status lines.
Bug fixes
- On iPhone, Korean typing arrives as whole syllables and a held backspace keeps deleting.
- Files with Korean or other non-Latin names open from the chat and show up in search.
- A second browser opening a busy pane now gets the whole screen drawn.
- Terminal colors stay readable in every light theme.
- Codex, OMP, GJC, Grok and Pi chats show their conversations more reliably.
- Connecting through a Traefik proxy no longer gets stuck on Reconnecting.
- When the port is taken, herdr is away or settings can't be saved, the app says what to do.
- Files follows the pane you switch to, and a prompt card stays through a failed read.
Full changelog
Added
- Settings → Integrations → New agents picks the mode Claude Code (permission mode) and Codex
(sandbox and approvals) start in from New workspace, New tab and New worktree. Agent default,
the default, adds no flag, so the agent's own configuration still decides. The choice is shared
by every device.
(#1303) - Agy panes now offer their commands and user, project, plugin and bundled skills in the slash
menu, with origin groups, one-line descriptions and skill chips in user messages.
(#1245) - Codex's command menu now includes shared and ancestor-project skills, system skills and enabled
plugin skills, grouped by origin. It honors the pane'sCODEX_HOMEand disabled skill paths,
offers saved prompts as/prompts:name, and inserts skills as$name.
(#1245) - A Codex theme, light and dark, matching the Codex desktop app's default look: white or
#181818 surfaces, Codex ink and its blue accent.
(#1267) - The message box's suggestions (commands, skills, files) have a close button, so a mouse or a phone
can put them away as Escape does.
(#1312) - A question card can be folded to its title to read the conversation under it, and opened again;
the question keeps waiting for its answer.
(#1312) - On a desktop with a mouse the selected tab shows its actions button (
⋯) while the tab strip is
hovered or the tab has keyboard focus, so Rename tab, Close tab and the open pane's actions are
no longer only behind a right-click or the menu key.
(#1246) - Devin chat now lists local commands and skills with their source groups, imports enabled
skills from other agents, and shows skill chips instead of expanded prompts in your messages.
Cloud-only commands and skills, MCP prompts, and terminal-only pickers are excluded.
(#1245) - GJC chat now lists its commands, user and project skills, and four bundled workflows with
origin icons and one-line descriptions. Namespaced commands and skill calls keep their colons,
and invoked skills appear as chips in user messages. Discovery honors the pane's agent directory
and skill settings, including disabled user or untrusted project skills.
(#1245) - A Grok pane's
/menu now lists Grok's slash commands and the skills Grok loads for that pane:
yours (~/.grok/skills,~/.claude/skills,[skills] pathsinconfig.toml), this
project's (.grok/skillsand.claude/skillsin the folder and the repository root, left out
when.gitignoreignores them) and those of plugins.$GROK_HOMEis honored, and typed
/nameskill names should show as chips in your messages. This is built from Grok's published
README, not checked against a running Grok, which is not installed where this was written.
Grok's built-in skills, which live inside its binary, are not listed.
(#1245) - Dracula, Nord and Vesper are available on either theme side, with readable status and code colors.
(#1254) - Herdr's seven light/dark theme pairs now have CSS theme rows with readable text, agent
states and code colors, plus upstream source and license attribution.
(#1254) - Settings → Appearance picks a dark theme and a light theme from every theme, as herdr does:
picking one of a pair fills the other side with its sibling until that side is chosen by hand,
and a dark theme chosen for light mode still draws dark.
(#1254) - Hermes chat now lists its CLI commands, trusted project and personal skills, installed bundled
skills, skill bundles and quick commands, with origin groups and one-line descriptions.
Plugin skills are not listed because their enabled state lives in Hermes' Python plugin manager.
(#1245) - The hub connection form can show the management key while you type it, so a key typed with
the wrong keyboard layout is visible before it is saved.
(#1264) - The installers open the app in your browser after a new install on a PC with a desktop, where
the address bar's Install adds it. Over SSH they print thessh -Ltunnel to run instead, and
HERDR_WEB_NO_OPEN=1turns the opening off.
(#1228) - herdrweb.dev shows Windows visitors the PowerShell install command and copies it.
(#1228) - The installed desktop app can fold Chrome's title bar away (the chevron next to the window
controls): the header takes its place, drags the window and leaves room for the controls.
(#1228) - OmO's
/modellist shows in the chat as a card, as Claude Code's and Codex's do: pick a model
and it is picked for the session, the model in use named on the card. It reads the list OmO
draws, fullscreen or not, on a phone's narrow pane too.
(#942 by @Noobear) - OmO's todo list now appears as plan progress in the sidebar and as steps in the plan panel.
(#1277) - In an OmO chat,
/at the start of a message and$anywhere in it list OmO's commands and the
skills it loads, and a skill named in the chat is drawn as a chip.
(#1217) - omp's chat menu lists its skills from native, plugin and compatible agent providers, with
profile-aware settings, origin groups and inline/skill:completion. File commands and prompt
templates respect command precedence; recorded skill invocations appear as user chips.
Invocation-only extension and plugin roots cannot be recovered from on-disk settings.
(#1245) - OpenCode chat now lists its commands and valid skills from user and project roots, with origin
groups and one-line descriptions. Pane-specific config directories and external-skill switches
are honored, and recorded skill expansions show the original invocation as a chip.
Commands whose recorded screens cannot be represented in chat are omitted.
(#1245) - The header's More menu opens with Search panes and actions, so a phone can reach the
command palette by touch; on a desktop the item shows its shortcut.
(#1246) - The anonymous usage counts now include one message a day the app is opened in a browser, with
the kinds of coding agents running in herdr (such asclaudeorcodex), so the maintainer can
count daily and monthly active installs. The usage notice is shown once more to explain it.
(#1215) - Add and manage subscription accounts from one provider picker in Settings, with official
local CLI sign-in in a new terminal tab and CLIProxyAPI hub sign-in for Claude and Codex.
All supported providers include installation or app sign-in guidance; single-home providers
ask before replacing a discovered account.
(#1236) - Connect a hub to import its Claude and Codex plan limits, edit the connection or remove
its saved key with confirmation. The management key stays on the server, OAuth to...
remote-v31
SSH remote bridge runtimes with SHA-256 manifest.
herdr web ui v0.4.11
Bug fixes
- With Claude Code 2.1.301, /effort from Chat shows its card again.
- Claude's plan card finds its plan file again, with View plan, on recent Claude Code.
- Under a light theme, white text from Claude Code stays readable in the terminal.
- A connection that keeps dropping no longer retries four times a second.
- Codex's folder trust question shows as a card when Codex starts in a new folder.
Full changelog
Fixed
/effortin a Claude Code chat shows its card again with Claude Code 2.1.301, whose slider
describes the level between the level names and the hint.
(#1200 by @sergiorademacher)- Claude's plan card finds the session's plan file again, with View plan, when recent Claude Code
versions write large request lines to the transcript after the line that names it.
(#1198 by @sergiorademacher) - Codex's folder trust prompt gets its card again when its hint ends with
esc quitinstead of
esc back, as it does when Codex starts in a folder it has not seen.
(#1195 by @vibewriter-hand) - Terminal text a program colors for the other background stays readable: under a light theme,
Claude Code's white question titles and reply bullets no longer vanish into the background. Other
colors too faint for the theme are darkened or lightened just enough to read, such as yellow on a
light palette.
(#1171 by @todor-a) - A connection that opens and drops again no longer retries every quarter second: retries back off
until it has stayed open for 10 seconds. Returning to the page still retries immediately.
(#1183 by @philipprass-prog)
Maintenance
- The remote-PC runtime is now version 30: every saved PC asks for Update bridge… once.
remote-v30
SSH remote bridge runtimes with SHA-256 manifest.
herdr web ui v0.4.10
Improvements
- Phones and tablets hide the suggestion chip by default; Settings → Chat turns it on.
Full changelog
Changed
- On a phone or tablet, the chip above the message box that holds the prompt Claude Code suggests
next is off by default. Settings → Chat → Composer → Suggestion chip turns it back on; the
suggestion still shows grey in the empty message box. With a keyboard, Tab takes it as before.
(#1185)
Maintenance
- The remote-PC runtime is now version 29: every saved PC asks for Update bridge… once.
herdr web ui v0.4.9
New features
- New workspace → Browse makes a new folder and starts in it.
- Shortcuts record chords with their exact modifiers; New tab and splits can be bound.
- Pin workspaces, worktrees and agents from a row's menu or a right-click.
- A Jump to bottom button returns a terminal scrolled up into history to the live end.
- Pick a skill anywhere in a message, not only at its start.
- Connect to remote PCs from a Windows PC.
- Mod+Shift+E puts the cursor in the pane's input.
Improvements
- Split view halves are independent, and both may show the same tab.
- Phones start in direct typing; the key bar's keyboard key lights for the input line.
- Claude's whole plan shows from its plan file, and its answer review reads correctly.
- Send shows progress until the agent takes the message, and Stop always goes first.
- Recent tabs stay ready, so switching back shows the chat at once.
- Sign out moved into Settings behind a confirm; menus and settings were trimmed.
- A workspace or tab reopens on the pane you last saw, also after a reload.
Bug fixes
- Open terminals reconnect by themselves after herdr restarts or updates.
- With herdr 0.9.4 or later, a second device no longer types stray characters into a pane.
- Typing Hangul from an iPad hardware keyboard composes syllables.
- Opening an Android keyboard no longer resizes the shared terminal.
- When the app's folder is replaced under it, it asks for a restart, not an endless reload.
- Hermes: Stop ends a running turn, and Chat will not send over text typed in its input.
- The sidebar no longer breaks on a worktree without a branch.
- A click on a lone pane's top right corner reaches the program there.
Full changelog
Added
- Mod+Shift+PageUp/PageDown page the current chat transcript or the terminal's native history, one
line overlapping between pages. When herdr reports no native history, they send plain page keys to
the running program, which sets its own page length.
(#811 by @kratam) - Settings → Phone & devices → Portal gives this PC a public HTTPS address through
Portal, with no account and no domain of your own.
With Portal v2.6.1 or later installed, Start runs it on a relay you enter, dropping any
Tailscale-User-Loginheader a visitor sends; it starts only withHERDR_WEB_TOKENset. The
address and its QR code show on every signed-in device, any device that can type into your
terminals can stop it, and an address left on comes back when the app restarts.
(#746 by @rabbitson87) - Two tabs side by side on a desktop, from different workspaces or PCs: drag a tab down out
of its strip, or a sidebar row over the pane area, and drop it on the left or right half. A guide
shows the two halves as soon as the drag starts and keeps its side steady at the centre; Escape
or a drop elsewhere leaves everything as it was. Each half draws its tab at herdr's own layout,
with its own tab strip and a bar with its lens and a close, and a tab is never shown in both
halves. A press in a half makes it the one the header, the palette and the shortcuts act on.
The split is kept across a reload, and a narrower window shows the active half alone. Drag
guide by @flam-ing. (#861 by @Yoonwoo-Ha) - The file viewer and Markdown reader page offer Show source, highlighted source with
CSS-counter line numbers, and Copy file, which selects the source when copying is unavailable.
Settings → Chat → File viewer controls line wrapping and Markdown width; previews inherit
the chat's font and, in the viewer, the opening pane's chat width.
(#429 by @aNNdii) - A line over the panes says when the server can be reached from the network with no access
token set and no device paired, and what to do about it. Nothing about who is let in changes:
pairing a device or setting a token is still the owner's call.
(#698 by @pt-act) - Shared settings and pins. The browsers of one server, a PC's and a phone's, keep the same
pinned agents and the same settings that do not depend on the device: theme and colors, language,
the sidebar's rows, order, cards and pins, chat and usage-meter choices. A
change shows on the other open pages at once. Each device keeps its own terminal and chat font
sizes, key bar, shortcuts, density, alerts, microphone, the lens panes open in and the like. Opening a page never
overwrites anything: a server that holds no shared settings yet takes them from the first change,
and the browser that shares first brings its pins along. A page that lost its connection catches up
when it is back. A watching device follows the shared settings and cannot change them for everyone. (#854) - Settings → Appearance → Agent logos: Color | Mono. Mono draws the logos without color:
Claude's in the text color without its orange tile, the other logos with brand colors in grey,
so a sidebar where nearly every agent is the same one is not a column of colored tiles. Color,
today's look, stays the default. (#850 by @phirschybar) - File paths in a tool call's command and output, and in a code block with no language (a log
an agent pasted), open in the file viewer like the paths in its prose: a line such as
/tmp/shot/t0.png (1600, 1000) -> (1255, 960)opens the picture, from a phone or another PC
as well, since the server reads the file. An HTML file now shows as its page, with a switch to
its source: its own script runs in a sandbox with no origin, storage or network (not the web
either), and the pictures, stylesheet and script it takes from its own folder are put into it,
so an agent's report with its screenshots draws whole. Files outside that folder, hidden ones such as.env,
and anything of another kind than the tag asks for are never put in.
(#691 by @MovieHolic-Plex) - PCs saved in herdr appear automatically. Connect once per PC to enable automatic reconnection;
installing or starting a bridge still needs separate approval. Changing the address, port or
session clears both permissions and cached panes.
(#606 by @sobir-git) - Typing
/after whitespace in a chat message offers Claude Code and Codex skills at the caret,
using$namefor Codex. Whole-message commands remain at the start; pi skill commands remain
there because pi only expands them at the start
(#982 by @demrom). - The strip under the message box names the workspace's branch at its right end, beside the
folder, for a repository that has a worktree open (the branches the sidebar already shows).
(#991) - That strip marks a linked worktree as one, beside its folder's name.
(#991) - A workspace or a worktree is pinned from its row menu (Pin workspace / Unpin workspace): it stands
first in its PC's list, in a card, with a pin after its name; a pinned repository's workspace brings
its worktrees. Pins are shared with the other browsers of the server, as the agents' are.
(#1137) - The in-app alert has a close button, so it can be put away without a flick or a wait.
(#1129) - Settings -> Appearance -> Status indicators can draw the sidebar's and tabs' agent state marks as
herdr's TUI does, its Dots or Symbols in its default theme's colors, with ready and unknown drawn
too. Classic, the marks so far, stays the default.
(#1135) - New workspace Browse has a New folder button: name a folder, press Enter, and it is made
inside the folder shown and opened, so Start uses it.
(#1169) - Mod+Shift+E focuses the selected pane's message box or terminal input, so an iPad with an
external keyboard needs no tap before typing. It can be reassigned or turned off in
Settings → Shortcuts (#822 by @kratam). - Settings → Shortcuts records chords with their exact modifiers, not only Mod+Shift:
⌘+PageUp,
Ctrl+Kor⌘+⌥+Fare kept as pressed. Chords the browser, the OS or text editing keep are
refused; a plain Ctrl or Alt chord, which shells and agents use, is saved only after Save anyway.
(#1151 by @kratam) - Record also takes Home, End and the punctuation keys. A punctuation key is read by its position,
so accented letters such as Hungarian É or German Ö can be bound on any keyboard layout. The row's
list is unchanged.
(#1151 by @kratam) - New tab, Split pane right and Split pane down can take a Mod+Shift shortcut in
Settings → Shortcuts. They have no default key, and the command palette shows the chosen one.
(#940 by @sergiorademacher) - The chat box says when a draft hits the 20 000-character cap, and how many characters of a paste
were left out, instead of silently stopping.
(#951) - The context ring's opened label has a Compact button that sends
/compactin one tap, shown only
for agents that list the command.
(#951) - A Quote in message ...
remote-v29
SSH remote bridge runtimes with SHA-256 manifest.
remote-v28
SSH remote bridge runtimes with SHA-256 manifest.