diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt
index 6d07b1a9a3155..922a7d2565206 100644
--- a/apps/docs/public/humans.txt
+++ b/apps/docs/public/humans.txt
@@ -111,6 +111,7 @@ Riccardo Busetti
Rodrigo Mansueli
Ronan Lehane
Rory Wilding
+Sam Meech-Ward
Sam Rose
Sean Oliver
Sergio Cioban Filho
diff --git a/apps/studio/components/interfaces/BranchManagement/CreateBranchModal.tsx b/apps/studio/components/interfaces/BranchManagement/CreateBranchModal.tsx
index 7bfc6942c37b6..b69109218a9d1 100644
--- a/apps/studio/components/interfaces/BranchManagement/CreateBranchModal.tsx
+++ b/apps/studio/components/interfaces/BranchManagement/CreateBranchModal.tsx
@@ -1,6 +1,6 @@
import { zodResolver } from '@hookform/resolvers/zod'
import { useQueryClient } from '@tanstack/react-query'
-import { DollarSign, GitMerge, Github, Loader2 } from 'lucide-react'
+import { DatabaseZap, DollarSign, GitMerge, Github, Loader2 } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
import { useRouter } from 'next/router'
@@ -21,6 +21,7 @@ import { useBranchCreateMutation } from 'data/branches/branch-create-mutation'
import { useBranchesQuery } from 'data/branches/branches-query'
import { useCheckGithubBranchValidity } from 'data/integrations/github-branch-check-query'
import { useGitHubConnectionsQuery } from 'data/integrations/github-connections-query'
+import { useCloneBackupsQuery } from 'data/projects/clone-query'
import { projectKeys } from 'data/projects/keys'
import { useProjectAddonsQuery } from 'data/subscriptions/project-addons-query'
import { useSendEventMutation } from 'data/telemetry/send-event-mutation'
@@ -45,6 +46,9 @@ import {
Input_Shadcn_,
Label_Shadcn_ as Label,
Switch,
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
cn,
} from 'ui'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
@@ -85,6 +89,11 @@ export const CreateBranchModal = () => {
useCheckGithubBranchValidity({
onError: () => {},
})
+ const { data: cloneBackups, error: cloneBackupsError } = useCloneBackupsQuery({ projectRef })
+ const targetVolumeSizeGb = cloneBackups?.target_volume_size_gb ?? 0
+ const noPhysicalBackups = cloneBackupsError?.message.startsWith(
+ 'Physical backups need to be enabled'
+ )
const { mutate: sendEvent } = useSendEventMutation()
@@ -172,6 +181,7 @@ export const CreateBranchModal = () => {
resolver: zodResolver(FormSchema),
defaultValues: { branchName: '', gitBranchName: '', withData: false },
})
+ const withData = form.watch('withData')
const canSubmit = !isCreating && !isChecking
const isDisabled =
@@ -344,9 +354,22 @@ export const CreateBranchModal = () => {
layout="flex-row-reverse"
description="Clone production data into this branch"
>
-
+ Data branch takes longer time to create +
+
+ Since your target database volume size is{' '}
+ {targetVolumeSizeGb} GB, creating a
+ data branch is estimated to take around{' '}
+
+ {Math.round((720 / 21000) * targetVolumeSizeGb) + 3} minutes
+
+ .
+
- No data available for the selected time range + No data available for the selected time range and filters
) : isErrorState ? (
diff --git a/apps/studio/components/interfaces/Reports/v2/ReportsNumericFilter.tsx b/apps/studio/components/interfaces/Reports/v2/ReportsNumericFilter.tsx
new file mode 100644
index 0000000000000..55173bfe52115
--- /dev/null
+++ b/apps/studio/components/interfaces/Reports/v2/ReportsNumericFilter.tsx
@@ -0,0 +1,212 @@
+import { ChevronDown } from 'lucide-react'
+import { useEffect, useState } from 'react'
+
+import { Label } from '@ui/components/shadcn/ui/label'
+import { Popover, PopoverContent, PopoverTrigger } from '@ui/components/shadcn/ui/popover'
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from '@ui/components/shadcn/ui/select'
+import { Button, cn } from 'ui'
+import { Input } from 'ui-patterns/DataInputs/Input'
+
+export type ComparisonOperator = '=' | '!=' | '>' | '>=' | '<' | '<='
+
+const OPERATOR_LABELS = {
+ '=': 'Equals',
+ '>=': 'Greater than or equal to',
+ '<=': 'Less than or equal to',
+ '>': 'Greater than',
+ '<': 'Less than',
+ '!=': 'Not equal to',
+} satisfies Record
@@ -138,87 +156,60 @@ const EdgeFunctionsUsage = () => {
{fk.columns[idx]?.source}{' '}
-