3.4.0 (2026-10-01)
Features
- loop: hand a Dependabot PR to the human when @dependabot recreate stalls (#256) (4f46519), closes #255
3.3.0 (2026-10-01)
Features
- loop: stack dependent issues on their parent's open PR, retarget on merge (#254) (1234bc3), closes #253 #N #N 233/#234
3.2.0 (2026-10-01)
Bug Fixes
- loop: report skipped ai-ready pickups with a reason (#247) (dbe9058), closes #244
- loop: skip review claims on arms already passed or claimed (#246) (b7c7a7e), closes #243
Features
- loop: choose the review tier from the diff — one combined reviewer for docs-only PRs (#249) (cdf34ab), closes #241
- loop: review Dependabot PRs labelled ai-review and recreate red ones (#248) (9412e15), closes #240
Performance Improvements
3.1.2 (2026-09-29)
Bug Fixes
- workflows: verify reviewer verdicts against the PR instead of trusting the return (#236) (8249869), closes #235
3.1.1 (2026-09-29)
Bug Fixes
- deps: override serialize-javascript and uuid to patched versions (#232) (d98b626)
- loop: leave PRs whose base isn't the default branch out of the tick (#234) (9fb413d), closes #233
3.1.0 (2026-09-29)
Features
3.0.1 (2026-09-29)
Bug Fixes
- loop: exclude .claude/ai-loop-status from git status in every repo the loop drives (#229) (8656f2d), closes #228
3.0.0 (2026-09-29)
- feat(config)!: drop the .repo-tooling.json fallback (#191) (1470a66), closes #159
- feat(loop)!: drop eval of loop env from the skill (#192) (5a6b18e), closes #151 #150
- refactor(loop)!: make loop tick read-only (#193) (dbf1600), closes #147 #149
Bug Fixes
- loop: conflict fixes merge the default branch instead of rebasing (#224) (bf73528), closes #216
- loop: don't serialise pickups on shared doc files (#186) (5b02276), closes #180 #185 #159 #156 #152
- loop: give each reviewer a unique review body file (#210) (4b8c23b), closes #206
- loop: loop watch wakes only when new work appears (#184) (077c556), closes #183
- loop: paginate the capped GitHub queries (#173) (3fef111), closes #163
- loop: read the default branch instead of assuming origin/main (#177) (095d01b), closes #161
- loop: rerun every failing check's run, not just the first (#213) (3c0b67b), closes #211
- loop: resolve the default branch for the ci-runs probes (#198) (264b76c), closes #179
- loop: scope the ci-runs probes to the ci.yml workflow endpoint (#197) (71c1a4d), closes #174
- loop: size the pickup token reservation per agent role (#226) (d7237d6), closes #218
- loop: warn at once when a waiting release run is stale (#225) (647e0be), closes #220
- loop: warn when a release run has waited on approval for over a day (#187) (ed1b7ad), closes #57 #60 #153 #146
- loop: warn when main CI runs are cancelled or pending with no jobs (#172) (78ed00c), closes #153
Features
- config: add humanUser for organisation-owned repos (#178) (c35ca44), closes #162
- config: make the ci-runs workflow file configurable (#212) (713c5ff), closes #201
- config: make the loop's limits, cadences and stall timeout configurable (#195) (fe9843b), closes #158
- doctor: check the Claude Code allow rules the loop needs (#190) (764ef3a), closes #152
- doctor: detect stale skills installed through the plugin (#171) (bceb367), closes #116 #132 #154
- loop: add loop apply for handoff, send-back and cleanup transitions (#196) (e1f3a0c), closes #147
- loop: cap concurrent agents across Workflows with maxAgents (#200) (3ae0ba6), closes #167
- loop: keep the reviews when a conflict fix leaves the diff unchanged (#223) (ccd385d), closes #216 #216 #216 #217
- loop: loop apply takes the review, fix and pickup claims (#199) (51625fc), closes #594 #148
- loop: make loop watch the default driver (#189) (311e889), closes #156
- loop: name the PR in handoff notifications (#168) (b72707b), closes #157
- loop: re-run a failed check once before sending a PR back ci-red (#209) (15cfa95), closes #202
- loop: resync a PR whose head lags its branch (#222) (55d259a), closes #219
- loop: say whose turn it is in the tick summary (#182) (9901aae), closes #181
- loop: send conflicted PRs back with an ai-conflicts label (#180) (a852151), closes #176
- loop: warn on open high and critical security alerts (#207) (5c752a8), closes #203
- loop: warn when the last release run failed (#208) (2d8435d), closes #204
BREAKING CHANGES
- the ai-loop skill no longer exports ROOT/AGENT_USER/…
shell variables; it reads the tick's
.envinstead. loop tickno longer removes worktrees; runloop apply..repo-tooling.jsonis no longer read; runrepo-ai fix config.
2.0.0 (2026-09-26)
Bug Fixes
- guard: skip the node_modules rebuild when no worktree links the main checkout (#106) (70de5ef), closes #103
- keep agentUser only in .repo-ai.json (#63) (cd7b902), closes #58 #55
- loop: a halted tick doesn't create or retime the /ai-loop job (#110) (24aa987), closes #99
- loop: a question a reviewer can't settle from the diff is not an ai-notes finding (#77) (4a68404), closes #76
- loop: distinguish errors from warnings in loop tick text output (#131) (53134c8), closes #128 #128
- loop: drop a pickup naming a file an in-flight ai-wip issue names (#123) (ab1a8d0), closes #120
- loop: fetch without writing FETCH_HEAD so loop watch can't break a concurrent git pull (#105) (2e075c2), closes #102
- loop: loop watch warns on an identity mismatch and prints a readable line per change (#83) (5823687), closes #82 #78 #69 #74
- loop: only a missing status file starts from blank in loop watch (#130) (7779a43), closes #127
- loop: report Workflow spend as outputTokensSpent, the output-only budget.spent() measure (#126) (b3718ab), closes #117
- loop: require an explicit autoMerge opt-in before unattended merges (#143) (2b8c534), closes #142
- loop: tell workflow agents a relayed user message is not their task (#107) (9237a3e), closes #101
- loop: treat every agent-instruction file as non-docs (#78) (1dae93b), closes #72 #80
- loop: treat the .windsurf/ rules directory as non-docs (#84) (3aa3edb), closes #81
- loop: update a BEHIND PR's branch instead of sending it to a fixer (#73) (da7d982), closes #51
- loop: wait on a passed BLOCKED PR whose required checks haven't reported yet (#113) (923d9dc), closes #112
- statusline: drop the dead 'manual' suffix now that every tick records its next tick (#95) (f4c5468), closes #94
Features
- /ai-loop keeps itself going, no /loop needed (#92) (4e1a581), closes #91 #90 #50
- add an /ai-tick skill that runs one loop tick immediately (#60) (0038e60), closes #59
- config: publish a JSON Schema for .repo-ai.json and document every key (#70) (bf91ebd), closes #67
- config: read agentUser/requiredSkills from .repo-ai.json (#55) (20533d1), closes #38
- enforce the loop's budget and task caps in the Workflow scripts (#100) (3e7d02d), closes #41
- fold ai-tick into a plain /ai-loop (#90) (b39a897), closes #89 #88 #88
- fold ai-workflow into ai-loop as a single entry point (#88) (2cc3ddc), closes #87 #56
- loop: add loop watch — poll the work list, print only on change (#74) (38d3c66), closes #62
- loop: adopt any unlabelled PR authored by agentUser (#125) (839ee26), closes #115
- loop: loop tick warns when the installed skill or workflows are older than the package's (#119) (fb4cb92), closes #116
- loop: loop watch keeps the status file's summary current between ticks (#118) (6f9a3bc), closes #114
- loop: one combined reviewer for docs-only PRs (#69) (bdb2848), closes #53
- loop: pick up bug issues before other ai-ready issues (#109) (fb5de65), closes #108
- loop: pickup Workflow runs fix rounds itself (#133) (c880616), closes #129
- loop: stop the loop after a quiet period instead of ticking forever (#139) (cf1e888), closes #124
- rename the ai-issue-loop skill to ai-loop (#57) (1bfb418), closes #56
- setup: show the cost and liability notice and ask for acknowledgement (#111) (4d7542a), closes #45
- ship the skills as a Claude Code plugin (#132) (5a6d096), closes #27
- ship the Workflow scripts as named workflow files (#85) (626ce75), closes #40
1.1.0 (2026-09-24)
Bug Fixes
Features
- ai-issue-loop: show when the next tick is due, or that none is scheduled (#22) (b0313d5), closes #21
1.0.0 (2026-09-24)
Bug Fixes
- ai-issue-loop: assign handoffs to the human, not whoever gh is (#607) (9b430c6), closes #605 601/#603 #606
- ai-issue-loop: make the Pass 5 status file absolute and define SUGGESTED (#623) (48a081a), closes #610
- biome: mark the shipped preset non-root so a whole-repo check can run (#469) (8fb8a9b), closes #468
- claude: claim reviewers before spawning in ai-issue-loop Pass 3 (#442) (8273195), closes #439
- claude: read reviewer verdicts from the posted comment (#501) (76613fc), closes #497 #480 #499
- cli: report one version for --version, writtenBy, and the skill stamps (#579) (af9c3c8), closes #480 #417 #572
- docs: add favicon and social card to the docs site (#6) (c31aad6)
- doctor: name both paths in the skill-fork diff hint (#492) (3ae0569), closes #475 #490 #484
- doctor: shell-quote both paths in the skill-fork diff hint (#497) (27742e0), closes #492 #493
- skills-install: quote the skill name in the README install commands (#502) (4d89a0e), closes #492 #498
- skills: cap ai-issue-loop agent comment length (#474) (ad36768), closes #472 #472 #467
- skills: clear ai-ready when ai-issue-loop claims an issue (#476) (461e801), closes #458 #467 #461 #452 #429 #429 #474 #473
- skills: cut reviewer comment boilerplate in ai-issue-loop (#482) (0c6f7e4), closes #474 #478 #479
- skills: drop the unreachable EnterWorktree step from ai-issue-loop (#454) (185df20), closes #422 #423 #426 #428 #429 #451
- skills: fall back to general-purpose when reviewer agents are absent (#628) (3d13a97), closes #611 #611
- skills: gate the ai-issue-loop decision-comment upsert on the loop's own login (#526) (de7d375), closes #511
- skills: iterate symlinkDirectories line by line so zsh links anything (#596) (2def78a), closes #585
- skills: let a promoted ai-suggested issue reach the queue (#609) (6f1c020), closes #608
- skills: reconcile the ai-issue-loop fork — restore the five running-copy blocks (#510) (6536210), closes #506 #508 #509 #506
- skills: resolve the stamped version from git tags in a checkout (#523) (c0eaba5), closes #417
- skills: scope the verdict-marker read to the PR's head commit (#569) (2705841), closes #497 #567
- skills: send CI-red PRs back to a fix round and collapse the ready-PR labels (#554) (efcbac6), closes #545 #543 #527 #406 #500
- skills: split optional gh flags so zsh passes them as two words (#626) (1454e69), closes #624
- skills: stop pretending the loop gates Dependabot PRs (#605) (a54be69), closes #593 #593
- skills: stop routing held Dependabot PRs through ai-changes (#464) (47be756), closes #459 #455
Features
- ai-issue-loop: claim the fix round with an ai-fixing label (#568) (35020b6), closes #446 #543 #567 #566
- ai-issue-loop: notify with PushNotification instead of osascript (#627) (7977ad8), closes #623 #612
- ai-issue-loop: run a tick's reviewers and fixers in one Workflow with typed verdicts (#16) (8a37f16), closes #5 #9
- ai-issue-loop: self-paced /loop with ScheduleWakeup (#10) (5cf8589), closes #5
- brand: add brand/ banner, mobile banner and social card (#3) (1aca026), closes #2
- cli: add
loop guardfor bare-checkout repair and node_modules rebuild gating (#553) (e62f591), closes #519 #519 - docs: add Docusaurus docs site and .repo-tooling.json (#2) (3b2bf22)
- docs: give the docs site the @rtorcato family theme (#7) (3cd2429)
- doctor: audit ai-issue-loop label colours and descriptions (#456) (1d193b3), closes #446 #422
- doctor: verify aiLoop.agentUser is an assignable collaborator (#537) (a588bed), closes #530 #521
- fix: add explicit-only ai-loop-identity fixer (#650) (27782f6), closes --#config-dir #638
- github: make squash the only merge method in the standard (#415) (0d2efb1), closes #204 #N
- labels: give the human's pickup state a merge-ready label instead of an absence (#543) (db6f9c4), closes #541
- lockfile: add requiredSkills and mcp.recommended with advisory doctor checks (#556) (1860321), closes #534 #533 #534 #533 #534
- lockfile: split .repo-tooling.json into record and rules subtrees (v4) (#564) (bd9ef3a), closes #559 #544 #531 #271 #552 #524
- loop-guard: halt when gh is not the declared agent account (#603) (052c619), closes #601
- loop: add loop cleanup --json (#653) (dbfc441), closes #PR #617
- loop: add loop comment and loop verdict (#656) (9f63c69), closes #619
- loop: add loop env --json (#651) (2deca8c), closes #615 #614
- loop: add loop reap --json (#655) (da37606), closes #618
- loop: add loop worktree add (#654) (de15f1e), closes #616 #585
- loop: port loop tick from repo-tooling #657 (#1) (8f3f0d3), closes rtorcato/repo-tooling#658
- repo-ai setup — guided onboarding through the loop's fixers (#14) (2d77a57), closes #12
- ship the loop statusline segment, with fix statusline and a doctor check (#13) (5bb68ca), closes #11
- skills: assign in-flight work to the agent account (#525) (ca1c4b5)
- skills: guard the ai-issue-loop main checkout against a bare flip (#505) (9105510), closes #496 #500 #500 #500 #501
- skills: route agent follow-ups to ai-suggested issues (#489) (4bcb325), closes #478
- skills: ship the ai-issue-loop skill with a user-level install target (#409) (66066e4), closes #404
- skills: ship the dogfood skill so fix claude-skills installs it (#584) (2f402ab), closes #576 #577 #579 #580 #581
- skills: tell a stale installed skill from a deliberate local fork (#483) (df91911), closes #480 #448
- split the ai-issue-loop pipeline out of @rtorcato/repo-tooling (97c989b), closes rtorcato/repo-tooling#658
Every entry above is generated by semantic-release and published to GitHub Releases. Anything older than the first GitHub Release is recorded in CHANGELOG.md.