Task rail
The left-most column of the Grove window is the vault tree: a tree of .grove/workspace/ where each task is an expandable folder of its notes, interleaved with loose notes, folders, and web links — plus a synthetic "main" row for the workspace itself and a collapsible Archived section at the bottom.
What a task row shows
- The task name, with its color stripe. Color is yours to assign from an HSL wheel — use it to group related work at a glance.
- Expand the row and you're looking at the task's notes —
plan.md, design docs, the setup log — because a task is a folder. See Tasks and worktrees. - Tasks have exactly two states: active and archived. There is no running/idle dot on the row — the live "what's happening" signal lives on the chat pills, which tint when a turn finishes unfocused and badge open-comment counts. See Chat and terminal.
Notifications
When an agent needs you — a question, a finished turn — Grove fires an OS-level notification rather than accumulating badge counts in the rail. Focus follows you, not the other way around.
Hover card
Hovering a task opens a card with the at-a-glance state and the most-used actions:
- Branch name and a live +adds / −removes diff stat.
- Four icon actions: open terminal, show files, show changes, sync (rebase onto base).
- A Create PR control. See GitHub PR sync.
- One start a chat button per agent provider (Claude, Codex).
Interactions
- Click activates the task — the diff overlay in the viewer follows the active task. A plain click does not auto-open a chat.
- Right-click for the context menu: Rename, Change color…, Archive / Unarchive, Demote (delete worktree, keep the notes as a plain folder), Delete (remove worktree + branch + folder).
- Keyboard, on the focused row:
Cmd+Backspacearchives an active task (or deletes an archived one);Enterstarts a rename. - Drag moves notes and folders around the vault tree. (Tasks aren't reorderable — rows follow vault order.)
Create and auto-rename
A new task starts life with a placeholder name (Task <digits>) and an unmaterialized worktree. The first time its agent finishes a turn, Grove derives a real title from your first prompt and renames the task — unless you've already named it yourself. Loose vault files and folders can be promoted to tasks, and tasks demoted back to plain folders, from the same menu.
Current limitations
- No task reordering or custom sort.
- Rebase conflicts surface when you sync, not as a persistent row status.
Where this lives in the code
- Rail, rows, context menu, drag:
src/components/WorkspaceTree.tsx. - Hover card and color picker:
src/components/TaskHoverCard.tsx,src/components/TaskColorPicker.tsx. - Task list, notifications, auto-rename:
src/hooks/useTasks.ts.