Files
supabase/apps/studio/data/config/keys.ts
Ivan Vasilov e10f7cc808 feat: Add a config drift page in Studio (#48906)
## New Features
- Initial work for showing configuration drift in Studio
- This only works for Github-connected projects and it'll show a banner
if the project state differs from the git-tracked `config.toml`
- Currently behind a feature-flag `ConfigDrift`, enabled on local and
staging.
- There might be drift shown without changing any setting, this is
work-in-progress.

<img width="1217" height="1195" alt="Screenshot 2026-08-19 at 23 12 10"
src="https://github.com/user-attachments/assets/fb0b18d8-1a93-4595-85cc-e8b8a3462847"
/>

## How to test
1. Connect a project to a Github repo
2. Resync the branch on `/dashboard/project/_/branches`. This will
trigger deployment of the `config.toml` on your project
3. Change some settings (I recommend
`dashboard/project/_/auth/providers`
4. A banner should appear on all project pages with a link 


## Tests
- Added coverage for configuration conversion, normalization, matching,
drift detection, and unmanaged settings.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-25 13:56:40 +02:00

35 lines
2.0 KiB
TypeScript

export const configKeys = {
settings: (projectRef: string | undefined) => ['projects', projectRef, 'settings'] as const,
settingsV2: (projectRef: string | undefined) => ['projects', projectRef, 'settings-v2'] as const,
api: (projectRef: string | undefined) => ['projects', projectRef, 'settings', 'api'] as const,
postgrest: (projectRef: string | undefined) => ['projects', projectRef, 'postgrest'] as const,
jwtSecretUpdatingStatus: (projectRef: string | undefined) =>
['projects', projectRef, 'jwt-secret-updating-status'] as const,
storage: (projectRef: string | undefined) => ['projects', projectRef, 'storage'] as const,
upgradeEligibility: (projectRef: string | undefined) =>
['projects', projectRef, 'upgrade-eligibility'] as const,
upgradeStatus: (projectRef: string | undefined) =>
['projects', projectRef, 'upgrade-status'] as const,
diskAttributes: (projectRef: string | undefined) =>
['projects', projectRef, 'disk-attributes'] as const,
diskBreakdown: (projectRef: string | undefined) =>
['projects', projectRef, 'disk-breakdown'] as const,
diskUtilization: (projectRef: string | undefined) =>
['projects', projectRef, 'disk-utilization'] as const,
projectCreationPostgresVersions: (
organizationSlug: string | undefined,
cloudProvider: string,
dbRegion: string
) =>
['projects', organizationSlug, cloudProvider, dbRegion, 'available-creation-versions'] as const,
projectUnpausePostgresVersions: (projectRef: string | undefined) =>
['projects', projectRef, 'available-unpause-versions'] as const,
diskAutoscaleConfig: (projectRef: string | undefined) =>
['projects', projectRef, 'disk-autoscale-config'] as const,
deploymentMode: () => ['deployment-mode'] as const,
postgresConfig: (projectRef: string | undefined) =>
['projects', projectRef, 'postgres-config'] as const,
// used for entire project state, includes all configs, matches `config.toml` schema
projectConfig: (projectRef: string | undefined) => ['projects', projectRef, 'config'] as const,
}