Repository navigation
v0.4.0
The first release since v0.3.0, and the largest so far: 13 breaking changes, 4 additions and 41 fixes, almost all of them found by running the product against its own documentation and a real model rather than by reading the code.
Read this before upgrading
Most of the breaking changes are commands and endpoints that used to report success over a failure. If you have scripts, these are the ones that will change behaviour under them.
idea status exits non-zero when the newest initiative has failed. It printed ● failed with the provider's full error and returned 0, so a script running it as a health check could not tell. Any script that branched on its exit code saw success unconditionally and will now stop. Two deliberate limits: an initiative merely waiting on your judgment is not a failure and still exits 0, and only the newest initiative is considered — scanning all of them made the exit sticky, so one abandoned experiment gated the overview command forever. idea status --json now also carries failure_reason.
Three endpoints reject undeclared body fields. PUT …/providers, PUT …/executors and POST …/change-sets/{id}/review used to accept an unknown field, drop it silently and answer 200. They now answer 400 naming it. This matters most for an inline api_key, which was being discarded rather than rejected — the failure mode that costs money. Neither config endpoint is round-trippable from its own GET: the responses carry fields the writes do not accept, and GET /executors is a catalog of executor kinds rather than a projection of the config.
idea verify can no longer complete a failed initiative, and no longer discards a requirement you named. idea doctor now fails when the daemon lacks the API key your configured model needs, and when the daemon is running a different build than the CLI. Six endpoints answer 404 for an id matching nothing where they previously answered 200 over an empty result.
CHANGELOG.md has all thirteen with Was/Now rows and the reasoning.
What is better
Errors now tell you what to do. idea init against a held port used to print nothing for a code-bound ~51 minutes; it now fails in ~1 second quoting the bind error. A model call that hangs reports elapsed time and how to cancel it, instead of working… for fifteen minutes. idea next prescribes a change-set id that actually resolves. idea retry waits and reports what the retry reached rather than reporting that it started. All three of the recovery scenarios that previously exceeded the five-minute target now complete in seconds.
Installing
Download the archive for your platform and put idea on your PATH. The web UI is embedded — no Go or Node toolchain needed.
shasum -a 256 -c checksums.txt
linux/arm64 is built and shipped, but its SQLite driver is compiled per-architecture and is not exercised in CI; see the install section of the README.
Trying it
idea init && idea new "<your idea>" runs the whole loop on a built-in demo provider with no API key — deterministic, offline, synthetic output labelled as such, and it reaches a completed initiative in under two seconds.
With a real model the shape differs and the README says how: the adversarial reviewer genuinely blocks, so the run stops twice for your judgment before it reaches a change set, and the requirement codes are not REQ-1. The default executor writes a placeholder file rather than real code; wiring a coding agent is a separate opt-in step with security tradeoffs set out in docs/agents.md.
Pre-1.0: the CLI surface, HTTP API and config schema may change in any release.