GUI-only release. macOS 14.2+ universal signed/notarized DMG; x86_64 and ARM64 Linux .deb, .rpm, Arch packages and tarballs (glibc 2.39+); Authenticode-signed Windows x86_64 and ARM64 installers and zips; installed copies update in the app. Requires an existing Herdr daemon. Source: 06ec0d4.
[v20261112.1] - 2026-11-12
Added
- Update Sheprd on SSH machines from their sidebar header
- [worktrees] Create and delete worktrees in Herdr 2 workspaces
- [notifications] Post system notifications for Herdr 2 agents
- [overview] List closed Herdr 2 agents and reopen them
- [notes] Send notes on a Herdr 2 selection to its agent
- [sidebar] List Herdr 2 agents with Herdr 1's and step through both
- Mute Herdr 2 tabs and show their agent, zoom, and processes
- [remote] Split, zoom, and rename Herdr 2 tabs on a phone without Sheprd
- [remote] Show a Herdr 2 or host workspace's changes on a phone
- Choose how much scrollback Herdr 2 terminals keep
- Move Herdr 2 panes and tabs to other workspaces
- [cloud] Set up a machine with herdr-core alone, and report core failures
- [hosts] Add SSH and WSL hosts that run herdr-core without Herdr 1
- [worktrees] Fan out, dispatch, and run worktree scripts on Herdr 2
- [teleport] Move Herdr 2 workspaces and land work in them
- [teleport] Resume Claude Code sessions from Herdr 2 terminals
- [linux] Install and update Sheprd through zypper on openSUSE
- Open app-kept worktree dialogs and scripts from the CLI
- Manage Herdr 2 worktrees and scripts on their remote hosts
- Define scoped remote work request messages
- [dispatch] Target remote and provisioned Herdr 2 hosts
- [browser] Return remote core notes and reload the caller's pages
- Carry scoped work commands from remote Herdr 2 terminals
- [moonframe] Run Sheprd in a window laid out by Moonframe
- [moonframe] Lay out the activity bar, sidebar and status bar in Luau
- [moonframe] Draw Sheprd's rows, header and status bar in its own theme
- [moonframe] Make the worktrees and the agents two mods of the left pane
- [moonframe] Give the Luau window Sheprd's sidebar, menus and startup
- [ios] Give the iPad sidebar Chats, Workspaces, and Settings tabs
- [ios] Open a chat's workspace in a sheet from its header on iPad
- [remote] Keep text shortcuts on each computer for every device
- [ios] Share text shortcuts with every paired computer
- [chat] Offer text shortcuts in the chat composer, shared across computers
- [cli] List text shortcuts with
sheprd chat shortcuts - [remote] Read phone pull requests without the desktop
- [nix] Add macOS arm64 support to flake
- Discover process-bound agent sessions for Herdr 2 chats
- Extend session reporters and fence stale evidence
- Reuse bounded file transfers across authenticated host routes
- Paste images and deliver files to Herdr 2 panes
- [sidebar] Scroll a shown agent pane to its bottom on row re-click
- [tabs] Undo closing a terminal tab within a few seconds
- [chats] Run native Herdr 2 chats on saved remote hosts
- [chat] Wrap, number and stripe code blocks, and show HTML as code
- Run explicit link-handler adapters for Herdr 2 clicks
- Adapt opted-in plugin manifests with host platform filtering
- [orchestrator] Recover owned launches and confirm same-run restarts
- [browser] Transfer remote annotation images and preserve pending notes
- [worktrees] Copy .worktreeinclude's ignored files into new worktrees
- [teleport] Discover process-bound Herdr 2 agent sessions on their host
- [chat] Recover lost core chats into durable replacement panes
- [notifications] Clear all notifications with one command
Changed
- Remove the obsolete local-only terminal lookup
- [gpui] Make the app a library another window can host
- [moonframe] Replay the Luau layout around the terminal while it prints
- [moonframe] Keep the selected rows and open the window at Sheprd's size
- [moonframe] Draw the terminal over the Luau layout instead of inside it
- [gpui] Find main windows wherever they are shown, not only as roots
- [settings] List Chat under Appearance, chat environment on General
- [work] Share owned checkout receipts across launchers
- Drop helpers production no longer calls
Fixed
- [worktrees] Keep Herdr 2 worktree results and notes across host switches
- [worktrees] Keep another host's Herdr 2 workspaces off this computer's Git
- [worktrees] Keep Herdr 2 delete dialogs open and remove subfolder checkouts
- [herdr-core] Stop treating a quit agent's last report as a running agent
- [herdr-core] Keep an agent the shell became, and start a closed one once
- [notes] Copy mirror notes and send the stand-in shell's to its agent
- [notes] Send notes to a Herdr 2 agent on another host's core
- [notes] Reach an agent the shell became with exec
- [notes] Never hand an agent's notes to another agent in its pane
- [notifications] Time Herdr 2 banners by the notification delay
- [sidebar] Keep Herdr 2 agents, menus, and steps where Herdr 1 has none
- [sidebar] Give a Herdr 2 agent in a tab not yet restored its own pane
- [sidebar] Keep Herdr 2 agents on different hosts apart
- [sidebar] List Herdr 2 agents of saved hosts with the rest
- [ios] Keep the "need you" badge on one line and say "1 needs you"
- Keep Herdr 2 mutes on their own tabs and the stand-in shell
- Drop a muted Herdr 2 agent's sounds rather than delay them
- [remote] Keep every phone's change to a closed Sheprd's Herdr 2 tabs
- [remote] Never edit Sheprd's Herdr 2 tabs while it starts
- [remote] Unzoom a Herdr 2 tab from any pane and focus a zoomed pane
- [remote] Read a workspace's changes safely and fully without Sheprd
- [remote] Read every untracked file a phone's change list sends
- [remote] End a stuck Git and read SHA-256 and odd names on a phone
- [remote] Show a file whose name holds a replacement character
- [remote] Show a renamed file's own diff when its old name is reused
- [remote] Show the diff of a renamed file whose name Git quotes
- [cli] Find a Herdr 2 pane's workspace for work, host pr, and chat convert
- [automations] Refuse approval in a Herdr 2 terminal its core can't vouch for
- Send pane commands to the Herdr 2 workspace in front
- Let every window see where a Herdr 2 tab moved
- [hosts] Forget that a host lacked Herdr 1 once it connects again
- [hosts] Find herdr-core on Windows hosts and beside an outdated Herdr 1
- [hosts] Try a host's first Herdr 2 shell again after a passing failure
- Keep remote update progress through disconnects and late success
- Resolve remote updates through every saved host profile
- [worktrees] Keep Herdr 2 archives, setups and lanes in their own workspace
- [worktrees] Check only this computer's Herdr 2 checkouts for merges
- [worktrees] Follow each Herdr 2 archive and open a run's own terminal
- [worktrees] Retain split archive results and refuse uncertain agent restarts
- [worktrees] Fence script launches and verify the checkout being cleaned
- [teleport] Refuse Herdr 2 moves that would strand their work
- [teleport] Reclaim a Herdr 2 checkout only for the same project
- [teleport] Keep a Herdr 2 source's idle shell in its own window's session
- [teleport] Move a Herdr 2 workspace in a subfolder from its checkout root
- [worktrees] Check root archive scripts before cleaning subfolder workspaces
- [worktrees] Preserve archive scripts and verify lanes before deletion
- [remote] Keep remote control running after an update
- [windows] Give native sidebar and dialog rendering more stack space
- [windows] Keep the UI stack setting out of the launcher build
- Enable workspace mutes and fan-out from Herdr 2 terminals
- Report worktree dialog failures and document kept CLI targeting
- Keep worktree Git operations on their destination host
- Propagate cloud support through worktree Git dependencies
- [dispatch] Prepare Herdr 2 destinations without Herdr 1
- [work] Retain and recover owned agent launches after interruptions
- [work] Verify retained owned terminals before cleanup
- [fanout] Route and recover Herdr 2 lanes on their own hosts
- [fanout] Open kept remote origins through their captured sessions
- [fanout] Fence delayed lane presentation against retargeted hosts
- [dispatch] Wait for provisioned destinations without replaying work
- Keep a worktree agent visible after an uncertain send
- [orchestrator] Dispatch and control runs on their Herdr 2 host
- [fanout] Enable typed remote lanes on Windows routes
- [acp] Find agents installed through mise or asdf
- [remote] Offer every agent the login shell finds on the phone
- [remote] Show why a terminal does not load instead of spinning forever
- [remote] Keep a closed terminal unwatched when its retry finishes
- Route kept worktree commands through the worktree client
- [chats] Distinguish remote core panes by their owning host
- [fanout] Synchronize scoped lane views through the core API
- [work] Refuse agent recovery into a retained replacement shell
- [fanout] Persist resolved lane destinations before creation
- Expire queued worktree setups while another host is shown
- Bind worktree branch reads and cleanup to their owning checkout
- Retain remote browser feedback until acknowledgement
- [browser] Use the standard bounded channel for remote replies
- Keep remote checkout paths out of local Git workers
- Bound remote checkout identity queries by their shared deadline
- [browser] Cancel feedback when its driving core pane leaves the window
- Keep queued remote work bound to its original workspace
- Keep archive completion through temporary metadata failures
- Preserve remote work refusal codes and advertise shim commands
- [moonframe] Pin the activity bar's counts with a row, which takes float
- [moonframe] Paste, hidden bars and three layouts work as in the app
- [moonframe] Native checks build, and agents follow device and settings
- [moonframe] Mark the left edge as draggable; right-click opens the sheet
- [moonframe] Remote rows, folded statuses and restarts as in the app
- Build with or without Moonframe and reduce dialog stack use
- [ios] Keep the iPad sidebar's place and search results' panes
- [ios] Open a new tab's form over the iPad workspace sheet
- [chat] Refuse to move an agent whose folder is gone into a chat
- Keep shortcut edits made after a clock change, and never cut a long one
- [chat] Stop re-offering a shortcut list a slower clock took, and keep drafts
- [chat] Never lower a shortcut list's edit time to match a slower clock
- Track which shortcut edit each computer holds, and never lower edit times
- [ios] Fetch a computer's shortcuts one request at a time
- [chat] Move Claude into a chat without Herdr's integration
- [remote] Fence late PR reads and expose web checks
- [remote] Invalidate changed PR badges before backoff
- [remote] Distinguish unverified PR identity while paused
- [remote] Preserve PR hints and wrap phone log excerpts
- [status-bar] Stop reporting a Herdr 1 that herdr-core stands in for
- [nix] Bundle native Bluetooth pairing on macOS
- Prevent terminal copy from crashing the window
- [chat] Show OpenCode background subagents in the activity rail
- Route session reports through their owning terminal socket
- Accept native session-start payload variants
- Preserve Codex session policy when continuing in chat
- Stop superseded session reports from retrying forever
- Localize kept checkout errors and repair Windows cleanup fixtures
- Keep Stop and Send working for Herdr 2 runs started before ownership labels
- Never start remote work its caller cancelled before the claim
- Ignore remote work requested while no window was watching its host
- Keep Stop and Send for Herdr 2 agents whose launch reply was lost
- [tabs] Keep undo close from hiding a lone tab or mixing up hosts
- [tabs] Show a tab again when its daemon restarts during undo close
- [tabs] Keep a closed tab that another client focuses before the first poll
- Refuse remote origins in the local-only fan-out consumer
- Preserve failures while resolving a worktree script root
- Preserve host-side checkout paths in remote branch queries
- [fanout] Retain terminal identity after uncertain local launches
- [work] Serialize lane folders for their POSIX destination
- Retain dispatched checkouts after uncertain agent startup
- Keep task claims when a dispatched agent may be working
- Recover retained agent controls after a failed first journal write
- Keep a Herdr 2 run's checkout until its terminal is proven ended
- Explain why an unverified orchestrator run keeps its checkout
- [chats] Preserve remote endpoint selection and cancelled launch ownership
- [chats] Retain handoff cleanup until a core start is accepted
- [chats] Offer owning-host conversion on Windows desktops
- [chats] Keep desktop editor paths off remote core panes
- [chats] Build remote chats on every platform
- [remote] Keep phone layout edits responsive after desktop exit
- [remote] Require saved-tab ownership before desktop startup
- [remote] Mark the saved-tab lock message as diagnostic data
- [ios] Read whether a computer offers GitHub without the desktop
- Keep browser notes and agent tools with the machine a saved device names
- Remove older agent runs and show socket fan-out lanes
- [chat] Scroll code blocks and tables sideways only with Shift + wheel
- [chat] Keep Show code when a page finishes loading after it
- [chat] Open an HTML block in the browser from its code view on Linux
- [browser] Load a page a restored layout shows instead of stalling on Loading
- Keep link handlers host-isolated and cancellable after child exit
- Retire deferred link fallback when its saved host changes
- Offer missing-file hyperlinks to handlers in mouse-reporting panes
- [fanout] Restore retained lanes through their workspace keeper
- [dispatch] Route custom socket work by workspace keeper
- [work] Verify owned terminals end before removing their checkout
- [fanout] Stop owned agents before discarding lane checkouts
- [dispatch] Isolate local core repositories from forwarded sockets
- [dispatch] Discover cores while the orchestrator chooses a host
- [fanout] Retain explicitly pinned hosts when they go offline
- [orchestrator] Explicitly adopt legacy agents and fence checkout cleanup
- [worktrees] Keep a Herdr 2 archive waiting while its checkout is unknown
- [worktrees] Offer a kept workspace's Git only on the host keeping it
- [cli] Keep the worktree dialog's branch selection inside its text
- [orchestrator] Stop reporting a just-finished action as busy
- [orchestrator] Let a finished run be restarted and removed
- [orchestrator] Act on the project a command names
- [orchestrator] Never end a program started in a finished run's shell
- [orchestrator] Close an open dialog when a command switches projects
- [browser] Discard forwarded pages when their core caller disconnects
- [browser] Keep offline remote annotations out of local delivery
- [browser] Route remote core notes to the exact driving host
- [browser] Keep the remote reload command out of Linux builds
- Run a remote work command once when two desktops drive its terminal
- [teleport] Revalidate sessions before retirement and refuse ambiguous files
- [teleport] Preserve resume settings outside the moved checkout
- [teleport] Keep sessions running until the destination acknowledges them
- [teleport] Refuse session config roots that climb out of home or checkout
- [teleport] Keep a closed arrival tab closed instead of reopening it
- [teleport] Open arrival tabs a limit left out once room is freed
- [orchestrator] Keep dispatch retryable if its pre-start record fails
- [fanout] End an owned lane's agent before Keep removes its checkout
- [orchestrator] Restart or remove an agent that exited into its shell
- [fanout] Journal a lane's planned checkout before Git creates it
- [orchestrator] Stop reporting busy just after an action finishes
- [orchestrator] Let an interrupted restart be retried
- Read desktop pull requests for Herdr 2 SSH checkouts
- Show SSH kept-workspace pull request badges and counts
- [dispatch] Compile the dispatch source keeper and repair its tests
- [orchestrator] Keep hosts without Herdr 1 out of the dispatch picker
- [cloud] Run setup scripts on machines made without Herdr 1
- [worktree] Mark the include copy script as data for the Fluent check
- [cloud] Keep a core setup script queued and start it from home
- [chat] Preserve core chats for explicit recovery after loss
- [chat] Start a chat's replacement only after its old agent is gone
- [chat] Keep other windows' splits and closes when chat recovery races
- [chat] Exit with failure when a headless chat's agent ends unexpectedly
- [chat] Refuse to restore a chat while its old agent is still running
- [remote] Let a phone change a recovered chat's pane while Sheprd is closed
- [chat] Repair both recovery receipts and never let one block a close
- [remote] Keep a phone-given name when a lone chat recovers
- [chat] Keep a recovered pane selected and pending replacements watched
- [chat] Give the Windows process probe time to answer on a busy machine
- [chat] Let restore run in a recovered chat that lost its agent again
- [chat] Keep a chat recoverable when its terminal input fails
- [chat] Bound the Windows process probe by its own wall-clock limit
- [chat] Never close a recovered chat because another worker's list was older
- [ios] Keep a terminal scrolling when no row on screen spans its width
Documentation
- Track Herdr 2 acceptance and correct backend coverage claims
- Reconcile standalone phone layout routes and upstream evidence
- Retain Herdr 2 CLI exclusions confirmed by handler audit
- Assign CLI adapter coverage and track partial Teleport delivery
- Record partial parity PRs and their actual validation
- Reconcile parity ownership and focused validation milestones
- Consolidate parity stacks and outstanding acceptance evidence
- Record dispatch retained-session P1 pending persistence fix