Skip to content

v0.3.0

Choose a tag to compare

@Aha43 Aha43 released this 04 Jul 10:50
· 87 commits to main since this release

The observation layer's core: foreman now tells you what every agent is doing — working,
waiting for you, done, or gone — without attaching. Built on the testing foundation laid the
same day (25+ Go tests behind a tmux seam, CI on every PR), and shaken down live against real
Claude Code sessions, including a genuine permission prompt.

Fixed

  • Scripted new no longer prompts (or worse, auto-goes). /dev/null is a character
    device, so the old TTY check misfired on fm <p> new <role> < /dev/null — showing the
    go to X? [Y/n] prompt, reading EOF as default-yes, and failing with open terminal failed.
    Now uses a real terminal check, and an EOF/read error on the prompt never means yes. Found by
    the observation-layer live shakedown. Closes #28.

Added

  • Observation: reliable participant states. New State snapshot in core — exited (pane
    dead), done (the role's command finished and dropped back to the shell), shell (manual
    terminal), else working. Computed fresh from the tmux server on demand, nothing stored.
    Closes #1.

  • Observation: the waiting state. An agent that wants your attention is detected
    title-first — Claude Code sets a braille spinner while busy and ✳ when idle — with a
    small, table-tested pane-content fallback (selector cursor, [y/n] prompts in the last
    visible lines) for agents that don't announce themselves. Defaults to working when unsure.
    Closes #2.

  • Participant state in foreman list. The project list gains a STATE column next to the
    pane title; the global list marks only the states that want a glance on the role tag —
    planner⚠ (waiting), build○ (done) — so working stays visually quiet. Closes #3.

  • CI. A GitHub Actions check workflow runs make check (gofmt + vet + test) on every PR
    and push to main — the automated version of the workflow doc's PR gate. Closes #21.

  • Tests for internal/core. Table-driven tests for project inference (projectByRoot,
    CurrentProject — all three sources), config parsing, WorkDir precedence, window/status
    parsing and FindWindow's role-beats-name rule, ListProjects sorting/filtering, HumanAge,
    and WindowStatus. Tmux-facing code is tested through a new seam (tmuxRun) that feeds
    canned tmux output — the same seam the observation layer will build on. make check has
    teeth now. Closes #20.