Skip to content

igris v0.5.0

Choose a tag to compare

@drilonrecica drilonrecica released this 08 Oct 13:50
· 87 commits to master since this release

igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.

v0.5.0 shows you what a run is doing and what it did: the run view gets the phase's progress, an estimate for the current task and a live tail of its session, and igris report turns a finished run into markdown for your PR. Notifications reach Slack, Gotify and your own automation through a signed webhook, with message templates, quiet hours and digests. Everything is additive: no plan or config migration is needed.

Highlights

  • igris report [RUN] [--json]. One run as markdown, ready to paste into a PR description: how it ended, what was done and skipped, per task its duration, attempts, verify results, commit and how long it waited on you, the done notes and skip reasons, and a claude --resume <uuid> for each session you can reopen. RUN is 1 (the newest), 2, … or a run ID from igris history. See Quick start.
  • Progress and ETA. The run view's header shows phase M1 · 7/12 · 58% ██████░░░░ (or the slice's progress for --only/--from/--until). Once your past runs have at least 3 finished tasks of the current rank, the task card adds ≈ 14m left from their median.
  • Live tail. The current-task card shows the session's last lines (6, or 3 on a narrow terminal), so you can see what Claude is doing without switching tabs. It is only drawn, never logged, sent or stored; [tui] tail = false turns it off.
  • Slack, Gotify and a generic webhook. [notify.slack], [notify.gotify] and [notify.webhook], with secrets as env:VAR references. The webhook POSTs a fixed JSON payload and signs it with HMAC-SHA256 when you give it a secret. See Notifications.
  • Templates, quiet hours and digests. A template per channel (Go text/template over the event, project, phase, task, title, run ID and time) is checked when igris.toml loads. [notify] quiet = "22:00-07:00" holds everything but the urgent events and sends one digest per channel when the window ends; task_done_digest groups finished tasks into one message per N tasks or per phase.
  • A documented run log. .igris/runs.jsonl lines are now versioned ("v":1) and carry the run ID, attempt, Claude session, verify profile, commit SHA, durations and when igris waited on you. The format is in docs/runlog.md; igris history shows each run's ID.

Upgrade

brew upgrade igris                         # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.5.0

Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:

sha256sum --ignore-missing -c checksums.txt    # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.5.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris version

Your v0.4 plans and configs work unchanged, and keep their config hash: a run interrupted under v0.4 resumes without a config-changed notice. Your existing runs.jsonl keeps working; history and report show — for details old runs didn't record.

Behavior changes

  • The live tail is on by default. igris reads the current session's pane every poll_interval to draw it. Set tail = false under [tui] to turn it off; igris then never reads the pane.
  • igris history shows run IDs after each run's start time ("run" in --json). Scripts parsing the text output may need adjusting.
  • A damaged runs.jsonl line no longer breaks igris history: lines that can't be read are skipped with a note, and the rest shows.
  • runs.jsonl lines carry "v":1 and new fields and events (task_retried, needs_you, needs_you_clear). Existing fields keep their meaning; scripts reading the file should ignore what they don't know.
  • The narrow run view's top line shows the phase's progress (M0 · 3/7) instead of phase M0.
  • Notifications don't follow redirects (ntfy and Discord included): a 3xx is reported as a failure, so set the final URL. Failures say only what went wrong (connection refused, TLS failed, server answered 403 Forbidden, …), never the URL or host. Discord and Slack webhook URLs must be https.

Known limitations

  • Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
  • Release artifacts are not signed (SHA-256 checksums only).

See CHANGELOG.md for every change in this release and the README for the full guide.