Plugins: Remove pluginsDetailsRightPanel feature toggle (#107321)

remove pluginsDetailsRightPanel feature toggle
This commit is contained in:
Will Browne
2025-07-25 13:02:05 +01:00
committed by GitHub
parent d25d926462
commit 6747b60822
12 changed files with 8 additions and 46 deletions
@@ -35,7 +35,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general-
| `influxdbBackendMigration` | Query InfluxDB InfluxQL without the proxy | Yes |
| `dataplaneFrontendFallback` | Support dataplane contract field name change for transformations and field name matchers where the name is different | Yes |
| `unifiedRequestLog` | Writes error logs to the request logger | Yes |
| `pluginsDetailsRightPanel` | Enables right panel for the plugins details page | Yes |
| `recordedQueriesMulti` | Enables writing multiple items from a single query within Recorded Queries | Yes |
| `logsExploreTableVisualisation` | A table visualisation for logs in Explore | Yes |
| `awsDatasourcesTempCredentials` | Support temporary security credentials in AWS plugins for Grafana Cloud customers | Yes |
@@ -166,11 +166,6 @@ export interface FeatureToggles {
*/
pluginsFrontendSandbox?: boolean;
/**
* Enables right panel for the plugins details page
* @default true
*/
pluginsDetailsRightPanel?: boolean;
/**
* Enables previous SQL data source dataset dropdown behavior
*/
sqlDatasourceDatabaseSelection?: boolean;
-8
View File
@@ -261,14 +261,6 @@ var (
Stage: FeatureStagePrivatePreview,
Owner: grafanaPluginsPlatformSquad,
},
{
Name: "pluginsDetailsRightPanel",
Description: "Enables right panel for the plugins details page",
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true",
Owner: grafanaPluginsPlatformSquad,
},
{
Name: "sqlDatasourceDatabaseSelection",
Description: "Enables previous SQL data source dataset dropdown behavior",
-1
View File
@@ -33,7 +33,6 @@ faroDatasourceSelector,preview,@grafana/app-o11y,false,false,true
enableDatagridEditing,preview,@grafana/dataviz-squad,false,false,true
extraThemes,experimental,@grafana/grafana-frontend-platform,false,false,true
pluginsFrontendSandbox,privatePreview,@grafana/plugins-platform-backend,false,false,false
pluginsDetailsRightPanel,GA,@grafana/plugins-platform-backend,false,false,true
sqlDatasourceDatabaseSelection,preview,@grafana/oss-big-tent,false,false,true
recordedQueriesMulti,GA,@grafana/observability-metrics,false,false,false
logsExploreTableVisualisation,GA,@grafana/observability-logs,false,false,true
1 Name Stage Owner requiresDevMode RequiresRestart FrontendOnly
33 enableDatagridEditing preview @grafana/dataviz-squad false false true
34 extraThemes experimental @grafana/grafana-frontend-platform false false true
35 pluginsFrontendSandbox privatePreview @grafana/plugins-platform-backend false false false
pluginsDetailsRightPanel GA @grafana/plugins-platform-backend false false true
36 sqlDatasourceDatabaseSelection preview @grafana/oss-big-tent false false true
37 recordedQueriesMulti GA @grafana/observability-metrics false false false
38 logsExploreTableVisualisation GA @grafana/observability-logs false false true
-4
View File
@@ -143,10 +143,6 @@ const (
// Enables the plugins frontend sandbox
FlagPluginsFrontendSandbox = "pluginsFrontendSandbox"
// FlagPluginsDetailsRightPanel
// Enables right panel for the plugins details page
FlagPluginsDetailsRightPanel = "pluginsDetailsRightPanel"
// FlagSqlDatasourceDatabaseSelection
// Enables previous SQL data source dataset dropdown behavior
FlagSqlDatasourceDatabaseSelection = "sqlDatasourceDatabaseSelection"
+2 -1
View File
@@ -2348,7 +2348,8 @@
"metadata": {
"name": "pluginsDetailsRightPanel",
"resourceVersion": "1753285129398",
"creationTimestamp": "2024-08-13T09:55:30Z"
"creationTimestamp": "2024-08-13T09:55:30Z",
"deletionTimestamp": "2025-07-25T08:56:36Z"
},
"spec": {
"description": "Enables right panel for the plugins details page",
@@ -87,7 +87,7 @@ export function PluginDetailsBody({ plugin, queryParams, pageId, info, showDetai
return <Carousel images={carouselImages} />;
}
if (pageId === PluginTabIds.PLUGINDETAILS && config.featureToggles.pluginsDetailsRightPanel && showDetails) {
if (pageId === PluginTabIds.PLUGINDETAILS && showDetails) {
return (
<div>
<PluginDetailsPanel pluginExtentionsInfo={info} plugin={plugin} width={'auto'} />
@@ -106,14 +106,7 @@ describe('PluginDetailsPage', () => {
expect(screen.getByText('Plugin not found')).toBeInTheDocument();
});
it('should not show right panel when feature toggle is disabled', () => {
config.featureToggles.pluginsDetailsRightPanel = false;
render(<PluginDetailsPage pluginId="test-plugin" />);
expect(screen.queryByTestId('plugin-details-panel')).not.toBeInTheDocument();
});
it('should show right panel when feature toggle is enabled and screen is wide', () => {
config.featureToggles.pluginsDetailsRightPanel = true;
it('should show right panel when screen is wide', () => {
window.matchMedia = jest.fn().mockImplementation((query) => ({
matches: query !== '(max-width: 600px)',
media: query,
@@ -128,7 +121,6 @@ describe('PluginDetailsPage', () => {
});
it('should show "Plugin details" tab when screen is narrow', () => {
config.featureToggles.pluginsDetailsRightPanel = true;
window.matchMedia = jest.fn().mockImplementation((query) => ({
matches: query === '(max-width: 600px)',
media: query,
@@ -158,7 +150,6 @@ describe('PluginDetailsPage', () => {
});
it('should not show last version in plugin details panel when plugin is core', () => {
config.featureToggles.pluginsDetailsRightPanel = true;
window.matchMedia = jest.fn().mockImplementation((query) => ({
matches: query !== '(max-width: 600px)',
media: query,
@@ -5,7 +5,6 @@ import { useMedia } from 'react-use';
import { GrafanaTheme2, NavModelItem } from '@grafana/data';
import { Trans, t } from '@grafana/i18n';
import { config } from '@grafana/runtime';
import { Alert, Box, Stack, TabContent, TextLink, useStyles2 } from '@grafana/ui';
import { Page } from 'app/core/components/Page/Page';
import { AppNotificationSeverity } from 'app/types/appNotifications';
@@ -83,10 +82,8 @@ export function PluginDetailsPage({
);
}
const conditionalProps = !config.featureToggles.pluginsDetailsRightPanel ? { info: info } : {};
return (
<Page navId={navId} pageNav={navModel} actions={actions} subTitle={subtitle} {...conditionalProps}>
<Page navId={navId} pageNav={navModel} actions={actions} subTitle={subtitle}>
<Stack gap={4} justifyContent="space-between" direction={{ xs: 'column-reverse', sm: 'row' }}>
<Page.Contents>
<TabContent className={styles.tabContent}>
@@ -102,9 +99,7 @@ export function PluginDetailsPage({
/>
</TabContent>
</Page.Contents>
{!isNarrowScreen && config.featureToggles.pluginsDetailsRightPanel && (
<PluginDetailsPanel pluginExtentionsInfo={info} plugin={plugin} />
)}
{!isNarrowScreen && <PluginDetailsPanel pluginExtentionsInfo={info} plugin={plugin} />}
</Stack>
</Page>
);
@@ -2,7 +2,6 @@ import { css } from '@emotion/css';
import { Fragment } from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { config } from '@grafana/runtime';
import { Alert, Stack, useStyles2 } from '@grafana/ui';
import { InstallControlsWarning } from '../components/InstallControls/InstallControlsWarning';
@@ -46,7 +45,7 @@ export const PluginSubtitle = ({ plugin }: Props) => {
<Stack direction="row" justifyContent="space-between">
<div>
{plugin?.description && <div>{plugin?.description}</div>}
{!config.featureToggles.pluginsDetailsRightPanel && !!plugin?.details?.links?.length && (
{!!plugin?.details?.links?.length && (
<span>
{plugin.details.links.map((link, index) => (
<Fragment key={index}>
@@ -74,7 +74,7 @@ export const usePluginDetailsTabs = (
});
}
if (isPublished && isNarrowScreen && config.featureToggles.pluginsDetailsRightPanel) {
if (isPublished && isNarrowScreen) {
navModelChildren.push({
text: PluginTabLabels.PLUGINDETAILS,
id: PluginTabIds.PLUGINDETAILS,
@@ -885,11 +885,6 @@ describe('Plugin details page', () => {
isDataSourceEditor: false,
isOrgAdmin: true,
});
config.featureToggles.pluginsDetailsRightPanel = true;
});
afterAll(() => {
config.featureToggles.pluginsDetailsRightPanel = false;
});
it('should display Latest release date and report a concern information', async () => {