- Created new inline TableQuickstart component with expandable card pattern
- Added feature flag support (control, ai, templates variants)
- Implemented smooth Framer Motion animations for expand/collapse
- Ported AI generation and template selection from legacy components
- Integrated with GettingStartedSection using PostHog feature flag
- Organized components into inline/ and legacy/ folders for clean separation
- Maintains all existing functionality while providing better UX
Key improvements:
- No navigation away from Getting Started section
- Progressive disclosure with smooth animations
- Supports A/B testing with feature flag variants
- Reuses existing API endpoints and logic
- Primary key fields now don't have default values set in the table editor
- Table descriptions are now populated from AI/template rationale
- Updated AI prompt to not generate default values for primary keys
- Updated quickstartStore to pass rationale field through
- Added order_items table to E-commerce template (links orders and products)
- Added comments table to Blog template (for reader engagement)
- Added team_members table to Todo List/Project template (for collaboration)
- Added sessions table to Analytics template (for tracking user engagement)
- All templates now consistently show 3 tables for better UX consistency
- Changed hover:border-foreground/20 to hover:border-foreground-muted across all components
- Fixed focus state border in AiPromptInput to use foreground-muted
- Ensures consistent hover effects that remain visible in both light and dark modes
- Changed useQuickstartData to respect isPrimary flag from AI/templates
- Always mark 'id' fields as primary key regardless of data type
- Fixes issue where text-type id fields weren't marked as primary
- Updated convertAISchemaToTableSuggestions to always set isPrimary: true for id fields
- Updated AI prompt to explicitly instruct marking id fields as primary
- Ensures consistency with template behavior when reaching table editor
- Add API endpoint for generating database schemas using OpenAI
- Integrate AI generation into Table Quickstart frontend
- Support 2-3 table generation based on user prompts
- Add proper error handling with toast notifications
- Whitelist endpoint in middleware for hosted environment
Implements a growth engineering experiment to improve new user onboarding
by providing AI-powered and template-based table creation options.
Features:
- AI prompt interface for describing app requirements
- Pre-built templates for common app types (social media, e-commerce, blog, etc.)
- Seamless integration with existing table editor
- State management using Valtio for reliable data flow
- PostHog feature flag controlled (tableQuickstart)
Technical implementation:
- Uses Valtio proxy-based state management instead of sessionStorage
- Properly handles quickstart flow to prevent race conditions
- Integrates with TableEditor via useQuickstartData hook
- Cleans up state appropriately to prevent panel re-opening issues
- Full TypeScript support with proper type definitions
The experiment aims to reduce time-to-value for new users by providing
smart defaults and reducing the SQL knowledge barrier for initial setup.
* feat(replication): Show warning when publication is not found
* Fix
* Pretty ✨
* Smol tweaks
---------
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
* Create OrganizationProjectSelector which handles infinite scrolling in Popover
* Use OrganizationProjectSelector in InviteMemberButton
* Refactor OrganizationProjectSelector to optimize UX
* Use OrganizationProjectSelector in SupportFormV2
* Update apps/studio/data/projects/projects-infinite-query.ts
* Nit
---------
Co-authored-by: Jordi Enric <37541088+jordienr@users.noreply.github.com>
* fix(www): types for awaited params
* fix(docs): no extraneous exports from route page
* fix(studio): api handler types, no non-handlers allowed in pages
Debounce filter application in UnifiedLogs
Introduced debounced filter application using useDebounce to reduce excessive API calls when users quickly change filters in UnifiedLogs. This improves performance and user experience by batching rapid filter changes.
Remove the overly permissive *.posthog.com wildcard from CSP configuration.
The PostHog reverse proxy at ph.supabase.com/ph.supabase.green handles all
necessary PostHog endpoints including /flags for feature flags.
This improves security by only allowing our controlled reverse proxy domains
rather than the entire PostHog infrastructure.
It's possible for individual PRs to pass typechecking, while the merge
result fails it. To prevent errors from getting into production, we can
fail the prod build if typecheck fails. Typecheck is still ignored on
preview builds for efficiency, since those are blocked on the GitHub
typecheck Action.
* fix(ui/auth-sessions): always show refresh token reuse interval
The reuse interval input was previously hidden when rotation was disabled. This
caused confusion, since the interval still applies regardless of rotation
setting. Allow zero values for reuse interval as it is supported in auth server
and is used by some projects.
* Always render SECURITY_REFRESH_TOKEN_REUSE_INTERVAL field.
* Removed .positive() schema check to allow 0 values
* Improves alignment between dashboard UI and backend behavior
* chore: prettier
---------
Co-authored-by: Chris Stockton <chris.stockton@supabase.io>
* feat: change calls label to count
This changes the column title for calls to count for clarity
* feat: add cache hit rate col and number formatting
Adds a cache hit rate column for each query as well as tidies up some number formatting.
* feat: add styling for 0 numbers
This makes anything marked as 0 feint in the table for easier parsing.
* chore: remove debug console log
* fix: silly next-env again
* nit: remove avg rows col
* nit: add toFixed to cache hit rate
* feat: add tooltip for role column
* Update perms checking in audit logs
* Deprecate useCheckPermissions, useIsPermissionsLoaded and useCheckProjectPermissions as they're no longer used
* Rename useAsyncCheckProjectPermissions to useAsyncCheckPermissions
* Fix TS
fix: handle undefined count when fetchint table rows
count can be undefined in the return from fetching table rows (it uses
executeSqlQuery under the hood which has no type safety) so we need to
deal with that case
PostHog feature flags and other advanced features (toolbar, session replay)
require direct connections to *.posthog.com endpoints, even when using our
proxy server for main event ingestion. This adds the necessary CSP rules.