-
+
Resize databases
diff --git a/apps/studio/components/interfaces/Storage/StorageSettings/StorageListV2MigrationCallout.tsx b/apps/studio/components/interfaces/Storage/StorageSettings/StorageListV2MigrationCallout.tsx
index 33ae91b104e..d0baaff419e 100644
--- a/apps/studio/components/interfaces/Storage/StorageSettings/StorageListV2MigrationCallout.tsx
+++ b/apps/studio/components/interfaces/Storage/StorageSettings/StorageListV2MigrationCallout.tsx
@@ -139,11 +139,11 @@ const StorageListV2MigrationDialog = () => {
Ensure that your database instance has not{' '}
-
+
scaled disk
{' '}
within the last 6h and you have at least 60%{' '}
-
+
CPU capacity
{' '}
before proceeding.
diff --git a/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx b/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx
index 34e243e3226..d93b2dfab98 100644
--- a/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx
+++ b/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx
@@ -189,10 +189,8 @@ const IssueSuggestion = ({ category, projectRef }: { category: string; projectRe
title="Have you checked your project's infrastructure activity?"
>
High memory or low disk IO bandwidth may be slowing down your database. Verify by checking
- the infrastructure activity of your project{' '}
-
- here
-
+ your project's database observability reports{' '}
+ here
.
)
@@ -205,11 +203,8 @@ const IssueSuggestion = ({ category, projectRef }: { category: string; projectRe
className={className}
title="Have you checked the Query Performance Advisor?"
>
- Identify slow running queries and get actionable insights on how to optimize them with the
- Query Performance Advisor{' '}
-
- here
-
+ Identify slow running queries and get actionable insights on how to optimize them with Query
+ Performance here
.
)
diff --git a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.selfhosted.test.tsx b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.selfhosted.test.tsx
index 1b5d40e4037..b4cb5ee9b07 100644
--- a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.selfhosted.test.tsx
+++ b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.selfhosted.test.tsx
@@ -106,7 +106,6 @@ describe('useGenerateSettingsMenu (self-hosted)', () => {
const { result } = renderHook(() => useGenerateSettingsMenu())
const configGroup = result.current.find((group) => group.title === 'Configuration')
- expect(configGroup?.items.some((item) => item.key === 'compute-and-disk')).toBe(false)
expect(configGroup?.items.some((item) => item.key === 'infrastructure')).toBe(false)
expect(configGroup?.items.some((item) => item.key === 'addons')).toBe(false)
})
diff --git a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.test.tsx b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.test.tsx
index 1c6a6b17f16..4cf32306fcc 100644
--- a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.test.tsx
+++ b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.test.tsx
@@ -147,9 +147,6 @@ describe('useGenerateSettingsMenu', () => {
)
expect(shortcutByKey.get('general')).toBe(SHORTCUT_IDS.NAV_PROJECT_SETTINGS_GENERAL)
- expect(shortcutByKey.get('compute-and-disk')).toBe(
- SHORTCUT_IDS.NAV_PROJECT_SETTINGS_COMPUTE_AND_DISK
- )
expect(shortcutByKey.get('infrastructure')).toBe(
SHORTCUT_IDS.NAV_PROJECT_SETTINGS_INFRASTRUCTURE
)
diff --git a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.tsx b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.tsx
index 354a4b603f8..a611ebb0a6f 100644
--- a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.tsx
+++ b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsMenu.utils.tsx
@@ -106,15 +106,6 @@ export const useGenerateSettingsMenu = () => {
items: [],
shortcutId: SHORTCUT_IDS.NAV_PROJECT_SETTINGS_GENERAL,
},
- {
- name: 'Compute and Disk',
- key: 'compute-and-disk',
- url: `/project/${ref}/settings/compute-and-disk`,
- items: [],
- disabled: !isProjectActive,
- isLoading: isPending,
- shortcutId: SHORTCUT_IDS.NAV_PROJECT_SETTINGS_COMPUTE_AND_DISK,
- },
{
name: 'Infrastructure',
key: 'infrastructure',
diff --git a/apps/studio/components/ui/BannerStack/Banners/BannerFreeMicroUpgrade.tsx b/apps/studio/components/ui/BannerStack/Banners/BannerFreeMicroUpgrade.tsx
index 32546af5a27..9430cbbf98b 100644
--- a/apps/studio/components/ui/BannerStack/Banners/BannerFreeMicroUpgrade.tsx
+++ b/apps/studio/components/ui/BannerStack/Banners/BannerFreeMicroUpgrade.tsx
@@ -58,7 +58,7 @@ export const BannerFreeMicroUpgrade = () => {
track('free_micro_upgrade_banner_cta_clicked')
}}
>
-
+
Upgrade for free
diff --git a/apps/studio/components/ui/ComputeBadgeWrapper.tsx b/apps/studio/components/ui/ComputeBadgeWrapper.tsx
index f83aaaf9e10..e3fee7064ea 100644
--- a/apps/studio/components/ui/ComputeBadgeWrapper.tsx
+++ b/apps/studio/components/ui/ComputeBadgeWrapper.tsx
@@ -201,7 +201,7 @@ export const ComputeBadgeWrapper = ({
})
}}
>
-
+
Upgrade compute
diff --git a/apps/studio/components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner.tsx b/apps/studio/components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner.tsx
index 9a2acba857a..4b0b864df59 100644
--- a/apps/studio/components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner.tsx
+++ b/apps/studio/components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner.tsx
@@ -115,11 +115,11 @@ export const ResourceExhaustionWarningBanner = () => {
const correctionUrlVariants = {
undefined: undefined,
null: '/project/[ref]/settings/[infra-path]',
- disk_space: '/project/[ref]/settings/compute-and-disk',
- read_only: '/project/[ref]/settings/compute-and-disk',
- disk_io: '/project/[ref]/settings/compute-and-disk',
- cpu: '/project/[ref]/settings/compute-and-disk',
- ram: '/project/[ref]/settings/compute-and-disk',
+ disk_space: '/project/[ref]/settings/infrastructure',
+ read_only: '/project/[ref]/settings/infrastructure',
+ disk_io: '/project/[ref]/settings/infrastructure',
+ cpu: '/project/[ref]/settings/infrastructure',
+ ram: '/project/[ref]/settings/infrastructure',
auth_email_rate_limit: '/project/[ref]/auth/rate-limits',
auth_restricted_email_sending: '/project/[ref]/auth/smtp',
default: (metric: string) => `/project/[ref]/settings/[infra-path]#${metric}`,
@@ -146,7 +146,7 @@ export const ResourceExhaustionWarningBanner = () => {
return `/org/${organization?.slug ?? '_'}/billing?panel=subscriptionPlan&source=resource_exhaustion_banner`
}
if (isComputeUpgradeMetric && activeWarnings.length > 1) {
- return `/project/${ref ?? 'default'}/settings/compute-and-disk`
+ return `/project/${ref ?? 'default'}/settings/infrastructure`
}
return getCorrectionUrl(metric)
?.replace('[ref]', ref ?? 'default')
@@ -182,15 +182,15 @@ export const ResourceExhaustionWarningBanner = () => {
warningContent === undefined || (!warningContent?.title && !warningContent?.description)
const isUsageOrInfraPage =
router.pathname.endsWith('/usage') || router.pathname.endsWith('/infrastructure')
- // Compute warnings now link to compute-and-disk, so they should remain visible on infrastructure
+ // Compute warnings now link to infrastructure, so they should remain visible on usage.
const onUsageOrInfraAndNotInReadOnlyMode =
isUsageOrInfraPage &&
!activeWarnings.includes('is_readonly_mode_enabled') &&
!isComputeUpgradeMetric
// Suppress when already on the target page (no-op CTA). Paid-plan compute warnings link to
- // compute-and-disk; free-plan links to billing instead, so we keep the banner visible for them.
+ // infrastructure; free-plan links to billing instead, so we keep the banner visible for them.
const onDatabaseSettingsAndInReadOnlyMode =
- router.pathname.endsWith('settings/compute-and-disk') &&
+ router.pathname.endsWith('settings/infrastructure') &&
(activeWarnings.includes('is_readonly_mode_enabled') || (isComputeUpgradeMetric && !isFreePlan))
// these take precedence over each other, so there's only one active warning to check
diff --git a/apps/studio/components/ui/UpgradePlanButton.tsx b/apps/studio/components/ui/UpgradePlanButton.tsx
index 0b1a2bacc92..1edb1bc12bb 100644
--- a/apps/studio/components/ui/UpgradePlanButton.tsx
+++ b/apps/studio/components/ui/UpgradePlanButton.tsx
@@ -71,7 +71,7 @@ export const UpgradePlanButton = ({
? `/org/${slug ?? '_'}/billing?panel=costControl&source=${source}`
: isOnPaidPlanAndRequestingToPurchaseAddon
? addon === 'computeSize'
- ? `/project/${ref ?? '_'}/settings/compute-and-disk`
+ ? `/project/${ref ?? '_'}/settings/infrastructure`
: `/project/${ref ?? '_'}/settings/addons?panel=${addon}&source=${source}`
: `/org/${slug ?? '_'}/billing?panel=subscriptionPlan&source=${source}`
diff --git a/apps/studio/pages/project/[ref]/database/settings.tsx b/apps/studio/pages/project/[ref]/database/settings.tsx
index 2a99513ac6f..117b9a04986 100644
--- a/apps/studio/pages/project/[ref]/database/settings.tsx
+++ b/apps/studio/pages/project/[ref]/database/settings.tsx
@@ -20,6 +20,7 @@ import { DiskSizeConfiguration } from '@/components/interfaces/Settings/Database
import { JitDbAccessConfiguration } from '@/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration'
import { NetworkRestrictions } from '@/components/interfaces/Settings/Database/NetworkRestrictions/NetworkRestrictions'
import { PoolingModesModal } from '@/components/interfaces/Settings/Database/PoolingModesModal'
+import { ServiceVersionsSection } from '@/components/interfaces/Settings/Database/ServiceVersions/ServiceVersionsSection'
import { SettingsDatabaseEmptyStateLocal } from '@/components/interfaces/Settings/Database/SettingsDatabaseEmptyStateLocal'
import { SSLConfiguration } from '@/components/interfaces/Settings/Database/SSLConfiguration'
import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
@@ -57,8 +58,9 @@ const DatabaseSettings: NextPageWithLayout = () => {
{jitDbAccessEnabled && }
+
{showNewDiskManagementUI ? (
- // This form is hidden if Disk and Compute form is enabled, new form is on ./settings/compute-and-disk
+ // This form is hidden if Disk and Compute form is enabled, new form is on ./settings/infrastructure
) : (
diff --git a/apps/studio/pages/project/[ref]/observability/database.tsx b/apps/studio/pages/project/[ref]/observability/database.tsx
index 7dc2dc2966f..2e005c6307c 100644
--- a/apps/studio/pages/project/[ref]/observability/database.tsx
+++ b/apps/studio/pages/project/[ref]/observability/database.tsx
@@ -373,7 +373,7 @@ const DatabaseUsage = () => {
{project?.cloud_provider === 'AWS' ? (
-
+
Increase disk size
diff --git a/apps/studio/pages/project/[ref]/settings/compute-and-disk.tsx b/apps/studio/pages/project/[ref]/settings/compute-and-disk.tsx
deleted file mode 100644
index bc32551347a..00000000000
--- a/apps/studio/pages/project/[ref]/settings/compute-and-disk.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { DiskManagementForm } from '@/components/interfaces/DiskManagement/DiskManagementForm'
-import DefaultLayout from '@/components/layouts/DefaultLayout'
-import SettingsLayout from '@/components/layouts/ProjectSettingsLayout/SettingsLayout'
-import {
- ScaffoldContainer,
- ScaffoldDescription,
- ScaffoldHeader,
- ScaffoldTitle,
-} from '@/components/layouts/Scaffold'
-import type { NextPageWithLayout } from '@/types'
-
-const AuthSettings: NextPageWithLayout = () => {
- return (
- <>
-
-
- Compute and Disk
-
- Configure the compute and disk settings for your project.
-
-
-
-
- >
- )
-}
-
-AuthSettings.getLayout = (page) => (
-
- {page}
-
-)
-export default AuthSettings
diff --git a/apps/studio/pages/project/[ref]/settings/infrastructure.tsx b/apps/studio/pages/project/[ref]/settings/infrastructure.tsx
index 775a02425b8..cccb9d10baa 100644
--- a/apps/studio/pages/project/[ref]/settings/infrastructure.tsx
+++ b/apps/studio/pages/project/[ref]/settings/infrastructure.tsx
@@ -1,38 +1,37 @@
-import { InfrastructureActivity } from '@/components/interfaces/Settings/Infrastructure/InfrastructureActivity'
-import { InfrastructureInfo } from '@/components/interfaces/Settings/Infrastructure/InfrastructureInfo'
-import { DefaultLayout } from '@/components/layouts/DefaultLayout'
-import SettingsLayout from '@/components/layouts/ProjectSettingsLayout/SettingsLayout'
import {
- ScaffoldContainer,
- ScaffoldDescription,
- ScaffoldDivider,
- ScaffoldHeader,
- ScaffoldTitle,
-} from '@/components/layouts/Scaffold'
+ PageHeader,
+ PageHeaderDescription,
+ PageHeaderMeta,
+ PageHeaderSummary,
+ PageHeaderTitle,
+} from 'ui-patterns/PageHeader'
+
+import { DiskManagementForm } from '@/components/interfaces/DiskManagement/DiskManagementForm'
+import DefaultLayout from '@/components/layouts/DefaultLayout'
+import SettingsLayout from '@/components/layouts/ProjectSettingsLayout/SettingsLayout'
import type { NextPageWithLayout } from '@/types'
-const ProjectInfrastructure: NextPageWithLayout = () => {
+const InfrastructureSettings: NextPageWithLayout = () => {
return (
<>
-
-
- Infrastructure
-
- General information regarding your server instance
-
-
-
-
-
-
+
+
+
+ Infrastructure
+
+ View and configure compute and disk for your project.
+
+
+
+
+
>
)
}
-ProjectInfrastructure.getLayout = (page) => (
+InfrastructureSettings.getLayout = (page) => (
{page}
)
-
-export default ProjectInfrastructure
+export default InfrastructureSettings
diff --git a/apps/studio/redirects.shared.ts b/apps/studio/redirects.shared.ts
index a786fac35d3..47cb8974834 100644
--- a/apps/studio/redirects.shared.ts
+++ b/apps/studio/redirects.shared.ts
@@ -109,6 +109,11 @@ export const SHARED_REDIRECTS: StudioRedirect[] = [
destination: '/org/_/billing?panel=subscriptionPlan',
permanent: true,
},
+ {
+ source: '/project/:ref/settings/compute-and-disk',
+ destination: '/project/:ref/settings/infrastructure',
+ permanent: true,
+ },
{
source: '/project/:ref/settings/billing/subscription',
has: [{ type: 'query', key: 'panel', value: 'pitr' }],
@@ -118,7 +123,7 @@ export const SHARED_REDIRECTS: StudioRedirect[] = [
{
source: '/project/:ref/settings/billing/subscription',
has: [{ type: 'query', key: 'panel', value: 'computeInstance' }],
- destination: '/project/:ref/settings/compute-and-disk',
+ destination: '/project/:ref/settings/infrastructure',
permanent: true,
},
{
diff --git a/apps/studio/state/shortcuts/registry/project-settings-nav.ts b/apps/studio/state/shortcuts/registry/project-settings-nav.ts
index eb941ed35e1..eeefb857bfa 100644
--- a/apps/studio/state/shortcuts/registry/project-settings-nav.ts
+++ b/apps/studio/state/shortcuts/registry/project-settings-nav.ts
@@ -10,7 +10,6 @@ import { RegistryDefinations } from '../types'
*/
export const PROJECT_SETTINGS_NAV_SHORTCUT_IDS = {
NAV_PROJECT_SETTINGS_GENERAL: 'nav.project-settings-general',
- NAV_PROJECT_SETTINGS_COMPUTE_AND_DISK: 'nav.project-settings-compute-and-disk',
NAV_PROJECT_SETTINGS_INFRASTRUCTURE: 'nav.project-settings-infrastructure',
NAV_PROJECT_SETTINGS_INTEGRATIONS: 'nav.project-settings-integrations',
NAV_PROJECT_SETTINGS_WEBHOOKS: 'nav.project-settings-webhooks',
@@ -32,13 +31,6 @@ export const projectSettingsNavRegistry: RegistryDefinations