Commit Graph
9522 Commits
Author SHA1 Message Date
Levente Balogh 5a8a730cfe UI Extensions: Add openInNewTab property to link extensions (#114831)
feat: add `openInNewTab` property for link extensions
2025-12-08 12:09:56 +01:00
Ashley Harrison 310662a4d0 QueryEditor: Expose aria-labelledby prop, reenable storybook a11y tests (#114925)
* expose aria-label prop, reenable storybook a11y tests

* extract translations

* expose aria-labelledby instead
2025-12-08 10:27:40 +00:00
Torkel Ödegaard 8bf3ac9710 SelectBase: Use standard portal container (#114844)
* SelectBase: Use standard portal container

* Fixed positioning issue
2025-12-08 10:13:56 +01:00
Marc M. 0adb2461e9 Dashboards: Improve custom variable editor and undo/redo (#114559) 2025-12-05 16:48:34 +01:00
Ryan McKinley 75eb820c73 Folders: update manifest (avoid useoldmanifestkinds) (#114827) 2025-12-05 15:01:11 +03:00
Torkel Ödegaard c74af430a6 Gauge: Only show spotlight in dark themes (#114524)
* Gauge: Only show spotlight in dark themes

* Update
2025-12-05 08:48:39 +01:00
Hugo Häggmark b3648f0823 chore: introduce toggle for decoupling plugins from bootdata (#114890)
chore: toggle for decoupling plugins from bootdata
2025-12-05 08:09:41 +01:00
Galen Kistler 10ad94af38 TableRT: fix bug preventing users from selecting filter operators (#114860)
* fix: bug preventing users from selecting filter operators
2025-12-04 17:02:54 -06:00
ismail simsek 0291f6d1e7 Postgresql: Fix variable interpolation logic when the variable has multiple values (#114058)
* fix the variable interpolation

* add jest config to grafana-sql

* fix broken tests

* add variable interpolation tests

* lint

* apply fix only to postresql datasource
2025-12-04 20:58:20 +01:00
Ashley Harrison 83d6eab66a Chore: Upgrade rc- libs (#114788)
* upgrade rc-drawer

* upgrade rc-slider

* update rc-tooltip

* update rc-picker

* update rc-tree

* upgrade rc-cascader

* for some reason this works

* Revert "for some reason this works"

This reverts commit 4f8cbc5a76.

* force react to 18

* add MessageChannel mock

* Revert "add MessageChannel mock"

This reverts commit 93c11d4060.

* Revert "force react to 18"

This reverts commit 6433204d4b.

* Revert "upgrade rc-cascader"

This reverts commit 16c36cd12e.
2025-12-04 16:25:22 +00:00
Ashley Harrison d7d0c104ab React 19: non-breaking type and test changes (#114760)
non-breaking type and test changes needed for react 19
2025-12-04 16:19:25 +00:00
Levente Balogh 32a58c56ed Dashboard Controls: Add UI for displaying under menu (#113517)
* feat: add options to render under the controls menu

* fix: filter out hidden annotation layers from the dashboard-controls menu

* fix: adjust spacing between annotation controls in the dashboard-controls menu

* fix: e2e test for variables

* feat: move the menu button next to the variables

* fix: remove duplicate link controls

* fix: show dashboard controls when the dashboard is not saved
2025-12-04 16:22:41 +01:00
Andreas Christou ff4228bd58 Azure: Improved column handling in logs query builder (#114667)
* Add parameter type field

* Use parameterType to filter columns for aggregation funcs

* Add tests for aggregate components
2025-12-04 12:48:55 +00:00
Gareth dc8bb66a45 OpenTSDB: Move health check to the backend (#114082)
* add feature toggle

* move health check to backend

* add tests
2025-12-04 17:11:33 +09:00
Liza Detrick c847f1fa4b Logs in Explore: Persist table sorting in the url (#114060) 2025-12-03 08:03:36 -08:00
Torkel Ödegaard c9fe5c3669 Page: Background prop to support canvas background for standard layout pages (#111174)
* Page canvas

* Working

* remove isOnCanvas prop on card, leave for different PR

* Update

* remove leftover

* Remvoe Card changes

* Fix

* Update
2025-12-03 16:10:25 +01:00
Ryan McKinley 612af5ef55 Search: improve openapi operation ids (#114754) 2025-12-03 10:28:59 +00:00
Dominik ProkopandHaris Rozajac bb787a2637 Schema v2: Move annotation mappings out of legacyOptions (#114721)
* Add mappings property to v2(alpha/beta)1

* Mappings convetions

* OpenAPI spec

* fe annotaations mapping

* Update snapshots

* v2->v1 conversion

* fix tests

---------

Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
2025-12-03 10:19:21 +01:00
Paul MarbachandTorkel Ödegaard 021e0c6da0 Suggestions: improve styling for new version (#114381)
* Suggestions: hashes on suggestions, update logic to select first suggestion

* fix types

* Suggestions: New UI style updates

* update some styles

* getting styles just right

* remove grouping when not on flag

* adjust minimum width for sidebar

* CI cleanups

* updates from ad hoc review

* add loading and error states to suggestions

* remove unused import

* update header ui for panel editor

* restore back button to vizpicker

* fix e2e test

* fix e2e

* add i18n update

* use new util for setVisualization operation

* Apply suggestions from code review

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>

* comments from review

* updates from review

---------

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2025-12-02 11:36:46 -08:00
Ezequiel Victorero 227b596a46 Snapshots: Migrate API as dashboards k8s subresource (#113552) 2025-12-02 16:26:45 -03:00
Liza DetrickandAustin Pond a112c6c169 Logs Explore: logsdrilldown authorizer permissions, rtkq (#114320)
* Logs Explore: logsdrilldown app platform authorizer permissions, rtkq
---------

Co-authored-by: Austin Pond <austin.pond@grafana.com>
2025-12-02 09:07:36 -08:00
Tom RatcliffeandThomas Casteleyn 8ff75c2177 Docs: Cleanup enterprise tag usage (#114694)
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2025-12-02 16:15:16 +00:00
Steve Simpson c8ac64c5cc Alerting: Frontend codegen for historian.alerting app (#114692) 2025-12-02 14:29:10 +01:00
Levente Balogh 0e6166a753 Dashboard Controls: Fix schema transformation for link placement (#114630)
* fix: add missing transformation for scenes -> save model v2

* fix: link placement transformation on the backend between schemas

* fix: update the openapi spec in the tests

* tes: add tests for `transformSceneToSaveModelSchemaV2`

* tests: extend conversion_test.go to cover link placements
2025-12-02 13:12:01 +00:00
Torkel Ödegaard 3abe3fa730 Explore: Remove use of AppChrome navbar (#114680)
* Explore: Remove use of AppChrome navbar

* fix lint

* Active state
2025-12-02 12:29:30 +00:00
Marc M. e8f1eb1ee8 Sidebar: Fix resizing (#114597) 2025-12-02 11:51:26 +01:00
Paul Marbach e36ea78771 Suggestions: Deprecate the old API and put external suggestions behind a flag (#114127)
* Suggestions: Deprecate previous API, enable external plugin suggestions behind flag

* fix types for deprecated builder

* restore some support for cloud-onboarding

* add support for cloud-onboarding usage, add test to ensure it keeps working

* refactor to not hardcode on 'core:'

* remove unused import
2025-12-01 23:22:22 +00:00
Ashley Harrison 7f1ac6188a PanelChrome: Wrapping div needs height: 100% as well (#114655)
wrapping div needs height: 100% as well
2025-12-01 17:39:15 +00:00
Torkel Ödegaard 0275939762 Sidebar: Persist state to local storage (#114627)
* fix merge issues

* unsaved file
2025-12-01 12:54:18 +01:00
Ashley Harrison 2da171595a FieldColor: Add accessible color palettes (#114424)
* add viridis and others, allow passing interpolator directly to FieldColorSchemeMode

* fix bug

* be more defensive when getting the fieldcolor

* backend changes

* add d3-scale-chromatic to list of esModules
2025-12-01 09:51:11 +00:00
Torkel Ödegaard b5eac7baad Sidebar: Clickout side to close pane (#114523)
* Sidebar: Clickout side to close pane

* fixes

* fixing tests

* fix

* ignore clicks in portals

* fix e2e

* fix test

* Fix click away issues

* add missing file
2025-11-28 15:07:15 +01:00
Alex Khomenko ce72dc6224 API clients: Remove duplicate config entries (#114569) 2025-11-28 15:41:19 +02:00
Levente BaloghandIvan Ortega 930f7ce489 Dashboards: Cover the Switch variable in schema transformations - part 2. (#114549)
* feat: add v2alpha_1 conversion for the switch variable

* chore: gofmt fixes

* chore: update comments in tests

* chore: fix gofmt

* Update specs

* tests: update the v2alpha1 openapi snapshot

---------

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
2025-11-28 14:21:33 +01:00
d3d294c99e Dashboards: Per panel GroupBy action (#113445)
* wip per panel group by

* wip groupBy per panel

* wip groupBy per panel

* groupBy per panel action tests

* fix

* fix

* fix

* fix

* CR mods

* switch to dropdown

* adjust apply

* optimise action logic to avoid unnecessary triggers

* canary scenes

* wip

(cherry picked from commit 51a00db93d0805f481a9e48213382468f1eb2986)

* optimise action logic to avoid unnecessary triggers

(cherry picked from commit c4de2dfff8)

* refactor

* refactor

* memoize values/ refactor

* refactor

* refactor components - do not make async call unless queries/groupByOptions change

* canary scenes

* fix test

* Optimise handlers

* Reset options if they are not applied

* refactor subscriptions

* refactor

* scenes bump

* fixes

* properly deactivate header actions on panel edit

* list

* refactor showing menu using css, remove header deactivation code from panel-edit

* cleanup

* cleanup

* cleanup + action redesign

* i18n

* pr mods

* translations

* fix

* fix

* fix design

---------

Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2025-11-28 15:03:11 +02:00
Tom Ratcliffe 3c76e9ee72 Teams: Refactor most functionality to use hooks (#113713) 2025-11-28 12:42:36 +00:00
Ashley Harrison 11a27ab870 Chore: Convert more class components to functional (#114311)
* refactor ColorPicker to functional components

* don't need memo for these components

* convert CustomHeadersSettings to a functional component

* ignore Legacy form components

* ignore legacy forms in some lint rules

* convert JSONFormatter to a functional component

* convert WrapperWithState to a functional component

* convert StatsPicker to a functional component

* convert PopoverController to a functional component

* convert UnitPicker to a functional component

* fix linting

* fix flaky dashboardcontrolsmenu test
2025-11-28 12:00:31 +00:00
Ashley Harrison 49175bb2cb Chore: Run some React 19 codemods (#114575)
running react 19 codemods
2025-11-28 11:27:48 +00:00
Jesse David Peterson 62d83a1ba9 Histogram: Fix runaway bucket densification with extremely sparse + large datasets (#114557)
* test(histogram): failing test for runaway densification

* fix(histogram): maximum bucket densification avoids OOM error

* fix(histogram): handle multiple densified buckets
2025-11-27 19:50:47 +00:00
Steve Simpson 7b8191ba42 Alerting: Add kubernetesAlertingHistorian feature toggle. (#114551) 2025-11-27 17:14:16 +01:00
Alan Martin ba58506ffd Notifications: Prevent triggering duplicate notifications (#114497)
* fix(notifications): prevent event listener re-registration on route changes

* refactor(notifications): rename alert handling functions for clarity

* refactor(notifications): simplify alert handling by using spread operator for payloads

* refactor(events): address feedback - update LegacyEmitter and LegacyEventHandler interfaces for improved type safety

* fix(events): ensure event handlers handle undefined events gracefully in tests

* test(notifications): add tests for event listener registration and cleanup in AppNotificationList
2025-11-27 16:12:26 +00:00
Marc M. 8daa228083 MetricFindValue: add missing "properties" field to the TS interface (#114486) 2025-11-27 16:38:42 +01:00
Daniele Stefano Ferru 8e4be891c5 Provisioning: add URL and Path in setting response (#114534)
* Provisioning: add URL and Path in setting response

* linting

* marking fields as non-required
2025-11-27 16:06:03 +01:00
763067f8e1 Dashboard Schema V2: Force v2 when dashboardNewLayouts or v2DashboardAPI are enabled (#113548)
* SchemaV2: Convertion from v1beta1 to v2beta1

* Compare backend-frontend v1 convertion

* Compare backend-frontend v1 convertion

* Fix fe be diff

* Resolve DS issues

* Fix ds inconsistecnies

* fix legacy string value issues

* fix ds test

* fix layout issue

* update test

* Fix tests and issue with defaultConfig

* Update output

* Fix viz config convertion

* wip

* Fix v1 to v2 dashboard transformation differences

Major fixes implemented:
- Backend function names in conversion.go
- Backend group field logic for queries, annotations, and vizConfig
- Backend datasource resolution with map-based lookup
- Backend timezone handling (empty string vs browser)
- Backend annotation processing (empty array vs default annotation)
- Backend default values (editable, liveNow)
- Backend variable processing (definition, defaultKeys, refresh, refId)
- Backend panel layout (y position calculations)
- Backend VizConfig (Kind and Group fields, default values)
- Frontend snapshot issue (annotations not processing)
- Frontend datasource references (only when original has valid datasource)

Test results:
- annotation-conversions: PASSING (0 differences)
- dashboard-properties: 3 expected architectural differences
- panel-conversions: Multiple expected architectural differences
- variable-conversions: 7 expected architectural differences

All remaining differences are expected architectural choices between
backend persistence optimization and frontend UI consumption optimization.

* fix issues with panel and annotation queries with no datasource

* definition and regex

* Use proper v1beta1 resource when testing

* remove misc file

* fix ds provider test

* fix def ds test in response transformer

* fix remaining ResponseTransformers test

* timesettings, variable refresh, editable, liveNow, definition

* fix transformSceneToSaveModelSchemaV2 test

* revert legacyRow changes

* fix go lint issues

* normalize y coordinates when serializing a row

* clean up

* update tests

* use GetStringValue from schemaversion

* fix go lint - cyclomatic complexity

* update open api snapshot

* add migrated dashboards

* fix default panel type when panel type is not provided

* revert dash link changes for now

* fix

* fix nested panel issue and default ref in v1

* apply defaults to nested panels too

* update snapshots

* fix issues with annotations

* matchers, showLegend, annotations

* when converting also don't process queries that have only a refId

* fix issues with text var

* fix dash links

* default to collapse: false when serializing

* fix: filter refId from variable query specs in backend migration

- Add buildDataQueryKindForVariable function to filter refId for variables
- Remove default refId "A" in transformSingleQuery
- Only include __legacyStringValue for non-empty string queries
- Remove refId addition in transformSaveModelSchemaV2ToScene.getDataQueryForVariable
- Handle undefined queries gracefully in frontend and backend
- Ensure backend matches frontend behavior for query variable serialization

* fix: default variable refresh to 'never' to match frontend behavior

Change backend default for missing refresh field from 'onDashboardLoad'
to 'never' to match frontend defaultVariableRefresh() schema default

* fix: only include iconColor in annotations when it exists

- Frontend: Use defaultAnnotationQuerySpec().iconColor as fallback to match schema defaults
- Backend: Only set iconColor if it exists in v1 input (not using GetStringValue)
- Ensures iconColor is only included when present in original dashboard

* fix: use schema defaults for annotation enable, hide, and iconColor

- Use defaultAnnotationQuerySpec() to get schema defaults instead of hardcoded values
- Default enable to false (schema default) to match frontend behavior
- Use schema default for iconColor and hide fields
- Ensures consistency with frontend which uses defaultAnnotationQuerySpec() defaults

* fix: set collapse for hidden-header rows to match first explicit row

- When panels appear before the first explicit row, the hidden-header row's
  collapse should match the first explicit row's collapsed value
- Matches frontend behavior where collapse: panel.collapsed uses the next
  row panel's collapsed value
- Ensures consistency between frontend and backend when converting rows layout

* fix: handle constant variables with missing query value

- Frontend: Fix bug where undefined value was converted to string 'undefined'
  - Now defaults to empty string when value is undefined: value ? String(value) : ''
- Backend: Match frontend fix - default to empty string for text/value when query is missing
- Ensures consistency when constant variable query is missing from v1 dashboard

* Fix interval variable handling when query is missing

- Extract intervals from options when query is missing/empty (matches backend behavior)
- Handle undefined/null query in getIntervalsFromQueryString
- Handle missing current object/value in getCurrentValueForOldIntervalModel
- Update interval variable refresh to use literal 'onTimeRangeChanged' in schema
- Use defaultIntervalVariableSpec() for interval variable serialization
- Backend: Generate query string from options when query is missing

* Fix corrupted dashboard with systemRef override

* don't resolve types for template variables in datasource refs on the backend

* fix annotation and ds issues

* fix range and special mappings

* fix datasource var pluginId and regex

* add __systemRef to schema

* update v15 migration annotation to have a ds type because v2 keeps track of if type is in the initial save model, and if it's not it removes it, but for frontendOuput we are running transformSaveModelToScene which will then assign the type

* add migration fields since the backend applies automigrations in collapsed rows

* filter out queries in ResponseTransformer that only have refId field

* lint

* v2: add default query if queries are empty to match v1 behavior

* fix single migration test

* tracking test should have a defined spec otherwise datasource is removed and won't be tracked

* initialize default with default ds ref

* wip

* Do not assign DS if ds group is empty

* cleanup

* revert change in setupTests.ts

* clean up TODO

* query with only refId should not expect to have a group

* refactor: extract v0alpha1 to v1beta1 conversion logic into atomic function

- Extract ConvertDashboard_V0_to_V1beta1 into v0alpha1_to_v1beta1.go
- Extract prepareV0ConversionContext and migrateV0Dashboard helper functions
- Standardize v0.go to match v1.go pattern with inline multi-step conversions
- Implement Convert_V0_to_V2alpha1 using atomic functions (v0->v1beta1->v2alpha1)
- Implement Convert_V0_to_V2beta1 using atomic functions (v0->v1beta1->v2alpha1->v2beta1)
- Remove non-atomic v0alpha1_to_v2alpha1.go file

* test: add version-specific test files for conversion error handling

- Extract v0 conversion tests into v0_test.go
- Extract v1 conversion tests into v1_test.go
- Add v2 conversion tests in v2_test.go
- Ensure all error handling paths in conversion functions are covered
- Add tests for Convert_V0_to_V2alpha1 and Convert_V0_to_V2beta1 error paths
- Add tests for Convert_V1beta1_to_V2alpha1 and Convert_V1beta1_to_V2beta1 error paths
- Add tests for Convert_V2alpha1_to_V2beta1 error handling

* Fix tests

* Fix linter

* Clean up

* feat(dashboard): Add automatic data loss detection for dashboard conversions

Implements comprehensive data loss detection for all dashboard API version conversions.

Components Tracked:
• Panels (visualization + library panels)
• Queries (data source queries, excludes row panel queries)
• Annotations
• Links
• Variables (template variables)

Features:
• Automatic detection via withConversionMetrics wrapper (zero code changes)
• Error type: 'conversion_data_loss_error'
• Logs: panelsLost, queriesLost, annotationsLost, linksLost, variablesLost

Bugs Found:
• Fixed critical bug: metrics.go was silently swallowing ALL errors (return nil → return err)

Testing:
• TestDataLossDetectionOnAllInputFiles - runs all conversions with detailed logging
• V2→V0/V1 downgrades write output for debugging then skip (not yet implemented)
• All tests passing

* Run dashboards on schema v2 E2Es

* reveret unintended changes

* cleanup

* Reset active manager correctly according to toggles config

* Fix new dashboard being serialized as v1

* Rename toggle

---------

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2025-11-27 15:52:42 +01:00
Marc M. eedb613a5e Dashboards: Don't store options when saving a dashboard with Query/Custom variables (#114540) 2025-11-27 15:41:38 +01:00
Levente Balogh 8e73cc2f70 Dashboards: Cover the Switch variable in schema transformations - part 1. (#114293)
fix: cover the switch variable when transforming betwen v1 and v2 schemas
2025-11-27 15:14:42 +01:00
Andreas Christou a455f9700d Azure: Enable resource picker updates (#114089)
* Default resource picker updates to true

* Update toggle docs
2025-11-26 21:07:24 +00:00
Jesse David Peterson 399370bc2c TimeRange: Avoid x-axis pan jump caused by data loading latency (#114496)
* fix(time-range): avoid x-axis pan jump caused by data loading latency

* refactor(time-range): use a more semantically meaningful names
2025-11-26 20:41:02 +00:00
Jesse David Peterson b08e7bc373 TimePicker: Show new shortcut for zoom out when experimental flag toggled on (#114506)
* fix(time-picker): show new shortcut for zoom out when flag toggled on

* chore(i18n): extract translations
2025-11-26 20:32:37 +00:00
Torkel Ödegaard d732bb2751 PanelChrome: Enable new panel padding by default (#114492) 2025-11-26 19:26:53 +01:00
Paul Marbach ebaccc781b Suggestions: Update all suggestions suppliers to be functions (#113986)
* Suggestions: Convert panels to use function supplier

* rework deaggregation

* BarGauge

* cleanup and make consistent the deaggregation in suggestions

* Candlestick

* Implement timeseries and clean up some things that can already be deleted

* spotted some typos in self-review

* restore PanelDataSummary deprecated fields, we wont delete till Grafana 13

* change deprecation message

* remove some unused imports

* run prettier

* update radialbar defaults logic

* update tests and logic to DRY up the reduceOptions a bit and more thoroughly test the output

* Trend: Improve suggestions

* updates from review

* add unique DataFrameType list to PanelDataSummary

* add histogram suggestions

* rework panelDataSummary to be a class, change some things

* further boil down PanelDataSummary

* Improve FlameGgraph suggestions

* geomap and other defaults

* reorder the single frame with string and number test
2025-11-26 08:30:38 -08:00