Compare commits

...

8 Commits

Author SHA1 Message Date
Moustafa Baiou 41c4d8d4bc Alerting: Fix error when updating Alertmanager config with autogenerated receivers (#113710)
If an alert rule with an invalid receiver is created it breaks the entire alertmanager configuration rather than preventing the save.

This fixes the issue by erroring on save and apply, and logging invalid receivers only when applying the config after an update.

Introduced in #111838

(cherry picked from commit 559dab8b1b)
2025-11-11 16:57:45 +00:00
grafana-delivery-bot[bot] 767edc47dc [release-12.3.1] Docs: Add Tempo to the list of unsupported data sources (#113671)
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2025-11-10 15:09:09 +00:00
grafana-delivery-bot[bot] 25252c0a02 [release-12.3.1] docs: clarifying info on what's new lading page (#113643)
Co-authored-by: Jacob Valdez <jacob.valdez@grafana.com>
2025-11-07 22:30:47 +00:00
grafana-delivery-bot[bot] 23416272ef [release-12.3.1] Canvas: Fix Field image source when non-string field is used (#113606)
Canvas: Fix Field image source when non-string field is used (#113534)

(cherry picked from commit bcc2057456)

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
2025-11-07 11:14:44 -05:00
grafana-delivery-bot[bot] 732aea954d [release-12.3.1] Update grafanacli-workflows.md with command link (#113607)
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-07 15:50:16 +00:00
grafana-delivery-bot[bot] d5d73bb189 [release-12.3.1] LibraryPanels: Improve getAllLibraryElements filter performance (#113601)
LibraryPanels: Improve `getAllLibraryElements` filter performance (#113544)

(cherry picked from commit 33390a1483)

Co-authored-by: Juan Cabanas <juan.cabanas@grafana.com>
2025-11-07 12:25:56 -03:00
Matias Chomicki 1cbbeee10b New Logs Panel: Enable new visualization by default (#113340) (#113488)
* New Logs Panel: enabled by default

* Update toggles

* Change feature flag availability
2025-11-06 17:49:38 +01:00
grafana-delivery-bot[bot] 038fd626a1 Release: Bump version to 12.3.1 (#113481)
bump version 12.3.1

Co-authored-by: grafana-delivery-bot[bot] <grafana-delivery-bot[bot]@users.noreply.github.com>
2025-11-05 23:52:17 +01:00
74 changed files with 521 additions and 281 deletions
@@ -18,7 +18,7 @@ weight: 300
# Manage resources with Grafana CLI
{{< admonition type="note" >}}
`grafanactl` is under active development. Command-line flags and subcommands described here may change. This document outlines the target workflows the tool is expected to support.
`grafanactl` is under active development. Command-line flags and subcommands described here may change. This document outlines the target workflows the tool is expected to support. You can find a full list of supported commands [in this page](https://grafana.github.io/grafanactl/reference/cli/grafanactl/).
{{< /admonition >}}
## Migrate resources between environments
@@ -74,6 +74,7 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general-
| `elasticsearchCrossClusterSearch` | Enables cross cluster search in the Elasticsearch data source | |
| `lokiLabelNamesQueryApi` | Defaults to using the Loki `/labels` API instead of `/series` | Yes |
| `improvedExternalSessionHandlingSAML` | Enables improved support for SAML external sessions. Ensure the NameID format is correctly configured in Grafana for SAML Single Logout to function properly. | Yes |
| `newLogsPanel` | Enables the new logs panel | Yes |
| `alertingMigrationUI` | Enables the alerting migration UI, to migrate data source-managed rules to Grafana-managed rules | Yes |
| `alertingImportYAMLUI` | Enables a UI feature for importing rules from a Prometheus file to Grafana-managed rules | Yes |
| `unifiedNavbars` | Enables unified navbars | |
@@ -249,6 +249,7 @@ guaranteed because plugin developers can override this functionality. The follow
- Dynatrace
- Graphite
- Google Sheets
- Tempo
### Unconfirmed
+3 -2
View File
@@ -170,7 +170,6 @@ aliases:
description: Learn about new and updated features in Grafana.
labels:
products:
- cloud
- enterprise
- oss
menuTitle: What's new
@@ -180,7 +179,9 @@ weight: 1
# What's new in Grafana
For release highlights, deprecations, and breaking changes in Grafana releases, refer to these "What's new" pages for each version.
For release highlights, deprecations, and breaking changes in self-managed Grafana releases, refer to these "What's new" pages for each version.
For information on new Grafana Cloud highlights, refer to [What's new from Grafana Labs](https://grafana.com/whats-new).
{{< admonition type="note" >}}
For Grafana versions prior to v9.2, additional information might also be available in the archived release notes. To access archived release notes, use the documentation for the minor version you want to see.
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/extensions-test-app",
"version": "12.3.0-pre",
"version": "12.3.1",
"private": true,
"scripts": {
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/grafana-e2etest-datasource",
"version": "12.3.0-pre",
"version": "12.3.1",
"private": true,
"scripts": {
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"npmClient": "yarn",
"version": "12.3.0-pre"
"version": "12.3.1"
}
+1 -1
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "grafana",
"version": "12.3.0-pre",
"version": "12.3.1",
"repository": "github:grafana/grafana",
"scripts": {
"check-frontend-dev": "./scripts/check-frontend-dev.sh",
+2 -2
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/alerting",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Alerting Library Build vertical integrations on top of the industry-leading alerting solution",
"keywords": [
"typescript",
@@ -94,7 +94,7 @@
"dependencies": {
"@emotion/css": "11.13.5",
"@faker-js/faker": "^9.8.0",
"@grafana/i18n": "12.3.0-pre",
"@grafana/i18n": "12.3.1",
"@reduxjs/toolkit": "^2.9.0",
"fishery": "^2.3.1",
"lodash": "^4.17.21",
+1 -1
View File
@@ -3,7 +3,7 @@
"license": "Apache-2.0",
"private": true,
"name": "@grafana/api-clients",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana API client utilities",
"keywords": [
"grafana",
+3 -3
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/data",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Data Library",
"keywords": [
"typescript"
@@ -56,8 +56,8 @@
},
"dependencies": {
"@braintree/sanitize-url": "7.0.1",
"@grafana/i18n": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/i18n": "12.3.1",
"@grafana/schema": "12.3.1",
"@leeoniya/ufuzzy": "1.0.19",
"@types/d3-interpolate": "^3.0.0",
"@types/string-hash": "1.1.3",
@@ -883,7 +883,8 @@ export interface FeatureToggles {
*/
fetchRulesUsingPost?: boolean;
/**
* Enables the new logs panel in Explore
* Enables the new logs panel
* @default true
*/
newLogsPanel?: boolean;
/**
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/e2e-selectors",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana End-to-End Test Selectors Library",
"keywords": [
"cli",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@grafana/eslint-plugin",
"description": "ESLint rules for use within the Grafana repo. Not suitable (or supported) for external use.",
"version": "12.3.0-pre",
"version": "12.3.1",
"main": "./index.cjs",
"author": "Grafana Labs",
"license": "Apache-2.0",
+3 -3
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/flamegraph",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana flamegraph visualization component",
"keywords": [
"grafana",
@@ -44,8 +44,8 @@
],
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/ui": "12.3.1",
"@leeoniya/ufuzzy": "1.0.19",
"d3": "^7.8.5",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/i18n",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Internationalization Library",
"keywords": [
"grafana",
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"name": "@grafana/o11y-ds-frontend",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Library to manage traces in Grafana.",
"sideEffects": false,
"repository": {
@@ -18,12 +18,12 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"react-select": "5.10.2",
"react-use": "17.6.0",
"rxjs": "7.8.2",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@grafana/plugin-configs",
"description": "Shared dependencies and files for core plugins",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"react": "18.3.1",
"terser-webpack-plugin": "5.3.14",
+7 -7
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "AGPL-3.0-only",
"name": "@grafana/prometheus",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Prometheus Library",
"keywords": [
"typescript",
@@ -41,13 +41,13 @@
"dependencies": {
"@emotion/css": "11.13.5",
"@floating-ui/react": "0.27.16",
"@grafana/data": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/i18n": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/i18n": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"@hello-pangea/dnd": "18.0.1",
"@leeoniya/ufuzzy": "1.0.19",
"@lezer/common": "1.2.3",
+5 -5
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/runtime",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Runtime Library",
"keywords": [
"grafana",
@@ -53,11 +53,11 @@
"postpack": "mv package.json.bak package.json && rimraf ./unstable"
},
"dependencies": {
"@grafana/data": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"@openfeature/core": "^1.9.0",
"@openfeature/ofrep-web-provider": "^0.3.3",
"@openfeature/web-sdk": "^1.6.1",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/schema",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Schema Library",
"keywords": [
"typescript"
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
limit: number;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {
displayMode: common.BarGaugeDisplayMode;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export enum VizDisplayMode {
Candles = 'candles',
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export enum HorizontalConstraint {
Center = 'center',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface MetricStat {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
selectedSeries: number;
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export type UpdateConfig = {
render: boolean,
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.SingleStatBaseOptions {
minVizHeight: number;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
basemap: ui.MapLayerOptions;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
/**
* Controls the color mode of the heatmap
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
controlsStorageKey?: string;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface GaugePanelEffects {
barGlow?: boolean;
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface ArcOption {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
/**
* Select the pie chart display style.
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.SingleStatBaseOptions {
colorMode: common.BigValueColorMode;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export enum TextMode {
Code = 'code',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export interface Options extends common.OptionsWithTimezones {
legend: common.VizLegendOptions;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
/**
* Identical to timeseries... except it does not have timezone settings
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.3.0-pre";
export const pluginVersion = "12.3.1";
export enum PointShape {
Circle = 'circle',
+6 -6
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "@grafana/sql",
"version": "12.3.0-pre",
"version": "12.3.1",
"repository": {
"type": "git",
"url": "http://github.com/grafana/grafana.git",
@@ -16,12 +16,12 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/i18n": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/i18n": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/ui": "12.3.1",
"@react-awesome-query-builder/ui": "6.6.15",
"immutable": "5.1.4",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/test-utils",
"version": "12.3.0-pre",
"version": "12.3.1",
"private": true,
"description": "Grafana test utils & Mock API",
"keywords": [
+5 -5
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/ui",
"version": "12.3.0-pre",
"version": "12.3.1",
"description": "Grafana Components Library",
"keywords": [
"grafana",
@@ -67,11 +67,11 @@
"@emotion/react": "11.14.0",
"@emotion/serialize": "1.3.3",
"@floating-ui/react": "0.27.16",
"@grafana/data": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/i18n": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/i18n": "12.3.1",
"@grafana/schema": "12.3.1",
"@hello-pangea/dnd": "18.0.1",
"@monaco-editor/react": "4.7.0",
"@popperjs/core": "2.11.8",
+3 -2
View File
@@ -1516,10 +1516,11 @@ var (
},
{
Name: "newLogsPanel",
Description: "Enables the new logs panel in Explore",
Stage: FeatureStageExperimental,
Description: "Enables the new logs panel",
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Owner: grafanaObservabilityLogsSquad,
Expression: "true",
},
{
Name: "grafanaconThemes",
+1 -1
View File
@@ -198,7 +198,7 @@ grafanaAdvisor,privatePreview,@grafana/plugins-platform-backend,false,false,fals
elasticsearchImprovedParsing,experimental,@grafana/aws-datasources,false,false,false
datasourceConnectionsTab,privatePreview,@grafana/plugins-platform-backend,false,false,true
fetchRulesUsingPost,experimental,@grafana/alerting-squad,false,false,false
newLogsPanel,experimental,@grafana/observability-logs,false,false,true
newLogsPanel,GA,@grafana/observability-logs,false,false,true
grafanaconThemes,GA,@grafana/grafana-frontend-platform,false,true,false
alertingJiraIntegration,experimental,@grafana/alerting-squad,false,false,true
alertingUseNewSimplifiedRoutingHashAlgorithm,preview,@grafana/alerting-squad,false,true,false
1 Name Stage Owner requiresDevMode RequiresRestart FrontendOnly
198 elasticsearchImprovedParsing experimental @grafana/aws-datasources false false false
199 datasourceConnectionsTab privatePreview @grafana/plugins-platform-backend false false true
200 fetchRulesUsingPost experimental @grafana/alerting-squad false false false
201 newLogsPanel experimental GA @grafana/observability-logs false false true
202 grafanaconThemes GA @grafana/grafana-frontend-platform false true false
203 alertingJiraIntegration experimental @grafana/alerting-squad false false true
204 alertingUseNewSimplifiedRoutingHashAlgorithm preview @grafana/alerting-squad false true false
+1 -1
View File
@@ -804,7 +804,7 @@ const (
FlagFetchRulesUsingPost = "fetchRulesUsingPost"
// FlagNewLogsPanel
// Enables the new logs panel in Explore
// Enables the new logs panel
FlagNewLogsPanel = "newLogsPanel"
// FlagGrafanaconThemes
+9 -5
View File
@@ -2775,14 +2775,18 @@
{
"metadata": {
"name": "newLogsPanel",
"resourceVersion": "1753448760331",
"creationTimestamp": "2025-02-04T17:40:17Z"
"resourceVersion": "1762166984808",
"creationTimestamp": "2025-02-04T17:40:17Z",
"annotations": {
"grafana.app/updatedTimestamp": "2025-11-03 10:49:44.808226 +0000 UTC"
}
},
"spec": {
"description": "Enables the new logs panel in Explore",
"stage": "experimental",
"description": "Enables the new logs panel",
"stage": "GA",
"codeowner": "@grafana/observability-logs",
"frontend": true
"frontend": true,
"expression": "true"
}
},
{
+24 -15
View File
@@ -473,17 +473,22 @@ func (l *LibraryElementService) getAllLibraryElements(c context.Context, signedI
if err != nil {
return err
}
// Every signed in user can see the general folder. The general folder might have "general" or the empty string as its UID.
var folderUIDS = []string{"general", ""}
folderMap := map[string]string{}
// Using a map for O(1) lookup instead of O(n) slice iteration
folderUIDSet := make(map[string]bool, len(fs)+2)
folderUIDSet["general"] = true
folderUIDSet[""] = true
folderMap := make(map[string]string, len(fs))
for _, f := range fs {
folderUIDS = append(folderUIDS, f.UID)
folderUIDSet[f.UID] = true
folderMap[f.UID] = f.Title
}
// if the user is not an admin, we need to filter out elements that are not in folders the user can see
for _, element := range elements {
if !signedInUser.HasRole(org.RoleAdmin) {
if !contains(folderUIDS, element.FolderUID) {
if !folderUIDSet[element.FolderUID] {
continue
}
}
@@ -522,10 +527,11 @@ func (l *LibraryElementService) getAllLibraryElements(c context.Context, signedI
})
}
var libraryElements []model.LibraryElement
var libraryElements []model.LibraryElementWithMeta
countBuilder := db.SQLBuilder{}
if folderFilter.includeGeneralFolder {
countBuilder.Write(selectLibraryElementDTOWithMeta)
countBuilder.Write(", '' as folder_uid ")
countBuilder.Write(getFromLibraryElementDTOWithMeta(l.SQLStore.GetDialect()))
countBuilder.Write(` WHERE le.org_id=? AND le.folder_id=0`, signedInUser.GetOrgID())
writeKindSQL(query, &countBuilder)
@@ -537,6 +543,7 @@ func (l *LibraryElementService) getAllLibraryElements(c context.Context, signedI
countBuilder.Write(" ")
}
countBuilder.Write(selectLibraryElementDTOWithMeta)
countBuilder.Write(", le.folder_uid as folder_uid ")
countBuilder.Write(getFromLibraryElementDTOWithMeta(l.SQLStore.GetDialect()))
countBuilder.Write(` WHERE le.org_id=? AND le.folder_id<>0`, signedInUser.GetOrgID())
writeKindSQL(query, &countBuilder)
@@ -550,8 +557,19 @@ func (l *LibraryElementService) getAllLibraryElements(c context.Context, signedI
return err
}
// Apply the same folder permission filtering to the count for non-admin users
totalCount := int64(len(libraryElements))
if !signedInUser.HasRole(org.RoleAdmin) {
totalCount = 0
for _, element := range libraryElements {
if folderUIDSet[element.FolderUID] {
totalCount++
}
}
}
result = model.LibraryElementSearchResult{
TotalCount: int64(len(libraryElements)),
TotalCount: totalCount,
Elements: retDTOs,
Page: query.Page,
PerPage: query.PerPage,
@@ -878,15 +896,6 @@ func (l *LibraryElementService) deleteLibraryElementsInFolderUID(c context.Conte
})
}
func contains(slice []string, element string) bool {
for _, item := range slice {
if item == element {
return true
}
}
return false
}
func getFoldersWithMatchingTitles(c context.Context, l *LibraryElementService, signedInUser identity.Requester, query model.SearchLibraryElementsQuery) ([]string, error) {
if len(strings.TrimSpace(query.SearchString)) <= 0 {
return nil, nil
@@ -1370,4 +1370,161 @@ func TestIntegration_GetAllLibraryElements(t *testing.T) {
require.NotEmpty(t, element.UID, "Should have a UID")
require.Equal(t, int64(0), element.Meta.ConnectedDashboards, "Should have no connected dashboards")
})
// Non-admin user permission tests
scenarioWithPanel(t, "When a non-admin user has folders but none of the library elements are in those folders, it should return empty result",
func(t *testing.T, sc scenarioContext) {
// Create library panels in the scenario folder
// nolint:staticcheck
command := getCreatePanelCommand(sc.folder.ID, sc.folder.UID, "Text - Library Panel2")
sc.reqContext.Req.Body = mockRequestBody(command)
resp := sc.service.createHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
// Create a different folder that the non-admin user has access to (but has no panels)
differentFolder := &folder.Folder{
ID: 2,
OrgID: 1,
UID: "uid_for_DifferentFolder",
Title: "DifferentFolder",
}
// Change user to non-admin and set their accessible folders to only the different folder
// This simulates a user who can see a folder but that folder doesn't contain any of the library elements
sc.reqContext.OrgRole = org.RoleViewer
sc.folderSvc.ExpectedFolders = []*folder.Folder{differentFolder}
sc.folderSvc.AddFolder(differentFolder)
resp = sc.service.getAllHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
var result libraryElementsSearch
err := json.Unmarshal(resp.Body(), &result)
require.NoError(t, err)
// TotalCount should be 0 for non-admin users since they can't access the folders with panels
require.Equal(t, int64(0), result.Result.TotalCount, "TotalCount should be 0 since user has no access to folders with panels")
require.Equal(t, 0, len(result.Result.Elements), "Elements should be empty since user has no access to folders with panels")
require.Equal(t, 1, result.Result.Page, "Should be on page 1")
require.Equal(t, 100, result.Result.PerPage, "Should have perPage 100")
})
scenarioWithPanel(t, "When a non-admin user has folders and some library elements are in those folders, it should return only accessible elements",
func(t *testing.T, sc scenarioContext) {
// Create a second folder that the non-admin user will have access to
accessibleFolder := &folder.Folder{
ID: 2,
OrgID: 1,
UID: "uid_for_AccessibleFolder",
Title: "AccessibleFolder",
}
// Create a library panel in the accessible folder (need to add it to fake service first)
sc.folderSvc.ExpectedFolder = accessibleFolder
sc.folderSvc.AddFolder(accessibleFolder)
// nolint:staticcheck
command := getCreatePanelCommand(accessibleFolder.ID, accessibleFolder.UID, "Accessible Panel")
sc.reqContext.Req.Body = mockRequestBody(command)
resp := sc.service.createHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
// Create another panel in a folder the user won't have access to
inaccessibleFolder := &folder.Folder{
ID: 3,
OrgID: 1,
UID: "uid_for_InaccessibleFolder",
Title: "InaccessibleFolder",
}
sc.folderSvc.ExpectedFolder = inaccessibleFolder
sc.folderSvc.AddFolder(inaccessibleFolder)
// nolint:staticcheck
command = getCreatePanelCommand(inaccessibleFolder.ID, inaccessibleFolder.UID, "Inaccessible Panel")
sc.reqContext.Req.Body = mockRequestBody(command)
resp = sc.service.createHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
// Change user to non-admin and set their accessible folders to only the accessible folder and scenario folder
// This will filter out the inaccessible folder
sc.reqContext.OrgRole = org.RoleViewer
sc.folderSvc.ExpectedFolders = []*folder.Folder{sc.folder, accessibleFolder}
resp = sc.service.getAllHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
var result libraryElementsSearch
err := json.Unmarshal(resp.Body(), &result)
require.NoError(t, err)
// TotalCount should match the number of accessible elements (2) for non-admin users
require.Equal(t, int64(2), result.Result.TotalCount, "TotalCount should be 2 (only accessible panels)")
require.Equal(t, 2, len(result.Result.Elements), "Elements should contain only 2 accessible panels")
require.Equal(t, 1, result.Result.Page, "Should be on page 1")
require.Equal(t, 100, result.Result.PerPage, "Should have perPage 100")
// Verify the returned panels are from accessible folders only
folderUIDs := make(map[string]bool)
for _, element := range result.Result.Elements {
folderUIDs[element.FolderUID] = true
require.Contains(t, []string{sc.folder.UID, accessibleFolder.UID}, element.FolderUID, "Element should be in accessible folder")
require.NotEqual(t, inaccessibleFolder.UID, element.FolderUID, "Element should not be from inaccessible folder")
}
require.True(t, folderUIDs[sc.folder.UID], "Should include panel from scenario folder")
require.True(t, folderUIDs[accessibleFolder.UID], "Should include panel from accessible folder")
})
scenarioWithPanel(t, "When a non-admin user has access to all folders containing library elements, it should return all elements",
func(t *testing.T, sc scenarioContext) {
// Create a second folder that the non-admin user will have access to
folder2 := &folder.Folder{
ID: 2,
OrgID: 1,
UID: "uid_for_Folder2",
Title: "Folder2",
}
sc.folderSvc.ExpectedFolder = folder2
sc.folderSvc.AddFolder(folder2)
// Create a library panel in folder2
// nolint:staticcheck
command := getCreatePanelCommand(folder2.ID, folder2.UID, "Panel in Folder2")
sc.reqContext.Req.Body = mockRequestBody(command)
resp := sc.service.createHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
// Create another panel in the original scenario folder
sc.folderSvc.ExpectedFolder = sc.folder
// nolint:staticcheck
command = getCreatePanelCommand(sc.folder.ID, sc.folder.UID, "Panel in ScenarioFolder")
sc.reqContext.Req.Body = mockRequestBody(command)
resp = sc.service.createHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
// Change user to non-admin and set their accessible folders to include all folders with panels
sc.reqContext.OrgRole = org.RoleViewer
sc.folderSvc.ExpectedFolders = []*folder.Folder{sc.folder, folder2}
resp = sc.service.getAllHandler(sc.reqContext)
require.Equal(t, 200, resp.Status())
var result libraryElementsSearch
err := json.Unmarshal(resp.Body(), &result)
require.NoError(t, err)
// Should return all 3 panels (1 from initial setup + 2 created in this test)
require.Equal(t, int64(3), result.Result.TotalCount, "Should return all 3 panels")
require.Equal(t, 3, len(result.Result.Elements), "Should have 3 elements")
require.Equal(t, 1, result.Result.Page, "Should be on page 1")
require.Equal(t, 100, result.Result.PerPage, "Should have perPage 100")
// Verify all panels are from the accessible folders
folderUIDs := make(map[string]int)
for _, element := range result.Result.Elements {
folderUIDs[element.FolderUID]++
require.Contains(t, []string{sc.folder.UID, folder2.UID}, element.FolderUID, "All elements should be in accessible folders")
require.Equal(t, int64(model.PanelElement), element.Kind, "Should be a panel element")
require.Equal(t, "text", element.Type, "Should be text panel")
}
require.Equal(t, 2, folderUIDs[sc.folder.UID], "Should have 2 panels in scenario folder")
require.Equal(t, 1, folderUIDs[folder2.UID], "Should have 1 panel in folder2")
})
}
@@ -233,7 +233,7 @@ func (am *alertmanager) SaveAndApplyConfig(ctx context.Context, cfg *apimodels.P
}
err = am.Store.SaveAlertmanagerConfigurationWithCallback(ctx, cmd, func() error {
_, err = am.applyConfig(ctx, cfg, LogInvalidReceivers) // fail if the autogen config is invalid
_, err = am.applyConfig(ctx, cfg, ErrorOnInvalidReceivers) // fail if the autogen config is invalid
return err
})
if err != nil {
@@ -259,7 +259,7 @@ func (am *alertmanager) ApplyConfig(ctx context.Context, dbCfg *ngmodels.AlertCo
// Since we will now update last_applied when autogen changes even if the user-created config remains the same.
// To fix this however, the local alertmanager needs to be able to tell the difference between user-created and
// autogen config, which may introduce cross-cutting complexity.
configChanged, err := am.applyConfig(ctx, cfg, ErrorOnInvalidReceivers)
configChanged, err := am.applyConfig(ctx, cfg, LogInvalidReceivers)
if err != nil {
outerErr = fmt.Errorf("unable to apply configuration: %w", err)
return
@@ -1,7 +1,7 @@
import { createDataFrame } from '@grafana/data';
import { ResourceDimensionMode } from '@grafana/schema';
import { getResourceDimension } from './resource';
import { getPublicOrAbsoluteUrl, getResourceDimension } from './resource';
describe('getResourceDimension', () => {
const publicPath = 'https://grafana.fake/public/';
@@ -63,5 +63,66 @@ describe('getResourceDimension', () => {
expect(getResourceDimension(frame, config).value()).toEqual('https://3rdparty.fake/field.png');
});
it('should return empty string for boolean field values', () => {
const frame = createDataFrame({
fields: [
{
name: 'image_field',
values: [true],
display: (v) => ({
text: String(v),
numeric: NaN,
icon: undefined,
}),
},
],
});
const config = { mode: ResourceDimensionMode.Field, field: 'image_field', fixed: '' };
expect(getResourceDimension(frame, config).get(0)).toEqual('');
expect(getResourceDimension(frame, config).value()).toEqual('');
});
it('should return empty string for numeric field values', () => {
const frame = createDataFrame({
fields: [
{
name: 'image_field',
values: [123],
display: (v) => ({
text: String(v),
numeric: Number(v),
icon: undefined,
}),
},
],
});
const config = { mode: ResourceDimensionMode.Field, field: 'image_field', fixed: '' };
expect(getResourceDimension(frame, config).get(0)).toEqual('');
expect(getResourceDimension(frame, config).value()).toEqual('');
});
// TODO: write tests for mapping modes
});
describe('getPublicOrAbsoluteUrl', () => {
const publicPath = 'https://grafana.fake/public/';
beforeAll(() => {
window.__grafana_public_path__ = publicPath;
});
it('should handle string paths correctly', () => {
expect(getPublicOrAbsoluteUrl('icon.png')).toEqual(`${publicPath}build/icon.png`);
expect(getPublicOrAbsoluteUrl('https://example.com/icon.png')).toEqual('https://example.com/icon.png');
});
it('should return empty string for non-string values', () => {
expect(getPublicOrAbsoluteUrl(true)).toEqual('');
expect(getPublicOrAbsoluteUrl(123)).toEqual('');
expect(getPublicOrAbsoluteUrl(null)).toEqual('');
expect(getPublicOrAbsoluteUrl(undefined)).toEqual('');
expect(getPublicOrAbsoluteUrl({ path: 'icon.png' })).toEqual('');
expect(getPublicOrAbsoluteUrl(['icon.png'])).toEqual('');
});
});
+7 -3
View File
@@ -7,8 +7,8 @@ import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------
// Resource dimension
//---------------------------------------------------------
export function getPublicOrAbsoluteUrl(path: string): string {
if (!path) {
export function getPublicOrAbsoluteUrl(path: unknown): string {
if (!path || typeof path !== 'string') {
return '';
}
@@ -55,7 +55,11 @@ export function getResourceDimension(
}
// mode === ResourceDimensionMode.Field case
const getImageOrIcon = (value: string): string => {
const getImageOrIcon = (value: unknown): string => {
if (typeof value !== 'string') {
return '';
}
let url = value;
if (field && field.display) {
const displayValue = field.display(value);
@@ -2,15 +2,15 @@
"name": "@grafana-plugins/grafana-azure-monitor-datasource",
"description": "Grafana data source for Azure Monitor",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/i18n": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/i18n": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"@kusto/monaco-kusto": "^10.0.0",
"fast-deep-equal": "^3.1.3",
"i18next": "^25.0.0",
@@ -26,8 +26,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,15 +2,15 @@
"name": "@grafana-plugins/stackdriver",
"description": "Grafana data source for Google Cloud Monitoring",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/google-sdk": "0.3.5",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"debounce-promise": "3.1.2",
"fast-deep-equal": "^3.1.3",
"i18next": "^25.0.0",
@@ -26,8 +26,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/grafana-postgresql-datasource",
"description": "PostgreSQL data source plugin",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/sql": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/sql": "12.3.1",
"@grafana/ui": "12.3.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-pyroscope-datasource",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"fast-deep-equal": "^3.1.3",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
@@ -20,7 +20,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-testdata-datasource",
"description": "Generates test data in different forms",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"d3-random": "^3.0.1",
"lodash": "4.17.21",
"micro-memoize": "^4.1.2",
@@ -21,8 +21,8 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,14 +2,14 @@
"name": "@grafana-plugins/graphite",
"description": "Graphite data source plugin for Grafana",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"@reduxjs/toolkit": "2.9.0",
"lodash": "4.17.21",
"moment": "2.30.1",
@@ -23,8 +23,8 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/jaeger",
"description": "Jaeger plugin for Grafana",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -2,16 +2,16 @@
"name": "@grafana-plugins/loki",
"description": "Loki data source plugin for Grafana",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/lezer-logql": "0.2.9",
"@grafana/llm": "0.22.1",
"@grafana/monaco-logql": "^0.0.8",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"d3-random": "^3.0.1",
"lodash": "4.17.21",
"micro-memoize": "^4.1.2",
@@ -24,8 +24,8 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,23 +2,23 @@
"name": "@grafana-plugins/mssql",
"description": "MSSQL data source plugin",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/i18n": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/i18n": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/sql": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/sql": "12.3.1",
"@grafana/ui": "12.3.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/mysql",
"description": "MySQL data source plugin",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.3.0-pre",
"@grafana/sql": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/runtime": "12.3.1",
"@grafana/sql": "12.3.1",
"@grafana/ui": "12.3.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/e2e-selectors": "12.3.1",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/parca",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.3.0-pre",
"@grafana/runtime": "12.3.0-pre",
"@grafana/schema": "12.3.0-pre",
"@grafana/ui": "12.3.0-pre",
"@grafana/data": "12.3.1",
"@grafana/runtime": "12.3.1",
"@grafana/schema": "12.3.1",
"@grafana/ui": "12.3.1",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
"react": "18.3.1",
@@ -18,7 +18,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/tempo",
"description": "Grafana plugin for the Tempo data source.",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -38,7 +38,7 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/plugin-configs": "12.3.0-pre",
"@grafana/plugin-configs": "12.3.1",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/zipkin",
"description": "Zipkin plugin for Grafana",
"private": true,
"version": "12.3.0-pre",
"version": "12.3.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
+98 -98
View File
@@ -2433,14 +2433,14 @@ __metadata:
resolution: "@grafana-plugins/grafana-azure-monitor-datasource@workspace:public/app/plugins/datasource/azuremonitor"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/i18n": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@kusto/monaco-kusto": "npm:^10.0.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
@@ -2480,13 +2480,13 @@ __metadata:
resolution: "@grafana-plugins/grafana-postgresql-datasource@workspace:public/app/plugins/datasource/grafana-postgresql-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/sql": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/sql": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2512,11 +2512,11 @@ __metadata:
resolution: "@grafana-plugins/grafana-pyroscope-datasource@workspace:public/app/plugins/datasource/grafana-pyroscope-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2553,12 +2553,12 @@ __metadata:
resolution: "@grafana-plugins/grafana-testdata-datasource@workspace:public/app/plugins/datasource/grafana-testdata-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2594,13 +2594,13 @@ __metadata:
resolution: "@grafana-plugins/graphite@workspace:public/app/plugins/datasource/graphite"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@reduxjs/toolkit": "npm:2.9.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
@@ -2680,15 +2680,15 @@ __metadata:
resolution: "@grafana-plugins/loki@workspace:public/app/plugins/datasource/loki"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/lezer-logql": "npm:0.2.9"
"@grafana/llm": "npm:0.22.1"
"@grafana/monaco-logql": "npm:^0.0.8"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2724,14 +2724,14 @@ __metadata:
resolution: "@grafana-plugins/mssql@workspace:public/app/plugins/datasource/mssql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/i18n": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/sql": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/sql": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2757,13 +2757,13 @@ __metadata:
resolution: "@grafana-plugins/mysql@workspace:public/app/plugins/datasource/mysql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/sql": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/sql": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2789,11 +2789,11 @@ __metadata:
resolution: "@grafana-plugins/parca@workspace:public/app/plugins/datasource/parca"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2822,14 +2822,14 @@ __metadata:
resolution: "@grafana-plugins/stackdriver@workspace:public/app/plugins/datasource/cloud-monitoring"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/google-sdk": "npm:0.3.5"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2874,7 +2874,7 @@ __metadata:
"@grafana/lezer-traceql": "npm:0.0.25"
"@grafana/monaco-logql": "npm:^0.0.8"
"@grafana/o11y-ds-frontend": "workspace:*"
"@grafana/plugin-configs": "npm:12.3.0-pre"
"@grafana/plugin-configs": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "workspace:*"
"@grafana/schema": "workspace:*"
@@ -2966,7 +2966,7 @@ __metadata:
dependencies:
"@emotion/css": "npm:11.13.5"
"@faker-js/faker": "npm:^9.8.0"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.1"
"@grafana/test-utils": "workspace:*"
"@reduxjs/toolkit": "npm:^2.9.0"
"@rtk-query/codegen-openapi": "npm:^2.0.0"
@@ -3060,14 +3060,14 @@ __metadata:
languageName: node
linkType: hard
"@grafana/data@npm:12.3.0-pre, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
"@grafana/data@npm:12.3.1, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
version: 0.0.0-use.local
resolution: "@grafana/data@workspace:packages/grafana-data"
dependencies:
"@braintree/sanitize-url": "npm:7.0.1"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.1"
"@grafana/scenes": "npm:6.38.0"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.1"
"@leeoniya/ufuzzy": "npm:1.0.19"
"@rollup/plugin-node-resolve": "npm:16.0.1"
"@testing-library/react": "npm:16.3.0"
@@ -3115,7 +3115,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/e2e-selectors@npm:12.3.0-pre, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
"@grafana/e2e-selectors@npm:12.3.1, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
version: 0.0.0-use.local
resolution: "@grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors"
dependencies:
@@ -3215,8 +3215,8 @@ __metadata:
"@babel/preset-env": "npm:7.28.0"
"@babel/preset-react": "npm:7.27.1"
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@leeoniya/ufuzzy": "npm:1.0.19"
"@rollup/plugin-node-resolve": "npm:16.0.1"
"@testing-library/dom": "npm:10.4.1"
@@ -3266,7 +3266,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/i18n@npm:12.3.0-pre, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
"@grafana/i18n@npm:12.3.1, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
version: 0.0.0-use.local
resolution: "@grafana/i18n@workspace:packages/grafana-i18n"
dependencies:
@@ -3336,12 +3336,12 @@ __metadata:
resolution: "@grafana/o11y-ds-frontend@workspace:packages/grafana-o11y-ds-frontend"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:^6.1.2"
"@testing-library/react": "npm:16.3.0"
@@ -3365,7 +3365,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/plugin-configs@npm:12.3.0-pre, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
"@grafana/plugin-configs@npm:12.3.1, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
version: 0.0.0-use.local
resolution: "@grafana/plugin-configs@workspace:packages/grafana-plugin-configs"
dependencies:
@@ -3445,13 +3445,13 @@ __metadata:
dependencies:
"@emotion/css": "npm:11.13.5"
"@floating-ui/react": "npm:0.27.16"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/i18n": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@hello-pangea/dnd": "npm:18.0.1"
"@leeoniya/ufuzzy": "npm:1.0.19"
"@lezer/common": "npm:1.2.3"
@@ -3511,15 +3511,15 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/runtime@npm:12.3.0-pre, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
"@grafana/runtime@npm:12.3.1, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
version: 0.0.0-use.local
resolution: "@grafana/runtime@workspace:packages/grafana-runtime"
dependencies:
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@openfeature/core": "npm:^1.9.0"
"@openfeature/ofrep-web-provider": "npm:^0.3.3"
"@openfeature/web-sdk": "npm:^1.6.1"
@@ -3627,7 +3627,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/schema@npm:12.3.0-pre, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
"@grafana/schema@npm:12.3.1, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
version: 0.0.0-use.local
resolution: "@grafana/schema@workspace:packages/grafana-schema"
dependencies:
@@ -3644,17 +3644,17 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/sql@npm:12.3.0-pre, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
"@grafana/sql@npm:12.3.1, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
version: 0.0.0-use.local
resolution: "@grafana/sql@workspace:packages/grafana-sql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/i18n": "npm:12.3.1"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.3.0-pre"
"@grafana/ui": "npm:12.3.0-pre"
"@grafana/runtime": "npm:12.3.1"
"@grafana/ui": "npm:12.3.1"
"@react-awesome-query-builder/ui": "npm:6.6.15"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:^6.1.2"
@@ -3716,7 +3716,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/ui@npm:12.3.0-pre, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
"@grafana/ui@npm:12.3.1, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
version: 0.0.0-use.local
resolution: "@grafana/ui@workspace:packages/grafana-ui"
dependencies:
@@ -3726,11 +3726,11 @@ __metadata:
"@emotion/serialize": "npm:1.3.3"
"@faker-js/faker": "npm:^9.0.0"
"@floating-ui/react": "npm:0.27.16"
"@grafana/data": "npm:12.3.0-pre"
"@grafana/e2e-selectors": "npm:12.3.0-pre"
"@grafana/data": "npm:12.3.1"
"@grafana/e2e-selectors": "npm:12.3.1"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/i18n": "npm:12.3.0-pre"
"@grafana/schema": "npm:12.3.0-pre"
"@grafana/i18n": "npm:12.3.1"
"@grafana/schema": "npm:12.3.1"
"@hello-pangea/dnd": "npm:18.0.1"
"@monaco-editor/react": "npm:4.7.0"
"@popperjs/core": "npm:2.11.8"