Blog

Grove 0.10.0: split panes, and a worktree list that scales

Grove 0.10.0 splits a checkout into side-by-side panes, lets you star, group, reorder, describe and archive worktrees, adds a Get Info sheet that shows what every checkout is using and running, shows a commit's full details before you check it out, and fixes git from the Dock.

Two things got in the way once Grove had more than a couple of agents going. You could only see one tab at a time, so watching an agent while reading its changes meant flipping back and forth. And the worktree list was alphabetical and nothing else, which stops working somewhere around the sixth checkout. 0.10.0 fixes both, adds a way to see what every checkout is using and running, and fills in a few gaps in the git panel.

Split layouts

The toolbar has a new Layout menu that splits a checkout into panes: Left & Right, Top & Bottom, Thirds, One + Two Stacked, or Quarters. Each pane shows one tab (Agent, Shell, Changes, Files, Home or Notes), so you can keep the agent on the left and its diff on the right, or a shell under the file tree. Pick what a pane shows from its header, or drag a tab’s icon from the rail onto it. Drag the dividers to resize.

A tab lives in one pane at a time. Putting it somewhere else moves it rather than opening a copy, and a running agent keeps running through the move. Each checkout remembers its own layout, so the worktree you review in can stay split while the one you write in stays single.

It’s all on the keyboard under View › Split Layout: ⌃⌘1 to ⌃⌘6 pick a layout, ⌥⌘] and ⌥⌘[ cycle between panes, and ⌥⌘ with an arrow key moves to the pane on that side. If your terminal programs need those arrow keys, you can turn that last set off in Settings → Spaces. The Single layout looks exactly like Grove did before.

Split layouts were contributed by Santiago Carmona.

Organizing worktrees

A worktree’s right-click menu now has:

  • Star, which keeps it at the top of the list.
  • Move Up and Move Down, for an order that isn’t alphabetical.
  • Move to Group. Create groups from the “…” menu on the Worktrees header. They collapse, and they can be renamed and reordered. Deleting a group can be undone.
  • Edit Worktree…, which sets its name and an optional description that shows in the tooltip. Renamed worktrees now show their branch on a second line.
  • Archive, which moves it into a collapsed Archived section at the bottom.

Archiving is for the worktree an agent finished with that you aren’t ready to delete. Before, the only way to shorten the list was Remove, which deletes the checkout. Archive doesn’t touch the folder or git, and its agent and shells keep running; a dot on the row tells you when something still is. Undo is in the banner that appears and on ⌘Z. Unarchive puts it back where it was, with its star, group and description.

All of this is Grove-only. Nothing in your repository changes, and a fresh list looks the same as before until you use any of it. The same actions are in the new Workspace › Worktree menu, with ⌥⌘↑ and ⌥⌘↓ to move the selected worktree.

Get Info on a workspace

Get Info… (⌘I, in a workspace’s right-click menu and the Workspace menu) opens a sheet that lists every checkout of the repository with its path, branch and status, last commit, what Grove has saved for it (pinned sites, notes, unsent review comments, tabs), and how much disk it takes up. The biggest build and dependency folders are broken out, so you can tell when 4 GB is mostly node_modules. Shared repository data is counted once, not once per worktree. Folders in your worktrees folder that git no longer lists show as “Not a worktree”.

It also shows each checkout’s Agent and Shell tabs: which agent is running and for how long, which tabs have exited and with what code, and what each shell is busy with. A checkout you haven’t opened since launch says so instead of claiming nothing is running.

The sheet only reads. It has no delete buttons; it’s there to tell you which worktrees are worth archiving or removing, and you do that from the sidebar. Sizes are measured when you open it and kept until you press Refresh.

A commit’s full story before you check it out

Clicking a commit in Recent saves opens Go to Commit, which used to show a short hash and a subject. It now starts with the whole commit: the full message, author and committer, dates, branches and tags pointing at it, trailers like Co-authored-by, its parents, and the files it changed. If a parent is also in Recent saves, clicking it switches the sheet to that commit. ⇧⌘C copies the full hash. The options to open it as a worktree or check it out are underneath, same as before.

Recent saves rows also highlight on hover now, so it’s clear they’re clickable. A new setting in Settings → Tools → Git hides the short hash if you’d rather give a narrow sidebar’s room to commit subjects.

Notes grew up a bit

Notes is still BETA and off by default (Settings → Experimental). Each checkout’s Notes tab now has a one-line Working on at the top, TODOs that stay in the order you put them (drag them, or Move to Top/Bottom), a collapsed Completed section, and a free-form scratch note that saves as you type. Checking a TODO off no longer jumps it around, and deleting one, or clearing all the completed ones, can be undone. Existing notes carry over.

Prompts and commands

  • Insert Placeholder in the prompt and command editor adds a placeholder at the cursor, so you don’t have to remember the syntax.
  • Entries that stop to ask you for something before running end in “…” in the menu and the ⌘K palette.
  • A command editor now points out a placeholder that isn’t preceded by --. Quoting stops a value from being split, but it can’t stop one that starts with - from being read as an option.
  • Move to Library on a workspace’s own prompt or command makes it available everywhere, without retyping it in Settings.

Fixes

  • Git from the Dock. Launched from the Dock or Finder, Grove could find git but git couldn’t find its own helpers, so repositories using Git LFS, hooks that call Homebrew tools, or some credential helpers failed in Grove and worked in Terminal. They work now. Also from Santiago.
  • No Command Line Tools. On a Mac without them, the system’s git only opens an install prompt and fails. Grove used to pick it anyway and show a raw error on every git call. Now it skips it, and Settings → Tools → Git says what to install.
  • Deleted worktree folders, right away. In 0.9.0, a worktree folder you deleted by hand was marked “Folder not found” only on the next reload. Now it’s marked as soon as the folder goes away.
  • Long prompts are never typed line by line. Grove waits for an agent to be ready before typing a multi-line prompt or review. Before, if the agent took more than 5 seconds to start, Grove typed it anyway, and every line break sent part of the prompt on its own. Now it waits up to 30 seconds, then puts the text on the clipboard and tells you, instead of typing it.
  • Worktree names are cleaned up when their worktree disappears outside Grove, and names on worktrees inside the repository folder now survive a folder rename or Locate.

Get it

Grove 0.10.0 is up at grove.molayab.com, or as a direct download for a fresh install. If you’re already running Grove, accept the update alert.

The more agents you run, the more of Grove is about keeping track of them rather than talking to them. Split layouts let you watch one while you review another, and archive, groups and Get Info make ten worktrees about as easy to keep track of as three.

Share