Skip to content

feat: add capabilities based on supabase-js public methods - #19

Merged
mandarini merged 7 commits into
mainfrom
feat/add-capabilities-clean
Jun 16, 2026
Merged

feat: add capabilities based on supabase-js public methods#19
mandarini merged 7 commits into
mainfrom
feat/add-capabilities-clean

Conversation

@mandarini

@mandarini mandarini commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Seeds all 5 capability files (auth, database, storage, realtime, functions) from supabase-js's typedoc spec.json — ~200 feature entries with ids, names, descriptions, and groups derived mechanically from the public API surface. Generated by scripts/sync-canon.ts in supabase-js. Future SDKs declare compliance against these IDs; future updates land as additive PRs.

Moved from #18

after this is merged, I can merge supabase/supabase-js#2441 and test it out

Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/database.yaml Outdated
Comment thread capabilities/realtime.yaml Outdated
@mandarini
mandarini force-pushed the feat/add-capabilities-clean branch from f5d3a6a to 34d6881 Compare June 12, 2026 12:12
Co-authored-by: Guilherme Souza <ogrsouza@gmail.com>
@mandarini
mandarini force-pushed the feat/add-capabilities-clean branch from 34d6881 to 3722842 Compare June 12, 2026 12:14
@mandarini
mandarini requested a review from grdsdev June 12, 2026 12:22
@mandarini

Copy link
Copy Markdown
Contributor Author

@grdsdev I adopted some of your changes from #20, but left some others out. I added a comment here: #20 (comment)

Let's discuss my decision!

@mandarini
mandarini marked this pull request as ready for review June 12, 2026 12:29
Comment thread capabilities/realtime.yaml
Comment thread capabilities/realtime.yaml
Comment thread capabilities/auth.yaml Outdated
Comment thread capabilities/realtime.yaml Outdated
mandarini and others added 3 commits June 15, 2026 14:35
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
* feat: add non-obvious capabilities to the matrix

Extends the capability matrix with features exposed by supabase-js that
are not trivially represented as a single method call — initialization
options, implicit behaviors, callback hooks, and advanced configuration.

New area:
- client.yaml: 16 features covering SupabaseClient cross-cutting config
  (third-party auth via accessToken callback, custom session storage,
  SSR mode, global headers, OpenTelemetry trace propagation, etc.)

Added features to existing areas:
- database: auto-retry with backoff, custom fetch, request timeout,
  abort signal, strip nulls, override response type, relationship embed
- realtime: postgres changes row filter, private channels (RLS),
  broadcast self-delivery/ack/replay, custom WebSocket transport,
  dynamic access token callback, worker heartbeat, binary protocol,
  reconnect backoff, deferred disconnect, custom logger
- storage: image resize/quality/format transforms, cross-bucket
  move/copy, upload metadata, URL cache nonce, streaming download,
  vector bucket management, Iceberg analytics buckets
- functions: streaming response (SSE), region selection, timeout,
  abort signal, response type detection, typed error classes,
  custom fetch, HTTP method override

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove language/framework-specific features from capability matrix

Remove features that are JS/TypeScript-specific and cannot be
implemented generically across all SDK languages:
- database.using_modifiers.override_response_type (TypeScript type system only)
- realtime.config.worker_heartbeat (Web Worker API, browser/JS only)
- client.session_management.storage_key (JS localStorage key naming)
- client.session_management.ssr_mode (SSR / Next.js specific)
- client.observability.auth_debug (supabase-js internal debug mode)

Rename JS-specific terminology to language-neutral equivalents:
- "fetch" → "HTTP client" in database, functions, and client config
- "AbortSignal" → "request cancellation" in database and functions
- Remove implementation-specific details from descriptions (AbortController,
  React Native, @opentelemetry/api package, localStorage interface)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: convert all capability IDs to kebab-case and enforce via schema

Replace underscores with hyphens in all feature IDs, group IDs, and area
names across every capability YAML file. Update the JSON schema regex
patterns to reject snake_case going forward. Rename the specs/auth/sign_in
directory to specs/auth/sign-in to match. Update all tests and fixtures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: use snake_case for all capability IDs and enforce via schema

Convert all feature IDs, group IDs, and group references to snake_case
throughout every capability YAML file. Update JSON schema patterns to
enforce snake_case (reject hyphens) for area names, group IDs, and
three-segment feature IDs. Rename specs/auth/sign_in directory and update
all tests and fixtures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: expand abbreviated group IDs in capability matrix

Replace auth_integration → authentication_integration, config →
configuration, and request_config → request_configuration in all group
declarations, group references, and feature IDs across client.yaml,
database.yaml, and realtime.yaml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: address review comments on capability structure

- Drop client.session_management.auto_refresh_token (covered by auth.session.auto_refresh)
- Drop client.request_configuration.schema_selection and db_timeout (consolidated into single capabilities in database.yaml)
- Drop client.request_configuration.custom_http_client duplicate from database.yaml and functions.yaml; keep single entry in client.yaml
- Rename file-bucket lifecycle operations to create_file_bucket/list_file_buckets/delete_file_bucket for per-kind symmetry
- Rename analytics lifecycle operations to create_analytics_bucket/list_analytics_buckets/delete_analytics_bucket
- Drop storage transforms group and image_resize/image_quality/image_format entries
- Trim realtime.configuration.binary_protocol description to protocol version selection only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@mandarini
mandarini merged commit 8b07e38 into main Jun 16, 2026
2 checks passed
@mandarini
mandarini deleted the feat/add-capabilities-clean branch June 16, 2026 11:41
grdsdev pushed a commit that referenced this pull request Aug 12, 2026
🤖 I have created a release *beep* *boop*
---


## [1.0.0](v1.0.0...v1.0.0)
(2026-08-12)


### ⚠ BREAKING CHANGES

* reconcile capability matrix inconsistencies from skill audit
([#74](#74))

### Features

* add capabilities based on supabase-js public methods
([#19](#19))
([8b07e38](8b07e38))
* add capability-matrix maintenance skill
([#73](#73))
([070e2c9](070e2c9))
* add review-spec and review-spec-compliance skills
([#6](#6))
([b2646c1](b2646c1))
* add SDK implementation status matrix to README and skill
([#4](#4))
([753f06c](753f06c))
* **api-check:** include file path and line number in compliance failure
messages ([#45](#45))
([2f4be47](2f4be47))
* **auth:** add sign-out reason capability
([#47](#47))
([51a3abd](51a3abd))
* canonical SDK capability matrix
([#8](#8))
([215bc3e](215bc3e))
* **capability-matrix:** strict cross-SDK parity score + coverage scope
([#63](#63))
([de1abe1](de1abe1))
* CI check 1 — block PRs adding public API not in capability matrix
([#31](#31))
([293440c](293440c))
* **compliance:** list undeclared features after validation
([#48](#48))
([29f396a](29f396a))
* **compliance:** list undeclared features as notes after validation
([29f396a](29f396a))
* **compliance:** split symbol evidence from symbol coverage
([#75](#75))
([abc8e71](abc8e71))
* initial SDK specs, skills, and install script
([e662b17](e662b17))
* move SDK compliance to per-repo files
([#15](#15))
([4d32675](4d32675))
* **parsers:** add Dart public API parser via package:analyzer
(alternative to [#35](#35))
([#41](#41))
([e3ba07a](e3ba07a))
* **parsers:** add griffe-based Python public API surface parser
([#36](#36))
([c44f836](c44f836))
* **parsers:** replace Swift regex parser with swift-symbolgraph-extract
([#38](#38))
([80529a7](80529a7))
* **realtime:** add multiple postgres_changes filters capability
([#70](#70))
([825ab0c](825ab0c))
* reconcile capability matrix inconsistencies from skill audit
([#74](#74))
([9c53a70](9c53a70))
* rename sdk-parse-ignore to .sdk-parse-ignore
([#37](#37))
([4f4ab61](4f4ab61))
* render symbol names as clickable links in capability matrix
([#14](#14))
([dcaf122](dcaf122))
* show feature description as visible sub-text in capability matrix
([#13](#13))
([3a750ab](3a750ab))
* **site:** serve compliance.json with precomputed parity from GitHub
Pages ([#46](#46))
([0d9106c](0d9106c))
* **storage:** add purge_cache and purge_bucket_cache canonical
capabilities ([#44](#44))
([9a6f864](9a6f864))
* **storage:** add storage.errors.error_codes capability
([#71](#71))
([fabb9a7](fabb9a7))
* **storage:** add the five missing Iceberg catalog capabilities
([#76](#76))
([c3c8f9e](c3c8f9e))


### Bug Fixes

* **aggregate:** point csharp and go SDKs at correct repo slugs
([#62](#62))
([8b7320f](8b7320f))
* **aggregate:** point kotlin SDK at supabase-community/supabase-kt
([#61](#61))
([b1a99e9](b1a99e9))
* **capability-matrix:** correct coverage scope metric description
([#64](#64))
([5daeaf5](5daeaf5))
* **ci:** repair python pipeline and simplify sdk-compliance workflow
([#42](#42))
([2140f44](2140f44))
* **ci:** use nx to run docs:json so workspace deps are built first
([#56](#56))
([9b449bb](9b449bb))
* **dart-extractor:** exclude
[@internal-annotated](https://github.com/internal-annotated) symbols
from the public API surface
([9bd358e](9bd358e))
* **dart-extractor:** exclude [@internal](https://github.com/internal)
symbols from the public API surface
([#54](#54))
([9bd358e](9bd358e))
* remove broken sticky thead, add scroll-margin-top and group-row
borders ([#10](#10))
([68761cd](68761cd))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants