From 29497567655e3c6c13a63ad832ad15abeeb840dd Mon Sep 17 00:00:00 2001 From: zackbart Date: Mon, 31 Aug 2026 16:47:52 -0400 Subject: [PATCH] Prepare 0.22.0 release (#516) (#517) --- CHANGELOG.md | 11 +++++++++-- documentation/code-mode.md | 4 ++-- documentation/upgrading.md | 10 +++++----- package-lock.json | 4 ++-- package.json | 2 +- scripts/drift/cloudflare-endpoints.json | 2 +- src/version.ts | 2 +- templates/node/package.json | 2 +- test/upgrade-guide.test.ts | 2 +- 9 files changed, 23 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd3854c..5fd7a7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this package are documented here. -## Unreleased +## 0.22.0 — 2026-08-31 This release lets one deployment serve several authenticated people without becoming an account system. Connector visibility comes from deployment config, @@ -12,7 +12,11 @@ every interactive human stays an operator unless the deployment opts into the new identity rules. A signed-in human may manage authentication for every connector their code-derived view includes; operator status separately controls tokens and global activity. Worker deployments also gain the complete Managed -OAuth callback allowlist in the shipped example and agent instructions. +OAuth callback allowlist in the shipped example and agent instructions. The +one upgrade seam is deliberate: in-flight `get_result` ids created by a named +caller do not cross into the new subject partition, so finish paging them +before deployment. Single-user deployments need no identity configuration, +and non-Worker deployments can ignore the callback-policy change. ### Added @@ -47,6 +51,9 @@ OAuth callback allowlist in the shipped example and agent instructions. - **One tenant, several people.** The ethos now refuses a connecta-owned account model while allowing externally authenticated principals, config-derived connector visibility, and personal downstream credentials inside one tenant. +- **Reviewed Cloudflare deletion contract.** Cloudflare removed a spurious + required empty request body from Worker script deletion. Connecta already + sent no body, so only the reviewed endpoint digest changes (#517). ## 0.21.2 — 2026-08-31 diff --git a/documentation/code-mode.md b/documentation/code-mode.md index ee7a175..d778e6a 100644 --- a/documentation/code-mode.md +++ b/documentation/code-mode.md @@ -785,8 +785,8 @@ The human message is unchanged; a mismatched frame is ordinary untyped prose. ## Changes from earlier code mode -Six behaviors changed with this contract, matching the changelog's Unreleased -entry. Programs that ran before still run. +Six behaviors changed with this contract, matching the 0.10.0 release notes. +Programs that ran before still run. - **Caught Connecta failures expose their classification** (`E1`, `X11`). Their human message and thrown semantics stay unchanged; `code`, `retryable`, and `details` are additive. diff --git a/documentation/upgrading.md b/documentation/upgrading.md index 94f2840..7e4974c 100644 --- a/documentation/upgrading.md +++ b/documentation/upgrading.md @@ -57,7 +57,7 @@ exist so far: | --- | --- | --- | | **pre-template** | before 0.10.2 | no `connecta init` existed; hand-written, or copied from the retired `examples/node` | | **A** | 0.10.2 – 0.15.1 | `.env.example`, `.gitignore`, `AGENTS.md`, `CLAUDE.md`, `README.md`, `package.json`, `src/index.ts`, `tsconfig.json` | -| **B** | 0.16.0 – 0.21.2 | adds `.dockerignore`, `Dockerfile`, `docker-compose.yml`, and `src/file-activity.ts`; `src/index.ts` grows the four commented operator blocks; `.env.example` ships `CONNECTA_TOKEN=` empty | +| **B** | 0.16.0 – 0.22.0 | adds `.dockerignore`, `Dockerfile`, `docker-compose.yml`, and `src/file-activity.ts`; `src/index.ts` grows the four commented operator blocks; `.env.example` ships `CONNECTA_TOKEN=` empty | Generation A is a decade in template years and identifying it precisely does not matter, because you are about to reconstruct it exactly rather than guess @@ -106,7 +106,7 @@ know what to preserve, once to know what to re-verify at the end. ### Bump the pin and install ```sh -npm pkg set dependencies.@zackbart/connecta=0.21.2 +npm pkg set dependencies.@zackbart/connecta=0.22.0 npm install ``` @@ -130,7 +130,7 @@ Generate the *current* template beside the base you already made, into the same `$SCRATCH`: ```sh -(cd "$SCRATCH" && npx @zackbart/connecta@0.21.2 init current) +(cd "$SCRATCH" && npx @zackbart/connecta@0.22.0 init current) ``` You now have a three-way merge with a real base: `$SCRATCH/base` is what this @@ -186,7 +186,7 @@ A deployment older than 0.10.2 has no base to diff against. Do not try to manufacture one. Instead: 1. `SCRATCH=$(mktemp -d)`, then - `(cd "$SCRATCH" && npx @zackbart/connecta@0.21.2 init current)` — there is no + `(cd "$SCRATCH" && npx @zackbart/connecta@0.22.0 init current)` — there is no `base` leg here, only the current template to read from. 2. Copy `$SCRATCH/current` into the deployment file by file, **skipping `src/index.ts`**. @@ -207,7 +207,7 @@ first, so cross them bottom-up: start at the oldest one still above this deployment's pin and work back up the page, because each boundary assumes the older ones are already done. -### 0.21.2 → Unreleased +### 0.21.2 → 0.22.0 Connector and user policy remain config-as-code. If `identity.connectorAccess` is configured, every interactive human may now manage the authentication of diff --git a/package-lock.json b/package-lock.json index fbec7e3..0219214 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@zackbart/connecta", - "version": "0.21.2", + "version": "0.22.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@zackbart/connecta", - "version": "0.21.2", + "version": "0.22.0", "license": "MIT", "dependencies": { "@cfworker/json-schema": "^4.1.1", diff --git a/package.json b/package.json index 4c62639..a7aa977 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zackbart/connecta", - "version": "0.21.2", + "version": "0.22.0", "type": "module", "sideEffects": false, "description": "One MCP to rule them all — a single MCP endpoint aggregating many downstream connectors behind a code-first surface of seven meta-tools.", diff --git a/scripts/drift/cloudflare-endpoints.json b/scripts/drift/cloudflare-endpoints.json index eddad61..a8792d7 100644 --- a/scripts/drift/cloudflare-endpoints.json +++ b/scripts/drift/cloudflare-endpoints.json @@ -194,7 +194,7 @@ "method": "DELETE", "path": "/accounts/{account_id}/workers/scripts/{script_name}", "specRevision": "4.0.0", - "contract": "sha256:04b2adec28494a7531b4ded74ceb33c4ee3334eb90aca0c9eee4330bf1460bc7" + "contract": "sha256:2d4c349e9d99294cc1c945e7bfe57f00e5086db8b8c20dd9036a9a638fb8242f" }, { "method": "GET", diff --git a/src/version.ts b/src/version.ts index 342951a..4400dc3 100644 --- a/src/version.ts +++ b/src/version.ts @@ -4,4 +4,4 @@ * a bump that forgets this file fails the build rather than shipping a stale * version to `/health` and to downstream MCP handshakes. */ -export const CONNECTA_VERSION = "0.21.2"; +export const CONNECTA_VERSION = "0.22.0"; diff --git a/templates/node/package.json b/templates/node/package.json index 62cacb3..e72722e 100644 --- a/templates/node/package.json +++ b/templates/node/package.json @@ -15,7 +15,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@zackbart/connecta": "0.21.2", + "@zackbart/connecta": "0.22.0", "quickjs-emscripten": "0.32.0" }, "devDependencies": { diff --git a/test/upgrade-guide.test.ts b/test/upgrade-guide.test.ts index 66cd160..828b951 100644 --- a/test/upgrade-guide.test.ts +++ b/test/upgrade-guide.test.ts @@ -148,7 +148,7 @@ describe("the upgrade guide", () => { it("opens the boundary list with this release", () => { const { version } = JSON.parse(read("package.json")) as { version: string }; const first = guide.match(/^### (\d+\.\d+\.\d+) → (\d+\.\d+\.\d+)$/m); - expect(first?.slice(1)).toEqual(["0.20.0", version]); + expect(first?.slice(1)).toEqual(["0.21.2", version]); expect(guide).toContain(`| **B** | 0.16.0 – ${version} |`); });