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+Kshortcut 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-subjto 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_workspacesconfig 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
applicationTitlenot 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:sampleSizefrom truncating PPL aggregation results (#12511) - Map the
permissionsandworkspacesfields 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_actionreturning 0resultsCountwhen 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
translatePermissionsToRoleto 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/proxyon 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_servicetest 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.mdto include 3.8.0 release notes (#12500) - Add RyanL1997 as a maintainer (#12736)
Maintenance
- Bump
@opensearch-project/ouifrom 1.24.1 to 1.24.2 (#12564) - Upgrade
@faker-js/fakerto 10.6.0,browserslistto 4.28.8,@hono/node-serverto 1.19.17 (#12614) - Upgrade
axiosto 1.18.1,brace-expansionto 1.1.16,fast-urito 3.1.4 (#12432) - Upgrade
colordto 2.10.0 to address CVE-2026-85062 (#12723) - Upgrade
dompurifyto 3.4.12 andadm-zipto 0.6.0 (#12477) - Upgrade
fast-urito 3.1.6 (#12654) - Upgrade
js-yamlto 4.3.1,dompurifyto 3.4.13,tarto 7.5.22,lessto 4.8.1,postcssto 8.5.23 (#12561) - Upgrade
qsto 6.16.0,joito 18.2.8,honoto 4.13.5,js-yamlto 4.3.2 (#12698) - Upgrade
postcssto 8.5.23 to address CVE-2026-69153 (#12528) - Upgrade
brace-expansionto 1.1.18 and 2.1.4 to fix CVE-2026-14257 (#12507) - Upgrade
peg.jstopeggyfor actively maintained parser generator (#12544) - Fix version increment workflow to use fork and bump version to 3.9.0 (#12547)
- Namespace
chat_tool_executedtelemetry 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
supportedLanguagesinstead of hardcoded language checks (#12575)