Repository navigation
v0.8.0
Important
Correction, added after release. The features listed below are real and are in the repository, but they were not reachable from the binary this release ships.
The release pipeline builds ./cmd/duragraph, and that command imported none of the controlplane/ packages. If you installed v0.8.0 and ran duragraph serve, you got the previous implementation — in which llm.token, checkpoint.saved and the SSE heartbeat are absent, cron advances its schedule and logs "cron triggered" without creating any run, and completed runs record no output.
Use v0.8.1 instead. It wires the rebuilt control plane into the binary, selectable with duragraph serve --control-plane=v2. It also fixes migrations that could only ever be applied once per database — v0.8.0's control plane could not restart.
The original notes are left unedited below.
DuraGraph v0.8.0
Single-binary control plane for AI workflow orchestration.
Changelog
Features
- 97b861f: feat(controlplane): complete tenant CRUD (reads + writes) (#221) (@adwiteeymauriya)
- a1ec9df: feat(controlplane): control-plane rebuild — layers 1–4 + store + system endpoints (#214) (@adwiteeymauriya)
- 2abbabb: feat(controlplane): honor config/end_time + graph-name assistant_id on cron create (#226) (@adwiteeymauriya)
- e0db985: feat(controlplane): honor thread_id + if_exists on thread create (#223) (@adwiteeymauriya)
- 94f15d9: feat(controlplane): idempotent assistant create (assistant_id + if_exists) (#224) (@adwiteeymauriya)
- e614b6a: feat(controlplane): resolve assistant_id graph names on run-create (#225) (@adwiteeymauriya)
- 6af5a9c: feat(controlplane): run reaper — fail runs stuck past the redelivery window (+ eventstore extraction) (#219) (@adwiteeymauriya)
- b9932da: feat(controlplane): runs streaming (SSE) + wait — observe and await runs (#220) (@adwiteeymauriya)
- 0c3d6f1: feat(controlplane): worker execution path — push dispatch, ack redelivery, durable checkpoint resume (#217) (@adwiteeymauriya)
- e8b61ac: feat(messaging): LISTEN/NOTIFY-driven outbox relay (#212) (@adwiteeymauriya)
- 9b4621b: feat(messaging): replace watermill with direct nats.go + jetstream (Phase 1/3) (#209) (@adwiteeymauriya)
- 28bf7b0: feat(messaging): transactional outbox in app code, drop trigger (Phase 2/3) (#210) (@adwiteeymauriya)
- 0f81f31: feat(sse): emit checkpoint.saved, tool.call, tool.result, llm.completion (#244) (@adwiteeymauriya)
- 06f3f87: feat(sse): stream llm.token over an ephemeral path (#245) (@adwiteeymauriya)
- 5603b7e: feat(worker): apply the full resume Command (resume + goto), not just update (#234) (@adwiteeymauriya)
- e769c5a: feat(worker): complete the HITL interrupt trigger set (interrupt_after, requires_human, human, tool_calls) (#231) (@adwiteeymauriya)
- cd6ac95: feat(worker): edge-driven graph execution engine (slice 1) (#229) (@adwiteeymauriya)
- 1160d4c: feat(worker): emit execution.node_started and node_failed (#241) (@adwiteeymauriya)
- 26c98d5: feat: HITL interrupt_before pause/resume (worker + resume endpoint) (#230) (@adwiteeymauriya)
- 6ad5cf5: feat: assistant version history read + rollback endpoints (#228) (@adwiteeymauriya)
- 146ec38: feat: honor RunCreate.checkpoint (resume a new run from a prior checkpoint) (#238) (@adwiteeymauriya)
- 2db08d3: feat: honor RunCreate.command (command-on-create) (#236) (@adwiteeymauriya)
- e639adb: feat: honor run-level interrupt_before/interrupt_after from RunCreate (#235) (@adwiteeymauriya)
- c0a7a49: feat: make the control plane compile and work end-to-end for a single user (#242) (@adwiteeymauriya)
- e6b20cb: feat: persist and return assistant context + version (#222) (@adwiteeymauriya)
- 4828d8d: feat: return run results, unwrap thread state, and emit the SSE keepalive (#243) (@adwiteeymauriya)
- 7d9e63c: feat: snapshot assistant versions on create and update (#227) (@adwiteeymauriya)
Bug fixes
- 5b6474c: fix(controlplane): worker reliability — relay shutdown race (INF-2) + dead-letter/graph-error → run.failed (INF-1) (#218) (@adwiteeymauriya)
- afc8cfd: fix(db): allow 'human' in execution_history.node_type (#239) (@adwiteeymauriya)
- 79bddda: fix(docs): make introduction the site entrypoint (#216) (@adwiteeymauriya)
- 80d7bca: fix(docs): redirect docs root to /docs/introduction/ (#215) (@adwiteeymauriya)
- 44579b4: fix(endpoints): validate thread/checkpoint identifiers at the API boundary (#237) (@adwiteeymauriya)
Other
- 38b227b: docs(changelog): record 0.8.0 (#246) (@adwiteeymauriya)
- 5e4a5a8: test(infra): switch integration tests to testcontainers + run in CI (#211) (@adwiteeymauriya)
- b29914e: test(smoke): Tier-2 regression suite — real engine + testcontainers (#213) (@adwiteeymauriya)
Install via Homebrew:
brew tap Duragraph/tap
brew install duragraph
Or download the binary directly from the assets above.