Goodboy v0.1.8
Goodboy v0.1.8
Multiple workspaces, each in its own window. Plus a quieter chat, document attachments, a per-comment PR resolver, and a stack of fixes.
Open every workspace in its own window (#773)
Before, one window held one workspace and a chip row let you swap between them. Switching tore down the workspace you were leaving and any agent still running in it. Now each workspace gets its own OS window, so you can keep two side by side and watch both work. A full-screen launcher opens on start with recents and search; ⌘O and the sidebar header open a switcher; opening a workspace that is already open focuses its window instead of duplicating it. The workspace cap is raised to 5.
This replaces in-place workspace switching entirely: there is no more chip row and no switch confirmation, because nothing gets torn down. Two-window use is worth a manual check before you lean on it.
A quieter chat
- Consecutive tool activity folds into one collapsible operations row, so the transcript reads clean and you drill in only when curious. Permissions, errors, and auth prompts stay inline, never buried (#759)
- The work-in-progress indicator now shimmers with copy that follows what the agent is doing (reading, editing, running, thinking) and settles into a steady state on long turns. Reduced-motion shows a static label (#771)
- Queueing a message while a turn runs no longer hides what you wrote. Pending messages stack above the composer in order; click one to edit, X to remove. Each sent message carries a footnote with the provider and model it ran on (#753)
- The chat breadcrumb uses the shared divider so its rule matches every other separator (#770)
Attach documents, not only images (#760)
Chat attachments now accept pdf, csv, tsv, txt, log, md, json, xml, yaml, docx, and xlsx. Images and PDFs preview inline; other files attach as chips. Unknown binary types are rejected, and the 15MB size limit is unchanged.
Resolve PR comments one at a time (#756, #752)
GitHub Studio gets a resolve board: each open review comment is a card with its own provider, model, and effort, plus a select box and a Resolve button. An override chip applies one config to every card, or you customize per card and batch-spawn one resolver per comment. A "won't fix" reply posts the reason and resolves the thread without a commit.
Resolve push also stopped failing in silence. The app now runs git push with your login-shell environment, so a repo pre-push hook sees the same setup a terminal would instead of throwing on a missing variable. When something does fail, it surfaces as a toast, not only a buried notification.
Every provider's models, read cleanly (#767)
Only Claude used to render properly in the model picker; Codex, Gemini, and Cursor showed raw ids and arbitrary ordering. Display metadata now lives in one registry, so each provider groups into clean rows with readable labels. Codex gains an effort control wired through to model_reasoning_effort. Switching provider mid-session no longer spawns the new provider with the old provider's model id.
Smoother first run and workflow start (#763, #764, #762)
- First launch opens a full-screen wizard: welcome, connect a provider, connect a workspace, ready. Every step is skippable, and you can reopen it from Settings (#763)
- The custom-workflow planner now asks for the process you expect (the steps), not only a goal, and the start dialog is a single master-detail rail with a preview pane (#764)
- Attaching a workflow with auto-run off now starts its first step instead of leaving it for an extra click (#762)
Open questions, reworked (#766)
Questions used to live in two copies that drifted, so answering or dismissing left the workflow gate stuck and answered questions could come back. They now read from one source: answer or dismiss unblocks the gate immediately and the question stays gone. Agents can offer suggestion chips, and the cards got a redesign with per-agent grouping and progress.
Update without quitting (#750)
The app re-checks for updates while it runs (on an interval and on focus), so a new release surfaces the in-app "restart to update" control without you having to quit and relaunch first.
Delete replaces End for sessions (#758)
End and Delete did nearly the same thing, so End is gone. The destructive action is a single Delete, with an "Archive instead" nudge in the confirm dialog for when you want to keep the history. Delete removes the worktree, not the branch.
Fixes
- Codex installed through
npm install -gis now detected, including under nvm/fnm, instead of showing as not installed (#765) - The embedded terminal sizes its PTY to the fitted view, so the shell prompt renders at the right width and stays aligned on resize (#755)
- Running a plan no longer spawns a duplicate, orphaned agent for the next step (#754)
- A queued turn firing as the previous turn ends no longer crashes the turn; the start-workflow modal got sizing and alignment polish (#768)
- Large diffs no longer freeze the viewer: it renders the first 1000 lines with a "show more" bar for the rest (#772)
- Wiping the local database now also clears leftover UI state, so nothing references a dead workspace (#769)