From 63196623ccebd326d6c602eba1abad1151e8273b Mon Sep 17 00:00:00 2001 From: Brandon Corbett Date: Sun, 8 Nov 2026 09:16:29 -0500 Subject: [PATCH 1/2] chore(scaffold): pin API v0.23.0, dashboard v0.14.0 and templates v0.22.0 --- .changeset/pin-v0-23.md | 5 +++++ src/core/images.ts | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/pin-v0-23.md diff --git a/.changeset/pin-v0-23.md b/.changeset/pin-v0-23.md new file mode 100644 index 0000000..ef2fdce --- /dev/null +++ b/.changeset/pin-v0-23.md @@ -0,0 +1,5 @@ +--- +"seamless-cli": minor +--- + +New projects scaffold Seamless Auth API v0.23.0, the admin dashboard v0.14.0 and the starter templates v0.22.0, so a fresh project has roles and permissions in its tokens, the starters' permission guard demo, and the console's Roles and Integrations pages. Existing projects keep the images they were scaffolded with. diff --git a/src/core/images.ts b/src/core/images.ts index 9ab0a7a..9d1469e 100644 --- a/src/core/images.ts +++ b/src/core/images.ts @@ -7,19 +7,19 @@ export const POSTGRES_IMAGE = "postgres:18"; // bumped, because a tag can be moved and what it names is then built and run on the // developer's machine. Bump them together: `npm run check:templates-pin` (run in CI) // checks every pin in this file against its tag and fails when one disagrees. -export const SEAMLESS_AUTH_API_VERSION = "v0.21.0"; +export const SEAMLESS_AUTH_API_VERSION = "v0.23.0"; -export const SEAMLESS_AUTH_API_COMMIT = "930d4dc812df051b948a5bd138871f625900f1eb"; +export const SEAMLESS_AUTH_API_COMMIT = "afd4495c2af3f2be709d4f8802124870382a7716"; export const SEAMLESS_AUTH_API_IMAGE_DIGEST = - "sha256:5765de03b10d348da047e50407fcb7109f2a6dae64ddde86a1a6d0b92575dfa1"; + "sha256:c32b2e84a32b2b5a2fd69112453090f62a89226e81f86cf2d06d49ec9fafc2c9"; export const SEAMLESS_AUTH_API_IMAGE = `ghcr.io/fells-code/seamless-auth-api:${SEAMLESS_AUTH_API_VERSION}@${SEAMLESS_AUTH_API_IMAGE_DIGEST}`; -export const SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION = "v0.13.0"; +export const SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION = "v0.14.0"; export const SEAMLESS_AUTH_ADMIN_DASHBOARD_IMAGE_DIGEST = - "sha256:c6e4490d15e77f3c86d900f4a08c6ddf7f5f1da06613f6467ae325bf06a7ce97"; + "sha256:78baccc3a240c7a9474e6b9a8bf48e65281e2fdd6fcff835043a379437427c90"; export const SEAMLESS_AUTH_ADMIN_DASHBOARD_IMAGE = `ghcr.io/fells-code/seamless-auth-admin-dashboard:${SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION}@${SEAMLESS_AUTH_ADMIN_DASHBOARD_IMAGE_DIGEST}`; @@ -33,7 +33,7 @@ export const SEAMLESS_AUTH_ADMIN_DASHBOARD_REPO = export const SEAMLESS_AUTH_ADMIN_DASHBOARD_REF = SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION; -export const SEAMLESS_AUTH_ADMIN_DASHBOARD_COMMIT = "a331a4a879a689892491ef2a62a735b295b8852b"; +export const SEAMLESS_AUTH_ADMIN_DASHBOARD_COMMIT = "df2a8b78f7a8eb7adeec67e900d89cbd1937c6dd"; // The starter templates monorepo the CLI scaffolds from. The tag names the release; // the download is pinned to the commit it resolved to when bumped. Override with @@ -41,6 +41,6 @@ export const SEAMLESS_AUTH_ADMIN_DASHBOARD_COMMIT = "a331a4a879a689892491ef2a62a // SEAMLESS_TEMPLATES_DIR. export const SEAMLESS_TEMPLATES_REPO = "fells-code/seamless-templates"; -export const SEAMLESS_TEMPLATES_REF = "v0.21.2"; +export const SEAMLESS_TEMPLATES_REF = "v0.22.0"; -export const SEAMLESS_TEMPLATES_COMMIT = "c8eef215133032ddf58f694e484a24b591405562"; +export const SEAMLESS_TEMPLATES_COMMIT = "722881655f92c06b815e0591d8633d77e6b7f70f"; From 2a24a472d2b74d6d7ff9dbd5f1c2a8cbec21823e Mon Sep 17 00:00:00 2001 From: Brandon Corbett Date: Sun, 8 Nov 2026 09:58:13 -0500 Subject: [PATCH 2/2] test(e2e): create the billing organization role before assigning it Auth server v0.23 refuses an organization role outside the catalogue, so the members update step now creates billing with seamless roles create first. --- scripts/cli-commands-e2e.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/cli-commands-e2e.sh b/scripts/cli-commands-e2e.sh index 8f48386..6563a6c 100755 --- a/scripts/cli-commands-e2e.sh +++ b/scripts/cli-commands-e2e.sh @@ -175,6 +175,10 @@ seamless org members remove "$org_id" "$grace_id" --force >/dev/null members | jq -e --arg g "$grace_id" 'any(.[]; .userId == $g) | not' >/dev/null || fail "members remove left the member in place." seamless org members add "$org_id" --email grace@example.com --roles member >/dev/null +# Since auth server v0.23 a membership can only hold a role from the catalogue. +seamless roles create billing --description "Manages billing" >/dev/null +seamless roles list --kind organization --json | jq -e 'any(.[]; .name == "billing")' >/dev/null || + fail "roles create did not add billing to the organization role catalogue." seamless org members update "$org_id" "$grace_id" --roles member,billing >/dev/null members | jq -e --arg g "$grace_id" \ 'any(.[]; .userId == $g and (.roles | sort) == ["billing", "member"])' >/dev/null ||