Fix JSONB sharing queries and add path-style S3 support
Two unrelated compatibility bugs, both silent. Shared-project listings were returning errors for any user with shared projects, and the S3 client was hardcoded to virtual-hosted-style URLs that local MinIO and most S3-compatible stores don't support.
The JSONB bug sits in how the Supabase client serialized the .contains() argument. PostgREST was reading it as Postgres array syntax rather than JSON containment, which caused GET /projects to fail outright for any user with shared projects. The fix replaces .contains() with an explicit .filter(..., "cs", JSON.stringify([email])) call so the containment operator gets a valid JSON value. willchen96 applied it in both query paths - the main project listing and the helper that resolves accessible project IDs - since both hit the same shared_with JSONB column.
The S3 change is one flag: forcePathStyle: true on the S3 client config. Virtual-hosted-style addressing bakes the bucket name into the hostname, which only works against real AWS endpoints. With path-style addressing, any S3-compatible store (MinIO, Cloudflare R2, LocalStack) works without custom configuration.
Both changes merged within two minutes of being opened, which is the normal cadence for willchen96 syncing fixes from the private upstream.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?