Skip to content

Releases: freethinkel/shepherd

v1.3.4

Choose a tag to compare

@github-actions github-actions released this 22 Oct 10:30
  • herdr: the clicked-path test runs on unix only, as its script is for the machine's POSIX shell and a Windows temp path isn't absolute there
  • readme: open with the problem Shepherd solves, macOS and Linux, and a video in place of the screenshot
  • herdr: the client shell PoC goes; herdr's popup is shown from the popup watch only, and the host theme and pane images move beside it
  • web: review's minor fixes: a forward is up once ssh's command says so, which it runs only after it listens on the port, so a program that took the port meanwhile isn't taken for it; events of a dropped page don't reach the one made under its key after it; a page on a machine has its own favicon; off macOS a page is placed in device pixels, as GPUI's and GTK's scales needn't agree; GDK keeps to X11, where GPUI's window is
  • readme: web pages, and the WebKitGTK they need on Linux
  • settings: Back goes back to the top of the column, as in Zeron
  • web: review fixes: a machine's page keeps one local port per entry and machine, so its storage survives a restart; a forward whose ssh has gone shows why with Retry; ssh's stderr is drained once the forward is up; a failed forward goes when its entry's URL changes; arrows without Ctrl stay the page's
  • settings: web pages get a section of their own, under a globe; herdr's section takes a server icon so the two don't look alike
  • web: Shepherd's shortcuts work while a page has the keyboard: on macOS a key monitor, as in Zeron's browser, takes a key Shepherd binds from the page and dispatches it to Shepherd; a menu, dialog or panel open over the page takes the keyboard and gives it back on close; pane and tab commands do nothing while a page is shown, so nothing unseen is closed
  • web: on macOS a page sits in a view of its own under GPUI's overlay plane: menus, dialogs, panels and toasts draw over the live page instead of hiding it, and WebKit's inspector docks inside the page's area; elsewhere the page still hides under them
  • web: pages on Linux (X11, GTK pumped beside GPUI) and Windows (WebView2); packages depend on WebKitGTK
  • web: Inspect Element in release builds too; on macOS WebKit's inspector, which docks over all of Shepherd's window, is sent to a window of its own and the page put back in place
  • web: an entry can be listed in one place only, and opened on the shown machine through an SSH forward of its port, which ends with its page or with Shepherd; a port nothing answers on there shows why and a retry. WebKit's inspector is off: docked, it takes over the window
  • web: an entry's sidebar icon is its page's favicon, else its name's first letter; the entries go with the workspace list under a swipe, and the place beside shows its own
  • settings: web pages are edited as Zeron's forms: captioned fields on a two-column grid of one height, where a page opens from as a select, a red bin to remove it, and Add page by the section's label
  • web: a page's name is optional; without one it goes by its page's title, and by its URL's host until the page loads
  • web: links to other sites and new windows open in the page, or in the browser when the setting says so
  • web: Shepherd's panels, dialogs, menus, popups, toasts and the sidebar's peek hide the page while open
  • web: an entry in the sidebar shows its page in a system web view in place of the tabs and panes, with back, forward, reload and its title in the tab bar row; pages keep their state while hidden
  • settings: Integrations lists web pages: name, URL, where shown, where opened, and the off-site links switch
  • web: which entries a place lists, the link policy, favicon links and forwarded URLs
  • settings: web integrations' entries (name, URL, where shown, where opened) and the off-site links switch
  • sessions: the bar's sessions and machines are dragged into any order, which is saved; while one is held its slot shows a placeholder with its faint mark, the others slide aside on a spring, and the dropped one springs into place
  • reader: Cmd+click on a Markdown file opens it in a reader over the pane, as an image opens in the image dialog: headings on a type scale, code colored by its language (Zeron's tree-sitter grammars), images local, relative and from the web, links to other files followed in the reader; its header copies the Markdown or opens the file in the editor, Cmd+A selects its text. A machine's files are found and read over SSH, and its editor opens over the editor's own SSH remoting (Zed, VS Code and its forks). Inline code is set in a smaller Geist Mono on a rounded background; the image dialog's controls are smaller

Full Changelog: v1.3.3...v1.3.4

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 19 Oct 12:53
  • readme: plainer wording throughout; Requirements says Shepherd starts herdr's server when nothing answers on the socket, and downloads herdr from herdr.dev when it isn't installed
  • herdr: when herdr is nowhere to be found, Shepherd downloads this system's binary from herdr.dev's release manifest, checks it against the manifest's SHA-256, puts it in ~/.local/bin as install.sh does and starts it; once a launch, macOS and Linux only
  • terminal: a cell keeps its whole grapheme cluster and it shapes as one, so flags, skin tones, ZWJ sequences, keycaps and combining marks draw as Ghostty has them; a combining mark keeps its offset on its letter's column
  • sync: herdr follows the agent status of the panes with an agent only, not of every pane: it polls each one it watches; one found later (pane.agent_detected) changes the set
  • statusbar: a local Claude transcript is read on from where the last read stopped, not whole every 10 s (transcripts reach 100 MB), as a machine's already was; one rewritten shorter is counted afresh
  • herdr: Shepherd costs herdr less: recent tabs keep 6 panes attached, not 24, since herdr renders and streams each one out of sight; a burst of pane_updated that leaves the snapshot as it is (Claude Code's title spinner, a few a second per working agent) no longer fetches a whole session snapshot; and a focus change by another client is caught again, since herdr names its events pane_focused, not pane.focused
  • render: a working agent's spinner no longer redraws the window at the display's rate: spinners ask for a frame every 66 ms (loader::request_slow_frame), panes are cached views that a frame they did not cause reuses, a grid reread takes only the rows Ghostty marked dirty, and a row's runs compare weight and style instead of cloning the font per cell; the fixture's idle Shepherd goes from ~55% CPU to ~11%
  • readme: Linux release builds only tell of a new release in the sidebar, as the review put it
  • update: off macOS, a release build from CI tells of a newer release: "Shepherd vX.Y.Z is out" in the sidebar, and a click (or Settings → About) opens its page, only one under github.com/freethinkel/shepherd/releases/; nothing is downloaded, as there is no signature to check it against. Only builds with SHEPHERD_UPDATE_CHECK set (release CI's Linux and Windows jobs) ask GitHub; builds from source and distribution packages never do. macOS keeps its updater
  • window: a Window buttons setting (off macOS and Windows) hides the minimize, maximize and close Shepherd draws at the titlebar's right end, for when the window manager provides its own controls or tiles windows, and gives their room back to the tabs; the edges still resize the window, and a right-click on the titlebar opens the window manager's window menu
  • appearance: a Translucent window setting lets the desktop show through the window (blurred on macOS; elsewhere as the compositor does it); on by default on macOS as before, off elsewhere, and it applies to open windows at once
  • settings: off macOS they speak of Ctrl+click and desktop notifications, and leave out the Dock badge, macOS's notification settings and Secure Keyboard Entry; a workspace's menu shows its folder in the file manager rather than Finder
  • usage: Claude's plan limits off macOS too, with the sign-in Claude Code keeps in .credentials.json in its folder (CLAUDE_CONFIG_DIR when set and not empty, else ~/.claude) where macOS has its keychain
  • herdr: a server on another protocol than Shepherd's is named, from its ping, once as a toast and on every pane it disconnects, with what to do (update herdr, or restart its server if you already did; or update Shepherd), whether the subscription went through or failed; a ping without a protocol says nothing
  • notifications: on Linux the Sound setting plays the freedesktop sound theme's complete, through canberra-gtk-play, or paplay on the theme's file where that is missing, as gpui posts notifications without a sound-name hint for the server to play
  • notifications: a click on one requests activation for the window off macOS and Windows (xdg-activation on Wayland, _NET_ACTIVE_WINDOW on X11), as gpui's app-level activate does nothing there; compositors may grant it or mark the window for attention

Full Changelog: v1.3.2...v1.3.3

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:13
  • analytics: anonymous Aptabase events, an active a UTC day (at launch, then with the first snapshot of a new day) and an agent a day for each agent herdr names in the panes, so daily users, their OS and their agents show up; DO_NOT_TRACK=1 and SHEPHERD_MOCK send nothing, cargo run builds are marked debug

Full Changelog: v1.3.1...v1.3.2

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:26
  • gitignore: .DS_Store
  • shell: a command on a tab or pane herdr no longer has (tab_not_found, pane_not_found…) no longer shows a toast: the window was behind herdr, so the sync loop takes a fresh snapshot at once
  • site: shepherd.freethinkel.dev, the static site in site/, deployed with make deploy-site (rsync to kuzyo; css/js/screenshot URLs carry a content hash past Cloudflare's cache)
  • mock: SHEPHERD_MOCK= draws the window from a fixture instead of herdr (one snapshot, pane text from files, stand-in gh and herdr), for screenshots; docs/mock holds the fixture and shot.sh, and docs/screenshot.png is retaken from it
  • terminal: an ended pane keeps focus, so the app's shortcuts still reach their handlers
  • terminal: a window resize no longer rewraps the grid before herdr's repaint (Ghostty reflows only under wraparound, so it is off for the resize), panes reflow at most every 80 ms while the window is resized, as under a divider drag, and the scrollbar follows the pane every frame
  • deps: zui with the corner SDF short-circuit and comment fixes
  • deps: zui with Apple's continuous corners: every rounded corner on macOS takes CALayer's continuous curve

Full Changelog: v1.3.0...v1.3.1

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 15:43
  • ci: Windows aarch64 is cross-built on the x86_64 runner, since Zig crashes building libghostty-vt on windows-11-arm (0xc0000005); one Windows architecture failing no longer cancels the other, and a release goes out without aarch64 if its build fails, never without x86_64
  • ci: on Windows curl fetches the Ghostty source that ghostty-vt-sys pins, checked against its sha256, since the crate's own download fails the CDN's certificate chain under native-tls there
  • keys: keys typed into a pane go as herdr's semantic events over the client shell, which encodes them for the app's keyboard protocol as Ghostty would (Ctrl+Tab, Shift+Enter and the rest under kitty keys); Option and Cmd with the arrows go as before, popups too
  • panes: a locked Mac gives the panes' size away within 5 s, with no idle minute to wait out first
  • terminal: the right and middle buttons (press, drag, release) go to an app that captures the mouse instead of opening the pane's menu; with Shift, or for an app that does not, the right button is the menu as before
  • search: matches past herdr's 1000-line read are no longer off by the unread lines: they count from the oldest line, and the count says when only the last 1000 were searched
  • terminal: an app's OSC 52 copy reaches the Mac's clipboard: herdr hands it to the client in front, Shepherd's client shell, which read it as nothing before
  • keys: Enter with Shift, Ctrl or Option goes as CSI 13; u once the pane's app asks for the kitty keyboard protocol, as herdr tells the attach, so Claude Code's Shift+Enter makes a newline instead of sending
  • panes: a Mac left idle for a minute with Shepherd still in front gives the panes' size away, so herdr's TUI over ssh (from a phone, say) sizes them; a key or click in Shepherd takes it back
  • terminal: typing goes to herdr over the window's client shell, whose input herdr draws at once, where an attach's waits out its 16 ms render cadence: a key's echo in ~6 ms, not ~21; only for a pane the shell's surface shows and no popup over it, else over the attach as before; the latency bench measures this path too
  • terminal: the pointer's moves with no button held reach an app that captures the mouse (hover in TUIs), one report per cell crossed; Shift keeps the mouse for a selection, as on a press
  • tabs: on Windows a press on a tab or the new tab button no longer moves the window: GPUI tells Windows the drag strip's area under the scroll-only blocking tabs too, so the tab bar and the button block it themselves
  • ci: Windows builds for aarch64 too, on the windows-11-arm runner, so each Windows architecture gets its own zip in the release
  • tabs: off macOS the new tab button follows the last tab instead of sitting by the window's own buttons at the titlebar's right end, and stays in view once the tabs scroll
  • ci: a Windows job on windows-latest runs clippy and the tests, builds the release exe and zips it for the release
  • windows: the titlebar's minimize, maximize and close buttons are Windows' own caption buttons to its hit testing, so Windows clicks them and maximize's hover brings Snap Layouts, and Shepherd's resize edges stay off there since Windows resizes from its own frame
  • windows: Shepherd builds for Windows: herdr's server starts detached with no console and the helpers it runs (herdr, git, gh, ssh, curl) start without a console window, a keys.command shell runs in cmd /d /c, settings live in %APPDATA%\Shepherd and caches in %LOCALAPPDATA%\Shepherd, herdr's folder is found as herdr finds it ($XDG_CONFIG_HOME, else %APPDATA%\herdr on Windows, else ~/.config/herdr, now for its sockets as well as its config), the home folder comes from the platform rather than $HOME, ssh to machines goes without connection sharing on Windows, a release build is a windowed app, and the tests that fake herdr with a shell script or a unix socket run on unix only
  • herdr: herdr's sockets go through one small module, a unix socket on macOS and Linux as before and on Windows the named pipe herdr names after the socket's path (interprocess, sync and tokio), for the sessions, the client shell, the popup watch, the API client and the remote relay's listeners
  • linux, keys, panels: Shepherd builds and runs on Linux (x86_64 and aarch64): the Mac-only parts (Dock, notifications' authorization, Secure Keyboard Entry, self-update) sit behind cfg, settings and caches live in the XDG folders, the window is opaque and draws its own titlebar buttons and resize edges, and the key defaults follow Ghostty's Linux ones (Ctrl+Shift for the app, Ctrl+Shift+C/V in the terminal, Ctrl+click for links); make linux and CI pack it as a tar.gz, a .deb and an .rpm; selects in Settings move with the arrows and ctrl-p/ctrl-n and pick with Enter; a Workspaces panel in the command panel takes a chord of its own; the closed sidebar slides out floating when the pointer reaches the window's left edge; lists scroll the highlight clear of their edges; Settings' Back sits at the foot of its column; clippy runs with warnings as errors, and the README says what Shepherd does today

Full Changelog: v1.2.2...v1.3.0

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:53
  • sessions: a swipe's preview of the next session draws the sidebar's own workspace rows, inert, so nothing jumps when it lands: worktrees with their branch line, icons found through the panes' folders, folded groups, the shown workspace lit and the agents list's empty line, where it drew a plainer copy of them before
  • review panel: Cmd+C copies a selection only while its text is shown (a hidden panel forgets it); another project's GitLab job is acted on at the repo's host; a job's log is drawn at its 10.5 px; the description is parsed once per body; the CI label is a label like its neighbours; a machine's scripts run under sh, its icon is looked for again every 5 minutes, and its transcript is read afresh when it shrinks or goes
  • review panel: a draft's footer marks it ready; a branch's own pipeline shows as CI in the status bar; a job's log is selectable; herdr machines get their token spend and project icon over SSH
  • usage: Codex's plan limits next to Claude's, read from ChatGPT's usage endpoint with Codex's own sign-in; a Usage page in Settings shows every agent's windows and picks whose the status bar's ring follows, and the limits pop-up leads there
  • review panel: acts on the PR or MR and its pipeline, pages GitLab child pipelines, and works for herdr machines
  • terminal: scrolling back reads herdr's history once (pane.read, its last 1000 lines with their styles) into a local grid and walks it there, as fast as a terminal's own scrollback, instead of a round trip to herdr per step; herdr's frames keep the live grid current meanwhile, a key or a resize goes back to it, and herdr scrolls on past the lines read, for an app that takes the wheel and on the alternate screen; images move down with the text
  • ci: Zig 0.16 for libghostty-vt
  • terminal: libghostty-vt instead of alacritty_terminal (experiment)
  • terminal: ligatures are on: every glyph is placed at its cell's column, as Ghostty, kitty and WezTerm do, so a ligature or a fallback glyph no longer pulls the rest of the row off the grid; Arabic and Hebrew runs shape together and shrink to their cells
  • agents: a done agent comes before a working one, and among equals the latest status change first, by herdr's state_change_seq; a blocked agent is red and, with Animated status icons, a question mark
  • terminal: Option+Left/Right move a word back or forward (ESC b, ESC f) and Cmd+Left/Right go to the line's start or end (Ctrl+A, Ctrl+E), as Ghostty sends them
  • shell: the tab you show gets herdr's focus through the public API, which moves every client shell's tab with it, herdr's TUI too: the window's shell request moved only its own, so a switch in Shepherd left the TUI where it was
  • herdr, shell: Shepherd shows the tab herdr's focus moves to (its TUI, another window, a command), so the tab is the same everywhere; the window's shell is pointed at the shown tab only once herdr's first surface named its run; images a pane no longer shows are freed by the window, hidden panes and pruned ones too; herdr is told the cell size of the shown tab's panes, not a hidden one drawn at another scale; images below z 0 go under the selection and search marks; decoded images herdr no longer retains are dropped even when nothing shown changed; images decode on a thread of their own and their bytes are read at once; a herdr message that does not decode is reported once on stderr instead of silently dropping popups
  • herdr, shell: the window's client shell (the popup watch, or the PoC's) follows the tab shown, herdr's focus with it: herdr sends a client shell the Kitty images of its own tab only, so images showed only while that tab happened to be Shepherd's (nvim's image preview in another tab stayed blank)
  • terminal, herdr: Kitty images in panes (MVP), taken from the window's herdr client shell (the popup watch, or the PoC client shell): herdr 0.9.4 sends a client shell its tab's images with each whole surface once it knows the cell size, so the popup watch, the client shell and every attach now tell herdr a cell in device pixels; the image bytes, sent once, are decoded (PNG, raw RGB/RGBA) and kept while herdr places or retains them, each placement is cut to the part herdr shows and drawn over its pane's cells, under the text below z 0, else over it
  • review panel: a folded description is drawn whole, as markdown, cut to its first lines with their bottom faded out through gpui's edge fade (no band over the glass); the heading, or a click on it that selects nothing, unfolds it
  • review panel: the description is Zeron's markdown (the zeron-markdown crate, drawn as Zeron draws it): bold, italic, code, struck text, tables and nested lists, links in the accent that open in the browser, and text selection across its paragraphs (drag, double click a word, triple click a paragraph) that Cmd+C copies, or a release does with Copy on select
  • review panel: a long description folds to its first four lines of text under its heading's chevron; the heading, or a click on those lines, unfolds the whole of it
  • review panel: it loads, refreshes and runs checks with Zeron's matrix loaders instead of a turning ring; its toggle moves from the tab bar to the status bar's right end, lit while the panel is open
  • review panel: a right panel shows the shown pane's branch's PR (gh) or MR (glab, picked by origin's host): its title, state, author and description in plain markdown, and its checks or pipeline jobs with their state, duration and link; it is asked again every 10 s while one runs, on a branch switch and from its refresh button; Cmd+Alt+B or the tab bar's button toggle it, its edge resizes it, both kept in settings

Full Changelog: v1.2.1...v1.2.2

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:24
  • herdr, settings: the popup watch carries Shepherd's theme to herdr and sends it again whenever the window comes back, so a TUI's theme (herdr over ssh from a phone) no longer outlasts it; Secure Keyboard Entry while a Shepherd window is in front, from the app menu, the command panel or General settings; the sidebar's shown or hidden state and folded worktree groups survive a restart
  • dialogs: Enter and Escape answer the delete-session and remove-worktree confirms, which hold the keyboard while open; closing one gives it back to herdr's focused pane

Full Changelog: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 10:09
  • tests: the session test expects a scroll without a pointer cell to carry null column and row, as Shepherd sends it
  • sidebar: a working agent's glyph stays bright on a dark sidebar, even with a dark accent, and rests brighter between pulses
  • settings: the font family is a select over the installed families, searchable, instead of a text field
  • herdr: a [keys] pane command pressed again in its tab brings its pane back instead of opening another
  • herdr: it is told Shepherd's terminal colors, which it paints its frames with and answers apps' color queries with; the client shell's surface follows the pane grid as it resizes
  • worktrees: New and Open worktree are on every repo's workspace, not only on one herdr already grouped; Open worktree lists the repo's worktrees in the command panel, opening one or going to its workspace; a worktree's menu says Close worktree
  • settings: Integrations show each agent's mark on a tile, as Zeron does; Copilot, Droid, Kimi, Kilo, Qoder, Qwen and Mastra get marks of their own, in tabs, the sidebar and the panels too, and omp takes pi's
  • tests: the session test scrolls with the new position argument, so it compiles again
  • panes: the resize cursor holds for the whole drag of a divider, the sidebar or the agents list, instead of flickering to the terminal's whenever the pointer outruns the narrow strip
  • shell: before a herdr command runs, the client shell's tab (and herdr's focus) moves to the shown tab, so a popup it opens belongs to that tab and reaches this window; Shepherd's own pane.focus (an agent seen) no longer strands it on a tab nobody views
  • sidebar and command panel: Change theme, button tooltips, the whole sidebar under a swipe, and commits ahead/behind
  • shell: a press outside herdr's popup that lands on a pane leaves that pane the keyboard; only otherwise does it go back to herdr's focused pane
  • shell: the popup's title is semibold: the bundled Geist has no bold
  • herdr: the attach echo bench: the same attach's frames, the key over the attach or over the client shell; the report says where attach's 19 ms come from (herdr renders on every attach input, its 16 ms cadence then holds the echo)
  • shell: the popup's title is bold
  • herdr: PoC turns into the hybrid: panes stay on their attaches, one client shell per window carries the theme, herdr's popup (its cells and ClientShellPopupInput) and [[keys.command]]; a probe measures the shell's side effects
  • shell: PoC behind SHEPHERD_CLIENT_SHELL=1: the window is one herdr client shell; panes take their cut of its surface, the shown tab, grid size, theme and focus follow Shepherd
  • herdr: PoC client shell connection: surface and patches cut into per-pane frames, semantic input, a latency bench against attach
  • herdr: its [keys] work in Shepherd (prefix chords, plugin actions, shell, pane and popup commands), and its popups float over the panes as a terminal
  • tabs: a tab whose pane is zoomed shows the expand icon after its label, also while dragged
  • terminal: the wheel scrolls neovim and other mouse-reading apps where the pointer is, not at herdr's default top-left cell, which landed on the tabline or a side window

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 17:14
  • terminal: Cmd+click on a folder's path opens it in Finder, not the editor
  • settings: Animated status icons read better in a list: a working agent's glyph is a quarter larger, more saturated and rests brighter between pulses; the check and the dot grow with it
  • sessions: the place icon picker's grids span the dialog, their tiles stretching to share it, with a scrollbar; an emoji group's heading sticks to the list's top until the next one pushes it up, so only the bottom edge fades
  • sidebar: compact workspaces mark a worktree with a branch icon in front of its name, the line it has no room for
  • terminal: Cmd+click on an image path opens it in a dialog over the window, Zed's viewer: fit inside it, a pinch, Cmd+scroll, Cmd+=/-/0 or the header's buttons scale it about the pointer, a scroll or a drag moves it, kept over its frame as Preview does; it grows in as it fades. A hover found on an older grid no longer panics on a row output has since shortened

Full Changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:21

New

  • Sessions. Shepherd now works with every herdr session, not only the default one. Sessions sit as icons in a bar under the sidebar, like Arc's spaces. Swipe with two fingers to move to the next session, and the sidebar slides over to it. Click + to create a session. Right-click a session to rename it, give it an icon or emoji, or delete it.
  • Remote machines. Turn on Remote when you create a session and enter an SSH host (a name from your SSH config works). Shepherd saves it as a herdr machine and shows that host's workspaces and agents like a local session.
  • Animated status icons. A third option in Settings → Status icons. A working agent shows a pulsing glyph, a finished agent shows a check, and other states show a dot in the status's color. You can also choose herdr's symbols (× ◐ ✓ ○) or color dots. Switching styles no longer shifts the rows.
  • Drop files into the terminal. Drag files from Finder into a pane to paste their paths. Spaces and special characters in the paths are escaped, as in Ghostty.
  • Font size and line height are typed in. Type a value, use the arrows in the field, or press Up and Down.

Improved

  • Needs attention in the agents menu shows only agents that are waiting for you or have finished and you haven't looked at yet.
  • Compact workspace rows no longer show changes and the PR, so Shepherd no longer runs git and gh for them.
  • The active tab's highlight and tab reordering now animate.

Commits

  • settings: a third Status icons style, Animated, after Zeron's agent statuses: a working agent pulses round a 2×3 glyph tinted per row from the accent, done is a check, the rest a solid dot in the status's color
  • tab bar: the active tab's wash and a reorder slide in 110 ms, a bit quicker than Zeron's 150
  • sessions: herdr sessions and saved SSH machines as Arc's spaces, a bar of them under the sidebar with a name and icon each; a two-finger swipe goes to the next, the list rubber-banding as iOS does past it; Zeron's loaders while a place or pane connects
  • terminal: files dropped from Finder paste their paths, shell-escaped and space-separated as Ghostty does
  • settings: Status icons picks color dots or herdr's symbols (× ◐ ✓ ○), both drawn as same-size SVGs in a 12 px box, so switching never shifts a row
  • settings: font size and line height are typed in, with stepper chevrons in the field and up and down stepping from what's typed
  • sidebar: the agents menu's Needs attention only keeps agents waiting on you or done and unseen; compact workspace rows drop their changes and PR, and git and gh aren't asked for them

Full Changelog: v0.1.6...v1.0.0