Skip to content

Releases: hectorcanaimero/orch

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 13:51
93d83b1
  • Security: orch dashboard --tunnel now requires a token. Before this release a tunnel published the whole operator dashboard with no login. Tunnels are Cloudflare quick tunnels only; the Tunnel page shows how to install cloudflared for your system.
  • Budget guardrail counts real usage and is on for new projects. Claude cache tokens are counted (weighted by what they bill), orch init writes budgets.yaml, and Slack/Discord can warn you at 80% of a provider's window.
  • New operator dashboard. "Now" shows which agents are working, what needs you and the budget window; four destinations instead of eleven pages; ⌘K palette; dark theme; Spanish and Portuguese; orch dashboard --demo to try it without a project.

Upgrade notes (breaking)

  • tunnel.provider: autossh / bore (and command/args/url_regex) now fail at load with the fix. Remove them and install cloudflared. A tunnel: block nested under dashboard: was always ignored; move it to the top level.
  • orch task set --milestone is removed. Milestones are the project's phases everywhere; the MCP orch_tasks milestone filter takes a phase (2, F2, Phase 2).
  • budget.per_dispatch_usd is passed to claude --max-budget-usd only when you write it in config.yaml.
  • dashboard.language accepts en, es, pt; any other value now fails instead of falling back to Spanish. summary_language still works as an alias.
  • Dashboard: / is now Now; the client summary moved to /delivery/summary. Old addresses redirect.
  • Migration 007 adds cache-token columns to spend; migrations now run inside a transaction.

Also new

  • orch report receipt and a last-run receipt on Now (copy as Markdown); a first-run checklist built from orch doctor.
  • orch bench runs one project with each provider and compares done tasks, time and spend (requires --max-usd; it dispatches real agents).
  • Executive summary, client portal and PDF in Portuguese; blockers show what blocked the task.
  • The dependency graph no longer bundles mermaid (-5.2 MB) and works offline.
  • Site: a spec → DAG playground in the browser and a project template gallery.

All changes

What's Changed

  • fix(dashboard): milestones are phases, Sprint is Pace, and the commands it names exist by @hectorcanaimero in #297
  • fix(budget): the guardrail counts real usage, is on for new projects, and the dashboard explains it by @hectorcanaimero in #298
  • feat(dashboard): orch dashboard --demo serves a synthetic project by @hectorcanaimero in #296
  • fix(dashboard): Cloudflare-only tunnel that requires a token, with guided install by @hectorcanaimero in #300
  • feat(web): dispatch-console design system for the operator dashboard (part 1) by @hectorcanaimero in #299
  • fix(budget): weight cache tokens in the window, and send --max-budget-usd only when per_dispatch_usd is written by @hectorcanaimero in #301
  • test(web): cover the dictionary, theme, status scale and Explain (follow-up to #299) by @hectorcanaimero in #302
  • chore(web): draw the dependency graph without mermaid (-5.2 MB) and lint web/ in CI by @hectorcanaimero in #303
  • feat(web): Milestones, Pace, Budget and Tunnel on the dispatch-console system (design system part 2) by @hectorcanaimero in #304
  • feat(i18n): Portuguese for everything a client reads, and blocker reasons that say what blocked the task by @hectorcanaimero in #305
  • test(web): Budget and Pace keep their labels and exclusions (follow-up to #304) by @hectorcanaimero in #306
  • feat(dashboard): Now as the first screen, and four destinations instead of eleven pages by @hectorcanaimero in #307
  • feat(notify): alert Slack/Discord before a provider hits its budget cap by @hectorcanaimero in #308
  • feat(site): spec playground in WebAssembly and a project template gallery by @hectorcanaimero in #309
  • feat(web): command palette (⌘K) and keyboard shortcuts for the operator dashboard by @hectorcanaimero in #310
  • feat(dashboard): the last run's receipt on Now, a first-run checklist, and orch report receipt by @hectorcanaimero in #311
  • feat(bench): orch bench compares providers on the same project by @hectorcanaimero in #312
  • feat(i18n): the operator dashboard in Spanish and Portuguese, with a language button by @hectorcanaimero in #313
  • fix(bench): one database connection per copy, and errors that say where they failed by @hectorcanaimero in #314

Full Changelog: v0.14.0...v0.15.0

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 11:58
5ca3b23
  • New: orch ci setup reads your repository and writes the CI pipeline it calls for (lint, typecheck, tests, build per package), and can add an AI review of every pull request with Claude, Gemini, OpenAI or OpenRouter and the model you pick.
  • New: a CI page in the operator dashboard shows how the pipeline is set up and where every pull request stands; the client portal shows how every delivery is checked.
  • Task worktrees now live next to the project (../<project>.worktrees/<task>) instead of inside it, so pnpm and Node stop resolving the parent checkout.
  • orch run warns and notifies when a run stalls, and a PR merged or closed by hand now finishes or blocks its task instead of being polled forever.
  • Fixes: router add-missing writes real Claude model ids, orch dashboard says when a rotated token overrides --token, orch init no longer writes the removed findings: block, and the published portal renders when index.html is opened from disk.

Upgrading

orch upgrade installs it (from v0.13.1 on, orch already told you about this release). Worktrees left inside .worktrees/ by an older run still resolve and are listed by orch doctor; new ones go to the sibling directory, which must be writable.

What's Changed

  • feat(dashboard): a CI page for the operator, and tasks carry their PR and CI by @hectorcanaimero in #281
  • fix(scaffold): orch init no longer writes the removed findings block by @hectorcanaimero in #282
  • fix(dashboard): warn when a rotated database token overrides --token or dashboard.token by @hectorcanaimero in #283
  • fix(router): map claude model families to real cli_model ids and warn on unknown ones by @hectorcanaimero in #284
  • fix(engine): a merged or closed PR is final in the CI poller by @hectorcanaimero in #285
  • feat(ci): orch ci detect and orch ci setup propose the pipeline a repository calls for by @hectorcanaimero in #286
  • fix(engine): a stalled orch run warns and notifies once by @hectorcanaimero in #287
  • feat(providers): Result.Text carries the model's final answer by @hectorcanaimero in #289
  • fix(worktree): put task worktrees next to the project, not inside it by @hectorcanaimero in #288
  • feat(ci): orch ci review runs an AI review of a pull request inside CI by @hectorcanaimero in #290
  • fix(engine): read a PR's state only when CI cannot settle it, and announce a closed PR with its reason by @hectorcanaimero in #291
  • feat(portal): the client sees how every delivery is checked by @hectorcanaimero in #292
  • fix(publish): the exported portal renders when index.html is opened from disk by @hectorcanaimero in #294
  • feat(ci): orch ci setup adds an AI review of every pull request by @hectorcanaimero in #295

Full Changelog: v0.13.1...v0.14.0

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 15 Sep 09:33
f7a3ec8
  • A CI retry that pushes a fix to the same PR no longer ends orch run: it keeps its PR, waits on its CI again, and still counts toward ci_max_retries (#276).
  • orch run picks up task statuses changed outside it (a task unblocked by hand, a failed bookkeeping write) instead of stalling or exiting with ready work (#255).
  • Stakeholder sessions opened with v0.12 keep working in the client portal: it falls back to the token the browser saved (#274).
  • New: orch tells you when a new release is out, with what it brings, and orch upgrade installs it (checksum-verified).

Upgrading from v0.13.0 or earlier

This is the first release that can tell you about the next one, so upgrade by hand this once:

curl -fsSL https://raw.githubusercontent.com/hectorcanaimero/orch/main/scripts/install.sh | sh

From here on, orch shows new releases at the terminal (at most once a day; ORCH_NO_UPDATE_CHECK=1 turns it off) and orch upgrade installs them.

What's Changed

  • fix(engine): a CI retry keeps its PR, and orch run adopts statuses changed outside it by @hectorcanaimero in #277
  • fix(web): the client portal falls back to the token this browser saved by @hectorcanaimero in #278
  • feat: orch says when a new release is out, and orch upgrade installs it by @hectorcanaimero in #279

Full Changelog: v0.13.0...v0.13.1

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 00:53
80ebc3d

The client portal

The stakeholder view stops being a trimmed copy of the operator dashboard. It is now a portal written for the client.

  • Overview: a status line with the estimated finish date, progress counted in deliverables, what is on hold, the current phase, and what was delivered since the last visit.
  • Roadmap: phases and packages named from the specs, each expanding to plain-language deliverables with no task IDs.
  • Documents: markdown the operator shares through the new portal.documents config key. The default is docs/prd, docs/arch and specs/f*.md. It is rendered with marked and sanitised with DOMPurify.
  • Live: orch dashboard --profile stakeholder serves the portal at /stakeholder/, gated by the token, and refreshes every 30s. Old /?token=… links redirect to it. orch publish ships the same page as a static site.
  • No AI spend for the client by default: show_spend_to_stakeholder is false.

Fixes

  • A stakeholder session only sees the pages its token can load, with no raw 403s and no endless skeletons (#264).
  • One finish date across every page, one spend figure, and a real blocked reason (#265).
  • A top bar instead of the sidebar on small screens (#268).

PRs: #264 #265 #268 #269 #270 #271 #272 #273

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 10:34
6496199
fix: clear stale PR/CI tracking when a task resets to todo (#263)

A task moved back to todo (`orch task-status <id> todo` or `orch reset`)
kept its old pr_url, ci_status and ci_attempts columns untouched.
TasksWithPendingCI filters only on ci_status='pending' with a non-empty
pr_url, so the CIPoller kept asking the forge about a PR that no longer
matched the task's current attempt — logging "reading CI status failed"
every tick even after a fresh PR had opened and merged (issue #255,
evidence bullet 2).

Transition now clears pr_url/ci_status/ci_attempts whenever the
destination is todo. The CI retry path (cipoll.go's redispatch) does not
go through Transition — it only updates the in-memory queue — so a retry
against the same PR is unaffected.

Co-authored-by: Claude <noreply@anthropic.com>

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 00:46
7117366
chore(release): publish without the Homebrew tap until its token exis…

v0.11.0-py — last Python release

Choose a tag to compare

@hectorcanaimero hectorcanaimero released this 11 Sep 18:08

Final release of the Python implementation of orch. Development continues in Go as a single binary; see docs/brainstorm/go-migration-notes.md. This tag and the python-legacy branch stay available for anyone running the Python version.

What's Changed

  • feat(config): ship sqlite, worktrees and auto-PR on by default (G0.2) by @hectorcanaimero in #91
  • chore: G0 Python hygiene — repo defaults, README rivals, CLAUDE.md fixes by @hectorcanaimero in #92
  • docs: consolidate G0 state (test baseline, sqlite default, Go layout notes) by @hectorcanaimero in #93
  • chore: drop remaining board_url and jinja2 leftovers by @hectorcanaimero in #94
  • docs: stakeholder screenshot + 30-second GIF shooting script (G0.3) by @hectorcanaimero in #95
  • fix: project templates write camelCase task keys Task.from_json reads by @hectorcanaimero in #96
  • fix(dashboard): serve the SPA shell without a token so the stakeholder URL works by @hectorcanaimero in #97

Full Changelog: v0.10.1...v0.11.0-py

v0.10.1

Choose a tag to compare

@github-actions github-actions released this 30 Aug 00:09
66c6c21

What's Changed

Full Changelog: v0.10.0...v0.10.1

v0.10.0 — agy backend + Serie H templates + SQLite hygiene arc

Choose a tag to compare

@github-actions github-actions released this 29 Aug 22:02

Highlights

  • New backend: agy (Antigravity CLI) is now a first-class backend alongside claude / codex / opencode / gemini. Multi-backend dispatch now covers 5 CLIs. (PR #82)
  • Serie H shipped: 4 canonical templates in orch init (python-api, chatbot-whatsapp, data-pipeline, nextjs-saas), /orch Claude Code skill + orch install-skills, and wizard summary+confirm gate. (PRs #66/#67/#68/#77/#78/#80)
  • SQLite hygiene arc: SQLite is now the real source of truth — dashboard + dispatcher read from tasks_runtime instead of tasks.json. Bootstrap detects orphan rows. Transition table matches FileBackend semantics. Rowcount guard prevents silent no-op UPDATEs. (PRs #74/#75/#76/#83)
  • Upgrade path: orch upgrade now works from source trees and uv tool install layouts. (PR #79)

What's changed

New features

  • feat(dispatcher): agy (Antigravity CLI) as fifth backend — PR #82 (F-14)
  • feat(init): wizard summary + confirm gate + colorized next-steps checklist — PR #80 (H-7)
  • feat: /orch Claude Code skill + orch install-skills — PR #78 (H-6)
  • feat: nextjs-saas template (Next.js 14 + Clerk + Supabase) — PR #77 (H-1d)

Bug fixes

  • fix(sqlite): expand _STATUS_TRANSITIONS + rowcount guard — PR #83, closes #81 (F-13)
  • fix(sqlite): detect orphan runtime rows in bootstrap + doctor — PR #76, closes #73 (F-13)
  • fix(state): SQLite becomes real source of truth for runtime status — PR #75, closes #72 (F-12)
  • fix(worktree): pre-purge orphan branch in create() — PR #74, closes #71 (F-13)
  • fix(upgrade): stdlib version fallback + `uv tool install` detection — PR #79 (F-11)

Chores + docs

  • chore(release): ignore runtime dirs, stop blocking release on untracked files — PR #70
  • docs: sync roadmap + product-checklist + CLAUDE.md — PR #85

Verification

  • Test suite: 1370 passed, 2 skipped, 0 failed on `main` @ `cf08bea`.
  • Backends verified: `claude`, `codex`, `opencode`, `gemini`, `agy`.
  • Wheel: `orchestrator-0.10.0-py3-none-any.whl` (554 KB) attached to this release.

Known follow-ups

  • H-1e — `expo-mobile` template (last of the 5 canonical, still pending).
  • #84 — new state divergence within SQLite paths reported after v0.10.0 was cut: dashboard reads `.orchestrator/state/{project}/orch.db` while CLI writes `.orchestrator/state/orch.db`. F-15 candidate.

Install / upgrade

```bash

pipx

pipx upgrade orchestrator # if already installed
pipx install orchestrator # first time

uv tool

uv tool upgrade orchestrator
uv tool install orchestrator

Verify

orch --version # → 0.10.0
```

Semver note: pre-1.0 minor bump. New backend is additive — no breaking changes to routes, config schema, or CLI contract. The widened SQLite transition table is permissive vs the prior state; anything that was legal before is still legal.

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 29 Aug 10:38

What's Changed

Full Changelog: v0.8.0...v0.9.1