Files
supabase/apps/studio/state/shortcuts/registry/database-nav.ts
Danny WhiteandJoshen Lim 05a45dd1ed feat(studio): rename Replication to Pipelines (#50637)
## What kind of change does this PR introduce?

Feature and docs update.

## What is the current behavior?

The Dashboard lists Pipelines destinations under Database > Replication.
Read replicas have moved to Infrastructure, but the temporary notices
remain on the destinations page and new destination sheet.

Closes PIPE-1021.

## What is the new behavior?

The canonical Dashboard routes are Database > Pipelines, while legacy
Replication list and detail URLs permanently redirect to the equivalent
Pipelines routes. Navigation, command palette, shortcuts, pipeline
links, docs, and current marketing copy use Pipelines. Read-replica
notices and their obsolete dismissal state are removed.

| Before | After |
| --- | --- |
| <img width="1024" height="759" alt="Replication Database Agua Basket
Supabase"
src="https://github.com/user-attachments/assets/53f9f565-1ed1-43e9-a7d9-b66b2a47e948"
/> | <img width="1024" height="759" alt="2540"
src="https://github.com/user-attachments/assets/14ab2d61-d01c-483f-9d4f-0ac286dae159"
/> |

The Management API, pipeline behaviour, replication logs, and Postgres
replication terminology remain unchanged.

## To test

- Open `/project/<ref>/database/pipelines` and confirm the Database
navigation, page header, and pipeline breadcrumb say Pipelines.
- Open
`/project/<ref>/database/replication?source=bookmark#destinations` and a
legacy pipeline detail URL. Confirm each redirects to the matching
Pipelines URL while preserving parameters and fragments.
- From the Pipelines page, open Add destination. Confirm no read-replica
migration notice appears.
- Open the Pipelines guide and confirm its Dashboard steps lead to
Database > Pipelines.

## Before merge

- [ ] Get changelog entry reviewed
https://github.com/supabase/changelog/pull/262 and prepare to merge
simultaneously

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added dedicated **Database > Pipelines** pages for pipeline lists and
details.
- Added permanent redirects from legacy Replication URLs to their
corresponding Pipelines pages.
- Read replica management links now open **Settings > Infrastructure**.

- **Documentation**
- Updated Pipelines setup, monitoring, troubleshooting, and usage
guidance to reference the current dashboard locations.
  - Updated Realtime guidance to use **Database > Publications**.

- **Updates**
- Renamed dashboard navigation, breadcrumbs, commands, and keyboard
shortcuts from **Replication** to **Pipelines**.
  - Removed the “Read replicas have moved” notification.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-09-23 08:52:07 +10:00

141 lines
5.5 KiB
TypeScript

import { SHORTCUT_REFERENCE_GROUPS } from '../referenceGroups'
import { RegistryDefinations } from '../types'
/**
* Contextual chords for jumping between Database sub-pages — `D + <letter>`.
*
* Active only while DatabaseLayout is mounted (i.e. the user is somewhere
* under `/project/<ref>/database/*`). The chord intentionally lives on the
* page rather than globally so the leading `D` doesn't burn a global key for
* a destination most users only care about while already in the section.
*
*/
export const DATABASE_NAV_SHORTCUT_IDS = {
NAV_DATABASE_TABLES: 'nav.database-tables',
NAV_DATABASE_FUNCTIONS: 'nav.database-functions',
NAV_DATABASE_TRIGGERS: 'nav.database-triggers',
NAV_DATABASE_INDEXES: 'nav.database-indexes',
NAV_DATABASE_EXTENSIONS: 'nav.database-extensions',
NAV_DATABASE_SCHEMA_VISUALIZER: 'nav.database-schema-visualizer',
NAV_DATABASE_ROLES: 'nav.database-roles',
NAV_DATABASE_BACKUPS: 'nav.database-backups',
NAV_DATABASE_MIGRATIONS: 'nav.database-migrations',
NAV_DATABASE_TYPES: 'nav.database-types',
NAV_DATABASE_PUBLICATIONS: 'nav.database-publications',
NAV_DATABASE_COLUMN_PRIVILEGES: 'nav.database-column-privileges',
NAV_DATABASE_SETTINGS: 'nav.database-settings',
NAV_DATABASE_REPLICATION: 'nav.database-replication',
NAV_DATABASE_POLICIES: 'nav.database-policies',
}
export type DatabaseNavShortcutId =
(typeof DATABASE_NAV_SHORTCUT_IDS)[keyof typeof DATABASE_NAV_SHORTCUT_IDS]
export const databaseNavRegistry: RegistryDefinations<DatabaseNavShortcutId> = {
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TABLES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TABLES,
label: 'Go to Tables',
sequence: ['D', 'T'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_FUNCTIONS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_FUNCTIONS,
label: 'Go to Functions',
sequence: ['D', 'F'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TRIGGERS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TRIGGERS,
label: 'Go to Triggers',
sequence: ['D', 'R'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_INDEXES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_INDEXES,
label: 'Go to Indexes',
sequence: ['D', 'I'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_EXTENSIONS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_EXTENSIONS,
label: 'Go to Extensions',
sequence: ['D', 'X'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_SCHEMA_VISUALIZER]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_SCHEMA_VISUALIZER,
label: 'Go to Schema Visualizer',
sequence: ['D', 'V'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_ROLES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_ROLES,
label: 'Go to Roles',
sequence: ['D', 'O'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_BACKUPS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_BACKUPS,
label: 'Go to Backups',
sequence: ['D', 'B'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_MIGRATIONS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_MIGRATIONS,
label: 'Go to Migrations',
sequence: ['D', 'M'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TYPES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_TYPES,
label: 'Go to Enumerated Types',
sequence: ['D', 'E'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_PUBLICATIONS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_PUBLICATIONS,
label: 'Go to Publications',
sequence: ['D', 'U'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_COLUMN_PRIVILEGES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_COLUMN_PRIVILEGES,
label: 'Go to Column Privileges',
sequence: ['D', 'C'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_SETTINGS]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_SETTINGS,
label: 'Go to Database Settings',
sequence: ['D', ','],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_REPLICATION]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_REPLICATION,
label: 'Go to Pipelines',
sequence: ['D', 'L'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
[DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_POLICIES]: {
id: DATABASE_NAV_SHORTCUT_IDS.NAV_DATABASE_POLICIES,
label: 'Go to Policies',
sequence: ['D', 'A'],
showInSettings: false,
referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_DATABASE,
},
}