docs: document dashboard publish status, comments, chat API timezone parity, and PrivateLink fields - #11859
docs: document dashboard publish status, comments, chat API timezone parity, and PrivateLink fields#11859keydunov wants to merge 6 commits into
Conversation
…parity, and PrivateLink fields - Note the version chip on a published dashboard's header, which shows who published it, when, and a plain-language summary of what changed since the previous published version. - Document the dashboard Comments feature (threads, one-level replies, emoji reactions, resolving) that had never been written up, and cross-link it to the existing embedded-dashboards comments setting. - Document that the Chat API accepts sessionSettings.timezone, including the nested sessionSettings.settings.timezone shape for parity with the Generate Session API. - Document the PrivateLink dialog's new Endpoint Service Region field and support for multiple subdomains in one shared DNS zone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
Claude finished @keydunov's task in 2m 23s —— View job Docs review — no blockers; 2 medium, 3 low posted inlineFull review — checklist, findings, and what I verified
Verified clean
Findings
#1 is the one I'd most want addressed before merge — as written the paragraph tells a reader a toggle gates the feature and then hands them a link to a different toggle, with no path to the right one. Not flagged inline, for the record
I couldn't verify the behavioural claims sourced from |
Fixes a review finding: the Comments section said an admin must turn comments on, but only linked to the embedded-dashboards toggle it explicitly says is a different setting. Name the real one — the "Allow comments on dashboards" switch on the Admin -> Settings page (packages/console-ui SettingsPage.tsx's DashboardCommentsSection in cubejs-enterprise). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Claude finished @keydunov's task in 56s —— View job Re-review of the new commit — finding #1 resolved; 4 prior threads still open (2 medium, 2 low)Full re-review — checklist, what changed, and what still stands
What the new commit fixes
That closes my highest-priority finding. It also matches how the repo already names this kind of toggle elsewhere — I resolved that thread. I can't verify the exact switch label against Still open (not re-posted inline — the existing threads are unchanged and still apply)
On #5: the "define it on first use" half of that thread was already satisfied — the text does say "a version chip (e.g. One new, small observationNow that this PR names the in-app setting, the other end of the cross-link is stale one-directionally.
A reader arriving from the embed side still has no path to it. Adding "…which has its own setting" would make the pair symmetric. That file isn't in this diff, so I haven't posted it inline — take it or leave it. Verified clean (re-checked on this commit)
|
…nd section placement
- Chat API's sessionSettings.timezone resolves independently, per chat
turn, for the agent's own queries -- it is a different resolution
chain than Generate Session's settings.timezone (which governs iframe
rendering), even though the Chat API accepts the same nested shape.
Correct the fallback description (CUBEJS_DEFAULT_TIMEZONE) and cross-
link the two pages' Notes so they don't read as contradicting each
other.
- PrivateLink: demote "Multiple subdomains" to an H3 under DNS and TLS
(it's a sub-case, not a sibling step), make the wildcard record
actionable ("ask the Cube team"), and say the region condition once
instead of twice.
- Dashboards: give the publish-status/version chip its own "Version
history" section instead of tacking it onto "How it works".
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Claude finished @keydunov's task in 1m 42s —— View job Re-review of
|
| # | Was | Now |
|---|---|---|
| 2 | timezone fallback contradicted generate-session.mdx:104; no reciprocal note |
chat-api.mdx:225 now says the fallback is the deployment default (CUBEJS_DEFAULT_TIMEZONE) and states explicitly that this is a separately-scoped chain from the iframe settings.timezone; generate-session.mdx:119-123 gained the reciprocal paragraph inside the existing <Note>. The two pages no longer read as disagreeing — they now say "different thing, same key path." |
| 3 | ## Multiple subdomains broke the linear flow; "optional wildcard" unactionable |
Demoted to ### Multiple subdomains in one DNS zone under DNS and TLS (private-link.mdx:118), so the #dns-and-tls pointer at line 94 now covers it. Wildcard is actionable: "ask the Cube team to add a wildcard fallback record". |
| 4 | Region condition stated twice | private-link.mdx:95-96 is one clause now. |
| 5 | Version-chip paragraph orphaned under How it works | Moved to its own ## Version history (dashboards/index.mdx:83-88), between Comments and Download as PNG, PDF, or CSV — the other "things you do on a published dashboard". |
Verified clean on this commit
CUBEJS_DEFAULT_TIMEZONEis a real env var —packages/cubejs-backend-shared/src/env.tsreads it, and it's documented atreference/configuration/environment-variables.mdx:1186. The new claim is at least internally consistent with the rest of the docs.- No anchors broken by the section move: the only inbound anchor links into this page are
#dashboard-slug(docs/data-modeling/dimensions.mdx:497) and#download-as-png-or-pdf(docs/explore-analyze/notifications.mdx:178), both untouched. #account-settings(embedding/iframe/feature-visibility.mdx:174) and#session-settings(generate-session.mdx:63) still resolve.- No
docs.jsonchange needed — still three existing pages plus one, no new pages. - Frontmatter, H2-start, root-relative links,
<Note>usage all followdocs-mintlify/CLAUDE.md.
New this round — 1 low, posted inline
chat-api.mdx:225 is the only bare-code mention of CUBEJS_DEFAULT_TIMEZONE in the docs; the three other mentions all link it to its reference entry. Suggestion posted. Same thread notes the cell is now ~90 words and repeats the parity explanation verbatim at line 308 — worth trimming the table cell per "Say it once", but that's taste, not a blocker.
Still needs a human/product check (unchanged from last round)
cubejs-enterprise isn't available here, so I can't verify any of the behavioural claims sourced from it:
- the Allow comments on dashboards switch label and its Admin → Settings location;
- the version-chip change summary contents (widgets added/updated/removed, layout rearranged);
- reaction/resolve semantics (resolved threads take no further replies or reactions);
- the new
timezoneprecedence claim — specifically that the flat field outranks the nested one and that the Chat API resolves against the deployment default rather than the embed account setting. This is the claim my earlier finding turned on, and the commit resolves it by asserting two independent chains. That's a coherent story, but it's now asserted rather than cross-checkable, so it needs an author confirmation; - the wildcard DNS record being available on request.
Optional follow-up, not in this diff
embedding/iframe/feature-visibility.mdx:186 still reads "Separate from commenting in the Cube app, which has its own setting" with no link. Now that this PR names the in-app setting, pointing that phrase at /docs/explore-analyze/dashboards#comments would make the cross-link symmetric. Take it or leave it — out of scope here.
…nation The Request Body Fields table row repeated the full parity explanation that already lives in the Endpoint Reference bullet just below it, and was the only place in the docs to mention CUBEJS_DEFAULT_TIMEZONE as bare code instead of linking its reference entry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Claude finished @keydunov's task in 1m 16s —— View job Re-review of
|
| # | File | Status |
|---|---|---|
| 1 | dashboards/index.mdx comments prerequisite |
✅ names Allow comments on dashboards on Admin → Settings (72b4d65) |
| 2 | chat-api.mdx timezone fallback / parity |
✅ 040833f + dd227b3: fallback now names CUBEJS_DEFAULT_TIMEZONE with the standard link form, the two chains are described as independent, and generate-session.mdx:119-124 now carries the reciprocal half of the <Note> |
| 3 | PrivateLink heading level | ✅ now ### Multiple subdomains in one DNS zone under DNS and TLS, and the wildcard record is an explicit "ask the Cube team" action rather than an unactionable "optional" |
| 4 | PrivateLink duplicated condition | ✅ single-line bullet |
| 5 | Version-chip placement | ✅ its own ## Version history section between Comments and Download as PNG, PDF, or CSV; "version chip (e.g. v4)" defines itself |
One new, low finding (posted inline)
chat-api.mdx:308 — trimming the table cell in dd227b3 removed the last link to Generate Session from this page (grep finds zero generate-session occurrences in chat-api.mdx now), while generate-session.mdx:116 still links back here. The bullet names "the Generate Session API" as plain prose; suggestion restores the link. Same comment notes the table row's (see below) now points ~80 lines forward into a different top-level section with no anchor.
Verified clean on this commit
#account-settings(embedding/iframe/feature-visibility.mdx:174),#session-settings(generate-session.mdx:63),#dns-and-tls, and#cubejs_default_timezoneall resolve.CUBEJS_DEFAULT_TIMEZONEnow uses the same[…](/reference/configuration/environment-variables#cubejs_default_timezone)form asreference/core-data-apis/queries.mdx:58andadmin/time-zones.mdx:8.- No
docs.jsonchange needed — four existing pages, no new pages. - Frontmatter, H2-start, root-relative links,
<Note>usage all followdocs-mintlify/CLAUDE.md. private-link.mdxstill says Dedicated Infrastructure page-wide (legacy perCLAUDE.md) — unchanged by this PR, page-wide follow-up, not flagged.
Still unverifiable from this repo: the behavioural claims sourced from cubejs-enterprise (change-summary contents, reaction/resolve semantics, the exact switch label, wildcard DNS record behaviour). @keydunov confirmed the timezone chain against resolveUserTimezone and the comments toggle against SettingsPage.tsx, which covers the two I could not check.
Nothing here blocks merge.
…'s forward reference The previous trim dropped the only link to Generate Session on this page and pointed readers at an unanchored "(see below)" across two top-level sections. Give the stream-chat-state Request Body heading its own anchor (the page has two "Request Body" headings) and link both the table cell and the endpoint-reference bullet through it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Claude finished @keydunov's task in 1m 17s —— View job Re-review of
|
…rt endpoint's The explicit anchor added for the timezone cross-link would have silently reassigned the pre-existing #request-body slug (owned by the stream-chat-state section) to the Abort Endpoint's identically-named heading instead, per Mintlify's document-order de-duplication. Pin the stream-chat-state heading to its existing slug and disambiguate the abort endpoint's heading instead, per docs-mintlify/CLAUDE.md's rule against renaming URL anchors. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
|
Claude finished @keydunov's task in 51s —— View job Re-review of
|
| Line | Before | After |
|---|---|---|
chat-api.mdx:294 |
### Request Body {#stream-chat-state-request-body} |
### Request Body {#request-body} — the pre-existing slug stays where it was |
chat-api.mdx:980 |
### Request Body (implicitly de-duplicated) |
### Request Body {#abort-request-body} — the abort payload gets the new, descriptive slug |
chat-api.mdx:225 |
see [Request Body](#stream-chat-state-request-body) |
see [Request Body](#request-body) |
That satisfies docs-mintlify/CLAUDE.md's "do not rename URL anchors — use Mintlify's explicit anchor syntax to preserve them": an inbound .../chat-api#request-body bookmark still lands on the stream-chat-state payload, and the abort section now has a stable, guessable anchor it never had before.
Verified on this commit
chat-api.mdxhas exactly twoRequest Bodyheadings, both now explicitly anchored, so Mintlify's document-order de-duplication no longer decides anything on this page:294:### Request Body {#request-body}/980:### Request Body {#abort-request-body}.- Zero inbound
chat-api#…links anywhere indocs-mintlify, so neither anchor change breaks an in-repo link. - The four anchors this PR relies on all resolve:
#session-settings(generate-session.mdx:63),#account-settings(feature-visibility.mdx:174),#dns-and-tls(private-link.mdx:101),#cubejs_default_timezone. - Cross-links are bidirectional:
chat-api.mdx:308→ Generate Session,generate-session.mdx:115→ Chat API. - The two timezone chains still read as independent and non-contradictory across
chat-api.mdx:225/:308andgenerate-session.mdx:104/:119-124. - No
docs.jsonchange needed — four existing pages, no new pages. - Frontmatter, H2-start, root-relative links,
<Note>usage all followdocs-mintlify/CLAUDE.md.
Cumulative status — all 8 findings across this PR are closed
| # | File | Status |
|---|---|---|
| 1 | dashboards/index.mdx comments prerequisite |
✅ 72b4d65 |
| 2 | chat-api.mdx timezone fallback / parity note |
✅ 040833f + dd227b3 |
| 3 | PrivateLink heading level + unactionable wildcard | ✅ 040833f |
| 4 | PrivateLink duplicated condition | ✅ 040833f |
| 5 | Version-chip placement | ✅ 040833f |
| 6 | CUBEJS_DEFAULT_TIMEZONE link form |
✅ dd227b3 |
| 7 | Lost Generate Session cross-link | ✅ a1acdcf |
| 8 | #request-body anchor reassignment |
✅ 2f1a2d7 |
Still needs a human/product check (unchanged)
cubejs-enterprise isn't available here, so these behavioural claims remain unverifiable from this repo: the version-chip change-summary contents, the reaction/resolve semantics (resolved threads take no further replies or reactions), and the wildcard DNS record being available on request. @keydunov already confirmed the timezone chain against resolveUserTimezone and the comments toggle against SettingsPage.tsx.
Optional follow-ups, not in this diff
embedding/iframe/feature-visibility.mdx:186— "which has its own setting" still has no link; pointing it at/docs/explore-analyze/dashboards#commentswould make the cross-link symmetric now that this PR names the setting.private-link.mdxsays Dedicated Infrastructure page-wide, whichCLAUDE.mdmarks as legacy in favour of single-tenant infrastructure. Page-wide follow-up, not this PR.
Check List
Description of Changes Made
Part of the recurring audit that cross-checks recently merged Cube Cloud (cubejs-enterprise) and Cube Core (cube-js/cube) changes against docs-mintlify for customer-facing gaps. This covers four small, previously-undocumented shipped features:
sessionSettings.timezone: the Chat API's request-body reference was missing thetimezonefield entirely (including the pre-existing flat field), and now also accepts it nested assessionSettings.settings.timezonefor parity with the Generate Session API (cubejs-enterprise#14915 / #14895).Two related bigger items — a new public REST API for commenting on embedded dashboards, and a new "list workbooks accessible to an embedded tenant" endpoint — need their own reference pages rather than a surgical edit; tracked separately rather than included here.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HyK8W54Az8tbSVUaHox5Kd
Generated by Claude Code