* When creating a s3 vectors fdw, add the target schema as a server option.
* Fix a bug in the row link, it didn't work when you middle click.
* Refactor the protected schema logic to include schemas from all fdws.
* Refactor the protected schema logic to include fdw type and name. Change the ProtectedSchemaWarning to show different messages for the 2 fdw types.
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* Refactor long polling logic for analytics bucket to automatically long poll when landing back on page and data has yet to be synced
* Nit clean up refactor
* Clean up
* Nit
* Retrieve temporary API key within iceberg-namespace-tables-query
* Retrieve temporary API key within iceberg-namespace-table-delete-mutation
* Retrieve temporary API key within iceberg-namespaces-query
* Fix
* Retrieve temporary API key within iceberg-namespace-create-mutation
* Update based on comments
* Improve granularity of replication status
* Minor copy improvements
* Update toast message copy
* Decouple pipeline status from table replication status
* Fix childProps in Admonition so that they're added as a prop to the main div.
* Replace the admonition with Alert in Wrapper tab page to add a gap between childs.
* Add s3 vectors fdw.
* Minor fix to FormSection.
* Update the fdw mutations to support passing in options.
* Refactor the vector flow to create fdws.
* Revert cron description change.
* If the bucket can't be created, don't create a fdw.
* Update/delete the fdw when deleting a table or a bucket.
* Minor fixes.
* Clean up the delete modal.
* Handle edge cases when missing a wrapper.
* Remove the admonition in the create bucket modal.
* Fix the loading state when creating a bucket.
* Fix the createWrapper sheet to work with s3 vectors.
* Fix undefined wrapperMeta issue.
* Create the schema when installing a wrapper.
* Tiny cleanup.
* Clean up unneeded useState. Create a wrapper only if the all conditions are met.
* Fix all comments.
* Add s3 vectors for docs.
* Add a link and fix the file name for S3 Vectors in docs.
* Hide the table editor button if the wrapper instance is missing.
* Small fixes.
* Refactor DeleteBucketModal to use TextConfirmModal
* Refactor DeleteAnalyticsBucket to use TextConfirmModal
* Update TextConfirmModal to disable button until text match
* Refactor DeleteVectorBucketModal to use TextConfirmModal
* Remove test case - no longer valid
* midway
* Hook up connect tables e2e
* Update isEnabled flag
* Change connectingStep to enum
* Nit
* Nit
* Nit
* Only show replication status if theres a publication
* Improve loading state in etl page
* Refactor + Clean up + Add long poll logic when adding more tables
* Initial work on vector buckets.
* Add more queries and UI.
* chore(studio): vector buckets contents (#39705)
* language
* match analytics buckets
* shared empty state
* proper loading state
* create dialog cleanup
* simplify copywriting
* proper details
* filtering
* use real data
* chore(studio): vector buckets polish A (#39759)
* empty state
* better checks
* bucket name in sheet
* fix typo
* sheet improvements
* rename vector index to vector table
* cleanup
* More work on the vector indexes.
* Add delete for bucket and indexes. Create index should now work.
* chore(studio): vector buckets polish B (#39794)
* loading
* delete modal
* fix modal behaviour
* Add modal for deleting vector buckets.
* Bring back the shimmering loader.
* chore(studio): vector buckets polish C (#39887)
* fix bucketname on deletion dialog
* empty states
* remove extraneous padding
* proper loading and not-found cases
* Minor fixes.
* Minor updates to the vector components.
* Add more instructions to the cursor rules.
* Some refactors and shifting files around
* Refactor analytics buckets detial to improve time to fcp
* Fix
* Refactors + simplify
* Last few nits, just leaving comments
* If the bucket is not empty, delete all indexes first.
---------
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* First pass of deprecating old storage UI components
* Clean up local-storage flag for new storage UI
* Add coming soon UI for analytics and vector buckets pages
* Set up warning states for analytics buckets
* fix spelling and margin
* Smol fix
* nit
* Surface wrappers upgrade check in UI instead of toast
* Nit clean up
* update tests
---------
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
* Add custom types for queries, mutations and infinite queries.
* Migrate all queries to use the new type.
* Migrate all infinite queries to useCustomInfiniteQueryOptions.
* Migrate all mutations to use useCustomMutationOptions.
* Add type to all imports in `types` folder.
* refactor(infinite list): use @tanstack/react-virtual for virtualization
Swapping virtualization libraries from `react-window` to
`@tanstack/react-virtual`.
Motivation: we need a completely headless library for maximum
flexibility. `react-window` injects extra DOM elements which makes it
hard to customize styling and placement on elements that are very picky
about their DOM structure, like tables.
* refactor(table editor menu): use new infinite list
* refactor(notifications): use new infinite list
* cleanup(infinite list): remove old infinite list
* refactor(storage menu): use new infinite list & remove react-window deps
* fix(storage ui v2): virtualize files buckets table
* refactor(virtualized table): make virtualized table a general ui component
Make virtualized table a general UI component and refactor FilesBuckets
to use VirtualizedTable.
* Fix header bg color, add sort to files buckets, sort bucket list
* Smol fix
* nit
* fix(storage buckets list): keep unvirtualized if user has <= 50 buckets
* Break up FilesBuckets into smaller components
* Nit
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* refactor(infinite list): use @tanstack/react-virtual for virtualization
Swapping virtualization libraries from `react-window` to
`@tanstack/react-virtual`.
Motivation: we need a completely headless library for maximum
flexibility. `react-window` injects extra DOM elements which makes it
hard to customize styling and placement on elements that are very picky
about their DOM structure, like tables.
* refactor(table editor menu): use new infinite list
* refactor(notifications): use new infinite list
* cleanup(infinite list): remove old infinite list
* refactor(storage menu): use new infinite list & remove react-window deps
* perf(storage menu): virtualize and memoize bucket rows
The Storage Menu fails to render properly when the user has thousands of
buckets. Virtualizing and memoizing BucketRows to reduce rendering work.
* refactor(bucket list): only virtualize bucket list when more than 50 buckets
* style(storage menu): improve styling for virtualized and unvirtualized lists
* o11y: mirror and sanitize breadcrumbs
Mirror Sentry breadcrumbs as the basis for our own support logging. Also
adds more sanitization to breadcrumbs.
* feat(support form): toggle for attaching dashboard logs
Add a toggle to the support form when the category is "Dashboard bug",
to attach recent dashboard logs. Users can preview the attached logs and
opt out.
* feat(support links): dedicated support link component
Add a new component for support links, which:
- Uses the serializer for support link params to ensure
serialization/deserialization pairs correctly
- Snapshots breadcrumbs so the attached log on the support form will be
cut off at the support link click (otherwise we will get support form
actions cluttering up the log)
* tests(support form): extend timeout on flaky test
* Minor clean up
* fix(support form): allow url to specifically indicate no specified project
* minor nits
* Fix tests
* Fix tests
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* user newer input in api keys
* user newer input in s3 connection settings
* improve input read-only styles
* make API text selectable
* disable text until reveal button tapped
* fix build
* revert change
* fix other cases
* revert hardcoded example
* nice region field
* documentation
* cleanup
* better docs
* colour tweaks
* Use the "eslint" command instead of built-in next lint since it's getting obsolete.
* Bump all deps to support eslint 9+.
* Convert the rules in eslint-config-supabase to be flat-config compatible.
* Migrate all apps to use the new eslint config rules.
* Fix all errors found in the new setup.
* Fix the no default exports ignores.
* Scan all files for linting in studio.
* Fix all lint errors.
* Make the reportUnusedDisableDirectives a warning.
* chore: separate interfaces per bucket type
* chore: reuse existing bucket creation modal for files
* chore: allow external trigger for new bucket modal
* chore: minor fixes
* chore: full-size empty state
* chore: files other tabs
* fix: show tab bar when on file subroute
* chore: use existing table component to list buckets
* fix: tests
* fix: build error
* chore: remove future bucket type components from PR
* fix: dependency
* Couple of refactors to simplify implementation
* Fix TS
* chore: move s3 settings out to sidebar
* fix: minor nits
* fix: reuse existing loading spinners from schema visualiser
* fix: loading for files
* fix: prevent loading of table for zero buckets
* chore: improved loading state
* chore: shimmer on table
* chore: copywriting on S3
* chore: improve empty states
* fix: deprecated input instructions
* fix: filter/search bucket table
* chore: tidy
* fix: tests
* first commit
* improve documentation and fix icon build error
* change svg kebab case to camel case for React
* copy nits
* fix svg codeblock color
* add bucket (normal) icon
* add bucket icon to policies
* add bucket icon to other storage bucket surfaces
* fix spacing on empty state
* fix inconsistent icons in home sections
Make 1:1 with what we have in the sidebar with optically-correct strokeWidth.
* fix icons
Like the previous commit, this makes sure we use the same product icons as in the sidebar.
* clearer bucket add icon naming
* remove unused layouts
* fix naming collision
* Tinnnnyyy nit
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* basic StorageBucketResponse items in table
* basic bucket file explorer
* policy count for each bucket
* don't show root folder on explorer
It's confusing in the new surrounding UI
* fix height for StorageExplorer
* reuse existing header
* fix overrides
* fix additional overrides
* improve table columns
* clarify copywriting and remove redundancy
* organise imports
* minor clean up
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* fix: add custom message for 404 storage config errors
Added a specific error message "Storage configuration not found." when
the storage config API returns a 404 error code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add comment
* Nit improve error handling for S3 connection UI
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* Add callout for migration
* Update copy
* Update date
* remove docs button
* Fix conditional - storage upgrade prompt should only show if list v2 is false
* fix: change name prop value
* chore: use attribute instead and catch other password managers
* chore: add comment
* fix: remove password manager from edge function secrets inputs
* chore: remove comments
* feat: bucket type page and corresponding sidebar
* feat: handle /storage URL redirection based on feature flag
* fix: default sidebar selection
* Use feature flag for feature preview, and have new UI behind feature preview instead
* Remove hardcode
* Minor clean ups
* chore: improve feature preview description
* chore: more descriptive name for general file storage type
* fix: preview image
* Minor nits
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>