Releases: hectorcanaimero/orch
Release list
v0.15.0
- Security:
orch dashboard --tunnelnow 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 installcloudflaredfor your system. - Budget guardrail counts real usage and is on for new projects. Claude cache tokens are counted (weighted by what they bill),
orch initwritesbudgets.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 --demoto try it without a project.
Upgrade notes (breaking)
tunnel.provider: autossh/bore(andcommand/args/url_regex) now fail at load with the fix. Remove them and installcloudflared. Atunnel:block nested underdashboard:was always ignored; move it to the top level.orch task set --milestoneis removed. Milestones are the project's phases everywhere; the MCPorch_tasksmilestonefilter takes a phase (2,F2,Phase 2).budget.per_dispatch_usdis passed toclaude --max-budget-usdonly when you write it inconfig.yaml.dashboard.languageacceptsen,es,pt; any other value now fails instead of falling back to Spanish.summary_languagestill 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 receiptand a last-run receipt on Now (copy as Markdown); a first-run checklist built fromorch doctor.orch benchruns 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
- New:
orch ci setupreads 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 runwarns 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-missingwrites real Claude model ids,orch dashboardsays when a rotated token overrides--token,orch initno longer writes the removedfindings:block, and the published portal renders whenindex.htmlis 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
- 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 towardci_max_retries(#276). orch runpicks 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 upgradeinstalls 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 | shFrom 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
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.documentsconfig key. The default isdocs/prd,docs/archandspecs/f*.md. It is rendered with marked and sanitised with DOMPurify. - Live:
orch dashboard --profile stakeholderserves the portal at/stakeholder/, gated by the token, and refreshes every 30s. Old/?token=…links redirect to it.orch publishships the same page as a static site. - No AI spend for the client by default:
show_spend_to_stakeholderisfalse.
Fixes
v0.12.1
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
chore(release): publish without the Homebrew tap until its token exis…
v0.11.0-py — last Python release
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
What's Changed
- fix: close all 4 open issues — #84 SQLite path unification + #86/#87/#88 agy backend by @hectorcanaimero in #89
- chore: bump version to 0.10.1 by @hectorcanaimero in #90
Full Changelog: v0.10.0...v0.10.1
v0.10.0 — agy backend + Serie H templates + SQLite hygiene arc
Highlights
- New backend:
agy(Antigravity CLI) is now a first-class backend alongsideclaude/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),/orchClaude 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_runtimeinstead oftasks.json. Bootstrap detects orphan rows. Transition table matchesFileBackendsemantics. Rowcount guard prevents silent no-op UPDATEs. (PRs #74/#75/#76/#83) - Upgrade path:
orch upgradenow works from source trees anduv tool installlayouts. (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:/orchClaude Code skill +orch install-skills— PR #78 (H-6)feat:nextjs-saastemplate (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 increate()— 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 #70docs: 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
What's Changed
- fix(worktree): commit agent output before push (#60) by @hectorcanaimero in #61
- feat: Sprint G-6 — Slack/Discord webhooks +
orch notifysubcommand by @hectorcanaimero in #62 - feat: Sprint H-2 — consolidate config (option B, honest scope) by @hectorcanaimero in #63
- docs: mark F-6, G-6, H-2 done in next-sprints + product-checklist by @hectorcanaimero in #64
- feat: Sprint H-3 — brand integration (favicon, PWA icons, README hero) by @hectorcanaimero in #65
- feat: Sprint H-4 (README + HN draft) + H-1a (template mechanism +
python-api) by @hectorcanaimero in #66 - feat: Sprint H-1b —
chatbot-whatsapptemplate (Waha + Claude agent) by @hectorcanaimero in #67 - feat: Sprint H-1c —
data-pipelinetemplate (DuckDB + APScheduler) by @hectorcanaimero in #68 - chore: bump version to 0.9.0 by @hectorcanaimero in #69
Full Changelog: v0.8.0...v0.9.1