SIGN IN SIGN UP

chore(release): prepare DomainKit (#129)

## Summary

All bumped packages.

| Package | From | To |
| --- | --- | --- |
| `@domainkit/capsuledb` | `0.14.1` | `0.15.0` |
| `domainkit` | `0.14.1` | `0.15.0` |
| `@domainkit/react` | `0.14.1` | `0.15.0` |

## Changelogs
### `account-label.md`

<details>
<summary>Show Bumped Packages (1)</summary>

| Package | Bump |
| --- | --- |
| `npm:domainkit` | minor |

</details>

#### A connection carries the name of the account it reaches

Listing accounts could only name them by provider: `Connect.zones`
answered a `connections` entry
of `connectionId`, `provider`, and `status`, so a customer holding two
Cloudflare accounts read
"Cloudflare" twice and had to open one to tell them apart.

A provider now names the account when it issues a credential.
`Provider.IssuedCredential` takes an
optional `label`, `Connect` stores it on the authorization at connect
and reconnect time, and every
listing of accounts carries it:

```ts
interface ZoneConnection {
  readonly connectionId: string;
  readonly provider: string;
  /** "Acme Inc" when the provider named the account; null when it named none. */
  readonly label: string | null;
  readonly status: "connected" | "reconnect";
}
```

The same field crosses the wire on `GET /zones`, so
`Transport.Zones["connections"][number]` and
`@domainkit/react`'s `Connect.Account` carry `label` without a second
call. `Server.Connected` now
prefers it too: a start with no domain names the account instead of the
provider, and a start that
attached a domain still names the zone.

Cloudflare fills it. Connecting reads the account from the zones the
credential sees, so a
credential inside one account carries that account's Cloudflare name and
one spanning several
accounts names none. A token pinned with `accountId` is named from that
account's zones, and a
pinned token that reaches no zone connects unnamed rather than failing
over a label. Providers that
name no account, including Vercel, answer `null`, and so does
`Testing.provider` until a test sets
`accountLabel`.

The field is additive. A provider definition that returns no `label`
keeps compiling, and
`@domainkit/capsuledb` adds a nullable `label` column to
`domainkit_authorizations` through its own
additive migration, which rows written before it read as `null`.
`Storage.Authorization` now requires `label`, so a host that
implements `Storage` itself supplies it; the conformance suite checks
that it survives the round
trip.

## Publish

The following packages will be published if merged:

| Package | Version | Registry |
| --- | --- | --- |
| `@domainkit/capsuledb` | `0.15.0` | `npm` |
| `domainkit` | `0.15.0` | `npm` |
| `@domainkit/react` | `0.15.0` | `npm` |

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
G
github-actions[bot] committed
356276ff534be8246a83b36d2234cb17cb402ad0
Parent: 89863e3
Committed by GitHub <noreply@github.com> on 9/19/2026, 8:08:38 AM