diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b18fd29357367..3e9248e06d0ab 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,3 +4,7 @@ updates: directory: '/' schedule: interval: 'weekly' + ignore: + - dependency-name: '*' + update-types: + - 'version-update:semver-major' diff --git a/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx b/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx index 1184e409bbd31..04936737eba0c 100644 --- a/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx +++ b/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx @@ -104,7 +104,7 @@ const AppleSecretGenerator = () => { const [error, setError] = useState('') return ( - <> +
{ /> )} - +
) } diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 3d76a41db96e1..5a1292cb1b39d 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -8,6 +8,7 @@ Alaister Young Alan De Los Santos Aleksi Immonen Alexander Korotkov +Ali Waseem Amy Q Andrew Valleteau Andrey A diff --git a/apps/studio/README.md b/apps/studio/README.md index 7f8fd0a63bb33..155c40ee873d1 100644 --- a/apps/studio/README.md +++ b/apps/studio/README.md @@ -40,9 +40,15 @@ Project settings are managed outside of the Dashboard. If you use docker compose # You'll need to be on Node v20 # in /studio -pnpmn install # install dependencies -mise studio # Supabase internal use: if you are working on the platform version of the Studio +## For external contributors +pnpm install # install dependencies pnpm run dev # start dev server + +## For internal contributors +## First clone the private supabase/infrastructure repo and follow instructions for setting up mise +mise studio # Run from supabase/infrastructure alongside `mise infra` + +## For all pnpm run test # run tests pnpm run test -- --watch # run tests in watch mode ``` diff --git a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx index 83e752106725a..7630a524b0be0 100644 --- a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx @@ -72,7 +72,7 @@ export const RegionSelector = ({ ) const availableRegions = getAvailableRegions(PROVIDERS[cloudProvider].id) - const regionsArray = Object.entries(availableRegions).map(([key, value]) => { + const regionsArray = Object.entries(availableRegions).map(([_key, value]) => { return { code: value.code, name: value.displayName, @@ -88,6 +88,11 @@ export const RegionSelector = ({ process.env.NEXT_PUBLIC_ENVIRONMENT === 'local' || process.env.NEXT_PUBLIC_ENVIRONMENT === 'staging' + const allSelectableRegions = [...smartRegions, ...regionOptions] + const selectedRegion = allSelectableRegions.find((region) => { + return !!region.name && region.name === field.value + }) + if (isErrorAvailableRegions) { return } @@ -118,7 +123,20 @@ export const RegionSelector = ({ placeholder={ isLoading ? 'Loading available regions...' : 'Select a region for your project..' } - /> + > + {field.value !== undefined && ( +
+ {selectedRegion?.code && ( + region icon + )} + {selectedRegion?.name ?? field.value} +
+ )} + {smartRegionEnabled && ( diff --git a/apps/studio/data/profile/profile-identities-query.ts b/apps/studio/data/profile/profile-identities-query.ts index e640502c83bf7..15482f0536e0b 100644 --- a/apps/studio/data/profile/profile-identities-query.ts +++ b/apps/studio/data/profile/profile-identities-query.ts @@ -5,11 +5,16 @@ import { auth } from 'lib/gotrue' import { profileKeys } from './keys' export async function getProfileIdentities() { - const { error, data } = await auth.getUser() + // getSession() uses a cached user object, which is almost never stale as the + // session refresh logic keeps it fresh. If there are claims of data not being + // fresh, it's because it was modified on another device / browser and the + // session hasn't been refreshed yet. + const { error, data } = await auth.getSession() if (error) throw error + if (!data.session) throw new Error('Session not found with getSession()') - const { identities = [], new_email, email_change_sent_at } = data.user + const { identities = [], new_email, email_change_sent_at } = data.session.user return { identities, new_email, email_change_sent_at } } diff --git a/apps/www/pages/careers.tsx b/apps/www/pages/careers.tsx index 58ee7f1465a26..49564cc4b7111 100644 --- a/apps/www/pages/careers.tsx +++ b/apps/www/pages/careers.tsx @@ -313,7 +313,7 @@ const CareerPage = ({ jobs, placeholderJob, contributors }: CareersPageProps) =>

- 1,000+ Contributors building Supabase + 1,500+ Contributors building Supabase

We're building a community of communities, bringing together developers from many diff --git a/packages/ui/src/lib/Layout/FormLayout/FormLayout.tsx b/packages/ui/src/lib/Layout/FormLayout/FormLayout.tsx index 3fb9827de7f0f..d5c65738d29ba 100644 --- a/packages/ui/src/lib/Layout/FormLayout/FormLayout.tsx +++ b/packages/ui/src/lib/Layout/FormLayout/FormLayout.tsx @@ -116,7 +116,7 @@ export function FormLayout({ // console.log('error', error) - const renderError = ( + const renderError = error && (