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.

infrastructureworkflow

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.

So what Worth pulling if you're running shared projects in production - the JSONB bug is a showstopper for any user with shared access. The `forcePathStyle` flag matters if you're running against anything other than AWS S3 in dev or staging.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

2 commits from willchen96/mike, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
625bca4d fix: handle JSONB shared_with filters and path-style S3 willchen96 2026-05-10 ↗ GitHub
029181b2 Merge pull request #52 from willchen96/sync/jsonb-shared-with-s3-path-style cosimoastrada 2026-05-10 ↗ GitHub
fix: handle JSONB shared_with filters and path-style S3

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-248.md from inside the repo you want the changes in.

⬇ Download capture-thread-248.md