mirror of
https://github.com/supabase/supabase.git
synced 2026-06-18 05:33:50 +08:00
## Summary Adds discoverable keyboard shortcuts for the Advisors area, covering both navigation between advisor sub-pages and in-page actions on the Security/Performance Advisor pages. Built on the shared shortcut registry (`apps/studio/state/shortcuts/`) so they show up in the command menu and follow the existing chord conventions (`V` for adVisor, mirroring auth-nav / database-nav). Linear: [FE-3413](https://linear.app/supabase/issue/FE-3413) ### Shortcuts | Shortcut | Action | Scope | | --- | --- | --- | | `V` then `S` | Go to Security Advisor | Anywhere under `/project/<ref>/advisors/*` | | `V` then `P` | Go to Performance Advisor | Anywhere under `/project/<ref>/advisors/*` | | `V` then `R` | Go to Advisor Settings (Rules) | Anywhere under `/project/<ref>/advisors/*` | | `1` | Switch to Errors tab | Security / Performance Advisor page | | `2` | Switch to Warnings tab | Security / Performance Advisor page | | `3` | Switch to Info tab | Security / Performance Advisor page | | `Shift+R` | Refresh / rerun the advisor | Security / Performance Advisor page | | `Escape` | Close lint details panel | When a lint row is selected | ## Test plan - [x] From anywhere in Advisors, `V S` / `V P` / `V R` route to Security / Performance / Rules - [x] On Security and Performance Advisor pages, `1` / `2` / `3` switch tabs and update the `preset` query param - [x] `Shift+R` reruns the linter (disabled while a refresh is in-flight) - [x] `Escape` closes the lint details side panel when a lint is selected - [x] Digit shortcuts do not fire while typing in inputs (`ignoreInputs: true`) - [x] Shortcuts appear in the command menu under the Advisors group <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added keyboard shortcuts for Advisors (tab navigation, refresh/rerun, close detail) with visible shortcut hints on tabs, refresh/rerun buttons, close controls, and the Advisors menu; pages wire shortcuts to tab switching, refresh, and close actions. * **Chores** * Registered Advisors shortcuts globally and added an Advisors navigation group for discovery in the shortcuts reference. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/46238?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { ReactNode } from 'react'
|
|
|
|
import { Lint } from '@/data/lint/lint-query'
|
|
import { SHORTCUT_IDS, type ShortcutId } from '@/state/shortcuts/registry'
|
|
|
|
export enum LINTER_LEVELS {
|
|
ERROR = 'ERROR',
|
|
WARN = 'WARN',
|
|
INFO = 'INFO',
|
|
}
|
|
|
|
export type LintInfo = {
|
|
name: string
|
|
title: string
|
|
icon: ReactNode
|
|
link: (args: { projectRef: string; metadata: Lint['metadata'] }) => string
|
|
linkText: string
|
|
docsLink: string
|
|
category: 'security' | 'performance'
|
|
}
|
|
|
|
export const LINT_TABS: ReadonlyArray<{
|
|
id: LINTER_LEVELS
|
|
label: string
|
|
description: string
|
|
descriptionShort: string
|
|
shortcutId: ShortcutId
|
|
}> = [
|
|
{
|
|
id: LINTER_LEVELS.ERROR,
|
|
label: 'Errors',
|
|
description: 'You should consider these issues urgent and fix them as soon as you can.',
|
|
descriptionShort: 'Require immediate attention',
|
|
shortcutId: SHORTCUT_IDS.ADVISORS_TAB_ERRORS,
|
|
},
|
|
{
|
|
id: LINTER_LEVELS.WARN,
|
|
label: 'Warnings',
|
|
description: 'You should try and read through these issues and fix them if necessary.',
|
|
descriptionShort: 'To resolve only if necessary',
|
|
shortcutId: SHORTCUT_IDS.ADVISORS_TAB_WARNINGS,
|
|
},
|
|
{
|
|
id: LINTER_LEVELS.INFO,
|
|
label: 'Info',
|
|
description: 'You should read through these suggestions and consider implementing them.',
|
|
descriptionShort: 'For consideration to implement',
|
|
shortcutId: SHORTCUT_IDS.ADVISORS_TAB_INFO,
|
|
},
|
|
]
|