$ the-wire · showcase
MCP stops prompting on read-only EXPLAIN, bounds notebook cost
By RepoJournal · Filed · About Supabase · Composed from the cited sources · methodology
The MCP server fixed the two bugs that broke read-only workflows and capped how much a single run_notebook call can spend, while the CLI reclassified deploy failures it had been reporting as internal crashes.
fix(sql): skip destructive confirmation for planner-only EXPLAIN (#519) supabase/mcp
execute_sql and apply_migration used to prompt for destructive-SQL confirmation on EXPLAIN statements that only plan, because the classifier split on every semicolon including ones inside string literals; the prompt expired and the diagnostic failed. Confirmation is now skipped unless the statement runs under ANALYZE.
feat: bound run_notebook cost supabase/mcp
A run_notebook with more than 50 query cells is refused before any prompt or query runs and the agent is told to split it; the run's existing ~1 MB result budget now stops execution, with later cells returning as skipped. 50 is a starting value, and Studio has no cell limit today.
fix(feedback): accept null project_id and surface the feedback length limit (#521) supabase/mcp
OpenAI strict mode sends null for optional fields, and the schema rejected it, so submit_feedback without project_id returned an MCP error; the schema now accepts null and also surfaces the feedback length limit.
fix(cli): classify functions deploy failures by their cause (CLI-2910) supabase/cli
deployViaApi collected per-function upload failures into a native AggregateError; it now wraps them in FunctionsDeployFailedError classified by the failure it wraps, and a malformed deno.json or import map counts as invalid config rather than an internal bug.
fix: reconcile Snowflake CDC replay before encoding supabase/etl
Snowflake channel-status 500s triggered apply retries from the same PostgreSQL checkpoint, producing "committed offset moved backward during normal recovery" and stopping the replicator until a process restart. The replay defect is reproduced; the pull request says it suspects replay submitted older records before refreshing cached progress and does not yet tie that to the reported backward-mov...
fix(etl): restrict the parent primary-key fallback to declarative partitions supabase/etl
The long tail: etl.describe_table_identity no longer borrows a pg_inherits parent's primary key, tooling now syncs Dependabot alerts into the dashboard's security count, replication slot creation timing is exposed per worker type and outcome, the docs got a shared scrollbar with a visible track, deleting a bucket from its own page returns to the buckets list, webhook deliveries carry a green Te...