Charts Update

Charts update

This week we shipped a lot of updates to charts and visualization — a new way to lay a chart out, a rebuilt pie, richer table formatting, and more control over how values look. Most of it lives in the chart settings panel you already use.

Small multiples splits a bar, line, area, or scatter chart into a grid of panels, one per value of a dimension you pick under Split by. Panels can share an axis scale or get their own, so you can compare magnitude or shape.

Pie charts got a rebuild. A slice can now show what percent of the total it is, right on its label. A shape control turns any pie into a donut. And a query with two or more dimensions draws as concentric rings — one ring per dimension, each broken down by the ring inside it — where before every dimension past the first was silently dropped.

On the Table chart, a dimension's links now open straight from the cell value instead of the context menu. Conditional formatting can mark a cell with an arrow, dash, or dot in its own color, so you can see at a glance which rows beat their target. And cell values can be aligned to the top, middle, or bottom of a row, which starts to matter once rows wrap onto more than one line.

KPI blocks can be styled one block at a time — value color, background, and font size. And a reference line can carry a text label, so a target line says what it is on the chart itself.

Other improvements and fixes:

Workbooks

  • You can now filter a time member by calendar period — in the month, in the quarter, in the year, and their negations — on the report bar, the dashboard filter widget, and embedded Dashboards
  • Period-over-period comparison can now anchor to a time dimension the query only filters on, so a report with no time column still compares against the preceding window
  • An Explore chat thread now has its own URL, so you can link someone straight to the conversation
  • The Generated SQL tab now lists the queries for every data source

Dashboards

  • Filters you change on a published Dashboard are now reflected in the URL, so a filtered view can be bookmarked or shared
  • You can now rename a dashboard theme from its menu
  • The dashboard slug is now shown next to the title in the builder
  • Fixed the freshness indicator being invisible on stylized Dashboards

Visualization

  • Fixed conditional-formatting colors reading inverted in dark theme
  • Fixed Table chart data bars not rendering on a numeric dimension
  • Fixed a pie chart failing to regroup when its slice dimension is removed
  • Fixed KPI change colors being ignored on published and embedded Dashboards, so a KPI already saved with them now renders the way it was configured
  • Fixed KPI HTML blocks keeping their light-mode colors in dark theme when the color comes from row data

Administration

  • Added a workspace-wide time zone policy under Admin → Settings, with a personal override in Preferences, so time dimensions bucket and relative filters resolve in the zone your readers actually work in (off by default)
  • The deployment you are in is now marked in the deployment switcher
  • You can now filter the user groups list to system groups
  • You can now edit or delete the demo data source
  • Fixed view-only users being offered workbook edit access they cannot use

AI

  • Analytics Chat now answers in your workspace time zone rather than always in UTC, so "orders today" stops straddling the wrong midnight
  • Added GPT-5.6 Sol and Terra, and fixed Cube-hosted GPT selections other than GPT-4o falling back to GPT-5
  • Added MCP tools for branch diffs, pre-aggregation build status, and deployment environment variables
  • Cube Agent Skills now apply inside the MCP chat tool
  • Agent spaces are now scoped to a deployment, so dev, staging, and production can each declare the same space name and get their own
  • Asking a data question now saves its result into the empty tab it was asked from
  • The agent now duplicates a view-only Dashboard before editing it, instead of failing

Embed

  • You can now set a time zone per embed instance with ?timezone=, at runtime from the host page, or as an account-wide default under Embed → Settings
  • A crashing widget no longer takes down the whole Dashboard, and the AI widget no longer errors on embedded surfaces
  • Fixed the embedded Creator Mode app reloading when a plan check ran

Integrations

  • Compact numbers now reach the sheet as numbers rather than text in the Google Sheets and Excel add-ons
  • Fixed Google Sheets converting text values into dates

Modeling

  • You can now create a branch from an explicitly chosen source, including a branch that only exists on your remote
  • Fixed Review changes in a dbt sync email opening an empty diff instead of the branch changes
  • Fixed two measures on the same cube being refused when they need different join paths
  • Fixed a multi-stage measure with its own filter returning extra rows that carried null values for every other measure
  • Fixed FILTER_PARAMS failing to resolve member references inside a column callback
  • Fixed ungrouped queries being answered from a pre-aggregation that collapses rows

API

  • cubeSql() and cubeSqlStream() in @cubejs-client/core now accept a timezone option
  • Fixed the last-refresh time going missing from SQL API responses that use post-processing or SQL pushdown