github opensearch-project/OpenSearch-Dashboards 3.9.0

5 hours ago

Version 3.9.0 Release Notes

Compatible with OpenSearch and OpenSearch Dashboards version 3.9.0

Features

  • Add confirmation dialog before saving a generated dashboard (#12741)
  • Add human-in-the-loop support to the chat plugin, allowing the agent to pause and ask the user a question (#12661)
  • Add text-to-dashboard and create-chart-with-transformation tools to the chat assistant (#12501)
  • Add Text2Vis tool enabling AI-driven visualization generation from natural language in chat (#12595)
  • Integrate Switch Data Source feature with Human-in-the-Loop for cross-data-source chat sessions (#12662)
  • Add command palette with Cmd+K / Ctrl+K shortcut integrating global search, pages, saved assets, and actions (#12652)
  • Add collapsible sections to dashboards with drag-and-drop reordering, behind an opt-in feature flag (#12685)
  • Add Text variable type and "Allow custom values" toggle for Dashboard Variables (#12567)
  • Add PromQL query type support for Dashboard Variables with label names, label values, metrics, and series query modes (#12627)
  • Add regex capture group support for extracting variable values and labels in Dashboard Variables (#12390)
  • Add shared crosshair synchronization across time-series panels on dashboards (#12616)
  • Add panel title and description settings to Explore visualizations with dashboard variable interpolation (#12617)
  • Add Analyze panel in Explore Logs to display PPL query execution plans with waterfall graph (#12399)
  • Add Patterns tab support for SQL in Explore (#12576)
  • Add histogram support for SQL queries in Explore (#12623)
  • Add scatter chart rule for X + Y + size dimensions in Explore visualizations (#12483)
  • Add stack mode for bar and area charts in Explore visualizations (#12589)
  • Add unit formatting, min/max axis bounds, decimal precision, and unit suffix to Explore charts (#12625)
  • Add step configuration, min step, series label, and PromQL interval macro support for Prometheus in Explore Metrics (#12644)
  • Add step configuration and series label support for Prometheus in the visualization editor (#12684)
  • Add AI-assisted fix path for PPL lint diagnostics via chat with Apply/Dismiss card (#12465)
  • Add context-fed PPL lint rules, hover card improvements, and headless lint API for cross-repo CI (#12464)
  • Add invalid-capture-group-name and explain-backed pushdown PPL lint rules (#12411)
  • Add index-pattern metadata PPL lint rules for aggregation-on-text, flat-object subfield, and type-mismatch-numeric (#12394)
  • Add AI assistant integration in Discover with apply-query tools, error help buttons, and enhanced T2PPL handling (#12541)
  • Add Vega input signal value restoration on dashboard refresh (#12458)
  • Add wizard to migrate unassigned saved objects into a workspace (#12502)
  • Allow custom ID to be specified on workspace creation (#11631)

Enhancements

  • Add hint for hidden Optimized Engine data sources in legacy visualization data source selectors (#12470)
  • Add usage telemetry for Dashboard Variables including load, create, update, delete, and value change events (#12592)
  • Bring visualization panel context to Ask AI action inside dashboards (#12590)
  • Rename "OpenSearch SQL" to "SQL" in the language picker for consistency with DQL, Lucene, and PPL (#12713)
  • Add column resizing with a dedicated drag handle in table visualizations (#12534)
  • Surface PPL partial-result warnings in Explore with an opt-in application setting (#12481)
  • Update Analyze panel to reflect backend changes with waterfall timing, cancellation, and recommendation support (#12600)
  • Improve Explore query builder candidate ordering and add builder-only workspace setting (#12524)
  • Rebuild the Explore query language picker as a two-column source and language panel (#12659)
  • Polish trace details with Gantt waterfall, timeline zoom slider, filter bar, and per-trace service map (#12636)
  • Move Explore header actions next to the time picker, fill Refresh button, and fix wrapped-header overflow (#12645)
  • Load dataset selector list from lightweight metadata to improve dropdown performance (#12634)
  • Separate and expose a generic reusable query panel editor from Explore (#11753)
  • Add default descending sort by timestamp for PPL queries in Discover (#12546)
  • Suppress chat input auto-focus when the chat window auto-opens during bootstrap (#12591)
  • Show user message immediately with optimistic rendering in chat (#12485)
  • Add telemetry events for chat tool execution and window visibility (#12508)
  • Auto-focus chat input and record telemetry on suggestion click (#12593)
  • Add open-state data-test-subj to the chat header button for functional test observability (#12688)
  • Standardise copy icon and add tooltip to the recent queries copy button (#12675)
  • Enhance maximum workspace listing with pagination support and maximum_workspaces config integration (#12498)
  • Support cross-chat-window PPL lint fix apply and expose configured agent IDs (#12643)
  • Make Discover AI chat page context language-aware for filters and time range (#12596)
  • Update prompt for the PPL query execution chat tool (#12537)

Bug Fixes

  • Fix Discover Traces time field picker offering invalid options and defaulting to the wrong field for OpenTelemetry indices (#12510)
  • Fix backward-compatible legend title selector for charts 71 upgrade (#12462)
  • Fix PromQL dataset not selectable in Dashboard Variables flyout (#12513)
  • Fix Vega MDS client wrapper failing on specs with no data field or nested composition structures (#12533)
  • Fix agent traces trace map latency bar always showing 50% regardless of actual duration (#12194)
  • Fix branding applicationTitle not applied to the overview page (#11555)
  • Fix CSP modifications dropping nonce, lowercasing case-sensitive values, and mishandling semicolons (#12440)
  • Align global banner sidecar offset with the shared CSS variable mechanism used by flyouts and toasts (#12588)
  • Restore variable autocomplete in the visualization query editor (#12521)
  • Flatten DQL parser OR/AND clauses to prevent deeply nested bool queries (#12505)
  • Fix invisible histogram tooltip value text in light mode after charts upgrade (#12674)
  • Stop discover:sampleSize from truncating PPL aggregation results (#12511)
  • Map the permissions and workspaces fields on multi-tenancy tenant index during migration (#12578)
  • Preserve encrypted credentials when editing data sources (#12437)
  • Fix N+1 saved-object lookups on Explore Traces/Logs page load reducing serial network time (#12630)
  • Harden Traces grid links and trace query error handling for incomplete field metadata (#12686)
  • Fix span-details flyout leaking its query into the main editor and remove timestamp value filter (#12648)
  • Stop the Patterns tab from running the raw user query after a page reload (#12573)
  • Skip query execution for a blank SQL query when selecting a dataset (#12664)
  • Fix Statistics tab hit counter mixing buckets and documents for PPL aggregation queries (#12568)
  • Shift overlay components (flyouts, toasts, bottom bar) clear of a docked chat sidecar (#12344)
  • Fix apply_query_action returning 0 resultsCount when hits is 0 but rows are not empty (#12726)
  • Show metric graph with the full selected time range on the x-axis by default (#12608)
  • Guard PanelDataService.getInstance() against uninitialized state when contextProvider is disabled (#12597)
  • Fix preserved pie chart colors and legend visibility resetting on dashboard remount (#11832)
  • Show split series names in metric chart tiles instead of the aggregation name (#12471)
  • Cap horizontal Vislib legend height to prevent chart area compression with many field values (#12566)
  • Fix clipped boundary bars when showing the full time range on bar charts (#12711)
  • Fix histogram bucket precision for integer-valued data and floating-point display artifacts (#12560)
  • Normalize grouped unit conversion to stay within the same measurement system (#12631)
  • Preserve opposite dashboard and visualization filters when deduplicating by negation state (#12612)
  • Preserve threshold input focus during sorting by assigning stable row identities (#12725)
  • Keep the style panel mounted while loading to preserve accordion state across updates (#12476)
  • Fix permission match logic in translatePermissionsToRole to check all principals and support wildcards (#12624)
  • Fix index dataset handling in visualization editors to preserve data source and exclude PPL-only datasets from legacy picker (#12737)
  • Integrate with dynamic config service for maximum workspaces to prevent silent truncation (#12479)
  • Remove DQL and Lucene field capability override that made unsupported fields appear filterable (#12444)
  • Fix TSVB date histogram tooltips displaying raw epoch milliseconds instead of formatted dates (#12678)
  • Use correct dataset for Prometheus data connections in variable query panel autocomplete (#12527)
  • Improve horizontal bar gauge layout with full series labels and aligned value columns (#12704)
  • Improve legend selection interactions with click-to-focus and Ctrl/Cmd-click multi-selection (#12703)
  • Hide single-item legends in Explore visualizations and tighten split metric panel height (#12540)
  • Keep Prometheus series distinct by metric name in Explore Metrics (#12682)
  • Gate /api/chat/proxy on workspace access to prevent unauthorized workspace ID forwarding (#12705)
  • Fix global search asset search to use trailing wildcard for prefix matching (#12750)
  • Support SQL language in the Explore visualization editor (#12628)
  • Scope PPL lint AI-fix tools to an active fix flow to prevent stale tool registration (#12650)
  • Centralize PPL lint release rule behavior, fix hover card links, and add progressive severity rendering (#12526)

Infrastructure

  • Align S3 Cypress and Lighthouse CI with OpenSearch 3.4.0 (#12413)
  • Disable security plugin via config in S3 Cypress workflow instead of removing it (#12603)
  • Fix flaky telemetry_service test by mocking global fetch (#12512)
  • Exercise double-send guard in chat window validation test (#12602)
  • Rename Cypress test file for dashboard variables (#12531)

Documentation

  • Document PPL lint architecture, activation, rule catalog, and maintenance procedures (#12525)
  • Regenerate _sidebar.md to include 3.8.0 release notes (#12500)
  • Add RyanL1997 as a maintainer (#12736)

Maintenance

  • Bump @opensearch-project/oui from 1.24.1 to 1.24.2 (#12564)
  • Upgrade @faker-js/faker to 10.6.0, browserslist to 4.28.8, @hono/node-server to 1.19.17 (#12614)
  • Upgrade axios to 1.18.1, brace-expansion to 1.1.16, fast-uri to 3.1.4 (#12432)
  • Upgrade colord to 2.10.0 to address CVE-2026-85062 (#12723)
  • Upgrade dompurify to 3.4.12 and adm-zip to 0.6.0 (#12477)
  • Upgrade fast-uri to 3.1.6 (#12654)
  • Upgrade js-yaml to 4.3.1, dompurify to 3.4.13, tar to 7.5.22, less to 4.8.1, postcss to 8.5.23 (#12561)
  • Upgrade qs to 6.16.0, joi to 18.2.8, hono to 4.13.5, js-yaml to 4.3.2 (#12698)
  • Upgrade postcss to 8.5.23 to address CVE-2026-69153 (#12528)
  • Upgrade brace-expansion to 1.1.18 and 2.1.4 to fix CVE-2026-14257 (#12507)
  • Upgrade peg.js to peggy for actively maintained parser generator (#12544)
  • Fix version increment workflow to use fork and bump version to 3.9.0 (#12547)
  • Namespace chat_tool_executed telemetry fields and add duration metric (#12656)
  • Remove Explore visualization editor workspace gating so it is available in all workspace types (#12637)

Refactoring

  • Refactor Explore visualization legend generation with typed legend items and consistent split-chart colors (#12509)
  • Refactor gauge chart labels to render with React instead of ECharts custom series (#12555)
  • Deduplicate query error handling between data and discover plugins (#12604)
  • Drive Explore tab visibility off supportedLanguages instead of hardcoded language checks (#12575)

Don't miss a new OpenSearch-Dashboards release

NewReleases is sending notifications on new releases.