Back to blog
2026-06-11 Thijs Creemers

Release: v1.0.1-alpha-29

We just tagged v1.0.1-alpha-29. This is a feature and release-infrastructure release. It adds a Ring-middleware form of the CSRF protection introduced in alpha-28, and fixes the Clojars publish pipeline. If you are on alpha-28 from Clojars, upgrade: the published alpha-28 artifact was stale and did not match its git tag — see below.

Added: Ring wrap-csrf for handlers outside the interceptor stack

The http-csrf-protection interceptor only protects handlers that run through the default interceptor stack. Apps that mount their own routes as a Ring handler in front of the platform handler bypass CSRF entirely: csrf/token is never bound (so hidden-field and the <meta> tag emit nothing) and POSTs are never validated (BOU-59).

boundary-platform now ships interceptors/wrap-csrf, the Ring-middleware form of the interceptor. It applies the same binding model and rules — session/pre-session binding, opt-in enforcement, exempt paths, safe methods skipped. State-changing requests get a 403 on a bad or absent token; safe and authenticated requests get csrf/token bound around the handler so forms, hx-headers, and the page layout’s <meta> tag emit the token as usual.

Fixed: reliable, guarded Clojars publish

The Clojars artifact published as 1.0.1-alpha-28 predated the BOU-56 merge while the git tag contained it — the jar on Clojars did not match the tag. Root cause: the publish workflow triggered on v*-prefixed tags, but releases use unprefixed tags (1.0.1-alpha-N), so it never fired and releases were done manually, where a version bump ahead of the merged source froze a stale jar under an immutable coordinate (BOU-59).

The publish pipeline is now tag-triggered, guarded, and verified:

  • publish.yml triggers on the real unprefixed semver tags and builds from the tagged commit.

  • Before deploy, bb deploy --check-versions aborts if any library’s build.clj disagrees with the release version — killing the stale-artifact failure class.

  • After deploy, bb deploy --verify fails the workflow if any artifact is not live on Clojars.

alpha-29 is the first release through the fixed pipeline. It re-ships the BOU-56 CSRF deltas — the hx-headers helper and the opt-in (:enabled? false) default — that the stale alpha-28 Clojars artifact never carried.

Version alignment

All 25 libraries bumped to v1.0.1-alpha-29 to maintain lockstep versioning.

Upgrade

Re-run the installer to pick up the latest release:

curl -fsSL https://get.boundary-app.org | bash

If you depend on alpha-28 from Clojars, bump straight to alpha-29 — it is the artifact alpha-28 was supposed to be, plus wrap-csrf. No migration steps beyond those already described in the alpha-28 notes.

Feedback and issues welcome on GitHub.