$ the-wire · showcase
Studio stops miscounting storage policies, C# realtime gets concurrency guards
By RepoJournal · Filed · About Supabase · Composed from the cited sources · methodology
Studio's storage policy parser now attributes a policy to every bucket it actually references, and supabase-csharp fixed a realtime socket that could corrupt its handler lists under concurrent dispatch.
fix(studio): attribute storage policies to every bucket they reference (#52692) supabase/supabase
Studio's extractBucketNameFromDefinition used to return only the first quoted string near bucket_id and ignore the operator, so bucket_id in ('a', 'b') counted under 'a' alone and bucket_id <> 'a' was attributed to the excluded bucket; DeleteBucketModal could then delete a bucket that still held policies. It now attributes each policy to every bucket it references, which changes what the dashbo...
fix(realtime): guard socket handler lists against concurrent changes supabase/supabase-csharp
RealtimeSocket kept its state, message, heartbeat and error handler lists as plain List<T> with Add*/Remove*/Clear* mutating them while Notify* copied via ToArray(), all unsynchronized. Push replies and timeouts register and remove message handlers mid-dispatch, which surfaced as ArgumentOutOfRangeException in List.Remove or a null entry reaching handler.Invoke; the lists are now guarded.
fix(defaults): keep string defaults that look like SQL supabase/etl
The default parser scanned the whole default for ::, select , nextval( and array, including inside quoted strings, so columns defaulting to values like 'a::b' or 'select one' were skipped in every destination with only a log warning. Those defaults now survive, and property tests cover default rendering in BigQuery, Snowflake and DuckLake.
fix(bigquery): Improve handling of defaults supabase/etl
BigQuery table creation and default changes were failing with Structurally invalid UTF8 string when a PostgreSQL default contained emoji or other supplementary characters; those are now rendered as GoogleSQL eight-digit Unicode escapes. Numeric defaults also emit as typed BIGNUMERIC literals for integers beyond INT64.
fix(pg-meta): report partition FKs once and add partition_of to list_tables supabase/mcp
list_tables reported the FK clones Postgres creates per partition as separate foreign keys, so one FK appeared once for every partition; the relationships subquery now filters conparentid = 0, the predicate pg_dump uses. A new optional partition_of field names a partition's parent. Also in the tail: supabase-csharp 8.9.0 adds admin and self-service passkey deletion, and evals re-enabled the MCP...