0.1.9 - 2026-07-30
This release makes lazybox a steadier control surface for long-running agent
fleets: prompts, terminals, and agent run state survive restarts more
faithfully, worktrees are safer to inspect, reclaim, and adopt, and the inbox
gains focused tools for handing off, filtering, syncing, and updating work. It
also sharpens everyday reliability — a PTY watchdog, hardened sync boundaries,
a keyboard URL picker, and clearer, self-clearing error toasts.
Install
Homebrew (macOS or Linux):
brew tap AntoineToussaint/lazybox && brew trust AntoineToussaint/lazybox && brew install lazyboxShell installer (macOS arm64/x86_64 or Linux x86_64):
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/AntoineToussaint/lazybox/releases/download/v0.1.9/lazybox-tui-installer.sh | shThen run gh auth login if needed and launch lazybox.
Added
lazybox worktree listandlazybox worktree gcreport managed worktrees
with their disk totals and reclaim the orphaned ones left behind by
interrupted or crashed provisioning (--dry-run/--force) (#574).- A dismissable startup notice detects newer source commits or published
releases, shows a checkout- and install-channel-specific manual update
command, and stays quiet for a previously dismissed target. - Agent-to-agent handoff (
x s): capture a running agent's output, edit the
brief, and inject it into another workspace's session (#431). - Agent-authored session conversion: fork a running session into a new one
seeded with a role prompt — continue the work or critique it — drawn from
the source agent's own output (#649). - Update branch:
g umerges the base into a behind PR's head, andShift-U
fans it out over the sidebar multi-select (#484). - A multi-select filter menu on
fcombining state, role, and kind predicates
with match counts and removable header chips (#443). - Per-workspace notes (
n) (#458). - A scrollable markdown reader modal for long or richly formatted PR/issue
bodies, opened by a seconddon the description preview (#448). - In-place import of externally created checkouts (
x i, backed by
ScanCheckouts/CheckoutsDiscovered), completing thelazybox scan
discovery flow (#452). - A keyboard URL picker (
]]u): scan the visible agent terminal for links and
open the chosen one in the browser — emulator-independent, and soft-wrapped
URLs are stitched back so a click on any row of a wrapped link resolves the
whole URL (#596). - Adoption of externally created companion PR worktrees, so a checkout made for
an existing PR outside lazybox attaches to its workspace instead of
provisioning a duplicate (#617). - A per-session prompt-history picker (
]]h): every prompt sent to the agent,
persisted across restarts, re-sendable with Enter (#523). - A track-main arm keeping scratch workspaces tied to the repo's default
branch (#535). - Per-workspace sync (
g s): a targeted re-poll of just the focused
workspace's PR/issue instead of the global sweep (#456). - Activity-pane cycling (
Shift-P): full → one-line summary → hidden,
remembered per workspace with aui.activity_pane_defaultstarting mode
(#487).
Changed
- Engaged GitHub workspaces stay prominent, while multi-axis filters make it
practical to narrow a busy inbox by state, role, and task kind. - The GitHub PR sweep force-includes every repo backing a workspace with a
persisted session — any session kind, live or not — and always fetches the
focused repo, so a refresh no longer starves scoped repos or skips the PR
you're on (#585). - Contextual
w wlaunches, explicit agent launches, and priority/model-tier
selection now resolve consistently and keep their chosen model visible. - Terminal prompt history, scrollback, and reconnect replay now share the same
persisted lifecycle, including restored sessions after a restart. - Action-failure toasts (merge, close, update, delete) lead with the reason
instead of theowner/repo#NNNlabel and fade on their own rather than
pinning the footer until dismissed (#588). - Clicking a terminal tile focuses it, the clickable workspace title carries a
visible ↗ affordance, and the current-workspace marker is easier to spot
(#599, #590, #610). - Tour hints are derived from the action catalog so they track the live keymap
(#602). - GitHub rate-limit waits are surfaced: the poller reports the wait and backs
off until the limit resets instead of erroring against a throttled API
(#678). - Ask Lazybox gains a thinking spinner, a follow-up-versus-new-question
distinction, and a stickier conversation loop (#643). - The editor launcher (
e) detects more macOS GUI editors (#676), and the
terminal footer hint bar is decluttered to the keys that matter in context
(#665). - The docs, install paths, support forms, provider setup, and mobile homepage
have been audited against the current CLI, config schema, and action catalog.
Fixed
- Shell sessions now honor
shell.commandfrom~/.lazybox/config.yaml, and
plain shells default to the account's OS login shell instead of a hard-coded
bash(#598). - Workspace deletion, merge, close, and garbage collection preserve dirty or
unpushed work while reclaiming safe orphaned worktrees (#573, #575). - Agent run state persists across daemon restarts, so restored sessions return
in their real state instead of resetting (#630). - A PTY watchdog deadline keeps a wedged terminal from hanging its session
(#628), unsent composer drafts survive session transitions (#624), and
trailing blank rows are trimmed from the raw-PTY scrollback seed (#589). - Worktree-provisioning failures that surface only as a spawn error now route
to the recovery modal with actionable text instead of an elided footer line
(#594). - Rendering and partial-sync boundaries are hardened against malformed or
partial provider updates (#603). - Issue-to-PR joins retain session ownership and surface the originating issue
without duplicating or losing workspace state; a stale issue→PR collapse is
released when the PR no longer closes the issue (#581). - Terminal exits, failed starts, reconnects, mouse URL routing, and status
transitions remain visible and ordered instead of leaving stale or
disappearing tabs (#631). - Provider polling and persistence paths avoid duplicate Slack delivery, stale
GitHub state, and silent loss of malformed stored records; hyphenated GitHub
project labels parse correctly (#638). - All agent badges render in the sidebar (#621); tour cards stay within the
modal height and Ask Lazybox help lists actions in the correct order (#600,
#601). - Clicking a desktop notification focuses the workspace that triggered it
(#674). - Stale branch holders are reclaimed, so a branch pinned by a defunct session
can be freed and reused (#652). - Terminal recovery is hardened against file-descriptor exhaustion, so a burst
of spawns can't wedge the daemon (#653). - Release binaries no longer inherit a false
-dirtyversion suffix from
cargo-dist's generated manifest output, and the pre-split shell-installer URL
remains valid.