* implement field selector list with search
* dont modify input array when filtering fields
filter metadata.namespace field and unsupported operators (!=)
update tests
* put list request in table test struct
* address the nits
* fix linter error - prealloc
* skip rows we dont have permission to Read()
* makes folder title a selectable field and fixes cyclic import with selectable field utils
* make gofmt
* makes folder title a selectable field and fixes cyclic import with selectable field utils
* make gofmt
* include metadata.name and metadata.namespace as default selectable fields in BuildGetAttrsFn() for selectable fields
This PR introduces multiple named notification policies to Grafana Alerting. In addition to the existing single "user-defined" routing tree, notification policies can now be created, managed, selected by alert rules, and provisioned individually.
The feature is gated behind an experimental feature flag alertingMultiplePolicies. When the flag is disabled, the system behaves exactly as before and continues to expose a single legacy routing tree in both frontend and backend APIs.
* made initial updates
* added missing info
* cleaned up some language
* minor edits
* broke into topic docs, added examples to alerting doc
* added examples to the annotations doc
* added missing auth settings
* added a next steps to the config doc
* updated query editor
* updated template variables doc
* final edits
* some cleanup and final edits
* ran prettier
* fixed linter error - datacenter
* Table: Reorganize shared code to make it possible for LogsTable to omit some options (#117201)
---------
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* Extract embedded server provider
* Use openfga client for connecting to server
* refactor server init
* fix tests
* Don't run http server by default
* refactor HTTP server start
* refactor tracer init
* refactor tests
* release resources on server stop
* Fix failing user migration test (translate BIGINT UNSIGNED from openfga tables)
* release resources on server stop
* format
* Fix service shut down
* only close if zanzana enabled
* do not init zanzana server if no feature flag provided
* fix(unified): populate key_path during bulkimport
Rows in resource_history were being created with empty key_path values
during bulkimport (migration of dashboards/folders). This broke
functionality that depends on key_path for indexing/searching.
The fix adds a buildKeyPath helper function that constructs the key_path
in the same format as normal write operations, and updates processBulkWithTx
to set the KeyPath field when inserting into resource_history.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test(unified): add verification for key_path population after bulkimport
Adds verifyKeyPathPopulated function to migration integration tests
that verifies no rows in resource_history have empty key_path values
after bulkimport completes.
Also changes actionStr fallback from "unknown" to the numeric action
value for better debugging.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Provisioning: Replace manual GitHub app connection refresh with real-time watch
- Use useConnectionStatus hook with k8s watch for real-time connection status updates
- Remove manual sync/refresh button from connection dropdown
- Add creating state feedback to create connection button
- Only fetch repos for ready connections to avoid API errors
* Use RTK Query loading state instead of manual useState
* i18n
* Provisioning: Always show tabs with smart default selection
- Remove early return that hides tabs when no repositories exist
- Fetch connections at HomePage level to determine smart default tab
- Default to getting-started tab when both repos and connections are empty
- Add empty states to RepositoryList when no repositories exist
- Hide filter input in ConnectionList when no connections exist
- Hide action button when on getting-started tab
- Update available repositories heading text for clarity
* Use consistent not-found variant for all empty states
* Remove comments from defaultTab logic
* Pass connections as prop to ConnectionsTabContent instead of fetching twice
* Remove redundant isEmpty check in RepositoryList EmptyState
* Fix typecheck: use unknown type for error prop
* Create settings service
* Apply request config overrides in middleware
* Add tlsSkipVerify setting for settings service client
* Abstract out ini interactions, add debug logs
* Use baggage header instead of Grafana-Namespace
* Exclude defaults.ini settings from the Settings Service
* Remove baseRequestConfig and instead create the structure new in each middleware call
What is this feature?
This PR introduce refactoring for role picker for teams and users. It uses RTK Query.
The related task: grafana/identity-access-team#1821
The previous PR with related logic: #113783
Why do we need this feature?
This refactoring is a cleaner way for handing refetching.
* Dashboard: Round x/y/w/h when importing a dashboard with floats
* Apply suggestion from @bfmatei
* Apply suggestion from @bfmatei
* Go once through components (#117265)
---------
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Combobox: Make custom value description customizable via prop
Add a new optional `customValueDescription` prop to Combobox and MultiCombobox components that allows customizing the description text shown for custom values. The existing "Use custom value" translation remains as the default.
* Provisioning: Hide unavailable sync options that are disabled by configuration
Remove the "Unavailable options" section from the Git Sync bootstrap step. When sync options are disabled by provisioning configuration (e.g., instance sync restricted to specific targets), showing them in a disabled state is confusing to users. These options should be hidden entirely since they cannot be enabled through the UI.
- Remove disabled options rendering from BootstrapStep
- Remove unused disabledOptions variable and Icon import
- Update test to verify disabled options are not rendered
* chore: update i18n strings (remove unused unavailable-options translation)
* daggerbuild: Cache builders
* cache-builders in e2e build
* cache-builders on non-forks
* dont attempt to login to gar or dockerhub in forks; it won't work anyways
* use npx install playwright
* Exclude dist & node_modules from mount
* remove yarn.go; it's not used
* use correct registry for cache builds
* rebuild cached artifacts every 2 weeks
* Use grafanalabs-dev/docker-grafana-dev
* make lint-go
* Fix bad conflict resolution
* fix ubuntu and alpine base
Update dashboard restoration docs to reflect:
- Feature moved from private to public preview
- Users can restore dashboards they deleted
- Admins can restore any dashboard