diff --git a/scripts/routes.ts b/scripts/routes.ts index 7ed56c4a0bae9c..23af4a3b9343bf 100644 --- a/scripts/routes.ts +++ b/scripts/routes.ts @@ -207,6 +207,7 @@ const CONSTANTS: Record = { 'IssueTaxonomy.ERRORS_AND_OUTAGES': 'errors-outages', 'IssueTaxonomy.BREACHED_METRICS': 'breached-metrics', 'IssueTaxonomy.WARNINGS': 'warnings', + 'IssueTaxonomy.SENTRY_CONFIGURATION': 'sentry-configuration', }; function resolveTemplate(expr: string): string { diff --git a/static/app/components/commandPalette/ui/commandPaletteGlobalActions.tsx b/static/app/components/commandPalette/ui/commandPaletteGlobalActions.tsx index 1244f003942c76..dd6f791e2c3af3 100644 --- a/static/app/components/commandPalette/ui/commandPaletteGlobalActions.tsx +++ b/static/app/components/commandPalette/ui/commandPaletteGlobalActions.tsx @@ -101,13 +101,18 @@ export function GlobalCommandPaletteActions() { }}> - {Object.values(ISSUE_TAXONOMY_CONFIG).map(config => ( - - ))} + {Object.values(ISSUE_TAXONOMY_CONFIG) + .filter( + ({featureFlag}) => + !featureFlag || organization.features.includes(featureFlag) + ) + .map(config => ( + + ))} import('sentry/views/issueList/pages/warnings')), }, + { + path: `${IssueTaxonomy.SENTRY_CONFIGURATION}/`, + component: make(() => import('sentry/views/issueList/pages/sentryConfiguration')), + }, { path: 'instrumentation/', component: make(() => import('sentry/views/issueList/pages/instrumentation')), diff --git a/static/app/views/issueList/pages/sentryConfiguration.tsx b/static/app/views/issueList/pages/sentryConfiguration.tsx new file mode 100644 index 00000000000000..efb2ebb7384c62 --- /dev/null +++ b/static/app/views/issueList/pages/sentryConfiguration.tsx @@ -0,0 +1,30 @@ +import Feature from 'sentry/components/acl/feature'; +import {NoProjectMessage} from 'sentry/components/noProjectMessage'; +import {PageFiltersContainer} from 'sentry/components/pageFilters/container'; +import {useOrganization} from 'sentry/utils/useOrganization'; +import {IssueListContainer} from 'sentry/views/issueList'; +import IssueListOverview from 'sentry/views/issueList/overview'; +import {ISSUE_TAXONOMY_CONFIG, IssueTaxonomy} from 'sentry/views/issueList/taxonomies'; + +const CONFIG = ISSUE_TAXONOMY_CONFIG[IssueTaxonomy.SENTRY_CONFIGURATION]; +const QUERY = `is:unresolved issue.category:[${CONFIG.categories.join(',')}]`; + +export default function SentryConfigurationPage() { + const organization = useOrganization(); + + return ( + + + + + + + + + + ); +} diff --git a/static/app/views/issueList/taxonomies.tsx b/static/app/views/issueList/taxonomies.tsx index c592368908772e..7fbc0dd65a6d0c 100644 --- a/static/app/views/issueList/taxonomies.tsx +++ b/static/app/views/issueList/taxonomies.tsx @@ -7,6 +7,7 @@ export enum IssueTaxonomy { ERRORS_AND_OUTAGES = 'errors-outages', BREACHED_METRICS = 'breached-metrics', WARNINGS = 'warnings', + SENTRY_CONFIGURATION = 'sentry-configuration', } export const ISSUE_TAXONOMY_CONFIG: Record< @@ -16,6 +17,7 @@ export const ISSUE_TAXONOMY_CONFIG: Record< description: ReactNode; key: string; label: string; + featureFlag?: string; } > = { [IssueTaxonomy.ERRORS_AND_OUTAGES]: { @@ -47,4 +49,13 @@ export const ISSUE_TAXONOMY_CONFIG: Record< 'Issues in your code or configuration that may not break functionality but can degrade performance or user experience' ), }, + [IssueTaxonomy.SENTRY_CONFIGURATION]: { + categories: [IssueCategory.CONFIGURATION], + label: t('Sentry Configuration'), + key: 'sentry-configuration', + description: t( + 'Issues detected from SDK or tooling configuration problems that degrade your ability to debug telemetry using Sentry.' + ), + featureFlag: 'issue-sourcemap-configuration-visible', + }, }; diff --git a/static/app/views/navigation/secondary/sections/issues/issuesSecondaryNavigation.tsx b/static/app/views/navigation/secondary/sections/issues/issuesSecondaryNavigation.tsx index 7686e863704d6d..f68973ef8641e4 100644 --- a/static/app/views/navigation/secondary/sections/issues/issuesSecondaryNavigation.tsx +++ b/static/app/views/navigation/secondary/sections/issues/issuesSecondaryNavigation.tsx @@ -38,17 +38,22 @@ export function IssuesSecondaryNavigation() { - {Object.values(ISSUE_TAXONOMY_CONFIG).map(({key, label}) => ( - - - {label} - - - ))} + {Object.values(ISSUE_TAXONOMY_CONFIG) + .filter( + ({featureFlag}) => + !featureFlag || organization.features.includes(featureFlag) + ) + .map(({key, label}) => ( + + + {label} + + + ))}