Skip to content

v1.38.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 23:22
· 5 commits to main since this release

feat(ws): list every AI agent in its own dashboard section, with its state and coder

Finding the agent that needed you in dg ws meant reading dot colors across the
whole tree, including windows that only ran Neovim or a shell. The dashboard now
has two sections: SPACES (repos, worktrees and sessions, with no status markers)
and AGENTS, one flat list of every Claude Code and OpenCode pane, most urgent
first, each with a state word and the coder's name.

  • Agents are sorted blocked > error > done > working > idle. "Done" is new: the
    agent finished and you haven't looked yet; it becomes "idle" once you have.
    enter jumps straight to the agent's pane, and the right pane shows that
    agent's worktree diff.
  • Each coder now says what it is: the Claude hooks and the OpenCode plugin
    write a @dg_agent_kind pane option on start and with every state write,
    and remove it on exit (ADR-0055). A pane that is back to a plain shell is
    never listed.
  • a folds agents and w folds spaces, in any order. A folded section becomes
    a one-line bar at the bottom of the column (the agents bar keeps a count per
    state), and the last open section can't fold. +/- or dragging the AGENTS
    header moves the split; a section that needs less space gives the rest to the
    other. Folds and split are saved with the rest of the view state.
  • / searches only the open sections; in agents it matches location, coder
    name and state word, so /blocked and /opencode work. Headers show
    "1 of 4" while filtering.
  • The dashboard takes its pane-move keys from tmux (list-keys), so your
    ctrl+h/j/k/l move between sections and the diff pane, and hand off to the
    next tmux pane at an edge (ADR-0057). The shipped tmux config passes those
    keys through to devgeta ws.
  • Repos with no open window start folded; unfolding one is remembered.

Fixes

  • A working agent no longer shows as idle. Picking it in dg ws wiped its
    busy state, and answering a permission prompt left nothing to set busy
    again. Looking at a pane now only clears states that ask for you
    (done/blocked/error), and both coders mark themselves busy again when a tool
    finishes (Claude PostToolUse, OpenCode tool.execute.after).
  • The cursor can no longer move invisibly inside a folded section, and reopening
    the dashboard with spaces folded lands on the agent in the window you came
    from.
  • A selected idle agent row, and the folded bars, no longer render as an empty
    gray bar: dim text on the selection background was the same color as the
    background.
  • The OpenCode plugin's tests could write @dg_agent_kind opencode onto the
    real tmux pane they ran in; they now never see the real pane.

Behavior changes: space rows no longer show agent status dots; agent state is
shown only in the AGENTS section. Selected idle agent rows show their text at
full brightness. Claude Code runs one extra hook after every tool call (one
tmux call when the agent is already busy).

Migration: after upgrading, run dg configure claude --force,
dg configure opencode --force and dg configure tmux --force, then restart
running coders so they load the new hooks. If you build devgeta from source
with uncommitted changes, run dg configure devgeta --force first: builds from
the same commit share one extracted config folder, so a later build can deploy
an earlier build's hooks.

Full Changelog: v1.37.0...v1.38.0