Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions documentation/code-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
10 changes: 5 additions & 5 deletions documentation/upgrading.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
```

Expand All @@ -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
Expand Down Expand Up @@ -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`**.
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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.",
Expand Down
2 changes: 1 addition & 1 deletion scripts/drift/cloudflare-endpoints.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
2 changes: 1 addition & 1 deletion templates/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@zackbart/connecta": "0.21.2",
"@zackbart/connecta": "0.22.0",
"quickjs-emscripten": "0.32.0"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion test/upgrade-guide.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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} |`);
});

Expand Down