diff --git a/apps/docs/content/guides/auth/passwords.mdx b/apps/docs/content/guides/auth/passwords.mdx index afdfa5b0c0b7c..a261020a66b03 100644 --- a/apps/docs/content/guides/auth/passwords.mdx +++ b/apps/docs/content/guides/auth/passwords.mdx @@ -960,11 +960,11 @@ Consider configuring a custom SMTP server for production. See the [Custom SMTP guide](/docs/guides/auth/auth-smtp) for instructions. -#### Local development with Inbucket +#### Local development with Mailpit -You can test email flows on your local machine. The Supabase CLI automatically captures emails sent locally by using [Inbucket](https://github.com/inbucket/inbucket). +You can test email flows on your local machine. The Supabase CLI automatically captures emails sent locally by using [Mailpit](https://github.com/axllent/mailpit). -In your terminal, run `supabase status` to get the Inbucket URL. Go to this URL in your browser, and follow the instructions to find your emails. +In your terminal, run `supabase status` to get the Mailpit URL. Go to this URL in your browser, and follow the instructions to find your emails. ## With phone diff --git a/apps/docs/content/guides/local-development/cli/getting-started.mdx b/apps/docs/content/guides/local-development/cli/getting-started.mdx index 4240378957e8d..a65e54431ea43 100644 --- a/apps/docs/content/guides/local-development/cli/getting-started.mdx +++ b/apps/docs/content/guides/local-development/cli/getting-started.mdx @@ -217,7 +217,7 @@ Started supabase local development setup. API URL: http://localhost:54321 DB URL: postgresql://postgres:postgres@localhost:54322/postgres Studio URL: http://localhost:54323 - Inbucket URL: http://localhost:54324 + Mailpit URL: http://localhost:54324 anon key: eyJh...... service_role key: eyJh...... diff --git a/apps/docs/content/guides/local-development/cli/testing-and-linting.mdx b/apps/docs/content/guides/local-development/cli/testing-and-linting.mdx index c3c8d2eb9a398..59e8bb4e0d1ee 100644 --- a/apps/docs/content/guides/local-development/cli/testing-and-linting.mdx +++ b/apps/docs/content/guides/local-development/cli/testing-and-linting.mdx @@ -36,11 +36,11 @@ Edge Functions are powered by Deno, which provides a [native set of testing tool ## Testing Auth emails -The Supabase CLI uses [Inbucket](https://github.com/inbucket/inbucket) to capture emails sent from your local machine. This is useful for testing emails sent from Supabase Auth. +The Supabase CLI uses [Mailpit](https://github.com/axllent/mailpit) to capture emails sent from your local machine. This is useful for testing emails sent from Supabase Auth. -### Accessing Inbucket +### Accessing Mailpit -By default, Inbucket is available at [localhost:54324](http://localhost:54324) when you run `supabase start`. Open this URL in your browser to view the emails. +By default, Mailpit is available at [localhost:54324](http://localhost:54324) when you run `supabase start`. Open this URL in your browser to view the emails. ### Going into production diff --git a/apps/docs/content/guides/platform/access-control.mdx b/apps/docs/content/guides/platform/access-control.mdx index 37b7b85dd52a4..7ca44c31e802b 100644 --- a/apps/docs/content/guides/platform/access-control.mdx +++ b/apps/docs/content/guides/platform/access-control.mdx @@ -269,11 +269,12 @@ The table below shows the actions each role can take on the resources belonging | | Revoke | | | | | | | List | | | | | | **Branching** | | | | | | -| Enable branching | - | | | | | -| Disable branching | - | | | | | +| Production Branch | Read | | | | | +| | Write | | | | | +| Development Branches | List | | | | | | | Create | | | | | +| | Update | | | | | | | Delete | | | | | -| | List | | | | | [^1]: Available on the Team and Enterprise Plans. [^2]: Sending anonymous data to OpenAI is opt in and can improve Studio AI Assistant's responses. diff --git a/apps/studio/components/interfaces/Organization/TeamSettings/MemberRow.tsx b/apps/studio/components/interfaces/Organization/TeamSettings/MemberRow.tsx index 4eccdd17f71f2..068c517764d2c 100644 --- a/apps/studio/components/interfaces/Organization/TeamSettings/MemberRow.tsx +++ b/apps/studio/components/interfaces/Organization/TeamSettings/MemberRow.tsx @@ -88,7 +88,7 @@ export const MemberRow = ({ member }: MemberRowProps) => { />

{member.primary_email}

- {member.primary_email === profile?.primary_email && You} + {member.gotrue_id === profile?.gotrue_id && You}
{(member.metadata as any)?.origin && ( diff --git a/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx b/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx index 2de693bc844cc..3ecc3b3de9041 100644 --- a/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx +++ b/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx @@ -54,13 +54,13 @@ const MembersView = ({ searchString }: MembersViewProps) => { const [[user], otherMembers] = partition( filteredMembers, - (m) => m.primary_email === profile?.primary_email + (m) => m.gotrue_id === profile?.gotrue_id ) const sortedMembers = otherMembers.sort((a, b) => (a.primary_email ?? '').localeCompare(b.primary_email ?? '') ) - const userMember = members.find((m) => m.primary_email === profile?.primary_email) + const userMember = members.find((m) => m.gotrue_id === profile?.gotrue_id) const orgScopedRoleIds = (roles?.org_scoped_roles ?? []).map((r) => r.id) const isOrgScopedRole = orgScopedRoleIds.includes(userMember?.role_ids?.[0] ?? -1) diff --git a/apps/studio/data/api-keys/api-key-create-mutation.ts b/apps/studio/data/api-keys/api-key-create-mutation.ts index 0cc6b36ec5730..f84d56055ec57 100644 --- a/apps/studio/data/api-keys/api-key-create-mutation.ts +++ b/apps/studio/data/api-keys/api-key-create-mutation.ts @@ -36,7 +36,7 @@ export async function createAPIKey(payload: APIKeyCreateVariables) { ? { // secret_jwt_template: payload?.secret_jwt_template || null, secret_jwt_template: { - role: 'service_role', // @mildtomato (Jonny) this should be default in API for type secret + role: 'service_role', }, } : name), diff --git a/apps/studio/data/api-keys/keys.ts b/apps/studio/data/api-keys/keys.ts index 222a51b0b1cf4..e0bfd8932647d 100644 --- a/apps/studio/data/api-keys/keys.ts +++ b/apps/studio/data/api-keys/keys.ts @@ -1,6 +1,6 @@ export const apiKeysKeys = { list: (projectRef?: string, reveal?: boolean) => - ['projects', projectRef, 'api-keys', reveal] as const, + ['projects', projectRef, 'api-keys', reveal].filter(Boolean), single: (projectRef?: string, id?: string) => ['projects', projectRef, 'api-keys', id] as const, status: (projectRef?: string) => ['projects', projectRef, 'api-keys', 'legacy'] as const, } diff --git a/apps/studio/state/ai-assistant-state.tsx b/apps/studio/state/ai-assistant-state.tsx index 8d8cc7e27134a..c6047f3e8bea7 100644 --- a/apps/studio/state/ai-assistant-state.tsx +++ b/apps/studio/state/ai-assistant-state.tsx @@ -2,6 +2,7 @@ import type { Message as MessageType } from 'ai/react' import { DBSchema, IDBPDatabase, openDB } from 'idb' import { debounce } from 'lodash' import { createContext, PropsWithChildren, useContext, useEffect, useState } from 'react' +import { v4 as uuidv4 } from 'uuid' import { proxy, snapshot, subscribe, useSnapshot } from 'valtio' import { LOCAL_STORAGE_KEYS } from 'common' @@ -234,7 +235,7 @@ export const createAiAssistantState = (): AiAssistantState => { Pick > ) => { - const chatId = crypto.randomUUID() + const chatId = uuidv4() const newChat: ChatSession = { id: chatId, name: options?.name ?? 'Untitled', diff --git a/apps/www/data/features.tsx b/apps/www/data/features.tsx index 8da84a02e3e78..f2907db1572bb 100644 --- a/apps/www/data/features.tsx +++ b/apps/www/data/features.tsx @@ -795,7 +795,7 @@ Supabase's Email Login feature enables secure email-based authentication for you - Secure authentication: Implement industry-standard security practices. - Customizable workflows: Tailor the signup and login processes to your needs. - Seamless integration: Works with Supabase's other auth providers and features. -- Local development support: Test email flows using built-in tools like Inbucket. +- Local development support: Test email flows using built-in tools like Mailpit. ## Email login is valuable for: - SaaS applications requiring user accounts diff --git a/supa-mdx-lint/Rule001HeadingCase.toml b/supa-mdx-lint/Rule001HeadingCase.toml index c5afd2925466a..770ce4ba94f9a 100644 --- a/supa-mdx-lint/Rule001HeadingCase.toml +++ b/supa-mdx-lint/Rule001HeadingCase.toml @@ -124,6 +124,7 @@ may_uppercase = [ "Llamafile", "Logs Explorer", "Magic Link", + "Mailpit", "Management API", "Mixpeek", "Mixpeek Embed", diff --git a/supa-mdx-lint/Rule003Spelling.toml b/supa-mdx-lint/Rule003Spelling.toml index 449ffc5cf0423..c38cdf3637e41 100644 --- a/supa-mdx-lint/Rule003Spelling.toml +++ b/supa-mdx-lint/Rule003Spelling.toml @@ -204,6 +204,7 @@ allow_list = [ "Logflare", "Lua", "Mailgun", + "Mailpit", "Mailtrap", "Mansueli", "Metabase",