Releases: devswha/herdr-web-ui
Releases · devswha/herdr-web-ui
Release list
herdr web ui v0.3.27
Fixed
- An omo pane's chat keeps its transcript while a background task runs. omo holds the task's log
(.omo/senpi-task/logs/*.jsonlin the working directory) open, and that file was taken for the
pane's session, so the chat fell back to terminal text until omo restarted. Only files in omo's
session store count now.
herdr web ui v0.3.26
Changed
- Releases are published only from a
maincommit that passed the full CI run, and pull requests
must pass the same checks before they merge.
Fixed
- Foldable and tablet-width screens (481-768px, e.g. a Galaxy Z Fold8 inner screen): the header no
longer breaks the Korean "채팅"/"터미널" labels one syllable per line, and no longer shows the
sidebar collapse toggle (a no-op in drawer mode) or sign out beside the drawer button. Up to
560px the chat/terminal switch shows icons only, so the pane title keeps room. - The chat's terminal-text fallback, used when an agent's transcript cannot be found, reflows lines
the terminal soft-wrapped instead of breaking them where the pty's columns ended. A PC whose
herdr predates unwrapped reads falls back to the old read. - Korean UI: the new session dialog's Browse, the prompt card's Submit and Send, and the held-input
and queued-message banners' Send, Discard and Send now are translated. - Phone-width screens (up to 480px) hide the command palette's keyboard shortcut hints, and the
key bar puts its direct-typing toggle first, so a narrow cover screen no longer cuts it off.
herdr web ui v0.3.25
Added
- Chat Markdown renders inline
\(...\)and display\[...\]equations with KaTeX.
Code stays literal, and invalid or incomplete formulas preserve the surrounding Markdown.
Changed
- The installer keeps herdr's plugin install preview (every command of the manifest) to itself and
prints only herdr'sInstalled ...line; when the install fails, it prints all of herdr's output. - README: a sample of the installer's output, from a PC that had herdr but no Bun or Node.
Fixed
- Ctrl+V in the terminal pastes clipboard text instead of sending a control character that
triggers an agent's image-paste shortcut and reports "No image in clipboard". Korean text,
multiline paste, Ctrl+Shift+V and other terminal control keys retain their expected behavior. - Revoking a paired device closes its active terminal connections and roster stream immediately.
A corrupt or unreadable device registry stays gated and intact, with recovery guidance. - Token and paired-device sessions show Sign out in the header and command palette.
Closed or obsolete pane selections recover to a live pane without discarding newly created
panes or selections on disconnected PCs. - The plugin also reads its settings from
.envin herdr's plugin config dir, the name herdr's
plugin docs use; it read onlyenv, so a.env(say,HOST=0.0.0.0for a reverse proxy) was
silently ignored.envis still read; where both set a key to different values,.envwins and
startandstatusname the keys (never their values).statusprints the files it read. The
plugin checkout runs this, and in-app updates do not replace it: reinstall the plugin to get it.
herdr web ui v0.3.24
Changed
- The installer's addresses are links a terminal can open with a click (OSC 8), plain text when
the output goes to a file or log. It also names this PC's Tailscale IP next to the phone address,
which stays the MagicDNS name: the HTTPS certificate is for the name, not the IP.
herdr web ui v0.3.23
Fixed
- The one-line installer, run where the app is already installed, prints the phone address and its
QR code from the version that runs. herdr's plugin directory keeps the version first installed
(in-app updates run from~/.config/herdr-web-ui/updates), so it used to find nophonestep
there and only said to update. A running version from before 0.3.22 gets the address it already
knows, as a QR code.
herdr web ui v0.3.22
Added
- A one-line installer:
curl -fsSL https://devswha.github.io/herdr-web-ui/install.sh | sh
installs what is missing (herdr, Bun, Node 22, for the user only and without sudo), installs the
herdr plugin and starts it when herdr runs. When Tailscale runs on the PC, it serves the app to
the tailnet on the first free HTTPS port, says how to undo that, and prints the address a phone
opens as a QR code. Running it again keeps what is there and prints the address again. bun scripts/plugin.ts phone, the installer's last step, for a plugin installed without it.
Changed
- Through a proxy on a PC whose Tailscale login is known, as with
tailscale serve, a request
with no login (a tagged device) needs pairing, even before the first device is paired. - The plugin starts the server with
~/.bun/bin,~/.local/binand the installer's Node appended
to herdr's PATH, so a herdr started from a shell without them still runs terminals.
herdr web ui v0.3.21
Added
- Codex and Claude skill activity stays visible above folded chat work blocks: the skill name,
invocation/read status, and expandable evidence or document path. Recorded activity is distinct
from completing the skill's workflow; English and Korean labels work on desktop and mobile. - Native Codex image attachments, including image-only prompts, appear in the chat through
bounded, pane-scoped image reads.
Fixed
- Native context clears discard old turns, pending calls, loaded pages and stale cursors.
Late page and tool-output responses cannot restore cleared history or populate another pane. - omp, omo and gjc transcripts honor hidden messages and normalize string messages, tool field
aliases and embedded results consistently across rendering, paging and full-output reads. - omo transcript selection uses process/session evidence and rejects ambiguous same-directory
candidates. Claude paste wrappers unwrap only when their identifiers match.
Changed
- Growing Codex tasks parse incrementally while preserving transcript rewrite invalidation,
reducing repeated parsing of long tool-heavy turns.
herdr web ui v0.3.20
Added
- Report a problem: a small bug icon at the end of the chat's status line gathers what a chat
or prompt-card bug is made of (the versions, browser and agent; the latest turns and the prompt
card as parsed; the terminal screen if chosen) into a report to read and edit. It is then
copied, saved as a file, or opened as a prefilled GitHub issue; nothing is sent on its own.
Changed
- The ⚡ button beside the message box is gone: quick replies show above the box only when turned on
in Settings → Quick replies (off by default), so the box looks as it did before them. - The context left is a small ring beside the model, filled by what is used and red when little is
left, as Codex's app shows it; hovering or tapping it says "Context 27% left" with the token
counts. A session whose window the transcript does not name shows no ring. - The
/ commands @ fileshint above the message box is gone. - In the sidebar, the computer the app runs on is marked Host, not "This PC", which on a phone
read as the phone. - Settings open from the sidebar's Settings button (and ⌘⇧, or the palette): the ⚙ in the header,
one more way to the same place, is gone. On a phone that is ☰, then Settings.
Fixed
- Numbered lists in the chat keep their numbers now: items with blank lines between them (as agents
often write them) each read "1.", a list broken by a code block started over at 1, and one that
began at 3 read 1. An item's indented lines now read as its own text, and a code block indented
inside a list reads as code.
herdr web ui v0.3.19
Added
- Quick replies: one-tap messages above the chat's message box (
continue,yes,no,
commit and push,retryto start with). Each is sent as if typed: queued while the agent works,
taken as the answer when a question is open, and a draft in the box stays. Settings → Quick
replies edits the list on each device; the row is hidden until the ⚡ button beside the paperclip
shows it. - The chat's status line says how much context is left:
74% leftfrom the window Codex records,
or for Claude once a request has run past 200k (the 1M window);68k usedwhere the transcript
names no window (omp, omo, gjc, and Claude below 200k). It turns red at 20% left. Hovering shows
the token counts. - A tool call that failed says so: its row reads "failed" in red, its output is headed Error, and
the folded "Worked for…" header counts the failures. Claude and omp record the failure; for Codex
it is read from the output (a command that exited non-zero, a script or patch that failed). - A file a tool call names (an edit, a read, a patch's files) opens in the viewer on a tap.
- A Codex patch reads as a diff: each file as a header, then its lines in red and green, and the row
is summed up by the files it touches, also when anexecscript applies it. - While reading further up the chat, a ↓ button takes you back to the end, new messages or not.
- Images you sent show above your message: ones pasted into Claude's prompt, fetched only when
shown, and ones attached here (an@…pngmention). A tap opens them. - An edit reads as one diff: unchanged lines once, removed and added lines in place between them,
instead of the whole old block and then the whole new one. Several edits to one file each get
theirs. - Where a compaction folded a Claude conversation, a divider says so, and opens to its summary.
- Headings down to
######render as headings. - A tool output cut for the chat (past 4,000 characters) has a "Show the whole output" button that
fetches the rest, up to 2 MB, into a box of its own. - The
/menu lists Claude's skills (yours and the project's) and the skills and commands of the
plugins turned on in its settings, as/<plugin>:<name>. In a Codex pane it lists your saved
prompts as/prompts:<name>, and$opens Codex's skills. - On a phone, the terminal lens has an input line above the key bar. A phone keyboard rewrites
what it typed (dictation revising a phrase, a Korean syllable being composed, autocorrect), and
the terminal could not take back keys it had sent, so every revision arrived as more text. The
line is written with the keyboard's own editing and goes to the pane whole, then Enter (typed
like the keyboard, into an agent's open menu too); an empty line's button presses Enter alone.
Tapping the terminal no longer raises the keyboard; the ⌨ key on the key bar switches to typing
straight into it, remembered per device. Desktops are unchanged.
Changed
- Remote PCs use the
remote-v5runtime, which carries this release's server side to them: the
context left and failed calls in their chats, images and whole tool outputs, skills in the menu,
questions read in a narrow pane, and the terminal's input line. A connected PC's bridge updates
itself as forremote-v3. - Alerts wait before they go out, and a change of the pane meanwhile calls them off: a question
answered at the PC within 10 seconds, or a finish followed by the next prompt within a minute,
never buzzes the phone. A finish is told only after a turn that worked a minute or more, since a
quick answer is read where it was asked. - Settings → Alerts chooses, per device, whether a waiting agent alerts, and whether a finish
does never, after a long turn (the default) or every time (then after 10 seconds). An ended
terminal follows the finish choice.
Fixed
- An agent's chat said "No conversation yet" until its first answer arrived, seconds on a remote PC.
It now says it is loading. - A Claude question never showed as a card in the chat when its pane was narrow (a phone, a split):
the hint under the menu wraps (… Esc to/cancel), and it was looked for on one line. Hints
are now read across the wrap, in every agent's menus, and so is the check that a menu is still
open before an answer is typed into it. A single question's card is titled by its header chip.
herdr web ui v0.3.18
Changed
- Remote PCs use the
remote-v4runtime, which carries the fix below to the remote side: an omo
or gjc pane that finished keeps reading DONE after the bridge restarts. A connected PC's bridge
updates itself as forremote-v3.
Fixed
- An omo or gjc pane that had finished read READY again after this server restarted (an update
does): what this server adds to herdr's owndonelived in memory. It is now kept in
completions.jsonin the state directory, for the herdr it was seen in; a herdr started anew
starts it over.