- 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.
* Add StateOfStartupsHeader component and update page
Introduces the StateOfStartupsHeader component for improved header styling on the state-of-startups page. Updates the page to use the new header and refactors the intro section layout. Adds a feature flag override for 'stateOfStartups' in useFlag for debugging purposes.
* Update StateOfStartupsHeader.tsx
* Update StateOfStartupsHeader.tsx
* Refactor progress bar components for reusability
Extracted a reusable ProgressBar component from DecorativeProgressBar and integrated it into StateOfStartupsHeader. Added support for configurable progress bars in header text blocks, improving code modularity and visual customization.
* Refactor StateOfStartupsHeader and update usage
Simplifies StateOfStartupsHeader by removing unused props and internalizing display logic. Progress bar delays are now randomized for a more dynamic effect. Updates state-of-startups.tsx to use the new header signature and removes legacy/commented code.
* Update StateOfStartupsHeader.tsx
* Update state-of-startups-og.png
* Update StateOfStartupsHeader.tsx
* Update header text color and OG image for State of Startups
Changed the 2025 TextBlock text color to 'text-brand-300' for improved visual consistency. Updated the Open Graph image for State of Startups.
Tests get spammed with unnecessary tsconfig errors because the Vitest
config tries to use tsconfig files from the examples directory.
Excluding those from tsConfigPaths for cleaner test output.
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.
* feat: alternate search index for nimbus
Create an alternate search index for Nimbus that filters out
feature-flagged pages (equivalent to setting all feature flags to
false).
Notes:
- Creates two new DB tables, `page_nimbus` and `page_section_nimbus`,
which are filtered versions of `page` and `page_section`
- Makes `nimbus` versions of all the DB search functions
- Refactored the embedding upload script. Changes to make it faster (got
annoyed by how slow it was when testing...), incorporate retries, and
produce better summary logs.
- Upload script, when run with the environment variable
ENABLED_FEATURES_OVERRIDE_DISABLE_ALL, produces and uploads the
alternate search index
- Changed all the search calls in frontend/API to check for
`isFeatureEnabled('search:fullIndex')` to determine whether to search
the full or alternate index
* ci: produce nimbus search indexes on merge
* fix: turn full search index on
* 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>