Files
grafana/pkg/services/featuremgmt/toggles_gen.csv
T
Deyan HalachliyskiandKonrad Lalik 62b2a202de Alerting: Add saved searches feature for alert rules page (#115001)
* Alerting: Add saved searches feature for alert rules page

Add ability to save, rename, delete, and apply search queries on the
Alert Rules page. Includes auto-apply default search on navigation
and UserStorage persistence.

Behind feature toggle `alertingSavedSearches` (disabled by default).

* Alerting: Add i18n translations for saved searches

* Alerting: Remove unused imports in saved searches

* Alerting: Add CODEOWNERS for e2e-playwright/alerting-suite

* Alerting: Add useSavedSearches mock to RulesFilter.v2 tests

* Alerting: Fix failing unit tests for saved searches

- Fix Jest mock hoisting issue in useSavedSearches.test.ts by configuring
  UserStorage mock implementation after imports instead of inline
- Update SavedSearches.test.tsx to use findBy* queries for async popup content
- Fix tests to click apply button instead of text for applying searches
- Update maxLength test to verify attribute instead of trying to exceed it

* Alerting: Fix saved searches test mocking and assertions

- Fix UserStorage mock in useSavedSearches.test.ts by creating mock with
  default Promise-returning functions inside jest.mock() factory, then
  accessing the instance via getMockUserStorageInstance() helper
- Fix SavedSearches.test.tsx apply button tests to use correct accessible
  name "Apply this search" (from tooltip) instead of dynamic aria-label
- Fix disabled button assertion to check native disabled attribute instead
  of relying on aria-disabled which is set inconsistently by Button component
- Use findAllByRole for async popup content queries

* Alerting: Fix test query for disabled save button

Use findByText + closest instead of findByRole to find the disabled
"Save current search" button. The Grafana Button component renders
with conflicting accessibility attributes (disabled="" + aria-disabled="false")
which breaks role-based queries in React Testing Library.

* fix(alerting): preserve UserStorage mock reference before clearAllMocks

* fix(alerting): add missing test mocks for crypto and console

- Mock crypto.randomUUID for Node.js test environment
- Add console.error spy to tests expecting storage/parse errors
- Add console.warn spy to test expecting validation warnings

Fixes jest-fail-on-console failures and crypto.randomUUID TypeError.

* fix(alerting): add console.error spy to save failure test

* fix(alerting): address PR review feedback for saved searches

- Register alertingSavedSearches feature toggle in backend
- Extract shared types to SavedSearches.types.ts to fix circular dependencies
- Extract sub-components: InlineSaveInput, InlineRenameInput, SavedSearchItem
- Remove unused imports (IconButton, Input) and styles from SavedSearches.tsx
- Add try/catch for auto-apply default search error handling
- Remove maxLength validation and corresponding test

* fix(alerting): fix validation error display in saved searches

- Fix useEffect dependency array that was immediately clearing validation errors
- Remove error from deps so errors only clear when user types, not when set
- Run i18n-extract to remove unused error-name-too-long translation key

* fix(alerting): address PR review feedback for saved searches

- Replace toHaveBeenCalled assertions with UI verification using AppNotificationList
- Rename useSavedSearches.test.ts to .tsx for JSX support
- Update README documentation to reflect current test patterns
- Add test cleanup between E2E tests to prevent data leakage

* fix(alerting): remove unused import and fix test wrapper

- Remove unused locationService import from RulesFilter.v2.tsx
- Add missing bootData spread in useSavedSearches.test.tsx mock
- Add createWrapper to renderHook call for user-specific storage key test

* fix(alerting): add Redux wrapper to all useSavedSearches hook tests

All renderHook calls for useSavedSearches now include the createWrapper()
which provides the Redux Provider context required by useAppNotification.

* fix(alerting): use regex patterns in MSW handlers for UserStorage tests

MSW handlers now use regex patterns to match any namespace and user UID,
since UserStorage reads config values from internal imports that aren't
affected by jest.mock of @grafana/runtime.

* fix(alerting): mock UserStorage directly instead of using MSW

Replace MSW HTTP handlers with a direct mock of the UserStorage class.
The MSW approach failed because UserStorage evaluates config.namespace
at module load time, before jest.mock takes effect, causing the regex
patterns to not match the actual request URLs.

This follows the same pattern used in useFavoriteDatasources.test.ts.

* refactor(alerting): use react-hook-form and Dropdown for saved searches

- Migrate InlineRenameInput and InlineSaveInput to react-hook-form
- Replace custom PopupCard with Grafana Dropdown component
- Use useReducer for centralized dropdown state management
- Add stopPropagation handlers to prevent dropdown closing during form interactions
- Update tests to use real useSavedSearches hook with mocked UserStorage
- Consolidate and simplify saved searches test suite

* fix: resolve CI failures in SavedSearches component

- Fix TypeScript TS2540 errors by using MutableRefObject type for refs
- Fix form submission by using onClick instead of type="submit" on IconButton
  (IconButton doesn't forward the type prop to the underlying button)
- Fix action menu tests by stopping click propagation on ActionMenu wrapper
- Fix Escape key handling by focusing the dialog element instead of the
  potentially-disabled save button

* fix(alerting): add navTree to runtime mock in useSavedSearches tests

Add empty navTree array to the @grafana/runtime config mock to prevent
store initialization crash when buildInitialState() calls .find() on
undefined navTree.

* fix(alerting): add error handling for auto-apply default search

Wrap handleApplySearch call in try-catch to prevent unhandled exceptions
when auto-applying the default saved search on navigation.

* fix(alerting): prevent saved searches dropdown from closing when clicking action menu

The nested Dropdown components caused the outer SavedSearches dropdown to close
when clicking on action menu items (Set as default, Rename, Delete). This happened
because @floating-ui/react's useDismiss hook detected clicks on the inner Menu
(rendered via Portal) as "outside" clicks.

Fix: Replace the outer Dropdown with PopupCard and add custom click-outside
handling that explicitly excludes portal elements ([role="menu"] and
[data-popper-placement]). This matches the pattern used before the Dropdown
refactor.

Changes:
- SavedSearches.tsx: Use PopupCard instead of Dropdown, add click-outside handler
- SavedSearchItem.tsx: Add menuPortalRoot prop for action menu positioning
- RulesFilter.v2.tsx: Fix double analytics tracking on auto-apply

* fix(alerting): auto-apply default saved search on page navigation

The default saved search was not being applied when navigating to the
Alert rules page. This was caused by a race condition where `isLoading`
was `false` on initial render (status was 'not-executed'), causing the
auto-apply effect to run before saved searches were loaded.

Fix: Include the uninitialized state in the loading check so the effect
waits until data is actually loaded before attempting to auto-apply.

Also adds tests for the auto-apply functionality.

* fix(alerting): align action menu icon and improve saved search tests

- Fix vertical alignment of three-dot menu icon in saved search items
  by adding flex centering to the wrapper div
- Add feature toggle setup/teardown in saved searches test suite
- Fix location mocking in test for URL search parameter handling

* refactor(alerting): improve saved searches validation and organization

- Rename SavedSearches.types.ts to savedSearchesSchema.ts
- Use react-hook-form's built-in validation instead of manual setError
- Change error handling to throw ValidationError instead of returning it
- Add type guard isValidationError for safe error checking
- Add alphabetical sorting for saved searches (default first)
- Replace console.warn/error with logWarning/logError for analytics
- Extract helper functions: sortSavedSearches, loadSavedSearchesFromStorage, hasUrlSearchQuery

* refactor(alerting): address PR review comments for saved searches (steps 9-12)

- Add comprehensive comment explaining useEffect double-render limitation
  and potential future improvements for default search auto-apply (step 9)
- Add test documenting expected behavior when navigating back to alert list
  after leaving the page - default filter is re-applied (step 10)
- Update RulesFilter.v2.test.tsx to use testWithFeatureToggles helper and
  add MSW UserStorage handlers for future use (step 11)
- Update SavedSearches.test.tsx to use render from test/test-utils and
  byRole selectors for menu items (step 12)

* test(alerting): update saved searches tests for refactored API

- Update mockSavedSearches order to match sorted output (default first, then alphabetically)
- Change validation error tests to use rejects pattern (saveSearch/renameSearch now throw)
- Add hasPermission mock to contextSrv for module-level permission check

* fix(alerting): fix CI failures for saved searches

- Update onRenameComplete type to match throw-based API (Promise<void>)
- Run i18n-extract to add missing translation keys

* fix(alerting): salvage valid entries when saved searches validation fails

Instead of returning an empty array when array validation fails,
iterate through each item and keep only the valid entries.
This prevents losing all saved searches if a single entry is corrupted.

* test(alerting): update test to expect valid entries to be preserved

Update the test assertion to match the new behavior where valid saved
search entries are preserved when some entries fail validation, rather
than discarding all entries.

* fix(alerting): eliminate double API request on saved search auto-apply

Move saved searches loading and auto-apply logic from RulesFilterV2 to
RuleListPage. This ensures the default search filter is applied BEFORE
FilterView mounts, preventing double API requests on initial page load.

- Load saved searches at RuleListPage level
- Gate RuleList rendering until saved searches are loaded
- Pass savedSearchesResult as prop to avoid duplicate hook calls
- Remove auto-apply tests from RulesFilter.v2.test.tsx (behavior moved)

* fix(alerting): mock useSavedSearches in RuleList.v2 tests

The useSavedSearches hook triggers async state updates that complete
after tests finish, causing React act() warnings. Mock the hook to
prevent async operations during tests.

* refactor(alerting): migrate saved searches tests to use MSW

Address code review feedback by migrating UserStorage tests from
jest.mock to MSW-based mocking:

- Add MSW helper functions (setAlertingStorageItem, getAlertingStorageItem)
  to simplify test setup for UserStorage
- Migrate useSavedSearches.test.tsx to use MSW handlers instead of
  jest.mock('@grafana/runtime/internal')
- Migrate RulesFilter.v2.test.tsx to use MSW handlers
- Update README documentation to accurately reflect how tests use MSW
- Add tests for default search auto-apply behavior in RuleListPage
- Simplify comments to be concise and accurate

* fix(alerting): mock UserStorage directly in useSavedSearches tests

The UserStorage class caches its storage spec at the instance level,
and the useSavedSearches hook creates the instance at module level.
This caused test isolation issues where cached state leaked between
tests, making all tests that depended on loading data fail.

Fix by mocking UserStorage class directly instead of relying on MSW
handlers. This gives each test explicit control over what getItem
and setItem return, ensuring proper isolation.

Also update persistence assertions to verify mock.setItem calls
instead of reading from MSW storage (which the mock bypasses).

* refactor(alerting): remove setup helper in SavedSearches tests

Replace the `setup()` helper function with direct `render()` calls
as suggested in PR review. This makes tests more explicit about
what component is being rendered and with what props.

* refactor(alerting): extract default search auto-apply into dedicated hook

Moves the default saved search auto-apply logic from useSavedSearches into
a new useApplyDefaultSearch hook. This improves separation of concerns by
keeping useSavedSearches focused on CRUD operations while the new hook
handles the page-level auto-apply behavior.

Key changes:
- Created useApplyDefaultSearch hook with session-based visit tracking
- Removed getAutoApplySearch method and user-specific session keys from useSavedSearches
- Exported loadDefaultSavedSearch utility for independent default search loading
- Simplified test mocks to use loadDefaultSavedSearch instead of full hook mocking
- Removed unused savedSearchesResult prop passing through component tree

* fix(alerting): improve default search auto-apply timing and test reliability

Replace react-use's auto-executing useAsync with internal useAsync hook
for better control over when default search is loaded. This prevents
race conditions and ensures the async operation only executes when needed.

Test improvements:
- Add proper session storage cleanup in beforeEach
- Use waitFor to handle async operations correctly
- Prevent visited flag from affecting subsequent tests
- Clear mock call history between tests

The internal useAsync hook doesn't auto-execute on mount, allowing us to
control exactly when the default search loads based on conditions rather
than relying on dependency array triggers.

---------

Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
2025-12-19 15:32:27 +01:00

23 KiB
Generated

1NameStageOwnerrequiresDevModeRequiresRestartFrontendOnly
2disableEnvelopeEncryptionGA@grafana/grafana-operator-experience-squadfalsefalsefalse
3panelTitleSearchpreview@grafana/search-and-storagefalsefalsefalse
4publicDashboardsEmailSharingpreview@grafana/grafana-operator-experience-squadfalsefalsefalse
5publicDashboardsSceneGA@grafana/grafana-operator-experience-squadfalsefalsetrue
6lokiExperimentalStreamingexperimental@grafana/observability-logsfalsefalsefalse
7featureHighlightsGA@grafana/grafana-operator-experience-squadfalsefalsefalse
8storageexperimental@grafana/search-and-storagefalsefalsefalse
9canvasPanelNestingexperimental@grafana/dataviz-squadfalsefalsetrue
10logRequestsInstrumentedAsUnknownexperimental@grafana/grafana-backend-groupfalsefalsefalse
11grpcServerpreview@grafana/search-and-storagefalsefalsefalse
12cloudWatchCrossAccountQueryingGA@grafana/aws-datasourcesfalsefalsefalse
13showDashboardValidationWarningsexperimental@grafana/dashboards-squadfalsefalsefalse
14mysqlAnsiQuotesexperimental@grafana/search-and-storagefalsefalsefalse
15alertingBacktestingexperimental@grafana/alerting-squadfalsefalsefalse
16logsContextDatasourceUiGA@grafana/observability-logsfalsefalsetrue
17lokiShardSplittingexperimental@grafana/observability-logsfalsefalsetrue
18lokiQuerySplittingGA@grafana/observability-logsfalsefalsetrue
19individualCookiePreferencesexperimental@grafana/grafana-backend-groupfalsefalsefalse
20influxdbBackendMigrationGA@grafana/partner-datasourcesfalsefalsetrue
21starsFromAPIServerexperimental@grafana/grafana-search-navigate-organisefalsefalsetrue
22kubernetesStarsexperimental@grafana/grafana-app-platform-squadfalsetruefalse
23influxqlStreamingParserexperimental@grafana/partner-datasourcesfalsefalsefalse
24influxdbRunQueriesInParallelprivatePreview@grafana/partner-datasourcesfalsefalsefalse
25lokiLogsDataplaneexperimental@grafana/observability-logsfalsefalsefalse
26disableSSEDataplaneexperimental@grafana/grafana-datasources-core-servicesfalsefalsefalse
27renderAuthJWTpreview@grafana/grafana-operator-experience-squadfalsefalsefalse
28refactorVariablesTimeRangepreview@grafana/dashboards-squadfalsefalsefalse
29faroDatasourceSelectorpreview@grafana/app-o11yfalsefalsetrue
30enableDatagridEditingpreview@grafana/dataviz-squadfalsefalsefalse
31extraThemesexperimental@grafana/grafana-frontend-platformfalsefalsetrue
32logsExploreTableVisualisationGA@grafana/observability-logsfalsefalsetrue
33awsDatasourcesTempCredentialsGA@grafana/aws-datasourcesfalsefalsefalse
34mlExpressionsexperimental@grafana/alerting-squadfalsefalsefalse
35datasourceAPIServersexperimental@grafana/grafana-app-platform-squadfalsetruefalse
36grafanaAPIServerWithExperimentalAPIsexperimental@grafana/grafana-app-platform-squadtruetruefalse
37provisioningexperimental@grafana/grafana-app-platform-squadfalsetruefalse
38grafanaAPIServerEnsureKubectlAccessexperimental@grafana/grafana-app-platform-squadtruetruefalse
39awsAsyncQueryCachingGA@grafana/aws-datasourcesfalsefalsefalse
40queryCacheRequestDeduplicationexperimental@grafana/grafana-operator-experience-squadfalsefalsefalse
41permissionsFilterRemoveSubqueryexperimental@grafana/search-and-storagefalsefalsefalse
42configurableSchedulerTickexperimental@grafana/alerting-squadfalsetruefalse
43dashgptGA@grafana/dashboards-squadfalsefalsetrue
44aiGeneratedDashboardChangesexperimental@grafana/dashboards-squadfalsefalsetrue
45reportingRetriespreview@grafana/grafana-operator-experience-squadfalsetruefalse
46sseGroupByDatasourceexperimental@grafana/grafana-datasources-core-servicesfalsefalsefalse
47lokiRunQueriesInParallelprivatePreview@grafana/observability-logsfalsefalsefalse
48externalServiceAccountspreview@grafana/identity-access-teamfalsefalsefalse
49enableNativeHTTPHistogramexperimental@grafana/grafana-backend-services-squadfalsetruefalse
50disableClassicHTTPHistogramexperimental@grafana/grafana-backend-services-squadfalsetruefalse
51kubernetesSnapshotsexperimental@grafana/grafana-app-platform-squadfalsetruefalse
52kubernetesLibraryPanelsexperimental@grafana/grafana-app-platform-squadfalsetruefalse
53kubernetesDashboardsGA@grafana/dashboards-squadfalsefalsefalse
54kubernetesShortURLsexperimental@grafana/grafana-app-platform-squadfalsetruefalse
55useKubernetesShortURLsAPIexperimental@grafana/sharing-squadfalsefalsetrue
56kubernetesAlertingRulesexperimental@grafana/alerting-squadfalsetruefalse
57kubernetesCorrelationsexperimental@grafana/dataprofalsetruefalse
58kubernetesUnifiedStorageQuotasexperimental@grafana/search-and-storagefalsetruefalse
59kubernetesLogsDrilldownexperimental@grafana/observability-logsfalsetruefalse
60kubernetesQueryCachingexperimental@grafana/grafana-operator-experience-squadfalsetruefalse
61dashboardDisableSchemaValidationV1experimental@grafana/grafana-app-platform-squadfalsefalsefalse
62dashboardDisableSchemaValidationV2experimental@grafana/grafana-app-platform-squadfalsefalsefalse
63dashboardSchemaValidationLoggingexperimental@grafana/grafana-app-platform-squadfalsefalsefalse
64scanRowInvalidDashboardParseFallbackEnabledexperimental@grafana/search-and-storagefalsefalsefalse
65datasourceQueryTypesexperimental@grafana/grafana-app-platform-squadfalsetruefalse
66queryServiceexperimental@grafana/grafana-datasources-core-servicesfalsetruefalse
67queryServiceWithConnectionsexperimental@grafana/grafana-datasources-core-servicesfalsetruefalse
68queryServiceRewriteexperimental@grafana/grafana-datasources-core-servicesfalsetruefalse
69queryServiceFromUIexperimental@grafana/grafana-datasources-core-servicesfalsefalsetrue
70cloudWatchBatchQueriespreview@grafana/aws-datasourcesfalsefalsefalse
71cachingOptimizeSerializationMemoryUsageexperimental@grafana/grafana-operator-experience-squadfalsefalsefalse
72alertmanagerRemoteSecondaryexperimental@grafana/alerting-squadfalsefalsefalse
73alertingProvenanceLockWritesexperimental@grafana/alerting-squadfalsefalsefalse
74alertingUIUseBackendFiltersexperimental@grafana/alerting-squadfalsefalsefalse
75alertingUIUseFullyCompatBackendFiltersexperimental@grafana/alerting-squadfalsefalsefalse
76alertmanagerRemotePrimaryexperimental@grafana/alerting-squadfalsefalsefalse
77annotationPermissionUpdateGA@grafana/identity-access-teamfalsefalsefalse
78dashboardSceneForViewersGA@grafana/dashboards-squadfalsefalsetrue
79dashboardSceneSoloGA@grafana/dashboards-squadfalsefalsetrue
80dashboardSceneGA@grafana/dashboards-squadfalsefalsetrue
81dashboardNewLayoutsexperimental@grafana/dashboards-squadfalsefalsefalse
82kubernetesDashboardsV2experimental@grafana/dashboards-squadfalsefalsefalse
83dashboardUndoRedoexperimental@grafana/dashboards-squadfalsefalsetrue
84unlimitedLayoutsNestingexperimental@grafana/dashboards-squadfalsefalsetrue
85drilldownRecommendationsexperimental@grafana/dashboards-squadfalsefalsetrue
86perPanelNonApplicableDrilldownsexperimental@grafana/dashboards-squadfalsefalsetrue
87panelGroupByexperimental@grafana/dashboards-squadfalsefalsetrue
88perPanelFilteringexperimental@grafana/dashboards-squadfalsefalsetrue
89panelFilterVariableexperimental@grafana/dashboards-squadfalsefalsetrue
90pdfTablespreview@grafana/grafana-operator-experience-squadfalsefalsefalse
91canvasPanelPanZoompreview@grafana/dataviz-squadfalsefalsetrue
92timeComparisonexperimental@grafana/dataviz-squadfalsefalsetrue
93tableSharedCrosshairexperimental@grafana/dataviz-squadfalsefalsetrue
94kubernetesFeatureTogglesexperimental@grafana/grafana-operator-experience-squadfalsefalsetrue
95cloudRBACRolespreview@grafana/identity-access-teamfalsetruefalse
96alertingQueryOptimizationGA@grafana/alerting-squadfalsefalsefalse
97jitterAlertRulesWithinGroupspreview@grafana/alerting-squadfalsetruefalse
98secretsManagementAppPlatformexperimental@grafana/grafana-operator-experience-squadfalsefalsefalse
99secretsManagementAppPlatformUIexperimental@grafana/grafana-operator-experience-squadfalsefalsefalse
100alertingSaveStatePeriodicprivatePreview@grafana/alerting-squadfalsefalsefalse
101alertingSaveStateCompressedpreview@grafana/alerting-squadfalsefalsefalse
102scopeApiexperimental@grafana/grafana-app-platform-squadfalsefalsefalse
103useScopeSingleNodeEndpointexperimental@grafana/grafana-operator-experience-squadfalsefalsetrue
104useMultipleScopeNodesEndpointexperimental@grafana/grafana-operator-experience-squadfalsefalsetrue
105logQLScopeprivatePreview@grafana/observability-logsfalsefalsefalse
106sqlExpressionspreview@grafana/grafana-datasources-core-servicesfalsefalsefalse
107sqlExpressionsColumnAutoCompleteexperimental@grafana/dataprofalsefalsetrue
108kubernetesAggregatorexperimental@grafana/grafana-app-platform-squadfalsetruefalse
109kubernetesAggregatorCapTokenAuthexperimental@grafana/grafana-app-platform-squadfalsetruefalse
110groupByVariableexperimental@grafana/dashboards-squadfalsefalsefalse
111scopeFiltersexperimental@grafana/dashboards-squadfalsefalsefalse
112oauthRequireSubClaimexperimental@grafana/identity-access-teamfalsefalsefalse
113refreshTokenRequiredexperimental@grafana/identity-access-teamfalsefalsefalse
114newDashboardWithFiltersAndGroupByexperimental@grafana/dashboards-squadfalsefalsefalse
115dashboardAdHocAndGroupByWrapperexperimental@grafana/dashboards-squadfalsefalsefalse
116cloudWatchNewLabelParsingGA@grafana/aws-datasourcesfalsefalsefalse
117disableNumericMetricsSortingInExpressionsexperimental@grafana/oss-big-tentfalsetruefalse
118grafanaManagedRecordingRulesexperimental@grafana/alerting-squadfalsefalsefalse
119queryLibrarypreview@grafana/sharing-squadfalsefalsefalse
120dashboardLibraryexperimental@grafana/sharing-squadfalsefalsefalse
121suggestedDashboardsexperimental@grafana/sharing-squadfalsefalsefalse
122dashboardTemplatespreview@grafana/sharing-squadfalsefalsefalse
123logsExploreTableDefaultVisualizationexperimental@grafana/observability-logsfalsefalsetrue
124alertingListViewV2privatePreview@grafana/alerting-squadfalsefalsetrue
125alertingSavedSearchesexperimental@grafana/alerting-squadfalsefalsetrue
126alertingDisableSendAlertsExternalexperimental@grafana/alerting-squadfalsefalsefalse
127preserveDashboardStateWhenNavigatingexperimental@grafana/dashboards-squadfalsefalsefalse
128alertingCentralAlertHistoryexperimental@grafana/alerting-squadfalsefalsefalse
129pluginProxyPreserveTrailingSlashGA@grafana/plugins-platform-backendfalsefalsefalse
130azureMonitorPrometheusExemplarsGA@grafana/partner-datasourcesfalsefalsefalse
131authZGRPCServerexperimental@grafana/identity-access-teamfalsefalsefalse
132ssoSettingsLDAPGA@grafana/identity-access-teamfalsetruefalse
133zanzanaexperimental@grafana/identity-access-teamfalsefalsefalse
134zanzanaNoLegacyClientexperimental@grafana/identity-access-teamfalsefalsefalse
135reloadDashboardsOnParamsChangeexperimental@grafana/dashboards-squadfalsefalsefalse
136enableScopesInMetricsExploreexperimental@grafana/dashboards-squadfalsefalsefalse
137cloudWatchRoundUpEndTimeGA@grafana/aws-datasourcesfalsefalsefalse
138prometheusAzureOverrideAudiencedeprecated@grafana/partner-datasourcesfalsefalsefalse
139alertingFilterV2experimental@grafana/alerting-squadfalsefalsefalse
140dataplaneAggregatorexperimental@grafana/grafana-app-platform-squadfalsetruefalse
141newFiltersUIGA@grafana/dashboards-squadfalsefalsefalse
142vizActionsAuthpreview@grafana/dataviz-squadfalsefalsetrue
143alertingPrometheusRulesPrimaryexperimental@grafana/alerting-squadfalsefalsetrue
144exploreLogsShardSplittingexperimental@grafana/observability-logsfalsefalsetrue
145exploreLogsAggregatedMetricsexperimental@grafana/observability-logsfalsefalsetrue
146exploreLogsLimitedTimeRangeexperimental@grafana/observability-logsfalsefalsetrue
147appPlatformGrpcClientAuthexperimental@grafana/identity-access-teamfalsefalsefalse
148groupAttributeSyncprivatePreview@grafana/identity-access-teamfalsefalsefalse
149alertingQueryAndExpressionsStepModeGA@grafana/alerting-squadfalsefalsetrue
150improvedExternalSessionHandlingGA@grafana/identity-access-teamfalsefalsefalse
151useSessionStorageForRedirectionGA@grafana/identity-access-teamfalsefalsefalse
152rolePickerDrawerexperimental@grafana/identity-access-teamfalsefalsefalse
153unifiedStorageSearchexperimental@grafana/search-and-storagefalsefalsefalse
154unifiedStorageSearchSprinklesexperimental@grafana/search-and-storagefalsefalsefalse
155managedDualWriterexperimental@grafana/search-and-storagefalsefalsefalse
156pluginsSriChecksGA@grafana/plugins-platform-backendfalsefalsefalse
157unifiedStorageBigObjectsSupportexperimental@grafana/search-and-storagefalsefalsefalse
158timeRangeProviderexperimental@grafana/grafana-frontend-platformfalsefalsefalse
159timeRangePanexperimental@grafana/dataviz-squadfalsefalsetrue
160newTimeRangeZoomShortcutsexperimental@grafana/dataviz-squadfalsefalsetrue
161azureMonitorDisableLogLimitGA@grafana/partner-datasourcesfalsefalsefalse
162playlistsReconcilerexperimental@grafana/grafana-app-platform-squadfalsetruefalse
163passwordlessMagicLinkAuthenticationexperimental@grafana/identity-access-teamfalsefalsefalse
164exploreMetricsRelatedLogsexperimental@grafana/observability-metricsfalsefalsetrue
165prometheusSpecialCharsInLabelValuesexperimental@grafana/oss-big-tentfalsefalsetrue
166enableExtensionsAdminPageexperimental@grafana/plugins-platform-backendfalsetruefalse
167enableSCIMpreview@grafana/identity-access-teamfalsefalsefalse
168crashDetectionexperimental@grafana/observability-traces-and-profilingfalsefalsetrue
169alertingUIOptimizeReducerGA@grafana/alerting-squadfalsefalsetrue
170azureMonitorEnableUserAuthGA@grafana/partner-datasourcesfalsefalsefalse
171alertingAIGenAlertRulesexperimental@grafana/alerting-squadfalsefalsefalse
172alertingAIFeedbackexperimental@grafana/alerting-squadfalsefalsefalse
173alertingAIImproveAlertRulesexperimental@grafana/alerting-squadfalsefalsefalse
174alertingAIGenTemplatesexperimental@grafana/alerting-squadfalsefalsefalse
175alertingEnrichmentPerRuleexperimental@grafana/alerting-squadfalsefalsefalse
176alertingEnrichmentAssistantInvestigationsexperimental@grafana/alerting-squadfalsefalsefalse
177alertingAIAnalyzeCentralStateHistoryexperimental@grafana/alerting-squadfalsefalsefalse
178alertingNotificationsStepModeGA@grafana/alerting-squadfalsefalsetrue
179unifiedStorageSearchUIexperimental@grafana/search-and-storagefalsefalsefalse
180elasticsearchCrossClusterSearchGA@grafana/partner-datasourcesfalsefalsefalse
181unifiedHistoryexperimental@grafana/grafana-search-navigate-organisefalsefalsetrue
182lokiLabelNamesQueryApiGA@grafana/observability-logsfalsefalsefalse
183investigationsBackendexperimental@grafana/grafana-app-platform-squadfalsefalsefalse
184k8SFolderCountsexperimental@grafana/search-and-storagefalsefalsefalse
185k8SFolderMoveexperimental@grafana/search-and-storagefalsefalsefalse
186improvedExternalSessionHandlingSAMLGA@grafana/identity-access-teamfalsefalsefalse
187teamHttpHeadersTempoexperimental@grafana/identity-access-teamfalsefalsefalse
188grafanaAdvisorprivatePreview@grafana/plugins-platform-backendfalsefalsefalse
189elasticsearchImprovedParsingexperimental@grafana/partner-datasourcesfalsefalsefalse
190datasourceConnectionsTabprivatePreview@grafana/plugins-platform-backendfalsefalsetrue
191fetchRulesUsingPostexperimental@grafana/alerting-squadfalsefalsefalse
192fetchRulesInCompactModeexperimental@grafana/alerting-squadfalsefalsefalse
193newLogsPanelGA@grafana/observability-logsfalsefalsetrue
194grafanaconThemesGA@grafana/grafana-frontend-platformfalsetruefalse
195alertingJiraIntegrationexperimental@grafana/alerting-squadfalsefalsetrue
196alertingUseNewSimplifiedRoutingHashAlgorithmpreview@grafana/alerting-squadfalsetruefalse
197useScopesNavigationEndpointexperimental@grafana/grafana-operator-experience-squadfalsefalsetrue
198scopeSearchAllLevelsexperimental@grafana/grafana-operator-experience-squadfalsefalsefalse
199alertingRuleVersionHistoryRestoreGA@grafana/alerting-squadfalsefalsetrue
200newShareReportDrawerpreview@grafana/grafana-operator-experience-squadfalsefalsefalse
201rendererDisableAppPluginsPreloadexperimental@grafana/grafana-operator-experience-squadfalsefalsetrue
202assetSriChecksexperimental@grafana/frontend-opsfalsefalsetrue
203alertRuleRestorepreview@grafana/alerting-squadfalsefalsefalse
204infinityRunQueriesInParallelprivatePreview@grafana/oss-big-tentfalsefalsefalse
205alertingMigrationUIGA@grafana/alerting-squadfalsefalsetrue
206alertingImportYAMLUIGA@grafana/alerting-squadfalsefalsetrue
207azureMonitorLogsBuilderEditorpreview@grafana/partner-datasourcesfalsefalsefalse
208localeFormatPreferencepreview@grafana/grafana-frontend-platformfalsefalsefalse
209unifiedStorageGrpcConnectionPoolexperimental@grafana/search-and-storagefalsefalsefalse
210alertingRulePermanentlyDeleteGA@grafana/alerting-squadfalsefalsetrue
211alertingRuleRecoverDeletedGA@grafana/alerting-squadfalsefalsefalse
212multiTenantTempCredentialsexperimental@grafana/aws-datasourcesfalsefalsefalse
213unifiedNavbarsGA@grafana/plugins-platform-backendfalsefalsetrue
214logsPanelControlspreview@grafana/observability-logsfalsefalsetrue
215metricsFromProfilesexperimental@grafana/observability-traces-and-profilingfalsefalsetrue
216grafanaAssistantInProfilesDrilldownGA@grafana/observability-traces-and-profilingfalsefalsetrue
217tempoAlertingexperimental@grafana/observability-traces-and-profilingfalsefalsefalse
218pluginsAutoUpdateexperimental@grafana/plugins-platform-backendfalsefalsefalse
219alertingListViewV2PreviewToggleprivatePreview@grafana/alerting-squadfalsefalsetrue
220alertRuleUseFiredAtForStartsAtexperimental@grafana/alerting-squadfalsefalsefalse
221alertingBulkActionsInUIGA@grafana/alerting-squadfalsefalsetrue
222kubernetesAuthzApisexperimental@grafana/identity-access-teamfalsefalsefalse
223kubernetesAuthZHandlerRedirectexperimental@grafana/identity-access-teamfalsefalsefalse
224kubernetesAuthzResourcePermissionApisexperimental@grafana/identity-access-teamfalsefalsefalse
225kubernetesAuthzZanzanaSyncexperimental@grafana/identity-access-teamfalsefalsefalse
226kubernetesAuthnMutationexperimental@grafana/identity-access-teamfalsefalsefalse
227kubernetesExternalGroupMappingexperimental@grafana/identity-access-teamfalsefalsefalse
228restoreDashboardsexperimental@grafana/grafana-search-navigate-organisefalsefalsefalse
229recentlyViewedDashboardsexperimental@grafana/grafana-search-navigate-organisefalsefalsetrue
230alertEnrichmentexperimental@grafana/alerting-squadfalsefalsefalse
231alertEnrichmentMultiStepexperimental@grafana/alerting-squadfalsefalsefalse
232alertEnrichmentConditionalexperimental@grafana/alerting-squadfalsefalsefalse
233alertingImportAlertmanagerAPIexperimental@grafana/alerting-squadfalsefalsefalse
234alertingImportAlertmanagerUIexperimental@grafana/alerting-squadfalsefalsefalse
235sharingDashboardImageGA@grafana/sharing-squadfalsefalsetrue
236preferLibraryPanelTitleprivatePreview@grafana/dashboards-squadfalsefalsefalse
237tabularNumbersGA@grafana/grafana-frontend-platformfalsefalsefalse
238newInfluxDSConfigPageDesignprivatePreview@grafana/partner-datasourcesfalsefalsefalse
239enableAppChromeExtensionsexperimental@grafana/plugins-platform-backendfalsefalsetrue
240enableDashboardEmptyExtensionsexperimental@grafana/dashboards-squadfalsefalsetrue
241foldersAppPlatformAPIexperimental@grafana/grafana-search-navigate-organisefalsefalsetrue
242otelLogsFormattingexperimental@grafana/observability-logsfalsefalsetrue
243alertingNotificationHistoryexperimental@grafana/alerting-squadfalsefalsefalse
244unifiedStorageSearchDualReaderEnabledexperimental@grafana/search-and-storagefalsefalsefalse
245dashboardLevelTimeMacrosexperimental@grafana/dashboards-squadfalsefalsetrue
246alertmanagerRemoteSecondaryWithRemoteStateexperimental@grafana/alerting-squadfalsefalsefalse
247restrictedPluginApisexperimental@grafana/plugins-platform-backendfalsefalsetrue
248favoriteDatasourcesexperimental@grafana/plugins-platform-backendfalsefalsetrue
249newLogContextexperimental@grafana/observability-logsfalsefalsetrue
250newClickhouseConfigPageDesignprivatePreview@grafana/partner-datasourcesfalsefalsefalse
251teamFoldersexperimental@grafana/grafana-search-navigate-organisefalsefalsefalse
252interactiveLearningpreview@grafana/pathfinderfalsefalsefalse
253alertingTriageexperimental@grafana/alerting-squadfalsefalsefalse
254graphiteBackendModeprivatePreview@grafana/partner-datasourcesfalsefalsefalse
255azureResourcePickerUpdatesGA@grafana/partner-datasourcesfalsefalsetrue
256prometheusTypeMigrationexperimental@grafana/partner-datasourcesfalsetruefalse
257pluginContainersprivatePreview@grafana/plugins-platform-backendfalsetruefalse
258tempoSearchBackendMigrationGA@grafana/oss-big-tentfalsetruefalse
259cdnPluginsLoadFirstexperimental@grafana/plugins-platform-backendfalsefalsefalse
260cdnPluginsUrlsexperimental@grafana/plugins-platform-backendfalsefalsefalse
261pluginInstallAPISyncexperimental@grafana/plugins-platform-backendfalsefalsefalse
262newGaugeexperimental@grafana/dataviz-squadfalsefalsetrue
263newVizSuggestionspreview@grafana/dataviz-squadfalsefalsetrue
264externalVizSuggestionsexperimental@grafana/dataviz-squadfalsefalsetrue
265heatmapRowsAxisOptionsexperimental@grafana/dataviz-squadfalsefalsetrue
266preventPanelChromeOverflowpreview@grafana/grafana-frontend-platformfalsefalsetrue
267jaegerEnableGrpcEndpointexperimental@grafana/oss-big-tentfalsefalsefalse
268pluginStoreServiceLoadingexperimental@grafana/plugins-platform-backendfalsefalsefalse
269newPanelPaddingpreview@grafana/dashboards-squadfalsefalsetrue
270onlyStoreActionSetsGA@grafana/identity-access-teamfalsefalsefalse
271pluginInsightsexperimental@grafana/plugins-platform-backendfalsefalsetrue
272panelTimeSettingsexperimental@grafana/dashboards-squadfalsefalsefalse
273elasticsearchRawDSLQueryexperimental@grafana/partner-datasourcesfalsefalsefalse
274kubernetesAnnotationsexperimental@grafana/grafana-backend-services-squadfalsefalsefalse
275awsDatasourcesHttpProxyexperimental@grafana/aws-datasourcesfalsefalsefalse
276transformationsEmptyPlaceholderpreview@grafana/dataprofalsefalsetrue
277opentsdbBackendMigrationGA@grafana/oss-big-tentfalsetruefalse
278ttlPluginInstanceManagerexperimental@grafana/plugins-platform-backendfalsefalsetrue
279lokiQueryLimitsContextexperimental@grafana/observability-logsfalsefalsetrue
280rudderstackUpgradeexperimental@grafana/grafana-frontend-platformfalsefalsetrue
281kubernetesAlertingHistorianexperimental@grafana/alerting-squadfalsetruefalse
282useMTPluginsexperimental@grafana/plugins-platform-backendfalsefalsetrue
283multiPropsVariablesexperimental@grafana/dashboards-squadfalsefalsetrue