Skip to content

docs: cover dashboard-embed toggle API, dev-mode branch writes, devmode deep link, email unsubscribe - #11357

Open
keydunov wants to merge 1 commit into
masterfrom
claude/gallant-ramanujan-ae69ly
Open

keydunov wants to merge 1 commit into
masterfrom
claude/gallant-ramanujan-ae69ly

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 (N/A — docs only)
  • Linter has been run for changed code (N/A — docs only)
  • Tests for the changes have been added if not covered yet (N/A — docs only)

Description of Changes Made

Routine sweep of recent cube-js/cube and cubedevinc/cubejs-enterprise changes against docs-mintlify turned up a few small customer-facing gaps:

  • PATCH /v1/embed/dashboard/{publicId} — new admin-only Control Plane API endpoint to enable/disable signed embedding for a dashboard (cubejs-enterprise #13274), paired with the new cube embed enable-dashboard/disable-dashboard CLI commands (feat(cube-cli): add embed enable-dashboard / disable-dashboard commands #11356). Added the endpoint + UpdateDashboardEmbeddingInput/DashboardEmbeddingResponse schemas to api-reference/api.yaml, registered it in docs.json, and added the two CLI subcommands to the embed row in reference/cli.mdx.
  • Dev-mode branch writes (feat(cube-cli): expose the dev-mode branch name and document dev-mode-only data-model writes #11351 / cubejs-enterprise #13309) — data-model file writes now only land on the personal dev-… branch forked by --dev-mode/dev-mode, not the branch name you passed in. The CLI reference's "Data model Git workflow" example still showed --branch my-branch, which is now rejected — updated the example and surrounding text to match the real flow.
  • cube with no subcommand now prints the installed CLI version before the help text (feat(cube-cli): show CLI version when run without a command #11344) — added a line to the Installation section.
  • ?devmode=true deep link into the Data Model IDE (cubejs-enterprise #13237) — undocumented opt-in URL param (combinable with ?branch=) to open the IDE straight into dev mode. Added a short paragraph to data-model-ide.mdx.
  • One-click unsubscribe for scheduled dashboard refresh emails (cubejs-enterprise #13246) — footer unsubscribe link plus RFC 8058 native mail-client "Unsubscribe" button. Added a sentence to scheduled-refreshes.mdx.

Other recent feat commits in both repos were reviewed and intentionally left out as not customer-facing per cubejs-enterprise/.claude/shared/customer-facing-criteria.md (internal telemetry, cloud-provisioner infra plumbing, invisible pre-aggregation-matching improvements, in-app snippet-formatting polish).

No feature found in this pass was large enough to warrant its own docs page, so no Linear ticket was filed.


Generated by Claude Code

@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Claude finished @keydunov's task in 38s —— View job


Code Review

Verdict: LGTM — docs-only, well-scoped, no issues found.

Details
  • Read PR diff and changed files
  • Verify against docs-mintlify conventions (docs-mintlify/CLAUDE.md)
  • Check API spec additions (paths + schemas + registration)
  • Check inline prose changes

What was checked

File Notes
api-reference/api.yaml PATCH /v1/embed/dashboard/{publicId} added under the existing path item (correct OpenAPI shape), UpdateDashboardEmbeddingInput and DashboardEmbeddingResponse both defined and referenced. Admin-only + 404 semantics called out in x-mint.content. Consistent with the existing GET sibling.
docs.json New PATCH … entry sits directly under the GET in the Embed group — matches Mintlify's OpenAPI page convention already in use.
docs/data-modeling/data-model-ide.mdx Short paragraph, correctly notes the access-gate fallback (silently ignored). No new page — good, per "prefer surgical edits".
docs/explore-analyze/scheduled-refreshes.mdx One sentence, mentions RFC 8058 behavior in user-friendly terms ("one-click … Gmail"). Placed in the right subsection about email subscribers.
reference/cli.mdx Three edits: no-subcommand version print, enable-dashboard/disable-dashboard in the embed row, and the dev-mode branch-writes clarification with corrected example. The updated Git workflow example is now internally consistent (create-branch … --dev-mode → write to dev-my-branchmerge-to-default --branch my-branch).

Minor observations (non-blocking)

  • reference/cli.mdx:160 — the embed row is now the longest in the table; still readable, but if the row grows again consider splitting enable-dashboard/disable-dashboard into their own row or a sub-list. Not worth changing now.
  • api.yamlDashboardEmbeddingResponse mirrors the request body shape (just allowEmbed + publicId); worth confirming the real API response doesn't also return other fields (e.g. dashboard name/status) that clients might rely on. If it does, the schema should list them; if not, ignore.
  • data-model-ide.mdx:60 — copy is clear; you may also want to mention what happens if ?branch=<name> points at a branch the user doesn't have access to (same silent-ignore, or an error?). Optional — depends on actual behavior.

Nothing here blocks merge.

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

@mintlify

mintlify Bot commented Jul 26, 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 Jul 26, 2026, 12:16 AM

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

@mintlify

mintlify Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

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

Project Status Preview Updated (UTC)
cubed3 🟡 Building Jul 26, 2026, 12:15 AM

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

…d devmode deep link

Rebased onto master after #11353 and #11359 merged. Two changes from the
original version are dropped as redundant:

- The scheduled-refreshes unsubscribe paragraph: #11353 already landed the
  same note at the same place, and covers more (embed users and
  editor-added recipients).
- The cli.mdx version banner and `embed` command-table row: #11359 already
  landed both.

What remains is unique to this change:

- api.yaml / docs.json: PATCH /v1/embed/dashboard/{publicId} to toggle
  signed embedding for a dashboard.
- data-model-ide.mdx: ?devmode=true deep link, combinable with ?branch=.
- cli.mdx: data-model file writes (put/delete/rename) are only accepted on
  a dev-mode branch; --dev-mode forks a personal dev-… branch that write
  commands must target.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@keydunov
keydunov force-pushed the claude/gallant-ramanujan-ae69ly branch from 0dc9bcb to c393da1 Compare July 28, 2026 15:02
@claude

claude Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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


Code Review

Verdict: request changes — 0 high, 2 medium, 2 low. The api.yaml/docs.json half is clean; both medium findings are in the two prose edits (one duplicates a section already on master, one has a self-inconsistent CLI example). Posted as inline comments.

Details
  • Gather context (diff vs origin/master, changed files)
  • Classify request — code review, no implementation
  • Verify OpenAPI additions against existing api.yaml conventions
  • Verify prose claims against the rest of docs-mintlify
  • Check docs-mintlify/CLAUDE.md conventions
  • Check for stale/duplicate prior threads (none — gh list-review-threads returned empty)
  • Post findings

Medium

1. data-model-ide.mdx:60-65 duplicates an existing section. docs/data-modeling/dev-mode.mdx:62-77 already carries a "Deep-link into development mode" heading covering ?devmode=true, ?branch=, the combined URL, and the permission no-op — it landed on master in #11343. The new paragraph restates it less precisely: "combine it with ?branch=<name>" doesn't show that the join is & (…/schema?branch=my-branch&devmode=true), and it drops the "params are stripped from the URL once applied" detail. docs-mintlify/CLAUDE.md explicitly says "Say it once." Suggested a cross-link replacement inline. (thread)

2. reference/cli.mdx:174-186 — the reworked example doesn't hold together.

  • put targets dev-my-branch but merge-to-default targets my-branch. If the fork is a real separate branch, my-branch has no orders.yml write when merge-to-default runs, so the sample promotes nothing. The old example was self-consistent because both used one branch; the fix needs either the dev branch in merge-to-default or the intermediate commit/merge steps the table at line 154 lists.
  • dev-my-branch conflicts with docs/integrations/mcp-server.mdx:287, which documents personal dev branches as dev-<user>-<hash>. If that's the same mechanism, the literal is uncopyable and the two pages now contradict each other. Since the prose already says the fork name is printed and that omitting --branch uses the active dev-mode branch, dropping --branch from the example sidesteps the whole question. (thread)

Both depend on cubejs-enterprise behavior I can't see from this repo — worth a quick confirmation against the CLI rather than taking the PR description at face value.

Low

  • api.yamlDashboardEmbeddingResponse mirrors the request body (publicId + allowEmbed) and nothing else. Worth a spot-check that the real PATCH response doesn't also return e.g. the dashboard name or status; if it does, clients reading the spec will under-model it. Not blocking.
  • data-model-ide.mdx:60 — "the Data Model page URL". docs-mintlify/CLAUDE.md taxonomy is Semantic Model IDE, which is what dev-mode.mdx:64 uses. Moot if you take the cross-link suggestion.

Verified clean

Item Result
api.yaml PATCH placement Correct OpenAPI shape — sibling patch: under the existing /v1/embed/dashboard/{publicId} path item, alongside get: (line 1951).
requestBody: required: false Matches the file's generated convention exactly (UpdateDeploymentInput at 167-173, StartDbtSyncInput at 193-199) — not an inconsistency despite allowEmbed being required in the schema.
description: '' on the 200 Also convention; 64 occurrences file-wide, including the GET sibling.
Schema refs UpdateDashboardEmbeddingInput and DashboardEmbeddingResponse both defined under components.schemas and correctly $ref'd; alphabetical placement preserved.
x-mint.content Admin-only gate, 403-when-off semantics, and 404 behavior all stated, and consistent with the GET sibling's description of the same flag.
docs.json Single line added inside the Embed group's pages array, directly under the GET — matches the existing Mintlify OpenAPI page convention. JSON structure unaffected.

No security, performance, or test-coverage surface here — the change is docs-only, so those review axes are N/A.

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

Comment on lines +60 to +65
You can also link directly into development mode by adding `?devmode=true` to
the Data Model page URL — combine it with `?branch=<name>` to enter dev mode
on a specific branch, or omit `?branch` to use the currently selected branch.
The parameter only takes effect if you already have access to enter dev mode;
otherwise it's ignored.

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 duplicates content that's already on master: docs/data-modeling/dev-mode.mdx:62-77 has a "Deep-link into development mode" section documenting both ?devmode=true and ?branch=, including the working combined URL and the permission no-op caveat.

Two problems with duplicating it here:

  1. docs-mintlify/CLAUDE.md says "Say it once." Two copies of the same URL-param contract will drift.
  2. This copy is less precise — "combine it with ?branch=<name>" without showing the join reads as ?devmode=true?branch=x. The dev-mode.mdx version shows the correct form: …/schema?branch=my-branch&devmode=true. It also omits that the params are stripped from the URL once applied.

Suggest replacing the paragraph with a pointer:

Suggested change
You can also link directly into development mode by adding `?devmode=true` to
the Data Model page URL — combine it with `?branch=<name>` to enter dev mode
on a specific branch, or omit `?branch` to use the currently selected branch.
The parameter only takes effect if you already have access to enter dev mode;
otherwise it's ignored.
You can also [deep-link directly into development
mode](/docs/data-modeling/dev-mode#deep-link-into-development-mode) using the
`?devmode=true` and `?branch=` URL parameters.

Comment on lines 174 to +186
```bash
cube data-model create-branch DEPLOYMENT_ID my-branch --dev-mode
cube data-model put DEPLOYMENT_ID model/cubes/orders.yml --file orders.yml --branch my-branch
# entered dev mode on dev-my-branch (forked from my-branch)
cube data-model put DEPLOYMENT_ID model/cubes/orders.yml --file orders.yml --branch dev-my-branch
cube data-model merge-to-default DEPLOYMENT_ID --branch my-branch -m "add orders cube"
```

`merge-to-default` merges into the deploy branch and rebuilds production.
`--dev-mode` forks a personal `dev-…` branch off the branch you named and
prints it — pass that forked name via `--branch` on write commands (or omit
`--branch` to use your active dev-mode branch). Writes to any other branch are
rejected. `cube data-model dev-mode DEPLOYMENT_ID my-branch` re-enters dev mode
the same way if you're not already in it. `merge-to-default` merges into the
deploy branch and rebuilds production.

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 accuracy concerns with the reworked example — both worth verifying against the actual CLI before merge:

1. The example's writes look like they get dropped. put now targets dev-my-branch, but merge-to-default still targets my-branch. If the fork is a real separate branch, my-branch doesn't contain the orders.yml write at the point merge-to-default runs, so the example promotes nothing. The old example was self-consistent because both commands used the same branch. Either merge-to-default should target the dev branch, or the example needs the intermediate step (commit, then merge back into my-branch) that the command table at line 154 lists.

2. dev-my-branch may not be the real fork name. docs/integrations/mcp-server.mdx:287 documents personal dev branches as dev-<user>-<hash>:

Every write goes to a personal dev branch named dev-<user>-<hash>.

If that's the same mechanism, a reader who copies --branch dev-my-branch verbatim gets a rejected write, and the two pages now contradict each other on the naming scheme. Since the prose already says --dev-mode "prints it" and that omitting --branch uses the active dev-mode branch, the safest example is to just omit --branch on the write rather than hard-code a name that may not exist:

Suggested change
```bash
cube data-model create-branch DEPLOYMENT_ID my-branch --dev-mode
cube data-model put DEPLOYMENT_ID model/cubes/orders.yml --file orders.yml --branch my-branch
# entered dev mode on dev-my-branch (forked from my-branch)
cube data-model put DEPLOYMENT_ID model/cubes/orders.yml --file orders.yml --branch dev-my-branch
cube data-model merge-to-default DEPLOYMENT_ID --branch my-branch -m "add orders cube"
```
`merge-to-default` merges into the deploy branch and rebuilds production.
`--dev-mode` forks a personal `dev-…` branch off the branch you named and
prints it — pass that forked name via `--branch` on write commands (or omit
`--branch` to use your active dev-mode branch). Writes to any other branch are
rejected. `cube data-model dev-mode DEPLOYMENT_ID my-branch` re-enters dev mode
the same way if you're not already in it. `merge-to-default` merges into the
deploy branch and rebuilds production.
```bash
cube data-model create-branch DEPLOYMENT_ID my-branch --dev-mode
# prints the personal dev-… branch it forked and entered
cube data-model put DEPLOYMENT_ID model/cubes/orders.yml --file orders.yml
cube data-model commit DEPLOYMENT_ID -m "add orders cube"
cube data-model merge-to-default DEPLOYMENT_ID -m "add orders cube"

--dev-mode forks a personal dev-… branch off the branch you named and
prints it — write commands default to your active dev-mode branch, or you can
pass the printed name via --branch. Writes to any other branch are rejected.
cube data-model dev-mode DEPLOYMENT_ID my-branch re-enters dev mode the same
way if you're not already in it. merge-to-default merges into the deploy
branch and rebuilds production.


(Adjust the exact command sequence to whatever the CLI actually requires — the point is that the example should be runnable end-to-end.)

This branch was successfully deployed

2 active deployments
Preview c393da1f Deployed Jul 28, 2026 by vercel[bot]
staging - docs-mintlify c393da1f Deployed Jul 28, 2026 by mintlify[bot]
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