Skip to content

v0.19.0 — glab adapter + automatic worktree provisioning

Choose a tag to compare

@mayckol mayckol released this 19 Apr 12:04

Closes the two follow-ups from v0.18.0 (feature 004)

GitLab adapter shipped

bender sessions pr <session-id> on a gitlab.com remote now opens (or updates)
a merge request via the user's locally installed glab CLI. Parity with the
existing GitHub adapter:

  • Same Adapter interface surface (Detect, AuthCheck, Push, OpenOrUpdate).
  • Same exit-code table (30/31/32/33).
  • Same event emission (pr_opened / pr_update_refused).
  • Same --refuse-update and --draft semantics.
  • Push delegates to git push -u origin <branch>:<branch> (glab itself is not
    involved in push).
  • Snapshot-only PR status — no polling, same policy as v0.18.0.

state.json#pull_request.adapter now takes the live "glab" value in addition
to "gh". Self-hosted GitHub Enterprise and self-hosted GitLab are out of scope
for this release; the adapter interface remains open for future additions.

/ghu and /implement auto-provision a worktree

The embedded orchestrator skills (.claude/skills/ghu/SKILL.md,
.claude/skills/implement/SKILL.md) now call bender worktree create <session-id>
as their first action in every session. Every subsequent file write lands inside
the session worktree; the main working tree is untouched.

  • No silent fall-back: if bender v0.18.0+ is missing and the fallback script
    is also unavailable, the skill aborts with an explicit upgrade message.
  • v2 state.json + worktree_created event emitted by the binary; the
    orchestrator no longer hand-rolls either, eliminating a class of drift bugs.
  • Read-only skills (/cry, pre-confirmation /plan, /tdd, /bender-bootstrap,
    every bg-*) are explicitly not changed and a scope-guard integration
    test enforces their absence of the provisioning block.

Upgrading

go install github.com/mayckol/ai-bender/cmd/bender@latest
cd path/to/your-project
bender init             # idempotent; user-edited skills get *.proposed sidecars

Legacy v1 sessions continue to load unchanged and appear as legacy in
bender sessions list.

Fallback-script parity (Constitution VII)

.specify/extensions/worktree/scripts/{bash,powershell}/worktree.sh(+.ps1)
pr verb now routes gitlab.com remotes to the full glab flow symmetric to
the gh branch, with identical event and exit-code contracts.

Documentation

  • New "After v0.19.0: a different way to start a project" section in the
    README Quickstart area.
  • Dedicated Upgrade notes subsections for v0.19.0 and v0.18.0 alongside the
    existing v0.17.0 note.
  • /ghu and /implement slash-command descriptions explicitly reference the
    worktree-provisioning step.

Tests

All 22 packages green on go test ./...:

  • internal/pr/glab_test.go — 7 FakeExec unit tests.
  • tests/integration/gitlab_pr_test.go — end-to-end with a fake glab adapter.
  • tests/integration/skills_initialisation_test.go — byte-for-byte sentinel
    assertions over workspace.Scaffold()-materialised defaults (both positive
    for ghu / implement and negative for every read-only skill).

No new third-party Go dependencies.