Skip to content

docs: document undocumented customer-facing changes from the last week - #11636

Open
keydunov wants to merge 5 commits into
masterfrom
claude/gallant-ramanujan-tmrcca
Open

docs: document undocumented customer-facing changes from the last week#11636
keydunov wants to merge 5 commits into
masterfrom
claude/gallant-ramanujan-tmrcca

Conversation

@keydunov

Copy link
Copy Markdown
Member

Check List

  • Docs have been added / updated if required
  • Tests have been run in packages where changes have been made if available (not applicable — docs only)
  • Linter has been run for changed code (not applicable — docs only)
  • Tests for the changes have been added if not covered yet (not applicable — docs only)

Description of Changes Made

Routine documentation audit: cross-checked recent merges in cube-js/cube and cubedevinc/cubejs-enterprise against docs-mintlify and found five small, genuinely undocumented customer-facing changes. Each gets its own commit:

  • Author dbt models from Analytics Chat (cubejs-enterprise CUB-3964) — the agent can open a live dbt workspace to draft or edit a model, validate it with dbt, and publish the result as a PR or commit. Shares its preview enablement with dbt push. Added a new section to docs/integrations/dbt.mdx.
  • PNG/PDF export in embedded dashboards (cubejs-enterprise CUB-4065) — allowExport=true now also unlocks Download as PNG and Download as PDF on embedded chart widgets, not just CSV. Updated embedding/iframe/dashboards.mdx.
  • Bin/group editor: custom labels and NULL handling (cubejs-enterprise #14324) — bins can take a custom label per bucket and a separate label for empty values; value groups can return NULL for unpicked/empty values instead of folding them into Everything else. Updated the "Bins and value groups" section in docs/explore-analyze/workbooks/calculated-fields.mdx.
  • Measure reordering and position in pivot reports (cubejs-enterprise CUB-2405) — measures in the Excel/Sheets pivot builder can now be dragged to reorder, and a Measure position setting nests them before or after column dimensions. Updated docs/integrations/microsoft-excel.mdx and docs/integrations/google-sheets.mdx.
  • branchName on the MCP runQuery tool (cubejs-enterprise CUB-3732) — runQuery can now query a dev branch's model to verify an edit before it's committed, and reports which branch it actually queried. Updated docs/integrations/mcp-server.mdx.

Also investigated and intentionally skipped: dashboard apps (still behind an off-by-default flag, pre-GA per its own design doc), tenant-facing dedicated regions (same — off-by-default flag), the notification inbox's mark-unread/delete (self-explanatory UI polish, not a new concept), the calculated-field SQL fallback editor (already covered by the existing "Editing a calculated field" section), and a superadmin CLI JWT (internal Cube-employee tooling, not customer-facing). No large/new-page-worthy gap was found in this window.


Generated by Claude Code

claude added 5 commits August 25, 2026 00:25
The agent can open a live dbt workspace to draft or edit a model, validate
it with dbt, and publish the result as a PR or commit, sharing dbt push's
preview enablement (CUB-3964).
allowExport=true now also unlocks Download as PNG and Download as PDF on
embedded chart widgets, not just CSV (CUB-4065).
Bins can take custom labels and a separate empty-value label; value groups
can return NULL for unpicked/empty values instead of Everything else (#14324).
… reports

Measures in the Excel/Sheets pivot builder can now be dragged to reorder,
and a Measure position setting nests them before or after column
dimensions (CUB-2405).
runQuery can now query a dev branch's model to verify an edit before it's
committed, and reports which branch it actually queried (CUB-3732).
@mintlify

mintlify Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
cubed3 🟢 Ready View Preview Aug 25, 2026, 12:28 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@claude

claude Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Claude finished @keydunov's task in 2m 27s —— View job


Docs review — 1 high, 3 medium, 2 low. Solid, well-scoped audit; one broken internal anchor blocks merge.

Full review
  • Read PR diff (git diff origin/master...HEAD)
  • Verify every internal link and anchor resolves
  • Check prose accuracy and consistency with docs-mintlify/CLAUDE.md conventions
  • Check for collateral staleness in pages this PR touches indirectly
  • Post inline comments + summary

Verified good

  • All new root-relative links resolve: /admin/account-billing/support, /docs/explore-analyze/analytics-chat, /docs/explore-analyze/dashboards#download-as-png-or-pdf (the target heading carries an explicit {#download-as-png-or-pdf} anchor), and the in-page #enable-push / #push-cubes-to-dbt anchors in dbt.mdx.
  • Follows the repo's "surgical edits over new pages" rule — five features, zero new pages, no padding.
  • Preview <Warning> uses the required wording shape from docs-mintlify/CLAUDE.md, and correctly avoids naming the internal feature flag.
  • Excel/Sheets pivot copy is identical across the two pages, matching how those two pages are already kept parallel.
  • The skip list in the PR description is well-judged; not documenting off-by-default pre-GA flags is the right call.

Findings

# Severity File Issue
1 High embedding/iframe/dashboards.mdx:81 Heading rename changes the slug #allow-csv-export#allow-chart-export, breaking the existing link at embedding/iframe/events.mdx:214.
2 Medium embedding/iframe/events.mdx:189, 211-216 Collateral staleness: says dashboard image export is "(in future)" and that allowExport=true gates "the CSV download action" — both untrue after this PR.
3 Medium docs/integrations/dbt.mdx:677-682 Callout says contact support to activate, but the section also says enablement is shared with dbt push, which the customer self-enables in Settings → Data Sources. Two contradictory activation paths.
4 Medium docs/integrations/mcp-server.mdx:251-253 Pagination guidance targets runQuery, but line 232 documents loadQueryResults as the pagination tool. Unclear whether loadQueryResults also needs branchName.
5 Low docs/explore-analyze/workbooks/calculated-fields.mdx:110 "fold them into the last bucket" — surprising (NULLs → highest bucket); worth confirming against the generated SQL, since this replaces the only prior statement of NULL behavior.
6 Low docs/integrations/mcp-server.mdx:250 / 405-412 "which never just echoes the argument back" is a confusing negation; and the branch-query workflow would be more discoverable cross-linked from the "Edit the data model" walkthrough.

Finding 1 is the only one I'd treat as blocking — it's a confirmed broken anchor, verified by grepping the docs tree. Details and suggested patches are in the inline comments.

I did not attempt to verify the behavioral claims sourced from cubedevinc/cubejs-enterprise (bin NULL folding, runQuery re-issuing per page, dbt workspace mechanics) — that code isn't in this repo, so findings 4 and 5 are flagged as questions for the author rather than asserted errors.

· branch [`claude/gallant-ramanujan-tmrcca`](https://github.com/cube-js/cube/tree/claude/gallant-ramanujan-tmrcca)


## Allow CSV export
## Allow chart export

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming this heading changes its slug from #allow-csv-export to #allow-chart-export, which breaks an existing internal link:

docs-mintlify/embedding/iframe/events.mdx:213-214

includes `allowExport=true` (see [Dashboards → Allow CSV
export](/embedding/iframe/dashboards#allow-csv-export)). The event fires when a

Two ways to fix — either keep the old slug with Mintlify's explicit anchor syntax (the repo already does this elsewhere for link stability, e.g. ## Download as PNG, PDF, or CSV {#download-as-png-or-pdf}):

Suggested change
## Allow chart export {#allow-csv-export}

…or rename the heading as-is and update the link text/target in events.mdx in this same PR.

Fix this →

Comment on lines +91 to +95
PNG**, and **Download as PDF** actions. CSV is generated client-side from the data
already loaded into the widget; PNG and PDF are [server-rendered
snapshots](/docs/explore-analyze/dashboards#download-as-png-or-pdf), the same as
on a non-embedded dashboard. The parameter is opt-in — omit it (the default) to
keep the download actions hidden.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change leaves two now-stale statements in embedding/iframe/events.mdx that describe the same feature:

  • Line 189: "Emitted when a viewer exports something — a widget's data as CSV, or (in future) a dashboard image." PNG/PDF widget export is no longer "in future".
  • Lines 211–216: "The CSV download action on a dashboard widget only appears when the embed URL includes allowExport=true" — it now gates the PNG and PDF actions too.

Worth updating both in this PR so the cube:event:download docs (which already list png / pdf in the format column) agree with the export docs.

Fix this →

Comment on lines +249 to +253
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), which never just echoes the argument back. Keep
`branchName` identical across paginated calls: `runQuery` re-issues the whole query for
each page, so dropping it on a later page silently switches that page to the deployed
model.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two things here:

  1. "which never just echoes the argument back" reads as a negation of a claim the reader never made — it's the kind of implementation detail that only makes sense if you've read the PR. Either drop it or state the useful version positively (e.g. "so you can confirm the query really ran against the branch").

  2. The pagination warning may be pointing at the wrong tool. Line 232 documents loadQueryResults as "Paginates through the results of a previous query." If pagination normally goes through loadQueryResults, a reader will wonder whether that call also needs branchName, and the warning as written ("runQuery re-issues the whole query for each page") doesn't answer it. Please confirm which path is authoritative and, if loadQueryResults is branch-aware/branch-inheriting, say so explicitly.

Suggested change
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), which never just echoes the argument back. Keep
`branchName` identical across paginated calls: `runQuery` re-issues the whole query for
each page, so dropping it on a later page silently switches that page to the deployed
model.
Pass an optional `branchName` to `runQuery` to query a dev branch's model — the one
returned by `startDataModelEdit` — instead of the deployed model, so you can verify an
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), so you can confirm the query ran where you intended.
Keep `branchName` identical across paginated calls: `runQuery` re-issues the whole query
for each page, so dropping it on a later page silently switches that page to the
deployed model.

Call `searchDataModel` before `runQuery` to find exact view and member names rather than
guessing them.

Pass an optional `branchName` to `runQuery` to query a dev branch's model — the one

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Placement suggestion: this paragraph documents a data-model-editing workflow but lives in the "Query and discovery" reference section, ~160 lines above the walkthrough it belongs to. The "Edit the data model" workflow (lines 405–412) currently ends at "Review the result with getDataModelChanges, then commit the branch from the Cube UI" — that's exactly where a reader learns they can sanity-check the branch with real data first.

Keeping this paragraph here is fine, but consider adding one sentence there cross-linking it (e.g. "To check the edit against real data before committing, call runQuery with the same branchName").

Comment on lines +677 to +682
<Warning>

Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. Reach out to the [Cube support team](/admin/account-billing/support) to
activate this feature for your account.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This callout says to contact support to activate the feature, but the last paragraph of the section says enablement is shared with dbt push — and dbt push is activated by the customer themselves under Settings → Data Sources → Push to dbt (the ### Enable push steps at lines 590–620). As written the reader gets two contradictory activation paths.

Note the sibling preview callout at line 567 deliberately uses the softer form ("If you run into issues, reach out to the Cube support team") for exactly this reason. Suggest matching it:

Suggested change
<Warning>
Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. Reach out to the [Cube support team](/admin/account-billing/support) to
activate this feature for your account.
<Warning>
Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. If you run into issues, reach out to the
[Cube support team](/admin/account-billing/support).
</Warning>

If it genuinely does need a support-side flag on top of the push setting, then say that explicitly instead — "requires dbt push to be enabled and activation by the Cube support team."

Comment on lines +109 to +111
By default, rows where the dimension is `NULL` get their own label (**Unknown**,
editable). Turn off **Label empty values separately** to fold them into the last
bucket instead.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth double-checking "fold them into the last bucket". The buckets described just above are ordered by value (< 0, [0, 18), [18, 25), >= 25), so "the last bucket" means NULL rows land in the highest bucket — a surprising enough behavior that if it's right it deserves a word of emphasis, and if the actual behavior is "the first/lowest bucket" or "the generated CASE falls through to the ELSE branch", the sentence is wrong in a way a reader can't detect.

Also, this paragraph replaces the old flat statement "Rows where the dimension is NULL are reported as Unknown", so it's now the only place that behavior is documented — worth getting exactly right.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants