Skip to content

docs: fill four small customer-facing doc gaps - #11593

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

docs: fill four small customer-facing doc gaps#11593
keydunov wants to merge 5 commits into
masterfrom
claude/gallant-ramanujan-qhvf0u

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
  • Linter has been run for changed code
  • Tests for the changes have been added if not covered yet

Description of Changes Made

Found while auditing recent cube-js/cube and cubejs-enterprise changes against docs-mintlify for undocumented customer-facing behavior:

  • SQL API: document ::regtype / ::regtype[] cast support (feat(cubesql): Support regtype and regtype[] casts #11503), which shipped with no doc update.
  • Small multiples: document splitting by a second dimension — columns + rows, each independently capped at 5 (cubejs-enterprise#13860). The reference page previously stated this was unsupported.
  • Analysis widget: rename docs from "AI summary" to "Analysis" and document the Run/Refresh actions and freshness indicator that replaced Generate Summary/Re-run and the gear menu (cubejs-enterprise#13915, already announced in the in-app changelog).
  • MCP server: document that deploymentId is now accepted by every tool, not just chat/loadQueryResults, and how resuming a chat/visualize/loadQueryResults call derives its deployment from the existing thread (cubejs-enterprise#13897).
  • Sharing: describe what Can view access looks like for a shared exploration now that it's genuinely read-only (cubejs-enterprise#13893).

No functional/code changes — docs-mintlify only.


Generated by Claude Code

claude added 5 commits August 19, 2026 00:13
feat(cubesql) added support for `::regtype`/`::regtype[]` casts (#11503)
to unblock BI-tool introspection queries, but the reference page for
SQL functions and operators never got the corresponding entry.
Small multiples gained a second Split by picker (columns + rows, each
independently capped at 5) in cubejs-enterprise#13860, but the reference
page still said a single split dimension was the only option and that
splitting by two dimensions at once was unsupported.
…ndicator

The widget (and its Generate Summary/Re-run actions) was renamed to
Analysis, with Run/Refresh actions and a freshness indicator replacing
the old gear menu, per cubejs-enterprise#13915 and the in-app changelog.
The docs page still used the old name and controls.
cubejs-enterprise#13897 extended the optional deploymentId parameter
from chat/loadQueryResults to every other MCP tool (dashboard authoring,
data model editing, query/discovery, pre-aggregations), and clarified
how resuming a chat/visualize/loadQueryResults call derives its
deployment from the existing thread. The docs only described the
original three-tool behavior.
cubejs-enterprise#13893 made Can view access to a shared exploration
actually read-only (editing/Save/Convert/Python/security-context
hidden, SQL read-only). The sharing page defined Can view generically
but never described what it looks like for an exploration.
@mintlify

mintlify Bot commented Aug 19, 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 19, 2026, 12:18 AM

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

@claude

claude Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

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


Docs review: accurate overall — 0 high, 1 medium, 4 low. 3 inline comments posted.

Full review
  • Read the PR diff (git diff origin/master...HEAD)
  • Check cross-references to the renamed "AI summary" widget
  • Check docs.json navigation entries
  • Verify the SQL API regtype claims against the Rust source
  • Post review

Verification performed

regtype claims check out against the implementation. Read rust/cubesql/cubesql/src/sql/statement.rs:858-1120 (CastReplacer). Every claim in the new Type casts section is backed by code:

  • pg_catalog. qualifier stripping — is_regtype (statement.rs:862) and regtype_name_to_oid (statement.rs:890).
  • typname (int4) vs. canonical regtype spelling (integer) — statement.rs:922-925.
  • Aliases int, decimal, char, float — the ALIASES const at statement.rs:882-887 is exactly that list, no more, no less.
  • regtype[] array literal expansion ('{int8,numeric,bool}'::regtype[]) — replace_regtype_array_cast (statement.rs:1016), and the pg_catalog.pg_attribute BI-tool motivation matches the test at test_introspection.rs:3442-3457 verbatim.

Navigation and cross-references are complete. docs.json:117 references the page by path, so the sidebar label comes from frontmatter title and picks up "Analysis" automatically — no docs.json change needed. The only in-repo link to the page (widgets/index.mdx:15) was updated. No stale "Generate Summary" / "Re-run" strings remain anywhere in docs-mintlify. Keeping the ai-summary slug while retitling is the right call — it avoids breaking inbound links.

Findings

Medium — mcp-server.mdx:190-192: blanket statement contradicts the exception below it. The intro says every tool except listDeployments "falls back to the deployment resolved at connect time when it's omitted," but the Resuming a conversation paragraph at line 209 says loadQueryResults, visualize, and chat-with-chatId derive it from the thread instead. A reader who stops at the intro gets the wrong model for exactly the tools most likely to surprise them. Inline comment has a suggested one-line fix.

Low — small-multiples.mdx:44: the "5 × 5, twenty-five panels" ceiling is stated unconditionally, but Rows only appears once a Second dimension is set, so a single-dimension split tops out at 5 panels. Inline comment posted.

Low — ai-summary.mdx:31: "freshness indicator instead of a menu" then "Open it and choose Refresh." Reads as a contradiction (probably meant "instead of the gear menu"), and scoping the paragraph to "On a published dashboard" leaves refreshing from the builder undocumented — the removed sentence was the only coverage of it. Inline comment posted.

Low — docs-mintlify/CLAUDE.md:127 still lists "AI summary" in the canonical terminology tree. That file is the glossary future doc work is written against, so leaving it stale will reintroduce the old name. Not in the diff, so no inline comment possible:

-          - AI summary
+          - Analysis

Fix this →

Low / optional — sql-api/reference.mdx: one user-visible subtlety is unmentioned. A ::regtype cast in a projection is rewritten to format_type(oid, NULL) and renders a type name (statement.rs:1232, snapshot at statement.rs:1818), whereas the same cast compared against a regtype literal is stripped so the comparison is on OIDs (strip_regtype_cast_for_oid_comparison, statement.rs:1107-1114). The practical consequence: atttypid::regtype = 'integer' (plain string) compares names, atttypid::regtype = 'int4'::regtype compares OIDs. Fine to leave out if the section is deliberately scoped to "what BI tools emit."

Notes

  • Docs-only change; no code, tests, or lint applicable. Nothing security-, performance-, or API-surface-relevant.
  • No prior review threads existed on this PR, so nothing to resolve or deduplicate against.
  • The small-multiples, sharing, Analysis-widget, and MCP behavior claims describe cubejs-enterprise changes I can't see from this repo — I reviewed those for internal consistency and clarity only, not against their implementations.
· [`claude/gallant-ramanujan-qhvf0u`](https://github.com/cube-js/cube/tree/claude/gallant-ramanujan-qhvf0u)

Comment on lines +190 to +192
specific one on each request — every tool except `listDeployments` accepts an optional
**`deploymentId`**, and falls back to the deployment resolved at connect time when it's
omitted.

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.

The blanket rule here is contradicted by the "Resuming a conversation" paragraph 20 lines down. This says every tool except listDeployments "falls back to the deployment resolved at connect time when it's omitted" — but for loadQueryResults, visualize, and chat with a chatId, an omitted deploymentId resolves from the thread, not from the connect-time default, and a supplied one can be rejected. A reader who stops at this paragraph will get the wrong model for exactly the tools most likely to surprise them.

Suggest forward-referencing the exception here:

Suggested change
specific one on each request — every tool except `listDeployments` accepts an optional
**`deploymentId`**, and falls back to the deployment resolved at connect time when it's
omitted.
specific one on each request — every tool except `listDeployments` accepts an optional
**`deploymentId`**, and falls back to the deployment resolved at connect time when it's
omitted (except when resuming an existing thread — see below).

### How many panels are drawn

The grid bounds the render: a chart split into 3 × 2 draws at most six panels, so a high-cardinality dimension can never produce hundreds of unreadable ones. The largest grid is 5 × 5, or twenty-five panels.
Each axis is capped independently: **Columns** bounds the first dimension's values and, when a second dimension is set, **Rows** separately bounds the second dimension's values — so a 3-column × 2-row grid draws at most six panels. Since each axis clamps on its own, the largest grid is 5 × 5, or twenty-five panels, regardless of how many distinct values either dimension has.

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.

"the largest grid is 5 × 5, or twenty-five panels" is stated unconditionally, but per the Options table Rows is only shown once a Second dimension is chosen. So with a single split dimension the ceiling is 5 panels (Columns alone), not 25 — the 25-panel maximum is reachable only in the two-dimension case. Worth qualifying so a reader with one dimension doesn't expect to be able to draw 25 panels.

The widget keeps a checksum of the dashboard state at the time of generation: the queries behind each chart, the active control values, and the chart configuration. When any of those change, the widget marks the cached summary as **stale** and shows a refresh prompt so viewers know the narrative may no longer match the data.

Click the refresh icon (or open the widget menu and choose **Refresh**) to regenerate using the saved prompt against the latest state.
On a published dashboard, a widget that has run shows a freshness indicator instead of a menu — colored by how old the data is, with a tooltip reading "Refreshed *N* ago". Open it and choose **Refresh** to regenerate using the saved prompt against the latest state. The dashboard's **Refresh all charts** control also refreshes any Analysis widget that has already run at least once.

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 small issues with this replacement:

  1. "shows a freshness indicator instead of a menu" reads as a contradiction with the very next sentence — "Open it and choose Refresh" describes opening a menu. Probably meant "instead of the gear menu" / "in place of the widget menu".
  2. The removed sentence was the only place describing how to refresh at all; this one scopes itself to "On a published dashboard". Refreshing from the dashboard builder (where the prompt editor lives, and where you'd most often iterate) is now undocumented.

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