Skip to main content

Rill 0.89 - Inline Explore Dashboards, Dashboard Favorites, Conditional Formatting, Scheduled Canvas Reports and Spanish Localization

Β· 6 min read
note

⚑ Rill's BI-as-code powers fast dashboards, embedded analytics, and an agent-ready semantic layer β€” all running on top of the warehouses you already use.

πŸ‘‰ Get Started β€’ Join our Discord

release-0.89

🎨 Introducing Conditional Formatting for Pivot Tables​

Pivot tables in Explore and Canvas dashboards now support conditional formatting: define value-based rules to color cells by measure, including a "lower is better" option for reversed scales. Rules are saved as part of the dashboard state: they persist when you switch table types and reset when you change the underlying metrics view.

πŸ“¬ Schedule Delivery of Canvas Dashboards PDFs​

Canvas PDF exports can now be scheduled and delivered by email β€” a great way to send a weekly snapshot to stakeholders. Tab groups are included in the export.

⭐ Favorite and Sort Dashboards on the Home Page​

Mark dashboards as favorites on the project home page to keep the ones you use most at the top, alongside a new sort selector for the dashboard list. Favorites are user-based, so each member of a project curates their own list.

πŸ‡ͺπŸ‡Έ Rill Habla EspaΓ±ol - Announcing Spanish Localization (with More Languages on the Way)​

Rill is now available in Spanish, our first of dozens of languages we will be rolling out support for in the coming months. More than 1,700 user-facing strings across both Rill Cloud and Rill Developer have been translated, and a new language switcher lets you choose your locale.

πŸ” Securely Invite Users with Custom Attributes​

Custom user attributes can now be passed in and assigned at invite time, from either the UI or the CLI, for organization and project invites. Attributes are stored on the invite and applied to the membership once it is accepted, so users whose dashboard access depends on these attributes are correctly handled from their very first login. No additional steps required.

πŸ“Š Metrics Views now Include Explore Dashboards​

A metrics view YAML can now define its Explore dashboard configuration inline, using a new explore key. Now a single metrics view file contains both the semantic model and its dashboard configuration, making every metrics view explorable by default. The inline block accepts the same field selectors as standalone explores (wildcards, explicit lists, regex, and exclusions), and existing explore files continue to work unchanged. See the metrics view reference for details.

Bug Fixes and Improvements​

Explore / Dashboards​

  • Applied theme colors to the explore time picker
  • Fixed chart resizing and dynamic y-axis behavior for non-line chart types
  • Kept one decimal place on line chart y-axis tick labels
  • Fixed leaderboard columns going stale when context columns are shown for all measures
  • Fixed delta column widths in leaderboards and the dimension table
  • Honored an explicit format_d3 in tooltips and big numbers
  • Fixed toggling off a pivot filter clearing existing filters
  • Capped the pivot drop zone height so a long list of chips no longer hides the table
  • Fixed the filter resource dropdown not scrolling
  • Fixed the collapsed row resizer on wide dashboard rows
  • Fixed the table sort dropdown rendering with a white background
  • Fixed a lock leak in dashboard state sync that could freeze URL and state updates
  • Fixed "View as" behavior, including while editing a project

Canvas​

  • Added a row limit setting to canvas pivot tables
  • Returned a clear error instead of panicking on an invalid component variable value

Metrics Views and Metrics SQL​

  • Applied security row and query filters in the metrics view Summary API
  • Enforced the metrics view access policy in the annotations resolver
  • Fixed annotation validation checking the parent's model or table instead of the annotation's
  • Rejected joins and other unsupported top-level clauses in metrics SQL, and allowed DISTINCT
  • Fixed NOT BETWEEN compiling to the same filter as BETWEEN in metrics SQL
  • Fixed IS FALSE being parsed identically to IS TRUE in metrics SQL
  • Fixed decimal comparisons in metrics SQL filters
  • Fixed panics in Parquet exports of timeseries and in aggregation exports without a time range
  • Fixed ListResources failing for projects with a large number of resources
  • Added a refresh trigger for all resources in the resource listing

Models​

  • Preserved model output when changing connectors in manual or patch change mode
  • Prevented transient table lookup errors from marking all partitions pending
  • Fixed a full model rebuild on rename by pointing the incremental state at the renamed table
  • Cleared partition catalog rows when deleting a partitioned model
  • Added validation against empty pre_exec and post_exec statements

Connectors​

  • Added support for multiple databases and schemas in the MotherDuck connector
  • Upgraded the embedded DuckDB to 1.5.4
  • Fixed STS configurations not working for DuckDB
  • Used a lightweight system sync replica for replicated ClickHouse engines
  • Supported passing query attributes to the Druid query context
  • Fixed a BigQuery client leak by closing the client in the file iterator

AI / LLM​

  • Reworked the analyst agent into a generic skill with a richer user prompt
  • Increased the AI conversation message limit to 100 and made the maximum message size configurable
  • Included exact metrics view field names in the develop_file sub-agent prompt
  • Instructed AI agents not to inspect Rill internal state with external tools
  • Fixed a nil-pointer panic in the AI resolver when time ranges are omitted

Rill Developer​

  • Expanded file explorer directories by default and added an expand/collapse control
  • Skipped interactive prompts in rill service create when flags are passed
  • Fixed .env variables not being pushed to the newly created project on deploy
  • Added a gentle prompt to star Rill on GitHub

Cloud​

  • Fixed user lists not refreshing after adding, removing, or changing a member's role
  • Fixed a broken infinite query in the user group table
  • Made redeploying a project clean up old stopped deployments
  • Exposed the disk size override in the rill project get CLI output
  • Fixed a nil pointer dereference for non-email alert notifiers

Embedding​

  • Added a hide_navigation_bar embed param that hides the navigation bar while keeping in-dashboard navigation, such as the Canvas to Explore drill-through, enabled; see the embedding docs

Security and Infrastructure​

  • Fixed a path traversal bypass in the local path sandbox and rejected paths outside the repo root in repo drivers and AI file tools
  • Required the ReadInstance permission in connector service handlers
  • Upgraded Go to 1.26.5 and patched dependency vulnerabilities (sigstore-go, excelize, kin-openapi, gRPC, and others)