Skip to content

Releases

v0.13.0

Choose a tag to compare

@quailops quailops released this 04 Nov 13:48
fad98ab

0.13.0 (2026-11-04)

Features

  • dashboard: a run's steps as a graph, a page per step, and Item and Subjects (#352) (028e2eb)
  • dashboard: bun run dev:dashboard serves the page with hot reload (#349) (59f0d7a)
  • dashboard: the overview in tabs, a Flows tab, and attention folded (#350) (92968aa)
  • markers: a marker can declare how to renew it, and the daemon renews every held marker that does (#356) (06d8996)
  • runs: steps' ends and outcomes, a flow's lanes, and run log lines tagged with their step (#351) (871584c)

Bug Fixes

  • recipes: an epic task whose layer below merges as its pull request opens goes onto the branch that layer merged into (#345) (81db861)
  • recipes: resolve-conflicts records a squash-merged layer below before merging its base (#347) (94b5d7d)
  • release: stop pinning @chernabog/core to 1.0.0 (#357) (5fba49f)

sdk: v0.10.0

Choose a tag to compare

@quailops quailops released this 04 Nov 13:48
fad98ab

0.10.0 (2026-11-04)

Features

  • runs: steps' ends and outcomes, a flow's lanes, and run log lines tagged with their step (#351) (871584c)

Bug Fixes

  • recipes: resolve-conflicts records a squash-merged layer below before merging its base (#347) (94b5d7d)

recipes: v0.4.0

Choose a tag to compare

@quailops quailops released this 04 Nov 13:48
fad98ab

0.4.0 (2026-11-04)

Features

  • runs: steps' ends and outcomes, a flow's lanes, and run log lines tagged with their step (#351) (871584c)

Bug Fixes

  • recipes: an epic task whose layer below merges as its pull request opens goes onto the branch that layer merged into (#345) (81db861)
  • recipes: resolve-conflicts records a squash-merged layer below before merging its base (#347) (94b5d7d)

core: v1.1.0

Choose a tag to compare

@quailops quailops released this 04 Nov 13:48
fad98ab

1.1.0 (2026-11-04)

Features

  • markers: a marker can declare how to renew it, and the daemon renews every held marker that does (#356) (06d8996)
  • runs: steps' ends and outcomes, a flow's lanes, and run log lines tagged with their step (#351) (871584c)

v0.12.0

Choose a tag to compare

@quailops quailops released this 01 Nov 14:11
eef4141

0.12.0 (2026-11-01)

Features

  • a post-merge recipe watches CI on a merged pull request's merge commit, and files a follow-up issue when it's red (#196) (9ff6f8a)
  • cli: every command writes its spans and logs to telemetry/ in the chernabog home (#315) (6b25f40)
  • cli: state-changing commands dispatch through the daemon, so their events reach its bus (#334) (006fb73)
  • daemon: /events streams a snapshot, then every event, over SSE (#333) (0ab80ab)
  • daemon: a daily sweep keeps telemetry to 30 days and 500 MB (#316) (73ac86c)
  • daemon: chernabog ui opens a 127.0.0.1 listener for the dashboard, behind a token (#336) (d82e0e7)
  • daemon: rotate daemon.log daily, keep 30 days, and send the service's output to daemon.out.log (#317) (4f030c0)
  • dashboard: a run's detail, with its history and a live log (#342) (b93025c)
  • dashboard: packages/dashboard, a React page the daemon serves at / and the binary embeds (#332) (f374e75)
  • dashboard: pause a repo and change a persona's settings from the browser (#341) (37f174c)
  • dashboard: the overview of repos, flows, runs and health (#338) (4c380db)
  • dashboard: trigger, cancel and attach to runs from the browser (#340) (548fc53)
  • hold an approved merge while CI on the base branch is red, rather than handing the pull request to a person (#292) (0ec429b)
  • platform: a tracer and logger that append spans and logs to day-sharded JSONL files (#314) (0aab7ed)
  • runs: release an ended run's markers on RunFinished, and the daemon learns of every ending from it (#303) (b002c1e)
  • runs: run logs are deleted 30 days after their run finishes (#318) (71fa896)
  • tui: the live view follows /events instead of asking /status every second (#335) (3e5d440)

Bug Fixes

  • recipes: a re-review requests changes only for a blocking finding, and fixes keep the pull request's description current (#337) (c545d57)
  • recipes: address-review and resolve-conflicts own the pull request they push to, so they never push to its branch at once (#200) (2ca2dc5)
  • the pre-commit hook runs the fast checks, not the tests, so an agent's commit lands before it answers (#199) (e4b56a8), closes #198

sdk: v0.9.0

Choose a tag to compare

@quailops quailops released this 01 Nov 14:11
eef4141

0.9.0 (2026-11-01)

Features

  • hold an approved merge while CI on the base branch is red, rather than handing the pull request to a person (#292) (0ec429b)

Bug Fixes

  • recipes: a re-review requests changes only for a blocking finding, and fixes keep the pull request's description current (#337) (c545d57)
  • the pre-commit hook runs the fast checks, not the tests, so an agent's commit lands before it answers (#199) (e4b56a8), closes #198

recipes: v0.3.0

Choose a tag to compare

@quailops quailops released this 01 Nov 14:11
eef4141

0.3.0 (2026-11-01)

Features

  • a post-merge recipe watches CI on a merged pull request's merge commit, and files a follow-up issue when it's red (#196) (9ff6f8a)
  • hold an approved merge while CI on the base branch is red, rather than handing the pull request to a person (#292) (0ec429b)

Bug Fixes

  • recipes: a re-review requests changes only for a blocking finding, and fixes keep the pull request's description current (#337) (c545d57)
  • recipes: address-review and resolve-conflicts own the pull request they push to, so they never push to its branch at once (#200) (2ca2dc5)
  • the pre-commit hook runs the fast checks, not the tests, so an agent's commit lands before it answers (#199) (e4b56a8), closes #198

v0.11.1

Choose a tag to compare

@quailops quailops released this 30 Oct 21:42
5683de3

0.11.1 (2026-10-30)

Bug Fixes

  • a GitHub 5xx is tried again for about 30 seconds, on the API and on a push, rather than ending the run or going to a person (#260) (6509a7e), closes #254
  • recipes: a repo that checks its titles gets conventional commits, and CI fixes edit a failing title (#247) (6e7c51a)
  • recipes: an epic task whose layer below merges mid-task opens on the branch that layer merged into (#265) (114033d)
  • three tests no longer race the runner, and cleanup survives a claim branch deleted under it (#223) (130da9b)

v0.11.0

Choose a tag to compare

@quailops quailops released this 30 Oct 05:12
439b487

0.11.0 (2026-10-30)

⚠ BREAKING CHANGES

  • @chernabog/core is the binary's contract with every repo's flows, and each repo runs the @chernabog/sdk it pins (#167)

Features

  • @chernabog/core is the binary's contract with every repo's flows, and each repo runs the @chernabog/sdk it pins (#167) (4c9db37)
  • a notification about an issue or pull request checks its runs' stillValid within seconds (#165) (3b3e5ce)
  • a run names the subjects it touched, instead of the engine recording its pull request (#210) (799e427)
  • a trigger can report an item as held, with a reason, and status shows it (#183) (ac588bf)
  • CI is read as checks and statuses, the SDK decides the verdict, and cancel leaves labels to markers (#217) (caf8574)
  • CI state for a commit or a branch, and ciState counts every check when branch rules are refused (#190) (d288d93)
  • claims are leases: the daemon renews its runs' claims, an expired one can be taken over, and a run that lost its claim ends as lost (#169) (7d90433)
  • Epic.tasks works out which of an epic's tasks are ready, the base each stacks on, and why the rest wait (#187) (36ff85f)
  • fencing and change reporting cover every write a capability declares, without the engine naming methods (#211) (8632c19), closes #205
  • flows declare their own settings, and core's settings are only the engine's (#214) (0037fdd)
  • implement adopts an open pull request that already closes its issue, instead of implementing it again (#191) (425803c)
  • Implement and Hybrid blocks take a base branch per item, not only repo.baseBranch (#168) (1f716ea)
  • markers: a run registers what it put on an item, and the daemon takes it off however the run ends (#164) (fdca485)
  • recipes: an epic recipe that implements an epic's tasks as stacked pull requests (#193) (0fe6ebd)
  • recipes: an epic with ship set lands its layers, bottom to top, once each is approved (#220) (e614164)
  • recipes: an epic's tasks implemented at once is its atOnce setting (#221) (9a8f1f2)
  • recipes: the epic run carries a lower layer's change up its stack (#197) (d528b27)
  • routing is the flow's decision, not the engine's (#215) (805af1a), closes #204
  • runs whose issue or pull request goes away end as superseded (flows' stillValid, checked by the daemon) (#160) (c0bbcfb)
  • sdk: an approval survives a head that only merged in its base (#184) (8a6c44f)
  • sdk: implement holds a blocked issue, and leaves an epic run's tasks to it (#188) (4f66c12), closes #177
  • sdk: Stack.refreshLayer brings a layer whose base moved up to date and adjusts it, outside the review rounds (#189) (205ab4c)
  • sdk: Stack.syncBase merges a layer's moved base in, including a squash-merged layer below (#186) (1487c3f)
  • the config branch is GitHub's default, and a flow's work targets its own base (#216) (4a4ffd5)

Bug Fixes

  • a worktree left by an earlier run is reset to the claimed branch, so implement's push no longer fails with stale info (#159) (9552a27)
  • recipes: an approved layer of a stack waits for the layer below, rather than going to a person (#219) (4f450ab)
  • review, address-review and merge treat a pull request stacked on another branch as a layer (#185) (9b834b8)
  • runs preparing worktrees at once no longer collide on the checkout's git locks (#212) (#213) (d4ee04b)
  • sdk: addressing a review stops for a person when the author leaves edits uncommitted (#194) (657528d), closes #192

sdk: v0.8.1

Choose a tag to compare

@quailops quailops released this 30 Oct 21:42
5683de3

0.8.1 (2026-10-30)

Bug Fixes

  • recipes: a repo that checks its titles gets conventional commits, and CI fixes edit a failing title (#247) (6e7c51a)
  • recipes: an epic task whose layer below merges mid-task opens on the branch that layer merged into (#265) (114033d)