docs: document undocumented customer-facing changes from the last week - #11636
docs: document undocumented customer-facing changes from the last week#11636keydunov wants to merge 5 commits into
Conversation
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).
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
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
Verified good
Findings
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 |
|
|
||
| ## Allow CSV export | ||
| ## Allow chart export | ||
|
|
There was a problem hiding this comment.
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 aTwo 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}):
| ## 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.
| 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. |
There was a problem hiding this comment.
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.
| 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. |
There was a problem hiding this comment.
Two things here:
-
"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").
-
The pagination warning may be pointing at the wrong tool. Line 232 documents
loadQueryResultsas "Paginates through the results of a previous query." If pagination normally goes throughloadQueryResults, a reader will wonder whether that call also needsbranchName, and the warning as written ("runQueryre-issues the whole query for each page") doesn't answer it. Please confirm which path is authoritative and, ifloadQueryResultsis branch-aware/branch-inheriting, say so explicitly.
| 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 |
There was a problem hiding this comment.
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").
| <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. | ||
|
|
There was a problem hiding this comment.
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:
| <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."
| 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. |
There was a problem hiding this comment.
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.
Check List
Description of Changes Made
Routine documentation audit: cross-checked recent merges in
cube-js/cubeandcubedevinc/cubejs-enterpriseagainstdocs-mintlifyand found five small, genuinely undocumented customer-facing changes. Each gets its own commit:dbt, and publish the result as a PR or commit. Shares its preview enablement with dbt push. Added a new section todocs/integrations/dbt.mdx.allowExport=truenow also unlocks Download as PNG and Download as PDF on embedded chart widgets, not just CSV. Updatedembedding/iframe/dashboards.mdx.NULLfor unpicked/empty values instead of folding them into Everything else. Updated the "Bins and value groups" section indocs/explore-analyze/workbooks/calculated-fields.mdx.docs/integrations/microsoft-excel.mdxanddocs/integrations/google-sheets.mdx.branchNameon the MCPrunQuerytool (cubejs-enterprise CUB-3732) —runQuerycan now query a dev branch's model to verify an edit before it's committed, and reports which branch it actually queried. Updateddocs/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