Skip to content

igris v0.4.0

Choose a tag to compare

@drilonrecica drilonrecica released this 08 Oct 10:02
· 186 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.4.0 lets your plan say more about each task: which checks to run when it's done, how long it should take, and which files the session must read first. igris can also run just part of a plan, put a task back, run your own commands around every session, and lint a plan for CI. Everything is optional: no plan migration is needed. One default changes: sessions now run in Claude Code's auto permission mode unless your igris.toml sets default_mode.

Highlights

  • Verify profiles. Name your checks in igris.toml ([verify] fast = "go test ./internal/...", full = "make fmt lint test"), give a phase its own with [phases.<id>] verify, and pick one per task with the new Verify column, or none to skip. Plans name profiles, never commands. run.verify keeps working as the profile default. See Verification and commits.
  • Timeout column. 45m, 1h30m (at least 1s): a session running longer is marked overdue, raises Needs you and sends the new task_overdue notification, once per attempt. igris never stops the session for it.
  • Context column. Repo-relative files and directories the session reads before changing anything, listed in the task prompt as required reading. igris names the paths and never sends their contents; every path must exist inside the project.
  • Run a slice. igris arise --only M1-03,M1-05, --from M1-03, --until M2-02. Dependencies still count: a slice task that waits on unfinished work is reported as not run, never forced. A bare arise resumes the same slice.
  • igris reset ID [--force]. Put a task back to ready or blocked to run it again, with or without an igris running. While igris runs, it asks you to confirm the reset first (a session could request one too). Resetting the task igris is on closes its session and pauses the run.
  • Task hooks. [hooks] before_task / after_task run your own commands (argv lists, no shell) around every agent session, e.g. to start a dev database. A failing before_task opens no session and asks you what to do.
  • igris check --strict. Lints the plan (missing bold titles, overlong rows, gates that miss tasks of their phase, yolo rows, …) and exits 1 on any plan or config warning. Machine warnings never fail it, so it runs in CI without Claude Code.

A worked example is in examples/advanced/: the example plan with Verify profiles, Timeouts and Context paths, and the igris.toml that defines its profiles.

Upgrade

brew upgrade igris                         # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.4.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.4.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris version

Your v0.3 plans and configs work unchanged, with the exceptions below: a config without default_mode now runs sessions in auto mode, a plan column already named Verify, Timeout or Context is read as the new column, and a config written by v0.3 igris init doesn't send the new task_overdue on ntfy or Discord by itself. A run interrupted under v0.3.x resumes normally; if your config sets neither default_mode nor an events list, you get a one-time warning that igris.toml changed since the interrupted run (both defaults changed, so the config's hash differs even if you didn't edit the file).

Behavior changes

  • auto is the default run mode. Configs that don't set default_mode now run sessions with --permission-mode auto: Claude Code approves routine actions itself and still asks you about risky ones. Set default_mode = "default" to keep every prompt going to you. Skip-permissions (yolo) still needs the typed skip permissions confirmation every run.
  • Verify, Timeout and Context are now column names igris reads. If your plan already has a column with one of these names for something else (a command, an estimate, notes), igris check may now reject it. Rename the column (e.g. Verify notes), let igris adapt do it, or keep it as an extra column with an alias in igris.toml ([columns] Context = "Background"). These columns no longer reach the session prompt as extra columns.
  • task_overdue is in every channel's default events. If your config lists events (every config written by v0.3 igris init does), add it there or remove the events line to hear about overdue tasks. igris init now leaves events out while it is the default list, so new configs follow the defaults.
  • igris adapt keeps Verify, Timeout and Context cells as written and never invents profiles, timeouts or paths.
  • Plain igris check is unchanged; the lint hints appear only with --strict.

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.