Skip to content

chore: production deploy - #5965

Open
supabase-cli-releaser[bot] wants to merge 15 commits into
mainfrom
develop
Open

chore: production deploy#5965
supabase-cli-releaser[bot] wants to merge 15 commits into
mainfrom
develop

Conversation

@supabase-cli-releaser

Copy link
Copy Markdown
Contributor

Coly010 and others added 7 commits July 27, 2026 19:26
… text/template escape (#5944)

## What changed

`supabase init` (and the `bootstrap` scratch-project path — both go
through the shared `renderProjectConfigTemplate` in
`apps/cli/src/shared/init/project-init.templates.ts`) wrote two broken
lines into the generated `supabase/config.toml`:

```toml
template = "Your code is {{ `{{ .Code }}` }}"
```

for both `[auth.sms]` and `[auth.mfa.phone]`. The Go CLI's template
source contains that `text/template` self-escape, but Go renders the
scaffold through `text/template` (`config.Eject`,
`pkg/config/config.go:555,572`), which resolves the backtick raw-string
action to the literal GoTrue template. The TS renderer copied the escape
verbatim and runs no template engine, so the raw escape landed in users'
configs — a functionally broken SMS/MFA OTP template (GoTrue would send
the literal text instead of substituting the code).

The fix pre-renders the two lines in the TS template constant:

```toml
template = "Your code is {{ .Code }}"
```

Verified byte-identical against the Go CLI's actual `config.Eject`
output (dumped via a throwaway Go test harness): these two lines were
the only divergence, and after the fix the full generated file matches
Go's eject byte-for-byte, including the trailing newline.

## Test changes

The existing byte-parity test compared the TS render against the **raw
Go template source**, so both sides carried the unresolved escape and
the test passed while the shipped output was broken. It now emulates
Go's eject-time rendering (`resolveGoTemplateEscapes`) before comparing,
so it would have caught this bug. Also added:

- a dedicated regression test asserting the two generated `template =`
lines are the rendered GoTrue templates, not raw Go escapes;
- a guard test that fails loudly if the Go scaffold ever gains a `{{ ...
}}` construct the suite does not model, so this class of parity drift
cannot silently return (raised by review).

## Deliberately out of scope (from review)

- **Configs already generated with the broken lines are not
auto-migrated.** Users who ran `init`/`bootstrap` with an affected build
keep the raw escape in their `config.toml`; the manual fix is replacing
the two `template =` lines under `[auth.sms]` and `[auth.mfa.phone]`
with `"Your code is {{ .Code }}"`. A detect-and-warn on config load
(particularly on the `config push` path, which can carry the broken
template to hosted GoTrue) was suggested in review as a possible
fast-follow, but auto-editing or warning about user-owned config is a
scope/UX decision beyond this parity fix.

Fixes CLI-1971

Linear:
https://linear.app/supabase/issue/CLI-1971/initbootstrap-write-broken-smsmfa-template-lines-into-configtoml
…perimental (CLI-1972) (#5945)

## Current Behavior

Go registers `vanityCmd` and `restrictionsCmd` (alongside `bansCmd`) as
experimental (`apps/cli-go/cmd/root.go:56-65`) and refuses them in
`PersistentPreRunE` with exit 1 and `must set the --experimental flag to
run this command` — before login, ref resolution, telemetry, or any API
call (`root.go:91-96`).

The TS legacy shell only reproduced this gate for `network-bans`.
`vanity-subdomains get|check-availability|activate|delete` and
`network-restrictions get|update` had zero gate calls: they ran to
completion without `--experimental` — API call made, exit 0,
`cli_command_executed` fired, `linked-project.json` written — where Go
does none of that.

## Expected Behavior

All six leaves now fail with Go's exact gate message (exit 1) unless
`--experimental` or `SUPABASE_EXPERIMENTAL` is set, with no API call, no
telemetry event, and no `linked-project.json`/`telemetry.json` write
behind a closed gate.

The wiring mirrors the merged CLI-1854 precedent (#5766) and the in-repo
`network-bans` reference exactly:

- `legacyValidateOutputFormat(LEGACY_RESOURCE_OUTPUT_FORMATS)` runs
first, so an invalid `-o` value still wins over a missing
`--experimental` (cobra enum-validates root's persistent `-o` at parse
time, before `PersistentPreRunE`).
- `legacyRequireExperimental` runs next, before any instrumentation or
layer work.
- `legacyManagementApiRuntimeLayer` moves from `Command.provide` to an
inline `Effect.provide` after the gate — `Command.provide` builds the
layer (and eagerly resolves an access token) before the handler's first
yield, which would let a missing-token error mask the gate error,
exactly the failure mode CLI-1854 fixed for the other three families.

New gate integration suites for both families mirror
`network-bans.experimental-gate.integration.test.ts`: a closed gate
fails with `LegacyExperimentalRequiredError` and zero API requests; an
open gate proceeds past the gate to the management-API auth step. The
six `SIDE_EFFECTS.md` files document the gated file writes, the
`SUPABASE_EXPERIMENTAL` env var, the new exit-code row, and the
closed-gate telemetry behavior.

## Deliberately-open judgement calls

- `vanity-subdomains activate|check-availability` mark
`--desired-subdomain` required. When **both** it and `--experimental`
are omitted, the TS parser reports the missing-required-flag error where
Go's gate error wins (cobra runs `ValidateRequiredFlags` only after
`PersistentPreRunE`). This is a pre-existing framework-level
parse-ordering divergence, not introduced here — exit code is 1 either
way and each error names the exact flag to add. Documented in both
commands' `SIDE_EFFECTS.md`; these are the first gated leaves with a
required flag, so none of the merged gate PRs hit this.
- The gate-wiring comment/boilerplate is intentionally duplicated per
leaf to stay byte-consistent with the merged
network-bans/postgres-config/ssl-enforcement precedents rather than
hoisting a shared helper in this fix.
- Release-note callout: anyone who scripted these six commands against
the TS legacy shell during the ungated window will now get the hard gate
error, matching Go. The message names the fix (`--experimental`), and
`SUPABASE_EXPERIMENTAL` remains the env escape hatch.

## Related Issue(s)

Fixes CLI-1972


https://linear.app/supabase/issue/CLI-1972/missing-experimental-gate-on-vanity-subdomains-and-network
…lined (#5946)

## What changed

When a confirmation prompt is declined, the Go CLI prints only a red
`context canceled` on stderr and exits 1 — `recoverAndExit`
(`apps/cli-go/cmd/root.go:287-303`) explicitly skips the
`SuggestDebugFlag` fallback for `errors.Is(err, context.Canceled)`. The
TS text `Output.fail` renderer appended the fallback hint for every
suggestion-less error, including cancellations, so every prompting
command (`logout`, `db push` (3 prompts), `db reset`, `migration
fetch`/`repair`/`down`, `functions deploy --prune`, `gen signing-key`,
`secrets unset`, `projects delete`, `branches create`, `bootstrap`)
printed:

```
context canceled
Try rerunning the command with --debug to troubleshoot the error.   ← spurious
```

This PR mirrors Go's guard at the render boundary:

- New shared sentinel `CONTEXT_CANCELED_MESSAGE` in
`apps/cli/src/shared/output/errors.ts` — the byte-for-byte render of
Go's `context.Canceled`.
- The text-layer `fail` (`apps/cli/src/shared/output/output.layer.ts`)
skips the debug-hint fallback when the normalized message equals the
sentinel. The explicit-suggestion branch stays first, matching Go
printing a pre-set `utils.CmdSuggestion` even for canceled errors.
- All 14 cancellation construction sites (12 files: the legacy decline
paths above plus `shared/functions/deploy.ts`) now reference the
constant instead of an inline literal, so the sentinel is single-sourced
like Go's.
- `LEGACY_LOGOUT_CANCELLED_MESSAGE` is folded into the shared constant,
and the documented intent in `logout.errors.ts` (which already described
the Go behavior this PR implements) now matches reality.

## Why the fix is shared rather than legacy-scoped

The failure-rendering seam (`shared/cli/run.ts` `handledProgram` →
`Output.fail`) is shell-agnostic, and `next/` genuinely shares a
cancellation producer: `shared/functions/deploy.ts` (used by `next
functions deploy --prune`) fails with the same `context canceled`
message on a declined prune prompt. Suppressing a troubleshooting hint
for a user-declined prompt is the correct behavior in both shells, so
the fix lives in the shared layer instead of forking the renderer per
shell. Aside from that, `next/` handlers treat declines gracefully (no
`context canceled` error), so next-shell text rendering is otherwise
unchanged. This is deliberate and reviewed against the CLI-1546
invariant (no spinner/stream routing was touched).

## Tests

- Unit (`output.layer.unit.test.ts`): byte assertions that the sentinel
message renders as exactly the red `context canceled` line with no hint
(fails without the fix), and that an explicit caller suggestion still
prints for a cancellation (Go ordering).
- Declined-prompt stderr-byte e2e per affected family, each asserting
exit code 1, last stderr line exactly `context canceled`, and no
debug-hint line: `logout` (new), `migration fetch` (extended), `db
reset` (new file — Docker-free, the destructive prompt fires before any
connection is dialed), `gen signing-key` (extended).
- The existing non-canceled guards stay: a generic error still gets the
hint (unit + `run.e2e.test.ts` asserts stderr ends with the hint for an
unrecognized flag).
- `stripAnsi` hoisted to `tests/helpers/cli.ts` for the files this PR
touches.

## Deliberately-open judgement calls

- **Exact-match vs `errors.Is`:** the TS check is message equality,
narrower than Go's chain-walking `errors.Is`. A future producer
surfacing a *wrapped* cancellation (`"...: context canceled"`) through
`Output.fail` would keep the hint where Go suppresses it. No such
producer exists today (mid-flight Ctrl-C takes the interrupt/exit-130
path and never reaches `Output.fail`); the invariant is documented on
the constant. Reviewers (architect/engineer/parity passes) agreed a
tag-registry or normalized-error flag isn't warranted for a single Go
sentinel.
- **Pre-existing divergences noted during the parity audit, out of scope
here:** (a) Ctrl-C *at* a prompt → TS clack `Operation cancelled.`/exit
130 vs Go `context canceled`/exit 1; (b) the hint's `--debug` detection
uses `process.argv` vs Go's `viper.GetBool("DEBUG")` (which also honors
`SUPABASE_DEBUG`) — affects only the non-canceled branch.

Fixes CLI-1973


https://linear.app/supabase/issue/CLI-1973/declined-confirmation-prompts-print-a-spurious-debug-hint-context
…tion classifiers (#5948)

## What changed

Every legacy db command's connection failure previously rendered as

```
failed to connect to postgres: effect/sql/SqlError: PgClient: Failed to connect
```

— host, user, database, and the underlying driver cause were all lost,
on every `db push` / `db pull` / `db reset` / `db diff --linked` /
`inspect` / `migration` connection failure. The Go CLI renders pgconn's
full detail:

```
failed to connect to postgres: failed to connect to `host=… user=… database=…`: dial error (dial tcp …: connect: connection refused)
```

This PR ports pgconn's `connectError` rendering (`errors.go:66-72`,
wrapped by `pkg/pgxv5/connect.go:33`) into the legacy connection layer,
and fixes the `legacyConnectSuggestion` classifier branches that could
never fire on real node-postgres error shapes.

### Message rendering (`legacyConnectFailureMessage`)

- `toConnectError` in `legacy-db-connection.sql-pg.layer.ts` now renders
`failed to connect to postgres: failed to connect to \`host=… user=…
database=…\`: <staged cause>` using the config-level identity
(host/user/database — never the password), exactly like pgconn.
- The cause is unwrapped through the real `SqlError → ConnectionError →
driver error` chain (and through `AggregateError.errors[]`, taking the
LAST attempt — pgconn's fallback loop also surfaces the last attempt's
error).
- Stage labels mirror pgconn where the node error identifies the stage
unambiguously: `server error (SEVERITY: message (SQLSTATE code))`
(byte-parity with pgconn's `PgError` rendering), `hostname resolving
error (…)`, `dial error (…)`, `tls error (…)`.

### Classifier fixes (`legacyConnectSuggestion`)

Branch-by-branch verification against real driver shapes (captured
empirically under Bun, the CLI's runtime):

| Go branch | node-postgres shape | Before | After |
|---|---|---|---|
| `connect: connection refused` / allow_list → network-restrictions hint
| `ECONNREFUSED` code / server text | fired | fires (unchanged, now also
covered by real-`SqlError` tests) |
| `SSL connection is required` + `--debug` | server error text | fired |
fires (unchanged) |
| `SCRAM exchange: Wrong password` / `failed SASL auth` →
`SUPABASE_DB_PASSWORD` hint | `DatabaseError` 28P01 `password
authentication failed` | fired | fires (unchanged, proven against a real
wire-protocol ErrorResponse) |
| IPv6-only host → IPv6 pooler hint |
`EHOSTUNREACH`/`EADDRNOTAVAIL`/`ENETUNREACH` with an IPv6 `address`
field | **dead** for EHOSTUNREACH/EADDRNOTAVAIL (node puts the address
in a structured field, not libpq's parenthesized literal) | fires via
new structured errno+address check (`legacyHasIPv6DialCause`) |
| `connect: no route to host` → wrong-profile hint | `connect
EHOSTUNREACH <ip>:<port>` | **dead** (node never emits "no route to
host") | fires via `EHOSTUNREACH`, after the IPv6 branch, matching Go's
branch order |
| `Tenant or user not found` → wrong-profile hint | Supavisor server
error text | fired | fires (unchanged) |

`NODE_ENETUNREACH_PATTERN` now also tolerates a closing paren after the
port, since the new message format parenthesizes the driver cause.

### CLI-1942 guard (no accidental divergence)

Go has **no** suggestion branch for the session-pooler EOF drop
(`unexpected EOF`); node-postgres' equivalent is `Connection terminated
unexpectedly`. Tests pin that this shape stays unclassified (generic
`--debug` fallback) and that the message still carries the full `host=…
user=…` identity plus the cause verbatim.

## Residual driver-text differences (impossible to byte-match)

The inner cause text comes from the driver, so exact byte parity with Go
is impossible where the drivers word things differently — the
**structure** (`failed to connect to postgres:` prefix + `host=… user=…
database=…` + cause) and the stage labels match:

- Dial errors: node `connect ECONNREFUSED 1.2.3.4:5432` vs Go `dial tcp
1.2.3.4:5432: connect: connection refused`.
- Wrong password over SCRAM: pgconn labels by auth phase (`failed SASL
auth (…)`), which node-postgres does not expose, so TS renders `server
error (…)` — the inner `FATAL: password authentication failed for user
"postgres" (SQLSTATE 28P01)` bytes and the fired hint are identical.
- Unrecognized causes (e.g. the CLI-1942 EOF, connect timeout) render
verbatim with no stage word, where pgconn would say `failed to receive
message (unexpected EOF)` — no stage is guessed rather than fabricating
a wrong one.
- Server-side failures (`server error (SEVERITY: message (SQLSTATE
code))`) are byte-identical to Go given the same server bytes.

## Review findings deliberately left open

Five-perspective review (architect / engineer / security / DX /
go-parity-auditor) all approved. Non-blocking items noted for follow-up
rather than churned here:

- Consolidating the module's four error-chain traversals (collector /
deepest-path / two any-match predicates) into one walk primitive — they
have genuinely different semantics and predate this PR;
cross-referencing doc comments were added instead.
- Pre-existing, negligible divergence: an IPv4 `ENETUNREACH` gets no
suggestion in TS while Go's over-broad `network is unreachable` text
match would show the IPv6 hint even for IPv4 — the TS IPv6-literal gate
is deliberate and pre-existing.
- Pre-existing: `password authentication failed` as a wrong-password
disjunct would also classify a theoretical non-SCRAM 28P01 that Go
leaves unclassified; Supabase auth is always SCRAM.

Related: this PR does not touch `output.layer.ts` (PR #5946 / CLI-1973
territory) — the change is confined to the SqlError mapping and the
classifier module.

Fixes
[CLI-1976](https://linear.app/supabase/issue/CLI-1976/db-connection-failure-errors-lose-all-detail-connect-suggestions-may)
…ly across confirmation prompts (#5947)

Routes every legacy-parity confirmation through the single Go-faithful
helper `legacyPromptYesNo` (Go's `PromptYesNo`,
`apps/cli-go/internal/utils/console.go:38-107`) and deletes the
per-command shortcuts, so all three Go prompt properties hold
everywhere:

1. **`--yes` OR `SUPABASE_YES` auto-confirms** (viper `AutomaticEnv`;
project `.env` consulted exactly where Go's `loadNestedEnv` runs before
the prompt).
2. **Auto-confirm echoes `<label> [y/N] y` to stderr**
(`console.go:70-72`) instead of being silent.
3. **Non-TTY runs read piped stdin**: the label is printed, one line is
scanned (100 ms), a parsed `y`/`n` wins, and only empty/unparseable
input falls back to the default (`console.go:38-61,96-102`).

Fixes CLI-1974 —
https://linear.app/supabase/issue/CLI-1974/honor-yessupabase-yes-and-go-prompt-semantics-consistently-across

## ⚖ Flagged decision: item 3 (non-TTY piped stdin) is IMPLEMENTED

The issue left it open whether to match Go's non-TTY piped-stdin reads;
this PR takes the recommended option and implements them. Concretely,
commands that previously hardcoded a non-TTY default now consume **one
stdin line per confirmation** and honor it:

- `echo y | supabase projects delete <ref>` now **deletes** (previously
silently cancelled — verified against develop with a from-source
differential smoke test).
- `echo n | supabase secrets unset` now **declines** (previously
proceeded unconditionally).
- `echo n | supabase branches create` (git-branch auto-name) now
cancels; empty stdin keeps Go's Yes default.
- Scripts that pipe unrelated data into these commands should redirect
`< /dev/null` or pass `--yes`. Veto here if this should be
documented-divergence instead — the infrastructure (`Stdin.readLine`)
was already in place from db push/reset, so no architectural cost either
way.

## Per-site changes

| Site | Go ref (default) | Gaps fixed |
|---|---|---|
| `logout` | `logout.go:16` (N) | `--yes` short-circuited before the
stderr echo |
| `projects delete` | `delete.go:22` (N) | flag-only yes (no
`SUPABASE_YES`); non-TTY hardcoded cancel, no piped read, no label echo;
title now aqua like Go |
| `branches create` (auto-name) | `create.go:21` (Y) | `--yes`/env
ignored entirely (blocked a TTY); no piped read; no echo; title now aqua
|
| `secrets unset` | `unset.go:34` (Y) | non-TTY hardcoded confirm, no
piped read (env-aware yes + echo already existed) |
| `bootstrap` overwrite | `bootstrap.go:48` (Y) | no echo under `--yes`;
non-TTY went through clack |
| `functions deploy --prune` | `deploy.go:190` (N) | legacy passed
flag-only yes; no echo; no piped read; label now byte-matches
`confirmPruneAll` (` • ` + bold + trailing blank line, both shells) |
| `init -i` IDE prompts | `init.go:63,68` (Y/N) | prompted anyway under
`--yes`; `--yes` now also lifts the stdout-TTY gate (Go only requires
stdin TTY) |
| `functions new` IDE prompts | `new.go:99` → `init.go:62` | flag-only
yes; non-TTY hardcoded default, no piped read |
| `db schema declarative generate`/`sync`/smart-target |
`db_schema_declarative.go:269,321,381` + `declarative.go:234` (N/N/Y/N)
| flag-only yes (Go reads viper YES after `loadNestedEnv` → now
`legacyResolveYesWithProjectEnv`); no echo under yes. The sync
apply-decision (`:452-460`) and post-fail reset gate (`:478`) were
already faithful 1:1 ports of Go's own short-circuits and are unchanged
|

Already-correct sites (unchanged): config push, db pull, db push ×3, db
reset, gen signing-key, storage rm, seed buckets ×3 (via the helper),
migration fetch/down/repair (via `legacyMigrationConfirm`).

## Mechanics

- `legacyPromptYesNo` + `legacyParseYesNo` moved from
`src/legacy/shared/` to `src/shared/legacy/` (same home as
`legacyResolveYes` in `global-flags.ts`) because two shared files
(`shared/functions/deploy.ts`, `shared/init/project-init.ts`) now
confirm through it. Semantics unchanged; importers updated path-only.
- `ProjectInitOptions` gains `yes` (legacy init passes
`legacyResolveYes`; next init passes `false` — next exposes no `--yes`
on init, so next behavior is unchanged; bootstrap passes its resolved
yes with `interactive: false`).
- `stdinLayer` added to the layer composition of every command whose
confirmation can now read stdin; verified in the real composition by
from-source smoke tests (piped y/n/`--yes`/`SUPABASE_YES` differentials
vs develop).
- `migration.prompt.ts` now reuses the shared `legacyParseYesNo` and
both helpers cross-reference why they intentionally diverge (see below).

## Judgement calls deliberately left open (reviewer input welcome)

- **Machine mode (`--output-format json|stream-json`) without `--yes`**:
`legacyPromptYesNo` keeps its pre-existing contract — never prompt,
silently take the call site's Go default. Routing more sites through it
changes a few narrow machine-mode cells: `secrets unset` json+TTY now
proceeds (default Y) instead of cancelling; `bootstrap` overwrite json
now proceeds instead of failing with a prompt error; `declarative
generate --local` json with existing files now skips (exit 0) instead of
erroring. Go has no json mode; its script-mode analog (non-TTY) is
exactly this default-through behavior, and this matches the helper's 7
pre-existing users (config push, db pull/push/reset, storage rm,
signing-key, seed buckets). `logout` deliberately keeps its documented
fail-loud json contract. A stricter "fail loudly in machine mode when
the default is destructive" rule was proposed in internal review — it
would change already-shipped behavior of the pre-existing helper users,
so it is left as a follow-up decision. New regression test locks the
`secrets unset` json contract either way.
- **`legacyMigrationConfirm` not consolidated**: the migration family's
helper intentionally prompts regardless of output format and uses a raw
TTY read (both arguably *more* Go-faithful); merging the two requires
deciding the machine-mode question above first. Both files now carry
cross-referencing comments so the divergence is explicit.
- **`shared/functions/deploy.ts` → `legacy/shared/legacy-colors.ts`
import** (for the bold prune slugs) deepens a pre-existing shared→legacy
edge in that file (`spawnContainerCli`, `legacy-docker-registry` already
do this); hoisting the color primitives is left as a cleanup follow-up.
- **Next-shell visible change**: next `functions deploy --prune`
inherits Go's exact prompt bytes (` • ` bullets, bold slugs, stderr echo
under `--yes`, piped-stdin reads) via the shared file — deliberate,
covered by new next-shell tests.

## Expected overlap with #5946

#5946 (CLI-1973, open) replaces `"context canceled"` literals with
`CONTEXT_CANCELED_MESSAGE` and suppresses the `--debug` hint on declined
prompts, touching many of the same handlers (logout, projects delete,
secrets unset, branches create, bootstrap, db push/reset, migration \*,
signing-key, `shared/functions/deploy.ts`, `shared/output/*`). This
branch is based on develop without it and avoids rewriting those exact
lines; expect small, mechanical merge overlap in import blocks and
around the cancellation branches whichever lands second.
… in /apps/cli-go in the go-minor group across 1 directory (#5961)

Bumps the go-minor group with 1 update in the /apps/cli-go directory:
[github.com/posthog/posthog-go](https://github.com/posthog/posthog-go).

Updates `github.com/posthog/posthog-go` from 1.19.0 to 1.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/posthog/posthog-go/releases">github.com/posthog/posthog-go's
releases</a>.</em></p>
<blockquote>
<h2>1.21.0</h2>
<h2>Unreleased</h2>
<h2>1.20.0</h2>
<h2>Unreleased</h2>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PostHog/posthog-go/blob/main/CHANGELOG.md">github.com/posthog/posthog-go's
changelog</a>.</em></p>
<blockquote>
<h2>1.21.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>9e9ad63: Send minimal <code>$feature_flag_called</code> events when
the server enables it. When the <code>/flags?v=2</code> response carries
<code>minimalFlagCalledEvents: true</code> (remote evaluation) or the
local-evaluation definitions payload carries
<code>minimal_flag_called_events: true</code>, and the evaluated flag
has <code>has_experiment: false</code>, the event keeps only a strict
allowlist of evaluation properties (<code>$feature_flag</code>,
<code>$feature_flag_response</code>,
<code>$feature_flag_has_experiment</code>,
<code>$feature_flag_id</code>, <code>$feature_flag_version</code>,
<code>$feature_flag_reason</code>,
<code>$feature_flag_request_id</code>,
<code>$feature_flag_evaluated_at</code>,
<code>$feature_flag_error</code>, <code>locally_evaluated</code>,
<code>$groups</code>, <code>$process_person_profile</code>,
<code>$geoip_disable</code>, <code>$is_server</code>,
<code>$session_id</code>, <code>$window_id</code>,
<code>$device_id</code>, <code>$lib</code>, <code>$lib_version</code>)
plus static system context (<code>$os</code>, <code>$os_version</code>,
<code>$os_distro</code>, <code>$go_version</code>); everything else —
including <code>Config.DefaultEventProperties</code> and the snapshot
path's <code>$feature/&lt;key&gt;</code> and
<code>$feature_flag_payload</code> — is stripped. Any missing signal
(gate absent, <code>has_experiment</code> unknown, experiment-linked
flag, legacy response shapes) keeps today's full event shape. The gate
is server-controlled per project; no SDK configuration is added.</li>
</ul>
<h2>1.20.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>3ea8ce6: Error tracking stack frames are now sent in the canonical
cross-SDK wire order: the entry point is first and the crash/capture
site is last. Previously frames were sent innermost-first. Coordinated
rollout: the ingestion pipeline gates on <code>$lib_version</code>, so
this ships as a minor release.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PostHog/posthog-go/commit/73399d91c20bf285055f67369a12fcc122787368"><code>73399d9</code></a>
chore: release v1.21.0 [version bump] [skip ci]</li>
<li><a
href="https://github.com/PostHog/posthog-go/commit/9e9ad63e1a20580d6f92ec11a9b19f069d0cd182"><code>9e9ad63</code></a>
feat(flags): minimize $feature_flag_called events for non-experiment
flags (#...</li>
<li><a
href="https://github.com/PostHog/posthog-go/commit/10bec86e482d4a69d7be22378e5d57e44563cb18"><code>10bec86</code></a>
chore: release v1.20.0 [version bump] [skip ci]</li>
<li><a
href="https://github.com/PostHog/posthog-go/commit/3ea8ce6e178f081501e6294abfba0c33c461e98f"><code>3ea8ce6</code></a>
feat: send error tracking stack frames in canonical bottom-up order (<a
href="https://redirect.github.com/posthog/posthog-go/issues/254">#254</a>)</li>
<li>See full diff in <a
href="https://github.com/posthog/posthog-go/compare/v1.19.0...v1.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/posthog/posthog-go&package-manager=go_modules&previous-version=1.19.0&new-version=1.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the actions-major group with 2 updates:
[github/codeql-action/init](https://github.com/github/codeql-action) and
[github/codeql-action/analyze](https://github.com/github/codeql-action).

Updates `github/codeql-action/init` from 4.37.1 to 4.37.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action/init's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.2</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action/init's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
</ul>
<h2>4.37.3 - 22 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.2 - 21 Jul 2026</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>4.37.1 - 16 Jul 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>4.36.3 - 01 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.36.2 - 04 Jun 2026</h2>
<ul>
<li>Cache CodeQL CLI version information across Actions steps. <a
href="https://redirect.github.com/github/codeql-action/pull/3943">#3943</a></li>
<li>Reduce requests while waiting for analysis processing by using
exponential backoff when polling SARIF processing status. <a
href="https://redirect.github.com/github/codeql-action/pull/3937">#3937</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li>
</ul>
<h2>4.36.1 - 02 Jun 2026</h2>
<p>No user facing changes.</p>
<h2>4.36.0 - 22 May 2026</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>4.35.5 - 15 May 2026</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/e0647621c2984b5ed2f768cb892365bf2a616ad1"><code>e064762</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4027">#4027</a>
from github/update-v4.37.2-385bcdc5a</li>
<li><a
href="https://github.com/github/codeql-action/commit/e0faed839190caa67a5cd42f1cc16246028ca3df"><code>e0faed8</code></a>
Add a couple of change notes</li>
<li><a
href="https://github.com/github/codeql-action/commit/73aad0eaa9df172668665a150d17b8bc5a650c20"><code>73aad0e</code></a>
Update changelog for v4.37.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/385bcdc5afb0b5a06bd1dae7809fda5453c7664b"><code>385bcdc</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4026">#4026</a>
from github/dependabot/npm_and_yarn/tar-7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/de0229cea17fd9b594946f05dccc18e9c33a15d1"><code>de0229c</code></a>
Merge branch 'main' into dependabot/npm_and_yarn/tar-7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/115e8cbbe9419ab1ea002e5c0c6d4797d7820bf8"><code>115e8cb</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4010">#4010</a>
from github/mbg/ts/update-release-branch</li>
<li><a
href="https://github.com/github/codeql-action/commit/dbdf0b0c7d63778e4b807cb4cef00f090e7dcd4b"><code>dbdf0b0</code></a>
Bump tar from 7.5.16 to 7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/830c23121c8d6124ad817115f9d68da98f44eba0"><code>830c231</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4023">#4023</a>
from github/mbg/ff/remove-new-remote-file-addresses-ff</li>
<li><a
href="https://github.com/github/codeql-action/commit/69fd9e97ba2f4e95024e587c495eec0f1c9186ea"><code>69fd9e9</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4024">#4024</a>
from github/mbg/private-registry/make-docker-available</li>
<li><a
href="https://github.com/github/codeql-action/commit/b85568788a5dbb01732f9d4e0d0882e5429bb804"><code>b855687</code></a>
Always make <code>docker_registry</code> registries available</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e0647621c2984b5ed2f768cb892365bf2a616ad1">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action/analyze` from 4.37.1 to 4.37.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action/analyze's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.2</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action/analyze's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
</ul>
<h2>4.37.3 - 22 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.2 - 21 Jul 2026</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>4.37.1 - 16 Jul 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>4.36.3 - 01 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.36.2 - 04 Jun 2026</h2>
<ul>
<li>Cache CodeQL CLI version information across Actions steps. <a
href="https://redirect.github.com/github/codeql-action/pull/3943">#3943</a></li>
<li>Reduce requests while waiting for analysis processing by using
exponential backoff when polling SARIF processing status. <a
href="https://redirect.github.com/github/codeql-action/pull/3937">#3937</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li>
</ul>
<h2>4.36.1 - 02 Jun 2026</h2>
<p>No user facing changes.</p>
<h2>4.36.0 - 22 May 2026</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>4.35.5 - 15 May 2026</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/e0647621c2984b5ed2f768cb892365bf2a616ad1"><code>e064762</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4027">#4027</a>
from github/update-v4.37.2-385bcdc5a</li>
<li><a
href="https://github.com/github/codeql-action/commit/e0faed839190caa67a5cd42f1cc16246028ca3df"><code>e0faed8</code></a>
Add a couple of change notes</li>
<li><a
href="https://github.com/github/codeql-action/commit/73aad0eaa9df172668665a150d17b8bc5a650c20"><code>73aad0e</code></a>
Update changelog for v4.37.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/385bcdc5afb0b5a06bd1dae7809fda5453c7664b"><code>385bcdc</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4026">#4026</a>
from github/dependabot/npm_and_yarn/tar-7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/de0229cea17fd9b594946f05dccc18e9c33a15d1"><code>de0229c</code></a>
Merge branch 'main' into dependabot/npm_and_yarn/tar-7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/115e8cbbe9419ab1ea002e5c0c6d4797d7820bf8"><code>115e8cb</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4010">#4010</a>
from github/mbg/ts/update-release-branch</li>
<li><a
href="https://github.com/github/codeql-action/commit/dbdf0b0c7d63778e4b807cb4cef00f090e7dcd4b"><code>dbdf0b0</code></a>
Bump tar from 7.5.16 to 7.5.20</li>
<li><a
href="https://github.com/github/codeql-action/commit/830c23121c8d6124ad817115f9d68da98f44eba0"><code>830c231</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4023">#4023</a>
from github/mbg/ff/remove-new-remote-file-addresses-ff</li>
<li><a
href="https://github.com/github/codeql-action/commit/69fd9e97ba2f4e95024e587c495eec0f1c9186ea"><code>69fd9e9</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4024">#4024</a>
from github/mbg/private-registry/make-docker-available</li>
<li><a
href="https://github.com/github/codeql-action/commit/b85568788a5dbb01732f9d4e0d0882e5429bb804"><code>b855687</code></a>
Always make <code>docker_registry</code> registries available</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e0647621c2984b5ed2f768cb892365bf2a616ad1">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@supabase-cli-releaser
supabase-cli-releaser Bot requested a review from a team as a code owner July 28, 2026 03:10
@supabase-cli-releaser supabase-cli-releaser Bot added the do not merge Approve to apply; do not merge. label Jul 28, 2026
dependabot Bot and others added 4 commits July 28, 2026 09:23
…tes (#5964)

Bumps the npm-major group with 23 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [undici](https://github.com/nodejs/undici) | `8.7.0` | `8.8.0` |
|
[@supabase/supabase-js](https://github.com/supabase/supabase-js/tree/HEAD/packages/core/supabase-js)
| `2.110.5` | `2.110.7` |
|
[@anthropic-ai/claude-agent-sdk](https://github.com/anthropics/claude-agent-sdk-typescript)
| `0.3.209` | `0.3.216` |
|
[@anthropic-ai/sdk](https://github.com/anthropics/anthropic-sdk-typescript)
| `0.111.0` | `0.112.4` |
| [@parcel/watcher](https://github.com/parcel-bundler/watcher) | `2.5.6`
| `2.6.0` |
| [ink](https://github.com/vadimdemedes/ink) | `7.1.0` | `7.1.1` |
|
[posthog-node](https://github.com/PostHog/posthog-js/tree/HEAD/packages/node)
| `5.41.0` | `5.46.0` |
|
[semantic-release](https://github.com/semantic-release/semantic-release)
| `25.0.7` | `25.0.8` |
| [fumadocs-core](https://github.com/fuma-nama/fumadocs) | `16.11.4` |
`16.11.5` |
| [fumadocs-mdx](https://github.com/fuma-nama/fumadocs) | `15.1.1` |
`15.2.0` |
| [fumadocs-ui](https://github.com/fuma-nama/fumadocs) | `16.11.4` |
`16.11.5` |
|
[@effect/atom-react](https://github.com/Effect-TS/effect/tree/HEAD/packages/atom/react)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
|
[@effect/platform-bun](https://github.com/Effect-TS/effect/tree/HEAD/packages/platform-bun)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
|
[@effect/platform-node](https://github.com/Effect-TS/effect/tree/HEAD/packages/platform-node)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
|
[@effect/sql-pg](https://github.com/Effect-TS/effect/tree/HEAD/packages/sql-pg)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
|
[@effect/vitest](https://github.com/Effect-TS/effect/tree/HEAD/packages/vitest)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
| [@swc-node/register](https://github.com/swc-project/swc-node) |
`1.11.1` | `1.12.1` |
|
[@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core)
| `1.15.43` | `1.15.46` |
|
[effect](https://github.com/Effect-TS/effect/tree/HEAD/packages/effect)
| `4.0.0-beta.97` | `4.0.0-beta.99` |
| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) |
`6.26.0` | `6.27.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) |
`0.58.0` | `0.59.0` |
| [oxlint-tsgolint](https://github.com/oxc-project/tsgolint) | `0.24.0`
| `0.25.0` |
| [tldts](https://github.com/remusao/tldts) | `6.1.86` | `7.4.9` |


Updates `undici` from 8.7.0 to 8.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nodejs/undici/releases">undici's
releases</a>.</em></p>
<blockquote>
<h2>v8.8.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fetch: use ReadableStreamTee for cloning streams by <a
href="https://github.com/KhafraDev"><code>@​KhafraDev</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5517">nodejs/undici#5517</a></li>
<li>fix(benchmarks): adjust got after v15 upgrade by <a
href="https://github.com/slagiewka"><code>@​slagiewka</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5526">nodejs/undici#5526</a></li>
<li>feat(mock): support asynchronous reply options callbacks by <a
href="https://github.com/Develop-KIM"><code>@​Develop-KIM</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5534">nodejs/undici#5534</a></li>
<li>docs: clarify proxy threat model by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5530">nodejs/undici#5530</a></li>
<li>docs: clarify MockAgent pool usage by <a
href="https://github.com/vibhor-aggr"><code>@​vibhor-aggr</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5542">nodejs/undici#5542</a></li>
<li>docs: clarify parser timeout precision by <a
href="https://github.com/vibhor-aggr"><code>@​vibhor-aggr</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5543">nodejs/undici#5543</a></li>
<li>fix: handle flat alternating header arrays in cache normalizeHeaders
by <a href="https://github.com/mcollina"><code>@​mcollina</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5536">nodejs/undici#5536</a></li>
<li>chore(benchmarks): require(esm) on ESM-only packages by <a
href="https://github.com/slagiewka"><code>@​slagiewka</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5527">nodejs/undici#5527</a></li>
<li>fix: run idle socket validation off setImmediate instead of
setTimeout by <a
href="https://github.com/carlotestor"><code>@​carlotestor</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5499">nodejs/undici#5499</a></li>
<li>docs: add custom interceptor example by <a
href="https://github.com/vibhor-aggr"><code>@​vibhor-aggr</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5548">nodejs/undici#5548</a></li>
<li>fix(h1): ignore type of service errors by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5547">nodejs/undici#5547</a></li>
<li>fix(fetch): convert null init in Response.json by <a
href="https://github.com/Ram-blip"><code>@​Ram-blip</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5540">nodejs/undici#5540</a></li>
<li>fix(redirect): remove body headers after POST-to-GET by <a
href="https://github.com/Ram-blip"><code>@​Ram-blip</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5551">nodejs/undici#5551</a></li>
<li>build(deps-dev): bump fast-check from 4.8.0 to 4.9.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/nodejs/undici/pull/5556">nodejs/undici#5556</a></li>
<li>fix(h2): allow stream-bodied requests to multiplex on a busy session
by <a href="https://github.com/GiHoon1123"><code>@​GiHoon1123</code></a>
in <a
href="https://redirect.github.com/nodejs/undici/pull/5538">nodejs/undici#5538</a></li>
<li>fix(h2): destroy aborted stream synchronously instead of via
setImmediate by <a
href="https://github.com/staylor"><code>@​staylor</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5559">nodejs/undici#5559</a></li>
<li>fix(decompress): skip HEAD responses by <a
href="https://github.com/Ram-blip"><code>@​Ram-blip</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5564">nodejs/undici#5564</a></li>
<li>ci: build undici with node.js v26 by <a
href="https://github.com/shivarm"><code>@​shivarm</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5237">nodejs/undici#5237</a></li>
<li>docs: clarify top-level request option url fields by <a
href="https://github.com/vibhor-aggr"><code>@​vibhor-aggr</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5545">nodejs/undici#5545</a></li>
<li>test: add unexpected disconnect guards to http2 tests by <a
href="https://github.com/Develop-KIM"><code>@​Develop-KIM</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5533">nodejs/undici#5533</a></li>
<li>fix: track origins by client map key in Agent teardown by <a
href="https://github.com/emmayusufu"><code>@​emmayusufu</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5537">nodejs/undici#5537</a></li>
<li>fix: enforce must-revalidate and proxy-revalidate over max-stale and
stale-if-error by <a
href="https://github.com/jeswr"><code>@​jeswr</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5511">nodejs/undici#5511</a></li>
<li>fix(retry): handle Retry-After zero delay by <a
href="https://github.com/Ram-blip"><code>@​Ram-blip</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5519">nodejs/undici#5519</a></li>
<li>fix: honor stale-if-error on connection errors during revalidation
by <a href="https://github.com/jeswr"><code>@​jeswr</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5513">nodejs/undici#5513</a></li>
<li>fix: store revalidation-only responses so etag revalidation can
engage by <a href="https://github.com/jeswr"><code>@​jeswr</code></a> in
<a
href="https://redirect.github.com/nodejs/undici/pull/5515">nodejs/undici#5515</a></li>
<li>fix(h2): prevent uncaughtException from onHttp2SocketError accessing
undefined kClient by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5546">nodejs/undici#5546</a></li>
<li>fix(h2): complete request stream on 'end' instead of waiting for
'close' by <a
href="https://github.com/staylor"><code>@​staylor</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5560">nodejs/undici#5560</a></li>
<li>fix: invalidate Location and Content-Location URIs on unsafe methods
by <a href="https://github.com/jeswr"><code>@​jeswr</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5514">nodejs/undici#5514</a></li>
<li>test: deflake invalid websocket close status test by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5550">nodejs/undici#5550</a></li>
<li>refactor: replace tspl with node:test t.plan in connect-timeout
tests by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5518">nodejs/undici#5518</a></li>
<li>fix(h2): release completed requests from queue by <a
href="https://github.com/staylor"><code>@​staylor</code></a> in <a
href="https://redirect.github.com/nodejs/undici/pull/5569">nodejs/undici#5569</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/Develop-KIM"><code>@​Develop-KIM</code></a>
made their first contribution in <a
href="https://redirect.github.com/nodejs/undici/pull/5534">nodejs/undici#5534</a></li>
<li><a
href="https://github.com/carlotestor"><code>@​carlotestor</code></a>
made their first contribution in <a
href="https://redirect.github.com/nodejs/undici/pull/5499">nodejs/undici#5499</a></li>
<li><a
href="https://github.com/GiHoon1123"><code>@​GiHoon1123</code></a> made
their first contribution in <a
href="https://redirect.github.com/nodejs/undici/pull/5538">nodejs/undici#5538</a></li>
<li><a
href="https://github.com/emmayusufu"><code>@​emmayusufu</code></a> made
their first contribution in <a
href="https://redirect.github.com/nodejs/undici/pull/5537">nodejs/undici#5537</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0">https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nodejs/undici/commit/1760faa557f5f29c6dbd33fcbe6b0422cee16856"><code>1760faa</code></a>
Bumped v8.8.0 (<a
href="https://redirect.github.com/nodejs/undici/issues/5575">#5575</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/f87273eb073db316e1f025064459818b6710a2bf"><code>f87273e</code></a>
fix(h2): release completed requests from queue (<a
href="https://redirect.github.com/nodejs/undici/issues/5569">#5569</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/1383989019ab9e98ca6aa0c743922b6edb6f11f0"><code>1383989</code></a>
refactor: replace tspl with node:test t.plan in connect-timeout tests
(<a
href="https://redirect.github.com/nodejs/undici/issues/5518">#5518</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/c6d37d2ccd4f6822c00993c2f2441050cfb84be0"><code>c6d37d2</code></a>
test: deflake invalid websocket close status test (<a
href="https://redirect.github.com/nodejs/undici/issues/5550">#5550</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/1ca091237806cc347cd405fe7217ef1618623398"><code>1ca0912</code></a>
fix: invalidate Location and Content-Location URIs on unsafe methods (<a
href="https://redirect.github.com/nodejs/undici/issues/5514">#5514</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/87270e46a22660a1975e199335862cdaeb11e22c"><code>87270e4</code></a>
fix(h2): complete request stream on 'end' instead of waiting for 'close'
(<a
href="https://redirect.github.com/nodejs/undici/issues/5560">#5560</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/85b35e7791209b610020c4924a7777cffe6e43da"><code>85b35e7</code></a>
fix(h2): prevent uncaughtException from onHttp2SocketError accessing
undefine...</li>
<li><a
href="https://github.com/nodejs/undici/commit/de01babccb69bf3dc2b2ebd064bc302d7c31f9f1"><code>de01bab</code></a>
fix: store revalidation-only responses so etag revalidation can engage
(<a
href="https://redirect.github.com/nodejs/undici/issues/5515">#5515</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/e1cc0d436cc43ee737a083f9e6348ec45614e796"><code>e1cc0d4</code></a>
fix: honor stale-if-error on connection errors during revalidation (<a
href="https://redirect.github.com/nodejs/undici/issues/5513">#5513</a>)</li>
<li><a
href="https://github.com/nodejs/undici/commit/dc7c044fcd05e5b636ee213f6e67dfd224163291"><code>dc7c044</code></a>
fix(retry): handle Retry-After zero delay (<a
href="https://redirect.github.com/nodejs/undici/issues/5519">#5519</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@supabase/supabase-js` from 2.110.5 to 2.110.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/supabase/supabase-js/releases">@​supabase/supabase-js's
releases</a>.</em></p>
<blockquote>
<h2>v2.110.7</h2>
<h2>2.110.7 (2026-07-16)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>postgrest:</strong> correct self-reference inference (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2525">#2525</a>)</li>
<li><strong>realtime:</strong> trigger set auth on INITIAL_SESSION event
(<a
href="https://redirect.github.com/supabase/supabase-js/pull/2531">#2531</a>)</li>
<li><strong>realtime:</strong> update phoenix to fix presence issue (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2532">#2532</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Eduardo Gurgel</li>
<li>Filipe Cabaço <a
href="https://github.com/filipecabaco"><code>@​filipecabaco</code></a></li>
<li>Vaibhav <a
href="https://github.com/7ttp"><code>@​7ttp</code></a></li>
</ul>
<h2>v2.110.7-canary.1</h2>
<h2>2.110.7-canary.1 (2026-07-16)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>realtime:</strong> update phoenix to fix presence issue (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2532">#2532</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Eduardo Gurgel</li>
</ul>
<h2>v2.110.7-canary.0</h2>
<h2>2.110.7-canary.0 (2026-07-16)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>postgrest:</strong> correct self-reference inference (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2525">#2525</a>)</li>
<li><strong>realtime:</strong> trigger set auth on INITIAL_SESSION event
(<a
href="https://redirect.github.com/supabase/supabase-js/pull/2531">#2531</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Filipe Cabaço <a
href="https://github.com/filipecabaco"><code>@​filipecabaco</code></a></li>
<li>Vaibhav <a
href="https://github.com/7ttp"><code>@​7ttp</code></a></li>
</ul>
<h2>v2.110.6</h2>
<h2>2.110.6 (2026-07-15)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>postgrest:</strong> type hinted self-referencing embeds as
arrays (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2520">#2520</a>)</li>
<li><strong>realtime:</strong> forward opts to send() in track() (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2490">#2490</a>)</li>
<li><strong>supabase:</strong> warn instead of throw for unrecognized
sb_ API key subtypes (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2526">#2526</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/supabase/supabase-js/blob/master/packages/core/supabase-js/CHANGELOG.md">@​supabase/supabase-js's
changelog</a>.</em></p>
<blockquote>
<h2>2.110.7 (2026-07-16)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>realtime:</strong> trigger set auth on INITIAL_SESSION event
(<a
href="https://redirect.github.com/supabase/supabase-js/pull/2531">#2531</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Filipe Cabaço <a
href="https://github.com/filipecabaco"><code>@​filipecabaco</code></a></li>
</ul>
<h2>2.110.6 (2026-07-15)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>supabase:</strong> warn instead of throw for unrecognized
sb_ API key subtypes (<a
href="https://redirect.github.com/supabase/supabase-js/pull/2526">#2526</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Katerina Skroumpelou <a
href="https://github.com/mandarini"><code>@​mandarini</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/supabase/supabase-js/commit/130fa11ac61dbed695f75ea8fb88a796e15db985"><code>130fa11</code></a>
fix(realtime): trigger set auth on INITIAL_SESSION event (<a
href="https://github.com/supabase/supabase-js/tree/HEAD/packages/core/supabase-js/issues/2531">#2531</a>)</li>
<li><a
href="https://github.com/supabase/supabase-js/commit/c90b1cdec7fecaaf0f959d22e7b40f98aa06ec6b"><code>c90b1cd</code></a>
chore(release): version 2.110.6 changelogs (<a
href="https://github.com/supabase/supabase-js/tree/HEAD/packages/core/supabase-js/issues/2527">#2527</a>)</li>
<li><a
href="https://github.com/supabase/supabase-js/commit/c23e1ab3834d039d6df6417f72636910359a26c8"><code>c23e1ab</code></a>
fix(supabase): warn instead of throw for unrecognized sb_ API key
subtypes (#...</li>
<li><a
href="https://github.com/supabase/supabase-js/commit/8af3c3a2abedcc6e2408e7ef1e907db108e23afe"><code>8af3c3a</code></a>
chore(release): version 2.110.5 changelogs (<a
href="https://github.com/supabase/supabase-js/tree/HEAD/packages/core/supabase-js/issues/2524">#2524</a>)</li>
<li>See full diff in <a
href="https://github.com/supabase/supabase-js/commits/v2.110.7/packages/core/supabase-js">compare
view</a></li>
</ul>
</details>
<br />

Updates `@anthropic-ai/claude-agent-sdk` from 0.3.209 to 0.3.216
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/claude-agent-sdk-typescript/releases">@​anthropic-ai/claude-agent-sdk's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.216</h2>
<h2>What's changed</h2>
<ul>
<li>Added optional <code>skippedLinks</code> count to
<code>rewindFiles</code> responses for paths the rewind safety guards
refused to restore or delete</li>
<li>Added <code>tool_result_meta</code> sidecar to user messages
(<code>non_execution_kind</code>, <code>user_feedback</code>) so
consumers can classify denied, interrupted, or cancelled tool calls
without string-matching result prose</li>
<li>Added optional <code>user_message_uuid</code> and
<code>request_sent_wall_ms</code> fields to the success result message
for cross-host request-latency correlation</li>
</ul>
<h2>Update</h2>
<pre lang="sh"><code>npm install @anthropic-ai/claude-agent-sdk@0.3.216
# or
yarn add @anthropic-ai/claude-agent-sdk@0.3.216
# or
pnpm add @anthropic-ai/claude-agent-sdk@0.3.216
# or
bun add @anthropic-ai/claude-agent-sdk@0.3.216
</code></pre>
<h2>v0.3.215</h2>
<h2>What's changed</h2>
<ul>
<li>Updated to parity with Claude Code v2.1.215</li>
</ul>
<h2>Update</h2>
<pre lang="sh"><code>npm install @anthropic-ai/claude-agent-sdk@0.3.215
# or
yarn add @anthropic-ai/claude-agent-sdk@0.3.215
# or
pnpm add @anthropic-ai/claude-agent-sdk@0.3.215
# or
bun add @anthropic-ai/claude-agent-sdk@0.3.215
</code></pre>
<h2>v0.3.214</h2>
<h2>What's changed</h2>
<ul>
<li><code>set_permission_mode</code> now rejects unrecognized permission
modes with an error instead of silently adopting them; the
<code>'manual'</code> alias is accepted at every ingress</li>
<li>Added optional <code>subkind: 'scheduled-trigger'</code> to the
<code>task-notification</code> member of <code>SDKMessageOrigin</code>,
marking deliveries that are the fired prompt of a user-configured
scheduled task</li>
<li><code>applyFlagSettings({effortLevel})</code> now accepts
<code>'max'</code> in its TypeScript type (runtime already supported
it)</li>
<li>Assistant messages truncated by <code>interrupt()</code> now carry
<code>aborted: true</code>, so consumers can distinguish a mid-stream
partial from a completed message</li>
<li>Added optional <code>subagent_type</code> and
<code>subagent_retry</code> fields to <code>tool_progress</code>
messages so clients can show a subagent waiting out an API rate-limit
retry</li>
<li>The <code>system/init</code> message's <code>plugins</code> entries
and the <code>reload_plugins</code> response now include each plugin's
manifest <code>version</code></li>
<li>SessionStart hooks now report source <code>&quot;fork&quot;</code>
instead of <code>&quot;resume&quot;</code> when the session begins as a
fork</li>
</ul>
<h2>Update</h2>
<pre lang="sh"><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md">@​anthropic-ai/claude-agent-sdk's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.216</h2>
<ul>
<li>Added optional <code>skippedLinks</code> count to
<code>rewindFiles</code> responses for paths the rewind safety guards
refused to restore or delete</li>
<li>Added <code>tool_result_meta</code> sidecar to user messages
(<code>non_execution_kind</code>, <code>user_feedback</code>) so
consumers can classify denied, interrupted, or cancelled tool calls
without string-matching result prose</li>
<li>Added optional <code>user_message_uuid</code> and
<code>request_sent_wall_ms</code> fields to the success result message
for cross-host request-latency correlation</li>
</ul>
<h2>0.3.215</h2>
<ul>
<li>Updated to parity with Claude Code v2.1.215</li>
</ul>
<h2>0.3.214</h2>
<ul>
<li><code>set_permission_mode</code> now rejects unrecognized permission
modes with an error instead of silently adopting them; the
<code>'manual'</code> alias is accepted at every ingress</li>
<li>Added optional <code>subkind: 'scheduled-trigger'</code> to the
<code>task-notification</code> member of <code>SDKMessageOrigin</code>,
marking deliveries that are the fired prompt of a user-configured
scheduled task</li>
<li><code>applyFlagSettings({effortLevel})</code> now accepts
<code>'max'</code> in its TypeScript type (runtime already supported
it)</li>
<li>Assistant messages truncated by <code>interrupt()</code> now carry
<code>aborted: true</code>, so consumers can distinguish a mid-stream
partial from a completed message</li>
<li>Added optional <code>subagent_type</code> and
<code>subagent_retry</code> fields to <code>tool_progress</code>
messages so clients can show a subagent waiting out an API rate-limit
retry</li>
<li>The <code>system/init</code> message's <code>plugins</code> entries
and the <code>reload_plugins</code> response now include each plugin's
manifest <code>version</code></li>
<li>SessionStart hooks now report source <code>&quot;fork&quot;</code>
instead of <code>&quot;resume&quot;</code> when the session begins as a
fork</li>
</ul>
<h2>0.3.213</h2>
<ul>
<li>Updated to parity with Claude Code v2.1.213</li>
</ul>
<h2>0.3.212</h2>
<ul>
<li>Fixed dash-leading <code>resumeSessionAt</code> and
<code>sessionId</code> values being passed to the CLI as separate argv
tokens; both now use equals-form (<code>--flag=value</code>)</li>
<li>Agent tool output now includes the resolved model when a mid-turn
model swap changed the subagent's model</li>
</ul>
<h2>0.3.211</h2>
<ul>
<li>Fixed <code>--replay-user-messages</code> with
<code>--include-partial-messages</code> emitting the turn-start user
replay after the first content block instead of before the turn's
content events</li>
<li>Added <code>SDKAssistantMessage.timestamp</code> (ISO-8601) to the
live stream, matching <code>SDKUserMessage</code>; older emitters omit
it, consumers should fall back to receive time</li>
<li>Added rate-limit message prefix buckets
(<code>USAGE_LIMIT_ERROR_PREFIXES</code> and siblings) as
<code>@alpha</code> exports for classifying rate-limit messages without
hand-mirrored lists</li>
<li>Improved process-exit errors to include the CLI's stderr output, so
a failed child reports its actual cause instead of only an exit
code</li>
</ul>
<h2>0.3.210</h2>
<ul>
<li>Added <code>timedOutAfterMs</code> to <code>BashToolOutput</code>,
set when a command is auto-backgrounded on timeout</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/e77c325bdb14449fa7d3dc66ac5ea2bb22668471"><code>e77c325</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/cf5a4421352f7411025e3937d97f4f731dc3249b"><code>cf5a442</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/a4acbcd464aff7b2b4cca441cb9886f76fa881db"><code>a4acbcd</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/f1206afbf0fe8f69dcd8f79768f6e5c0dd6ab783"><code>f1206af</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/d7f244a55e3806214dad7c48ab9e8ac756479770"><code>d7f244a</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/018efaa0c370396b1ac6ba8ae0a4ceaacd27c986"><code>018efaa</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/d9eca208ac10a41eda2072349e332f0d187fa764"><code>d9eca20</code></a>
chore: Update CHANGELOG.md</li>
<li><a
href="https://github.com/anthropics/claude-agent-sdk-typescript/commit/34426a18f0512376886d455a90fcb65a5b5b97bc"><code>34426a1</code></a>
Escape untrusted issue fields in the Slack notification workflow (<a
href="https://redirect.github.com/anthropics/claude-agent-sdk-typescript/issues/375">#375</a>)</li>
<li>See full diff in <a
href="https://github.com/anthropics/claude-agent-sdk-typescript/compare/v0.3.209...v0.3.216">compare
view</a></li>
</ul>
</details>
<br />

Updates `@anthropic-ai/sdk` from 0.111.0 to 0.112.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-typescript/releases">@​anthropic-ai/sdk's
releases</a>.</em></p>
<blockquote>
<h2>sdk: v0.112.4</h2>
<h2>0.112.4 (2026-07-20)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.3...sdk-v0.112.4">sdk-v0.112.3...sdk-v0.112.4</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>aws:</strong> preserve AWS options and auth mode across
withOptions() (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-typescript/issues/214">#214</a>)
(<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/3f7665c5419eb80c489546a70da799648e7d5ff2">3f7665c</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> small updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/97f68a88e13ba11b1e903d2d7181da3e4edd5c10">97f68a8</a>)</li>
</ul>
<h2>sdk: v0.112.3</h2>
<h2>0.112.3 (2026-07-17)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.2...sdk-v0.112.3">sdk-v0.112.2...sdk-v0.112.3</a></p>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> small updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/79fd6c7dd046e066965aa7ab9897695c174f88bb">79fd6c7</a>)</li>
</ul>
<h2>sdk: v0.112.2</h2>
<h2>0.112.2 (2026-07-17)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.1...sdk-v0.112.2">sdk-v0.112.1...sdk-v0.112.2</a></p>
<h3>Chores</h3>
<ul>
<li><strong>client:</strong> docs updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/fdb3a65501a809b4e949131f2097dc0d84e01cc7">fdb3a65</a>)</li>
</ul>
<h2>sdk: v0.112.1</h2>
<h2>0.112.1 (2026-07-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.0...sdk-v0.112.1">sdk-v0.112.0...sdk-v0.112.1</a></p>
<h2>sdk: v0.112.0</h2>
<h2>0.112.0 (2026-07-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.111.0...sdk-v0.112.0">sdk-v0.111.0...sdk-v0.112.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add support for MCP Tunnels (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/597ac4181f318e46fb974e716467648587e95362">597ac41</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-typescript/blob/main/CHANGELOG.md">@​anthropic-ai/sdk's
changelog</a>.</em></p>
<blockquote>
<h2>0.112.4 (2026-07-20)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.3...sdk-v0.112.4">sdk-v0.112.3...sdk-v0.112.4</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>aws:</strong> preserve AWS options and auth mode across
withOptions() (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-typescript/issues/214">#214</a>)
(<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/3f7665c5419eb80c489546a70da799648e7d5ff2">3f7665c</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> small updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/97f68a88e13ba11b1e903d2d7181da3e4edd5c10">97f68a8</a>)</li>
</ul>
<h2>0.112.3 (2026-07-17)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.2...sdk-v0.112.3">sdk-v0.112.2...sdk-v0.112.3</a></p>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> small updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/79fd6c7dd046e066965aa7ab9897695c174f88bb">79fd6c7</a>)</li>
</ul>
<h2>0.112.2 (2026-07-17)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.1...sdk-v0.112.2">sdk-v0.112.1...sdk-v0.112.2</a></p>
<h3>Chores</h3>
<ul>
<li><strong>client:</strong> docs updates (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/fdb3a65501a809b4e949131f2097dc0d84e01cc7">fdb3a65</a>)</li>
</ul>
<h2>0.112.1 (2026-07-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.112.0...sdk-v0.112.1">sdk-v0.112.0...sdk-v0.112.1</a></p>
<h2>0.112.0 (2026-07-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.111.0...sdk-v0.112.0">sdk-v0.111.0...sdk-v0.112.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add support for MCP Tunnels (<a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/597ac4181f318e46fb974e716467648587e95362">597ac41</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/3e9a2e1e683481bc8d684eac7287c7e070897dcd"><code>3e9a2e1</code></a>
chore(aws): raise minimum <code>@​anthropic-ai/sdk</code> version to
0.112.4</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/1cdfa7f40e66dc25ead96dd1fb20ec55878fefbc"><code>1cdfa7f</code></a>
chore: release main</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/0cd535b3ec4d1214f0626549236b56390c456277"><code>0cd535b</code></a>
fix(aws): remove duplicate loggerFor import breaking the build (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-typescript/issues/235">#235</a>)</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/ff7d62078cc33f4a5b053e9ade1df62ce9795d50"><code>ff7d620</code></a>
fix(aws): preserve AWS options and auth mode across withOptions() (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-typescript/issues/214">#214</a>)</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/0b39044da0cf732d6057452b662d1bda15caba49"><code>0b39044</code></a>
chore(docs): small updates</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/f84e8638fc74268d602d729747f7fd9fcbadbc71"><code>f84e863</code></a>
chore: release main</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/373cf7e61de4c5a1c6caf9d40466a7150c265433"><code>373cf7e</code></a>
chore(docs): small updates</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/4d3022d92c27dd35ecfb38e85fc5146f0280f0d4"><code>4d3022d</code></a>
chore(internal): tidy changelog</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/50195781b563db279dfa97fbc9febe3eac41d286"><code>5019578</code></a>
chore: release main</li>
<li><a
href="https://github.com/anthropics/anthropic-sdk-typescript/commit/01e74ee298c6f25376ba2b4ed986cd28fb6752cb"><code>01e74ee</code></a>
fix(google-cloud): bump google-auth-library to ^10.2.0 (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-typescript/issues/230">#230</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/anthropics/anthropic-sdk-typescript/compare/sdk-v0.111.0...sdk-v0.112.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `@parcel/watcher` from 2.5.6 to 2.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/parcel-bundler/watcher/releases">@​parcel/watcher's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.0</h2>
<p>Adds support RegExp ignores in <a
href="https://redirect.github.com/parcel-bundler/watcher/pull/248">parcel-bundler/watcher#248</a>.
Thanks <a
href="https://github.com/SimenB"><code>@​SimenB</code></a>!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/01c4add59ea39d45adda980bc952b524f87e2466"><code>01c4add</code></a>
v2.6.0</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/2392f966b3c04698b9eaf5c9fbfecbc67f8b954f"><code>2392f96</code></a>
fix ci</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/2d44c97ce04373e3da6c9dae7a893e80b07c9a4c"><code>2d44c97</code></a>
update ci</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/e0c2dec7c45e3dbda835c6c6b27583bd549232d8"><code>e0c2dec</code></a>
only test on node lts</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/66e8e76bd07aad59a0d555ea4b49ead9a9ff4bdf"><code>66e8e76</code></a>
fix: use assert.rejects for async subscribe throw test (<a
href="https://redirect.github.com/parcel-bundler/watcher/issues/254">#254</a>)</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/a1b86cfd86a85d343fe1d94767be1b8f5bcbd079"><code>a1b86cf</code></a>
chore: run prettier (<a
href="https://redirect.github.com/parcel-bundler/watcher/issues/249">#249</a>)</li>
<li><a
href="https://github.com/parcel-bundler/watcher/commit/4aa3dcad129c3ab6634d04c5889dfe9478cc4a18"><code>4aa3dca</code></a>
feat: support RegExp ignores (<a
href="https://redirect.github.com/parcel-bundler/watcher/issues/248">#248</a>)</li>
<li>See full diff in <a
href="https://github.com/parcel-bundler/watcher/compare/v2.5.6...v2.6.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ink` from 7.1.0 to 7.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vadimdemedes/ink/releases">ink's
releases</a>.</em></p>
<blockquote>
<h2>v7.1.1</h2>
<ul>
<li>Fix: Preserve last <code>&lt;Static&gt;</code> line erased after a
full-clear frame (<a
href="https://redirect.github.com/vadimdemedes/ink/issues/974">#974</a>)
e51dfdd</li>
<li>Make <code>measureElement()</code> also return position coordinates
(<a
href="https://redirect.github.com/vadimdemedes/ink/issues/968">#968</a>)
c073b27</li>
</ul>
<hr />
<p><a
href="https://github.com/vadimdemedes/ink/compare/v7.1.0...v7.1.1">https://github.com/vadimdemedes/ink/compare/v7.1.0...v7.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vadimdemedes/ink/commit/70af033dbd2b126a16f144164685612b2c1fd554"><code>70af033</code></a>
7.1.1</li>
<li><a
href="https://github.com/vadimdemedes/ink/commit/e51dfdd3149cabc54e03ac160bb0f4ecb66cd5b2"><code>e51dfdd</code></a>
Fix: Preserve last <code>\&lt;Static&gt;</code> line erased after a
full-clear frame (<a
href="https://redirect.github.com/vadimdemedes/ink/issues/974">#974</a>)</li>
<li><a
href="https://github.com/vadimdemedes/ink/commit/665eb4403883e52eaa779de670b2c4566aa9c9f1"><code>665eb44</code></a>
Fix docs</li>
<li><a
href="https://github.com/vadimdemedes/ink/commit/c073b27fe3518cf89275e3b8020ca6dfbe2b67ce"><code>c073b27</code></a>
Make <code>measureElement()</code> also return position coordinates (<a
href="https://redirect.github.com/vadimdemedes/ink/issues/968">#968</a>)</li>
<li>See full diff in <a
href="https://github.com/vadimdemedes/ink/compare/v7.1.0...v7.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `posthog-node` from 5.41.0 to 5.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/PostHog/posthog-js/releases">posthog-node's
releases</a>.</em></p>
<blockquote>
<h2>posthog-node@5.46.0</h2>
<h2>5.46.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4172">#4172</a>
<a
href="https://github.com/PostHog/posthog-js/commit/9621830c359a9955ffec0db61164e5fc450e5443"><code>9621830</code></a>
Thanks <a href="https://github.com/haacked"><code>@​haacked</code></a>!
- send minimal <code>$feature_flag_called</code> events when the server
enables it</p>
<p>When the v2 <code>/flags</code> response carries
<code>minimalFlagCalledEvents: true</code> (or, for posthog-node local
evaluation, the flag-definitions payload carries
<code>minimal_flag_called_events: true</code>) and the evaluated flag is
not linked to an experiment (<code>$feature_flag_has_experiment ===
false</code>), <code>$feature_flag_called</code> events are rebuilt from
a strict allowlist of flag-evaluation, processing-control, and
SDK-identity properties. Super properties,
<code>$set</code>/<code>$set_once</code>, the
<code>$feature/&lt;key&gt;</code> enumeration,
<code>$active_feature_flags</code>, and the context envelope are
stripped. Any missing signal (no gate on the response, bootstrapped or
locally injected flags, <code>has_experiment</code> unknown) falls back
to the full event, and experiment-linked flags always send the full
envelope. The gate is stored alongside the cached flags (posthog-js
persistence, posthog-node poller state) and is server-controlled, with
no SDK-side configuration. <code>before_send</code> runs after the
filter and may re-add stripped properties. (2026-07-20)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/9621830c359a9955ffec0db61164e5fc450e5443"><code>9621830</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.44.0</li>
</ul>
</li>
</ul>
<h2>posthog-node@5.45.2</h2>
<h2>5.45.2</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4168">#4168</a>
<a
href="https://github.com/PostHog/posthog-js/commit/06d19a2c5ab7801971219f8b50131f19e5f0ed17"><code>06d19a2</code></a>
Thanks <a
href="https://github.com/dustinbyrne"><code>@​dustinbyrne</code></a>! -
Avoid Next.js Edge runtime warnings for native compression and fatal
error handling.
(2026-07-16)</li>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/06d19a2c5ab7801971219f8b50131f19e5f0ed17"><code>06d19a2</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.43.1</li>
</ul>
</li>
</ul>
<h2>posthog-node@5.45.1</h2>
<h2>5.45.1</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4164">#4164</a>
<a
href="https://github.com/PostHog/posthog-js/commit/9eb2b28c55b47379005b273d8a0baba6f87c7730"><code>9eb2b28</code></a>
Thanks <a
href="https://github.com/dustinbyrne"><code>@​dustinbyrne</code></a>! -
Fix the default Node.js event flush interval at 5 seconds.
(2026-07-16)</li>
</ul>
<h2>posthog-node@5.45.0</h2>
<h2>5.45.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4159">#4159</a>
<a
href="https://github.com/PostHog/posthog-js/commit/fad6d9adae4163cd63859766916cdcbae629a110"><code>fad6d9a</code></a>
Thanks <a href="https://github.com/haacked"><code>@​haacked</code></a>!
- add <code>$feature_flag_has_experiment</code> to
<code>$feature_flag_called</code> events</p>
<p><code>$feature_flag_called</code> events now carry a
<code>$feature_flag_has_experiment</code> boolean sourced from the
server's <code>has_experiment</code> flag metadata (the
<code>/flags?v=2</code> response for remote evaluation, the
<code>/api/feature_flag/local_evaluation</code> definitions for
posthog-node local evaluation). The property is only sent when the
server explicitly reports <code>has_experiment</code>; it is omitted
entirely when the value is unknown (older servers, missing metadata,
bootstrapped or locally injected flags). (2026-07-16)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/fad6d9adae4163cd63859766916cdcbae629a110"><code>fad6d9a</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.43.0</li>
</ul>
</li>
</ul>
<h2>posthog-node@5.44.0</h2>
<h2>5.44.0</h2>
<h3>Minor Changes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PostHog/posthog-js/blob/main/packages/node/CHANGELOG.md">posthog-node's
changelog</a>.</em></p>
<blockquote>
<h2>5.46.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4172">#4172</a>
<a
href="https://github.com/PostHog/posthog-js/commit/9621830c359a9955ffec0db61164e5fc450e5443"><code>9621830</code></a>
Thanks <a href="https://github.com/haacked"><code>@​haacked</code></a>!
- send minimal <code>$feature_flag_called</code> events when the server
enables it</p>
<p>When the v2 <code>/flags</code> response carries
<code>minimalFlagCalledEvents: true</code> (or, for posthog-node local
evaluation, the flag-definitions payload carries
<code>minimal_flag_called_events: true</code>) and the evaluated flag is
not linked to an experiment (<code>$feature_flag_has_experiment ===
false</code>), <code>$feature_flag_called</code> events are rebuilt from
a strict allowlist of flag-evaluation, processing-control, and
SDK-identity properties. Super properties,
<code>$set</code>/<code>$set_once</code>, the
<code>$feature/&lt;key&gt;</code> enumeration,
<code>$active_feature_flags</code>, and the context envelope are
stripped. Any missing signal (no gate on the response, bootstrapped or
locally injected flags, <code>has_experiment</code> unknown) falls back
to the full event, and experiment-linked flags always send the full
envelope. The gate is stored alongside the cached flags (posthog-js
persistence, posthog-node poller state) and is server-controlled, with
no SDK-side configuration. <code>before_send</code> runs after the
filter and may re-add stripped properties. (2026-07-20)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/9621830c359a9955ffec0db61164e5fc450e5443"><code>9621830</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.44.0</li>
</ul>
</li>
</ul>
<h2>5.45.2</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4168">#4168</a>
<a
href="https://github.com/PostHog/posthog-js/commit/06d19a2c5ab7801971219f8b50131f19e5f0ed17"><code>06d19a2</code></a>
Thanks <a
href="https://github.com/dustinbyrne"><code>@​dustinbyrne</code></a>! -
Avoid Next.js Edge runtime warnings for native compression and fatal
error handling.
(2026-07-16)</li>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/06d19a2c5ab7801971219f8b50131f19e5f0ed17"><code>06d19a2</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.43.1</li>
</ul>
</li>
</ul>
<h2>5.45.1</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4164">#4164</a>
<a
href="https://github.com/PostHog/posthog-js/commit/9eb2b28c55b47379005b273d8a0baba6f87c7730"><code>9eb2b28</code></a>
Thanks <a
href="https://github.com/dustinbyrne"><code>@​dustinbyrne</code></a>! -
Fix the default Node.js event flush interval at 5 seconds.
(2026-07-16)</li>
</ul>
<h2>5.45.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4159">#4159</a>
<a
href="https://github.com/PostHog/posthog-js/commit/fad6d9adae4163cd63859766916cdcbae629a110"><code>fad6d9a</code></a>
Thanks <a href="https://github.com/haacked"><code>@​haacked</code></a>!
- add <code>$feature_flag_has_experiment</code> to
<code>$feature_flag_called</code> events</p>
<p><code>$feature_flag_called</code> events now carry a
<code>$feature_flag_has_experiment</code> boolean sourced from the
server's <code>has_experiment</code> flag metadata (the
<code>/flags?v=2</code> response for remote evaluation, the
<code>/api/feature_flag/local_evaluation</code> definitions for
posthog-node local evaluation). The property is only sent when the
server explicitly reports <code>has_experiment</code>; it is omitted
entirely when the value is unknown (older servers, missing metadata,
bootstrapped or locally injected flags). (2026-07-16)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/PostHog/posthog-js/commit/fad6d9adae4163cd63859766916cdcbae629a110"><code>fad6d9a</code></a>]:
<ul>
<li><code>@​posthog/core</code><a
href="https://github.com/1"><code>@​1</code></a>.43.0</li>
</ul>
</li>
</ul>
<h2>5.44.0</h2>
<h3>Minor Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/PostHog/posthog-js/pull/4153">#4153</a>
<a
href="https://github.com/PostHog/posthog-js/commit/fc2cb2e6e7accf23ed1f075f6da996f6ba575276"><code>fc2cb2e</code></a>
Thanks <a
href="https://github.com/eli-r-ph"><code>@​eli-r-ph</code></a>! - Raise
the default <code>maxQueueSize</code> from 1000 to 10000. Backend
workloads are more likely to burst-enqueue events synchronously ahead of
a flush than browser/mobile clients, so the previous default risked
silently dropping events under bursty load. An explicit
<code>maxQueueSize</code> option still overrides this default.
(2026-07-15)</li>
</ul>
<h3>Patch Changes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PostHog/posthog-js/commit/34a03e239b011c2b10a709408f16d8b775eb1633"><code>34a03e2</code></a>
chore: update versions and lockfile [version bump]</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/9621830c359a9955ffec0db61164e5fc450e5443"><code>9621830</code></a>
feat(flags): minimize $feature_flag_called events for non-experiment
flags (#...</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/8bf1b196c32116a4536e27594e97e9b802eca065"><code>8bf1b19</code></a>
chore: ban object-literal type assertions in package sources (<a
href="https://github.com/PostHog/posthog-js/tree/HEAD/packages/node/issues/4192">#4192</a>)</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/be17ec183eee531176ee3d316b4c8836ae49fa70"><code>be17ec1</code></a>
chore: update versions and lockfile [version bump]</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/06d19a2c5ab7801971219f8b50131f19e5f0ed17"><code>06d19a2</code></a>
fix: avoid Next.js Edge runtime warnings (<a
href="https://github.com/PostHog/posthog-js/tree/HEAD/packages/node/issues/4168">#4168</a>)</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/60c2492541d93852c65b165e54dce4c7d66e0f95"><code>60c2492</code></a>
chore: update versions and lockfile [version bump]</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/9eb2b28c55b47379005b273d8a0baba6f87c7730"><code>9eb2b28</code></a>
fix(node): standardize flush interval default (<a
href="https://github.com/PostHog/posthog-js/tree/HEAD/packages/node/issues/4164">#4164</a>)</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/be5249f6925067072174fd9e30ab6897410d3f51"><code>be5249f</code></a>
fix(docs): exclude internal members and tag deprecated ones in SDK
references...</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/422b9a4e5a2ba532c3f79b2afd50847576f28d2a"><code>422b9a4</code></a>
chore: update versions and lockfile [version bump]</li>
<li><a
href="https://github.com/PostHog/posthog-js/commit/fad6d9adae4163cd63859766916cdcbae629a110"><code>fad6d9a</code></a>
feat(flags): add $feature_flag_has_experiment to $feature_flag_called
events ...</li>
<li>Additional commits viewable in <a
href="https://github.com/PostHog/posthog-js/commits/posthog-node@5.46.0/packages/node">compare
view</a></li>
</ul>
</details>
<br />

Updates `semantic-release` from 25.0.7 to 25.0.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/semantic-release/semantic-release/releases">semantic-release's
releases</a>.</em></p>
<blockquote>
<h2>v25.0.8</h2>
<h2><a
href="https://github.com/semantic-release/semantic-release/compare/v25.0.7...v25.0.8">25.0.8</a>
(2026-07-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>handle potential null values in commit message and gitTags trimming
(<a
href="https://github.com/semantic-release/semantic-release/commit/0a60004a6adbbb0e143397f3d7f9a6f81c48999a">0a60004</a>)</li>
<li><strong>hide-sensitive:</strong> mask key/auth/webhook env vars (<a
href="https://github.com/semantic-release/semantic-release/commit/973d763c2e2527bc044540ae4d3c0f5586804824">973d763</a>)</li>
<li>mask sensitive environment variables and improve commit handling (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4252">#4252</a>)
(<a
href="https://github.com/semantic-release/semantic-release/commit/1bfdc5297603270e04010a1fc0bb2e51a00c7947">1bfdc52</a>)</li>
<li>prevent template evaluation syntax in branch expansion and tag
formatting (<a
href="https://github.com/semantic-release/semantic-release/commit/f121540e89d254e708193884fcb56fb41ea11edf">f121540</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/1bfdc5297603270e04010a1fc0bb2e51a00c7947"><code>1bfdc52</code></a>
fix: mask sensitive environment variables and improve commit handling
(<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4252">#4252</a>)</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/0a60004a6adbbb0e143397f3d7f9a6f81c48999a"><code>0a60004</code></a>
fix: handle potential null values in commit message and gitTags
trimming</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/f121540e89d254e708193884fcb56fb41ea11edf"><code>f121540</code></a>
fix: prevent template evaluation syntax in branch expansion and tag
formatting</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/973d763c2e2527bc044540ae4d3c0f5586804824"><code>973d763</code></a>
fix(hide-sensitive): mask key/auth/webhook env vars</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/474e5a385d8272aef029a70e5c480956f3a55fd0"><code>474e5a3</code></a>
ci(action): update github/codeql-action action to v4.37.1 (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4254">#4254</a>)</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/fc9382cd42fa7ea8cbc898e36e622a9c37bc6a49"><code>fc9382c</code></a>
docs: fix issue template links (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4251">#4251</a>)</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/e34c52dd1d0e941575aaf24c7321515f37a33629"><code>e34c52d</code></a>
ci(action): update actions/setup-node action to v7 (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4250">#4250</a>)</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/8020ec65b8565e8dbd18662eaad554273ce8a972"><code>8020ec6</code></a>
ci(action): update actions/setup-node action to v6.5.0 (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4249">#4249</a>)</li>
<li><a
href="https://github.com/semantic-release/semantic-release/commit/956baf4d6d5f1d4bd7ede1ebddeb5b72fa842245"><code>956baf4</code></a>
chore(deps): update npm to v12.0.1 (<a
href="https://redirect.github.com/semantic-release/semantic-release/issues/4247">#4247</a>)</li>
<li>See full diff in <a
href="https://github.com/semantic-release/semantic-release/compare/v25.0.7...v25.0.8">compare
view</a></li>
</ul>
</details>
<br />

Updates `fumadocs-core` from 16.11.4 to 16.11.5
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/52af6cf292efe62c5d547dea1affdcdd4e92e988"><code>52af6cf</code></a>
Merge pull request <a
href="https://redirect.github.com/fuma-nama/fumadocs/issues/3416">#3416</a>
from fuma-nama/tegami/version-packages</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/efc9d18402ae038675bf9eda5526f0e96a0c0cad"><code>efc9d18</code></a>
chore(mdx): bake passthroughs into runtime module</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/368a92e3a26bf2a945f4af8d789c617d577bcfb1"><code>368a92e</code></a>
feat(mdx): macro collection-level last modified time</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/13dfdbc224421f8348af34e8f60a214d2572ab0d"><code>13dfdbc</code></a>
feat(mdx): no longer require include for macros</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/63623320b52c4b4412d7be2b650098b7c2ecf8fb"><code>6362332</code></a>
test macro API on vite</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/126a74d9950066757f5ca0f6e131e7dce8475e93"><code>126a74d</code></a>
fix(ui): fix accessibility of sidebar components</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/430254caaba508ef3f5961b665b7f36ed5d2b095"><code>430254c</code></a>
fix(mdx): fix file check</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/1862822aa5daeaab1115a12fd0b5ac86e797b415"><code>1862822</code></a>
feat(mdx): redesign macro infrastructure</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/d3710a9614bf04321942e8b3cdbd0a451fa8a780"><code>d3710a9</code></a>
fix(openapi): fix invalid generated request</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/ba78b0177b9e59c7f29497776d2949cf17320abb"><code>ba78b01</code></a>
fix(ui): correct prop types</li>
<li>Additional commits viewable in <a
href="https://github.com/fuma-nama/fumadocs/compare/fumadocs@16.11.4...fumadocs@16.11.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `fumadocs-mdx` from 15.1.1 to 15.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fuma-nama/fumadocs/releases">fumadocs-mdx's
releases</a>.</em></p>
<blockquote>
<h2>fumadocs-mdx@15.2.0</h2>
<h3>Support Macro API</h3>
<p>Use <code>fumadocs-mdx/macro</code> to define collections, and enable
the macro-style API from bundler plugin (e.g. <code>createMDX</code>)
using the <code>include</code> option.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/52af6cf292efe62c5d547dea1affdcdd4e92e988"><code>52af6cf</code></a>
Merge pull request <a
href="https://redirect.github.com/fuma-nama/fumadocs/issues/3416">#3416</a>
from fuma-nama/tegami/version-packages</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/efc9d18402ae038675bf9eda5526f0e96a0c0cad"><code>efc9d18</code></a>
chore(mdx): bake passthroughs into runtime module</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/368a92e3a26bf2a945f4af8d789c617d577bcfb1"><code>368a92e</code></a>
feat(mdx): macro collection-level last modified time</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/13dfdbc224421f8348af34e8f60a214d2572ab0d"><code>13dfdbc</code></a>
feat(mdx): no longer require include for macros</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/63623320b52c4b4412d7be2b650098b7c2ecf8fb"><code>6362332</code></a>
test macro API on vite</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/126a74d9950066757f5ca0f6e131e7dce8475e93"><code>126a74d</code></a>
fix(ui): fix accessibility of sidebar components</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/430254caaba508ef3f5961b665b7f36ed5d2b095"><code>430254c</code></a>
fix(mdx): fix file check</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/1862822aa5daeaab1115a12fd0b5ac86e797b415"><code>1862822</code></a>
feat(mdx): redesign macro infrastructure</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/d3710a9614bf04321942e8b3cdbd0a451fa8a780"><code>d3710a9</code></a>
fix(openapi): fix invalid generated request</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/ba78b0177b9e59c7f29497776d2949cf17320abb"><code>ba78b01</code></a>
fix(ui): correct prop types</li>
<li>Additional commits viewable in <a
href="https://github.com/fuma-nama/fumadocs/compare/fumadocs-mdx@15.1.1...fumadocs-mdx@15.2.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `fumadocs-ui` from 16.11.4 to 16.11.5
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/52af6cf292efe62c5d547dea1affdcdd4e92e988"><code>52af6cf</code></a>
Merge pull request <a
href="https://redirect.github.com/fuma-nama/fumadocs/issues/3416">#3416</a>
from fuma-nama/tegami/version-packages</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/efc9d18402ae038675bf9eda5526f0e96a0c0cad"><code>efc9d18</code></a>
chore(mdx): bake passthroughs into runtime module</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/368a92e3a26bf2a945f4af8d789c617d577bcfb1"><code>368a92e</code></a>
feat(mdx): macro collection-level last modified time</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/13dfdbc224421f8348af34e8f60a214d2572ab0d"><code>13dfdbc</code></a>
feat(mdx): no longer require include for macros</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/63623320b52c4b4412d7be2b650098b7c2ecf8fb"><code>6362332</code></a>
test macro API on vite</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/126a74d9950066757f5ca0f6e131e7dce8475e93"><code>126a74d</code></a>
fix(ui): fix accessibility of sidebar components</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/430254caaba508ef3f5961b665b7f36ed5d2b095"><code>430254c</code></a>
fix(mdx): fix file check</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/1862822aa5daeaab1115a12fd0b5ac86e797b415"><code>1862822</code></a>
feat(mdx): redesign macro infrastructure</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/d3710a9614bf04321942e8b3cdbd0a451fa8a780"><code>d3710a9</code></a>
fix(openapi): fix invalid generated request</li>
<li><a
href="https://github.com/fuma-nama/fumadocs/commit/ba78b0177b9e59c7f29497776d2949cf17320abb"><code>ba78b01</code></a>
fix(ui): correct prop types</li>
<li>Additional commits viewable in <a
href="https://github.com/fuma-nama/fumadocs/compare/fumadocs@16.11.4...fumadocs@16.11.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `@effect/atom-react` from 4.0.0-beta.97 to 4.0.0-beta.99
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Effect-TS/effect/blob/main/packages/atom/react/CHANGELOG.md">@​effect/atom-react's
changelog</a>.</em></p>
<blockquote>
<h2>4.0.0-beta.99</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/Effect-TS/effect/commit/8ce4795ccbaebca4292757db568c005a992546a4"><code>8ce4795</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/80b539f8aba68f478c75c35c2b4140c4ffc4fada"><code>80b539f</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/88a54cc341006e3ebcb13482c618f62a680ce199"><code>88a54cc</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/e6e6dba6e9d86e7c2ad27dcedf289db76a19697f"><code>e6e6dba</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/bfb203e95aa439f731acad37fc3a9a831a190f1c"><code>bfb203e</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/2e9a34ac2bece4f3a206160480c991e3841dc67a"><code>2e9a34a</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/55d4eb34f2c64d54f6a25a305b5c5438ebd7934e"><code>55d4eb3</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/bddb010eac3d4436cb094edbbee7460c5440c162"><code>bddb010</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/a328835e50d76bc96648a1c1550456e8c9f81210"><code>a328835</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/5560d05aa6abdd29466d9c3412cc5e648b0adbde"><code>5560d05</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/8f6e3adb185b16e8820b98c509b308086f7ff1af"><code>8f6e3ad</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/46997fa60401f5e3c93daa4b61f7df8e31caaab4"><code>46997fa</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/9e6e12d75c118cd265496f2880490d1f33a5c8bf"><code>9e6e12d</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/3394b93d97d6f24fc38670641d1490289ffca7f1"><code>3394b93</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/febeabc3f7c31094da000a23edeaabfe2ab00a38"><code>febeabc</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/54161c98f6f3569e0c31842f54e6a257f9421c4c"><code>54161c9</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/385f7a4ee4a7359928597ea56d151dbaf5eb5802"><code>385f7a4</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/7eea4d0b73ec554915d7066a71f46326ce2ba45f"><code>7eea4d0</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/7543afea6f4d97d1f1ad876224323838a48daadd"><code>7543afe</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/44b9cf3d240d726997b4bbcd0ede48e074d3c456"><code>44b9cf3</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/7eea4d0b73ec554915d7066a71f46326ce2ba45f"><code>7eea4d0</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/0a8aa6acb90a72b91c24d17133c950e4cacd8abd"><code>0a8aa6a</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/c8d9fcf7b030f7c474effbab2764ce7aee1c7209"><code>c8d9fcf</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/9ca7f9a69363e4485645966d5a93b8f9597c5206"><code>9ca7f9a</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/e7aca894bb32fbb785b5830837e6061c415a6015"><code>e7aca89</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/55d75609b8acf8a1b54c1b1c7fbbb65ec741aa3e"><code>55d7560</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/f809189ddf6b6011ba43a9901baaa734e315da2a"><code>f809189</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/88a54cc341006e3ebcb13482c618f62a680ce199"><code>88a54cc</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/0ebdbe74463dc84385956d0b1e8c2b79ebab5400"><code>0ebdbe7</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/7517d09f12a0b183a81bd425962c4e280a68b05d"><code>7517d09</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/212493b9a1eb98cd1ef6959c707a2e5784a5ae91"><code>212493b</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/88a54cc341006e3ebcb13482c618f62a680ce199"><code>88a54cc</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/80ea8cb9222ca73f564c8267ab2f82966fea027a"><code>80ea8cb</code></a>,
<a
href="https://github.com/Effect-TS/effect/commit/8df19f4fe81d90cc33ace88b9a77e5534f82d604"><code>8df19f4</code></a>]:
<ul>
<li>effect@4.0.0-beta.99</li>
</ul>
</li>
</ul>
<h2>4.0.0-beta.98</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/Effect-TS/effect-smol/commit/989603b60ab1197b64acf214208e0d370cd1f842"><code>989603b</code></a>,
<a
href="https://github.com/Effect-TS/effect-smol/commit/214c458084bb6995d543cd37d1055f24be3d454e"><code>214c458</code></a>,
<a
href="https://github.com/Effect-TS/effect-smol/commit/a0372736ac34796969b051bbba4717d7983f1ebe"><code>a037273</code></a>,
<a
href="https://github.com/Effect-TS/effect-smol/commit/97fdaa9c1f522c65e579365d314a07878e2b904f"><code>97fdaa9</code></a>,
<a
href="https://github.c…
…dates (#5962)

Bumps the docker-minor group with 6 updates in the
/apps/cli-go/pkg/config/templates directory:

| Package | From | To |
| --- | --- | --- |
| postgrest/postgrest | `v14.15` | `v14.16` |
| supabase/studio | `2026.07.13-sha-b5ada96` | `2026.07.27-sha-cbb076d`
|
| supabase/gotrue | `v2.193.0` | `v2.194.0` |
| supabase/realtime | `v2.113.4` | `v2.120.3` |
| supabase/storage-api | `v1.66.4` | `v1.67.20` |
| supabase/logflare | `1.47.1` | `1.49.1` |


Updates `postgrest/postgrest` from v14.15 to v14.16

Updates `supabase/studio` from 2026.07.13-sha-b5ada96 to
2026.07.27-sha-cbb076d

Updates `supabase/gotrue` from v2.193.0 to v2.194.0

Updates `supabase/realtime` from v2.113.4 to v2.120.3

Updates `supabase/storage-api` from v1.66.4 to v1.67.20

Updates `supabase/logflare` from 1.47.1 to 1.49.1


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Colum Ferry <cferry09@gmail.com>
…/apps/cli-go/pkg/config/templates (#5899)

Bumps supabase/postgres from 17.6.1.143 to 17.6.1.149.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=supabase/postgres&package-manager=docker&previous-version=17.6.1.143&new-version=17.6.1.149)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Colum Ferry <cferry09@gmail.com>
Paid-feature denials now read the management API's
`entitlement_required` error envelope straight off the failed response
and print the upgrade hint with zero extra API calls. Previously the
suggest path made 2 extra round-trips (project lookup + entitlements)
per gated failure, and only 9 commands were wired at all.

**Changed:**
- **Wired commands stop making extra API calls on denial**: the shared
suggest functions (Go `plan_gate.go`, TS `legacy-upgrade-suggest.ts`)
parse `{ error: { code: "entitlement_required", feature, upgrade_url }
}` first; the entitlements round-trip stays as the fallback for gates
that do not emit the envelope yet (v1 SSO carries no server-side gate at
all).
- **`domains create/get/activate/reverify` and `vanity-subdomains get`
newly show the hint**: envelope-only, no fallback, because the
`custom_domain` entitlement key is plan-level while the gate is a
per-project add-on, so the old round-trip would tell Free orgs to
upgrade on unrelated 404s.
- **`cli_upgrade_suggested` reports the server-authoritative feature**:
`feature_key` comes from the envelope (fixes a `branching_persistent`
denial being logged as `branching_limit`); `org_slug` is parsed from
`upgrade_url`.
- **Go mirror kept 1:1** per the legacy-shell parity doctrine;
`AGENTS.md` telemetry table and the affected `SIDE_EFFECTS.md` files
updated to match.

**Note:** the envelope's `upgrade_url` is server-built and printed
without a host check. This trusts the management API host the same way
every authenticated call already does; a host allowlist would silently
suppress valid hints on profiles whose dashboard URL differs from the
CLI default.

## To test
Requires a Free-org project ref (to hit the gates).

Tested locally against prod (`bun src/legacy/main.ts`, Free org):
- [x] `domains get --project-ref <free-ref> --agent no` prints "Upgrade
your plan: .../org/<slug>/billing" on stderr; `--debug` shows exactly
one HTTP request, no project/entitlements lookups
- [x] `vanity-subdomains get` shows the same hint via the decorated
server gate (since the develop merge bringing in #5945, this command
additionally needs `--experimental` or `SUPABASE_EXPERIMENTAL=1` to get
past the experimental gate)
- [x] Plain 4xx without the envelope on the newly wired commands
produces no hint (integration tests pin the false-positive guard)
- [x] Envelope-less denials on previously wired commands still run the
entitlements fallback unchanged

### Before / after

`domains get --project-ref <free-ref> --agent no` on the same Free-org
project, stderr verbatim (ref and org slug redacted). Before is the
merge-base with develop (`3ad3b875`), after is this branch.

Before, the envelope is already in the raw error JSON but nothing reads
it, so no hint:

```
unexpected get hostname status 400: {"message":"Custom domains require the Custom Domain add-on, available on the Pro plan and above.","error":{"code":"entitlement_required","feature":"custom_domain","upgrade_url":"https://supabase.com/dashboard/org/<slug>/billing"}}
Try rerunning the command with --debug to troubleshoot the error.
```

After, the hint prints first, still exactly one HTTP request (`--debug`
shows only the `/custom-hostname` GET):

```
Your organization does not have access to this feature. Upgrade your plan: https://supabase.com/dashboard/org/<slug>/billing
unexpected get hostname status 400: {"message":"Custom domains require the Custom Domain add-on, available on the Pro plan and above.","error":{"code":"entitlement_required","feature":"custom_domain","upgrade_url":"https://supabase.com/dashboard/org/<slug>/billing"}}
Try rerunning the command with --debug to troubleshoot the error.
```

## Linear
- fixes GROWTH-958

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4b62e7265d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines 141 to +144
projectRef: ref,
featureKey: "auth.saml_2",
statusCode: response.status,
response,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Parse plan-gate envelopes before reading the body

When SSO create returns a 4xx entitlement_required envelope, this new response is passed to legacySuggestUpgrade only after response.text has already been read above to build bodyText; with Web-backed responses that leaves the envelope parser unable to read upgrade_url/feature, so the intended envelope-first path falls back to extra entitlement lookups and can miss or misattribute the upgrade hint if those lookups fail or differ from the envelope. Move the upgrade suggestion before consuming the body, or read/cache the body once and feed both paths; the same ordering appears in the other hand-rolled suggest sites added in this change.

Useful? React with 👍 / 👎.

Comment on lines +69 to +73
featureKey: opts.featureKey,
statusCode: response?.status ?? 0,
response,
});
return yield* mapError(cause);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve error bodies after upgrade checks

When branch/domain/vanity commands that use this helper receive a 4xx entitlement_required envelope, legacySuggestUpgrade consumes response.json before mapError later tries to read cause.response.text; with the Web-backed Management API responses used here, the body stream is single-use, so the final unexpected-status error can lose the server body that Go still includes with string(resp.Body). Cache the raw body or clone the response so both the suggestion path and the mapper see the same bytes.

AGENTS.md reference: apps/cli/AGENTS.md:L13-L15

Useful? React with 👍 / 👎.

7ttp and others added 4 commits July 28, 2026 13:17
## TL;DR

`supabase start` reported health-check failures by raw Docker id with no
way forward — it
now names the container, its image, and the command to fix it.

## Prob

When a container's cached image can't be executed:

```
99a635a072a8e0b2d7e56f9a619a5b4027bdeef702102508383900b78b8cc18b container logs:
exec /mailpit: exec format error
99a635a072a8e0b2d7e56f9a619a5b4027bdeef702102508383900b78b8cc18b: container is not ready: unhealthy
Try rerunning the command with --debug to troubleshoot the error.
```

You can't tell which service died, and `--debug` only logs HTTP
requests.

## Sol

```
supabase_inbucket_bredbox container logs:
exec /mailpit: exec format error
supabase_inbucket_bredbox: container is not ready: unhealthy
supabase_inbucket_bredbox's image public.ecr.aws/supabase/mailpit:v1.30.2 could not be executed ("exec format error").
Either the cached copy is corrupt, or it was built for a different architecture.
Remove the cached copy with docker (or podman), then run supabase start again:

  docker image rm -f public.ecr.aws/supabase/mailpit:v1.30.2
```

Containers are watched by name, and `exec format error` attaches the
affected
image and the command to remove it.

## Ref

- closes #5952
…y errors (#5967)

## What changed

A failed migration statement in `db push` / `db reset` (remote migrate)
/ `migration up|down` now renders the same failure text as the Go CLI's
`(*MigrationFile).ExecBatch`
(`apps/cli-go/pkg/migration/file.go:88-132`), byte-for-byte:

```
ERROR: type "ltree" does not exist (SQLSTATE 42704)

Hint: This type may be defined in a schema that's not in your search_path.
      Use schema-qualified type references to avoid this error:
        CREATE TABLE example (col extensions.ltree);
      Learn more: supabase migration new --help
At statement: 0
CREATE TABLE test (path ltree NOT NULL)
                        ^
```

Previously the TS apply path emitted only `<driver text>\nAt statement:
<i>\n<stat>` — and with the real driver the head line was literally
`effect/sql/SqlError: Failed to execute statement`. No caret, no
`Detail`, no 42704 hint.

- **Driver boundary** (`legacy-db-connection.sql-pg.layer.ts`): a server
ErrorResponse found on the `SqlError` cause chain is now rendered as
pgconn's `PgError.Error()` — `<Severity>: <Message> (SQLSTATE <Code>)`
(pgconn `errors.go:51`) — and `LegacyDbExecError` carries the structured
`detail` / `position` fields (`detail` only when non-empty, `position`
only when > 0, matching Go's gates). Non-server failures keep the driver
text verbatim.
- **Apply mapper** (`legacy-migration-apply.ts`): `legacyMarkError` is a
byte-faithful port of Go's `markError` — the server position is consumed
against **UTF-8 byte** lengths (Go's `len(line)`), the caret line
replaces every line after the error line (Go's `append(lines[:j+1],
caret)` truncation), and position 0 / past-end / on-a-line-break leave
the statement untouched. All semantics were pinned by running Go's
`markError` directly on the same inputs. The `Detail` line and the
SQLSTATE-42704 undefined-type hint block (gated on Go's
`typeNamePattern` match + code `42704` + not schema-qualified) are
reproduced with Go's exact ordering and indentation.
- `legacyIsSqlState` is hoisted out of `legacy-connect-errors.ts`'s
private pattern so the connect-cause renderer and the exec-error mapper
share the server-error discriminator.

## Behavior notes

- The pgconn-style head line applies to every session `exec`/`query`
server error, not just migration apply — that is the correct owner (Go's
session errors all bottom out in `PgError.Error()`). This incidentally
improves the seed path too: `failed to send batch: ERROR: … (SQLSTATE
…)` now matches Go's `SeedFile.ExecBatchWithCache` wrap more closely.
- Known, unchanged divergence (out of scope): non-server exec failures
(socket drops mid-statement) keep the node driver's own text, which
cannot byte-match Go's pgx wording.
- A new wire-level integration test drives the REAL driver stack (fake
Postgres server → node-postgres `DatabaseError` → `@effect/sql-pg`
`SqlError` chain → the new mapper) so a future `@effect/sql-pg`/`pg`
bump that changes the error wrapping fails CI instead of silently
regressing to the opaque head line.

Review pass (architect / engineer / security / DX): all approve.
Deliberately left open: terminal-escape passthrough of server-controlled
error text is intended Go parity (Go prints the same fields raw to
stderr); a `describeLiveDataPlane` golden-path test against a real
backend was deemed redundant with the new wire-level test.

Fixes CLI-1977

https://linear.app/supabase/issue/CLI-1977/migration-apply-errors-omit-gos-caret-detail-and-42704-extension-hint
…evoke fix (#5970)

## What changed

`supabase db diff` (pg-delta engine) silently dropped `REVOKE ... FROM
PUBLIC` privilege changes (default privileges and function EXECUTE) from
generated migrations when diffing a declarative schema. Root cause was
in the upstream `@supabase/pg-delta` library:
`filterPublicBuiltInDefaults()` unconditionally stripped PUBLIC's
implicit default privilege from both sides of a privilege diff, silently
eating any `REVOKE ... FROM PUBLIC` the declarative schema asked for.

Fixed upstream in
[supabase/pg-toolbelt#357](supabase/pg-toolbelt#357)
(merged), released as `@supabase/pg-delta@1.0.0-alpha.33`.

This PR:

- Bumps the two CLI-side "default pg-delta npm version" constants from
`1.0.0-alpha.32` to `1.0.0-alpha.33`
(`apps/cli-go/pkg/config/pgdelta_version.go`,
`apps/cli/src/legacy/commands/db/shared/legacy-pgdelta.deno-templates.ts`).
These are the only version-pin sources of truth — the embedded Deno
template scripts always use a fixed placeholder string that gets
substituted at runtime, so they're unaffected.
- Adds `apps/cli/src/legacy/commands/db/diff/diff.live.test.ts`, a live
regression test against a real local Docker stack: a declarative schema
revoking a function's implicit PUBLIC `EXECUTE` grant, diffed with `db
diff --local --use-pg-delta`, must produce a migration that actually
contains the `REVOKE` statement. Verified empirically in both directions
— passes with the `alpha.33` pin, and (temporarily reverting to
`alpha.32`) reproduces the silent omission pre-fix.

Fixes #5930

## Related

Linear: CLI-1947
…(CLI-1978) (#5968)

## What changed

Two stdout/stderr parity divergences in the native `db pull` paths, both
empirically confirmed against the Go binary:

1. **Missing `Connecting to remote/local database...` stderr line.**
Go's `pull.Run` goes through `utils.ConnectByConfig`, which prints the
line to stderr before dialing
(`apps/cli-go/internal/utils/connect.go:344-348`), local vs remote keyed
off `utils.IsLocalDatabase`. The TS handler called `connection.connect`
directly and never printed it (`db push` and the other db/migration
commands already print it manually — pull was the outlier). The line is
now emitted right before dialing, same stream and ordering as Go. The
delegated `--experimental` branch deliberately skips it: the Go child's
own `ConnectByConfig` prints the line, so the parent printing too would
double it. The delegate decision is hoisted into
`delegatesExperimentalPull` and shared by both the Connecting-line guard
and the delegate branch.

2. **`Schema written to` / `Declarative schema written to` printed
absolute paths; Go prints workdir-relative ones.** Go chdirs into the
workdir and joins relative constants (`pull.go:76` via
`new.GetMigrationPath` → `supabase/migrations/<ts>_<name>.sql`;
`pull.go:119` prints `utils.GetDeclarativeDir()` verbatim — the config's
`declarative_schema_path` or the relative `supabase/database` default).
The TS lines now render the workdir-relative path at the print sites
only. `writtenMigrations` keeps absolute paths for file I/O, and the
machine-output (`--output-format json`) fields
`schemaWritten`/`schemaFiles` deliberately stay absolute — that machine
contract is unchanged.

Tests: the weak `.toContain("Schema written to")` assertions are
tightened to exact relative-path lines (with an absolute-workdir leak
guard), plus new assertions for the Connecting line: remote and local
wording, exact bytes and stderr ordering (before `Dumping
schema…`/`Creating shadow…`/`Preparing declarative…`), presence in
machine mode, and absence on both `--experimental` delegate forms (flag
and `SUPABASE_EXPERIMENTAL` env). The tightened suite fails 10 tests
against the unfixed handler.

## Review notes (deliberately out of scope, same bug class)

- `pull.debug.ts` / `legacy-debug-bundle.ts` print the pg-delta
debug-bundle path absolute where Go prints the relative
`supabase/.temp/pgdelta/debug/<id>` (`pgdelta_pull_debug.go:46-48`) —
distinct lines from this issue's scope.
- `db schema declarative generate` (`generate.handler.ts:275`) prints
the same `Declarative schema written to` sentence with an absolute path;
Go prints the relative `GetDeclarativeDir()` there too
(`declarative.go:156`).
- The delegated `--experimental` parent still dials before delegating
(mirroring Go's early connectivity check); a parent-side connect failure
on that path surfaces without a Connecting line. Pre-existing behavior,
now documented in a comment.

Fixes CLI-1978


https://linear.app/supabase/issue/CLI-1978/db-pull-output-parity-missing-connecting-to-database-line-absolute
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge Approve to apply; do not merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants