Skip to content

docs(studio-app): show the app working, three new pages, today's UI - #6223

Merged
ukimsanov merged 18 commits into
mainfrom
docs/studio-app-pages
Oct 24, 2026
Merged

ukimsanov merged 18 commits into
mainfrom
docs/studio-app-pages

Conversation

@ukimsanov

@ukimsanov ukimsanov commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • Every Studio app page shows the app working: screen recordings with the cursor and zooms (first video, Reference, Script panel, draw-to-edit, Share, Export, HeyGen Video 1 on a clip) and 3-4 second "where is it" clips next to each control the text names.
  • New pages: Continue from Claude Code (hyperframes open / catch-up / Import projects), Reference a video, Share for review, plus The project screen (@, #, /, Script, panels).
  • Rewritten for today's build: the Script panel's staged cuts (Pending video edits, then Send), Reference's read-then-path flow (Copy editing style or Video brief, then What to swap), Export's cloud option, one-click Share, and GitHub Copilot among the agents. No step says "type /hyperframes" (the skills are already on in the app).
  • Titles describe the job ("Export a video", "Edit a video with the agent"). No emojis.
  • The sidebar becomes one "Studio app" group in the order people use the app. Troubleshooting stays where it is.

Why

The pages described an app that has changed several times since, and most of it was text people had to picture.

How we'll know it worked: Mintlify views and time on page for /studio-app/* (this week vs the two weeks before), and the docs-to-download event in PostHog.

Related work

First of six docs PRs split from the docs rewrite (Studio app, Start pages, Make guides, Prompt Guide, browser editor, structure + catalog).

How

  • Fact check: every claim on the 12 pages (354) was checked against main of hyperframes-internal (packages/desktop, the app) and hyperframes (packages/cli, skills): 303 held; the 23 wrong and 3 outdated ones are fixed (transcription goes to HeyGen; Script cuts wait for Send; today's Script toolbar; motion guides over 5 s are refused; the open/catch-up hand-off is Mac-only and needs an agent session; 4K is about 2x on the self-serve card; 10-minute sign-in; Auto is the default access; real sign-in errors; Copilot). Claims that couldn't be proven were cut or reworded.
  • Recorded on a regular (non-staff) account on build b467, so nothing staff-only shows (Learn tab, Pit Crew Academy, View as a user, Podcast edit / Computer use in #).
  • 28 videos are on static.heygen.ai under hyperframes-oss/docs/studio-demos/<name>-v2.mp4 (versioned names, cached a year, nothing in git). Posters and stills are small JPGs in docs/public/images/studio-app/.
  • DocsVideo takes an optional aspect for app recordings (16 / 10), does not autoplay under reduced motion and stops a playing loop if Reduce Motion turns on mid-visit (play loads it again), and starts muted when it autoplays (browsers block unmuted autoplay). Short clips use the existing HoverVideo (hasAudio={false}, new optional label), so they pause and respect reduced motion. custom.css gains three layout blocks: a picture beside the text it explains, short "where is it" clips floated beside the text, and a row of portrait films.

Test plan

  • mint validate: build validation passed; mint broken-links --check-redirects: no broken links; check-docs-cli-commands.mjs: all 49 commands listed; bun run lint passes (including check:docs-snippet-motion)
  • Manual testing performed: all 12 Studio app pages loaded in Chrome and scrolled through; every video loads from static.heygen.ai, 0 broken images, 0 page errors; the demos autoplay muted, stay still with reduced motion on, and stop when it's switched on mid-visit
  • Documentation updated (if applicable)
  • Unit tests added/updated (docs only)
  • Comments follow CONTRIBUTING.md "Comments"

Copilot AI balanced review requested due to automatic review settings October 24, 2026 15:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@mintlify

mintlify Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

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

Project Status Preview Updated
hyperframes 🟢 Ready View Preview Oct 24, 2026, 9:18 PM

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

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed exact 940f197de1be4274bdefbd60cdf5c5dbd7d0bee8. The enumerated navigation/link/media checks passed, but several new product instructions need correction.

The inline comments cover: remote transcription presented as local (P1), Script's staged-cut step and current toolbar/audio behavior, rejected rather than auto-trimmed motion guides, Mac/agent-session handoff prerequisites, the self-serve 4K price, and looping previews without a pause/reduced-motion path (P2).

Verified: no removed/renamed MDX slugs; existing redirects remain; changed-page internal links and local posters resolve. All 28 new MP4 URLs returned HTTP 200 with video/mp4. Bounded range reads found video-only tracks in all seven full recordings, so I am not claiming a missing-muted autoplay failure. node scripts/check-docs-cli-commands.mjs reports all 49 commands listed. Desktop's two cloud pricing tests pass.

Audited: all changed Studio pages, docs.json, shared player/CSS and relevant CLI/Desktop behavior paths. Product comparison used OSS at this head and Desktop source at b015754e50085955db214db97b175f1fbd810eb7; source availability is not deployment proof. No new internal-only links or teammate names found in changed text. Unverified: rendered Mintlify/browser layout, full recordings' visual contents, signed-in/backend flows and release/rollout state. Mint CLI is unavailable locally; I did not rerun validate/broken-links or claim the author's browser walk as mine.

Need/size/reuse: the extra pages and retained slugs support task discovery; the instructions must match current controls, and preview motion can reuse the existing accessible video pattern.

— hf-review

Verdict: COMMENT
Reasoning: The enumerated link/media checks passed; the source-backed workflow/privacy/pricing corrections above are recommended before publication. This is a comment-level review; no approval authorization was supplied.

Comment thread docs/studio-app/workspace.mdx Outdated

## Script: edit the video like a document

Open **Script** at the top of the right panel. Every word spoken in your video appears as text, transcribed on your

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P1] Correct the local-processing claim. Current Desktop main/transcripts.mjs:161 calls heygenTranscript, whose payerSendWith uses heygenModels.transcribeBytes; heygenModels.mjs:315–325 sends base64 audio to /v3/audio/transcriptions. Local copying/chunking is preparation, not local transcription. Say audio is sent to HeyGen and describe the applicable sign-in/API-credit requirement (heygenSpeech.mjs:90–105 refuses when neither is available); readers should not choose this workflow believing their recording stays on their computer.

Comment thread docs/studio-app/workspace.mdx Outdated
## Script: edit the video like a document

Open **Script** at the top of the right panel. Every word spoken in your video appears as text, transcribed on your
computer. Select words (click the first, Shift-click the last) and press **Delete**: the video is cut with them. The

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Include sending the staged cut before promising changed playback. Current ScriptPanel.tsx:257–304 stages Cut/Restore as Pending video edits; its contract says every gesture waits there until sent. Delete alone does not apply the cut or shorten the film as this paragraph and the demo caption claim. Update the steps/caption to show Send and the completed edit; inspect the recording and update it too if it demonstrates the obsolete immediate-cut flow.

Comment thread docs/studio-app/workspace.mdx Outdated
*Select a sentence, Delete: "1 cut · 4.9 s shorter", and playback jumps straight over it.*

With words selected, the bar also offers **Play** (just those words), **Silence** (keep the picture, mute the
sound), **Clip** (cut them into a vertical clip of their own) and **Fix** (retype a word; it's spoken again in the same

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Rewrite this toolbar description for the current Script UI. ScriptBar.tsx:187–201 offers Comment/Cut/Fix words/Add/Ask, with Make clip only for a podcast; Fix words explicitly says the audio stays the same (:48), and stages a transcript correction. It does not re-speak the word in the current UI. Play/Silence/Clean up are not the current toolbar actions. Avoid directing readers to missing controls or promising audio replacement from Fix words.

Comment thread docs/studio-app/video-clips.mdx Outdated

- **Start from a picture**: give an image and it becomes the clip's exact first frame.
- **Match a look**: give up to 9 reference images.
- **Copy a movement**: give one reference video. Only its first 5 seconds are used.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] A longer guide is rejected, not silently reduced to its first five seconds. Desktop vendorVideo.mjs:170–178 sends the guide through referenceGuard; referenceGuard.mjs:174–177,201–204 measures and rejects guides over five seconds with an instruction to cut them. Document trimming first, plus the motion-guide constraints (one take ≤15s, person's reference image, no first frame; vendorVideo.mjs:184–190). Otherwise following these instructions with an ordinary longer clip fails.

Comment thread docs/studio-app/existing-project.mdx Outdated
Its chat picks up this Claude Code conversation.
```

The app opens the project, and its chat carries on the conversation you were having, so you don't explain the video

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Qualify the handoff prerequisites. In this OSS head, utils/desktopApp.ts defines HANDOFF_READY as process.platform === 'darwin'; on Linux the default open path returns handoff-unavailable even if Studio is installed. Continuing the conversation also requires an agent session env ID; an ordinary terminal open has handedOver:null. catch-up only works after that handoff establishes a seen record, not after sidebar import alone (commands/catch-up.ts checks readSeen().at). State the Mac/agent-session scope and don't promise conversation/catch-up for every import path.

Comment thread docs/studio-app/export.mdx Outdated

| | This Mac | Cloud |
| --- | --- | --- |
| Cost | Free | Paid per minute of video from your HeyGen API balance. 4K costs 1.5 times as much. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Avoid presenting the enterprise 4K multiplier as the general price. Current Desktop shared/cloudRenderPricing.mjs:7–8 uses FOUR_K=2 for the self-serve card and explicitly identifies 1.5 as the enterprise-card multiplier. At the same fps/quality, 4K costs twice 1080p on that card; the 4K preset's higher quality can change the total further. Use the current card-specific rates or direct readers to the estimate shown in Export.

Comment thread docs/studio-app/workspace.mdx Outdated

Three keys open menus right where you type.

<video className="hf-aside hf-spot" src="https://static.heygen.ai/hyperframes-oss/docs/studio-demos/at-menu-v1.mp4" autoPlay muted loop playsInline aria-label="Typing @ opens the menu of things to add" />

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Give the new looping previews a pause path and reduced-motion handling. This and 20 other new plain video elements autoplay and loop indefinitely without controls/handlers; CSS reduced-motion rules don't pause media. Readers cannot stop these moving guides while reading. Reuse the existing HoverVideo pattern with hasAudio=false or equivalent preference-aware playback and an explicit pause control. The seven new DocsVideo callsites have pause controls but also need to respect reduced-motion before autoplay.

@miguel-heygen miguel-heygen left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Additive to jrusso1020's review, which already covers the content corrections (transcription location, Script's staged cut and toolbar, motion-guide length, handoff prerequisites, 4K pricing) and the looping-preview pause/reduced-motion issue. I haven't repeated those, and I'd resolve them first, especially the transcription one.

A few things that review didn't cover:

  • Page weight. The inline clips have no poster or lazy loading, so every clip on a page starts downloading when it opens. The Project screen page (docs/studio-app/workspace.mdx:16-80) has seven, around 10 MB together, and readers see empty boxes until they load. This is one more reason to switch to HoverVideo as already suggested: it uses preload="none", an IntersectionObserver and a poster (docs/snippets/hover-video.jsx:24-36, :91-96), so it fixes motion and weight together.
  • Unused images. docs/public/images/studio-app/export.jpg and project.jpg are no longer used anywhere in docs/ after this change. Delete them unless a later PR in the split needs them.
  • Caption that will date. The caption at docs/studio-app/first-video.mdx:21 says it was recorded in "today's app" and names a model version. Both go stale at the next release; consider dropping that part or naming the app version instead.
  • Nit: h2 { clear: both; } in docs/custom.css:1366 applies to every page. It's harmless now since .hf-aside is the only float, but scoping it to the new layout would be safer.

I checked the CSS, the aspect prop (the inline style correctly wins over the 16:9 default), the nav changes and the body's claims against the diff. I didn't view the rendered pages or re-check the app behaviour myself.

Verdict: COMMENT
Reasoning: Nothing new blocks this, but the content corrections raised in the existing review are still open at this head, and I did not verify the app behaviour or the rendered pages.

…st both repos' main)

Script: audio goes to HeyGen to transcribe; cuts wait in Pending video edits until Send; today's toolbar; suggested
cuts. Continue from Claude Code: Mac only, inside an agent session, catch-up after that hand-off, real output.
GitHub Copilot added. 4K price, 10-minute sign-in, Auto as the default, real sign-in errors, motion-guide limit,
the right-panel row. Looping clips pause and respect reduced motion.
…esktop-share is at 0%)"

This reverts commit 201070ac7b7a551c5515c1a770be4a5e8ab36ab9.
… b467

Staff-only items are gone (Pit Crew Academy, View as a user, the HyperFrames agent, Learn). # opens tools by typing;
the tools list and the @ menu match a regular account; the import clip ends before the folder list.
…, 16 s); cloud rendering as the app shows it
…question cards, Send answer, 29 min storyboard, 10 min build)
…the video, then Copy editing style or Video brief; What to swap); demo re-recorded on a regular account
@ukimsanov
ukimsanov force-pushed the docs/studio-app-pages branch from 940f197 to 85f76bb Compare October 24, 2026 20:07

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed exact e9aa8c01db09e5dbf3afc44a5429705e680c41af against the prior review at 940f197d. Most corrections are present, but the motion-guide finding is only partly resolved and the new Script cancellation instruction needs correction.

Prior seven comments, checked explicitly:

  1. Remote transcription: resolved in text; it now says audio goes to HeyGen and names sign-in/plan or API-key requirements.
  2. Cut/Send: prior omission resolved; the new cancellation defect remains. The omitted Send step is fixed, but the incorrect Restore-before-send instruction is inline below.
  3. Script toolbar/Fix words: corrected to the current actions and unchanged audio.
  4. Motion guide: 5-second rejection, 15-second output and no-start-picture limits are fixed; the mandatory person's reference image is still omitted.
  5. CLI handoff/catch-up: Mac, active agent session, plain-terminal and import limitations now match CLI source.
  6. Cloud pricing: the enterprise-only 1.5 multiplier is gone; the page names the estimate shown by Export and approximately twice for 4K.
  7. Motion accessibility: the 21 spots use labeled HoverVideo controls/posters; DocsVideo now starts autoplay muted, checks reduced motion, pauses/unloads on its change and restores the source on deliberate Play. The source repair is present; native browser playback was not exercised.

Checks: all 28 v2 MP4 URLs return HTTP 200 video/mp4; local posters exist; all 45 Studio-app internal links/navigation targets resolve. Nav/redirect configuration is unchanged from the prior reviewed version. node scripts/check-docs-cli-commands.mjs reports all 49 commands listed. The docs motion check and all 14 authored script tests pass. That gate is textual: broken in-memory runtime-guard variants can still satisfy it, so passing is not proof of interactive playback behavior. Preview HTML contains no prerendered video element, so no SSR autoplay defect is asserted.

Audited: all seven former concerns, changed MDX/player/hover code, navigation/media delta and selected new claims against OSS CLI at this head and Desktop 58ff0f4eb4d9b118fe3a5cb6329b5dc22ca87001. Copilot/full-access and the revised agent no-extra-price-question text match current source. Trusting/unverified: the claimed 354-claim census, complete videos/non-staff recording provenance, b467 rollout state, signed-in flows and rendered Mintlify playback/focus/layout. I viewed the updated Home and tools posters, not all video frames. No newly observed internal-only links in the text delta; no complete video-frame privacy audit. Mint CLI is unavailable; validate/broken-links were not rerun locally.

— hf-review

Verdict: COMMENT
Reasoning: Six prior findings are resolved in source/text; the motion guide remains partially resolved and the revised pending-cut cancellation instruction is inaccurate. This remains a comment-level review without approval authorization.

Comment thread docs/studio-app/video-clips.mdx Outdated

- **Start from a picture**: give an image and it becomes the clip's exact first frame.
- **Match a look**: give up to 9 reference images.
- **Copy a movement**: give one reference video of 5 seconds or less (trim a longer one first; the app refuses it). The clip is then one take of up to 15 seconds, with no start picture.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] This closes the duration/automatic-trimming part of the earlier comment, but still omits the required person's reference picture. Current Desktop vendorVideo.mjs:184–190 refuses a guide unless references has at least one image, alongside no first frame and output≤15s; mcpGeneratedVideoTools.mjs:121 describes the person's picture explicitly. Giving only the ≤5s video described here still gets refused. Add the reference-photo prerequisite to complete the prior finding.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 2d2840d: the step now says to give the ≤5 s guide clip plus a picture of the person who should do the move (vendorVideo.mjs video1GuideRefusal), one take up to 15 s, no start picture.

Comment thread docs/studio-app/workspace.mdx Outdated

Select words (click the first, Shift-click the last), then choose **Cut** or press <kbd>⌫</kbd>. The words stay in
the script, struck through, and the cut waits under **Pending video edits** above the chat box with anything else you
staged. Choose **Send 1 edit** (the count grows as you stage more) and the agent applies them all; the video gets shorter once it's done. **Restore** on struck

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Restore does not cancel an unsent pending Cut. ScriptDoc.tsx keeps data-staged separate from word.cut, and ScriptBar/stretchOf chooses Restore only for already cut/silenced words (scriptModel.ts:335–336). Restore itself stages a new edit for an applied cut; it does not remove the original pending row. Tell the reader to delete the Cut row in Pending video edits before sending, and separately explain selecting already-cut words then sending a Restore. Otherwise a person following this instruction cannot cancel the staged cut.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 2d2840d: to drop a cut before sending, delete its row in Pending video edits (PendingRow's Delete); Restore is now described only for words already cut, selected and sent as its own edit.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-checked at e9aa8c01db09 against my earlier review at 940f197d. jrusso1020's re-review already goes through his seven points and adds two new ones (the reference photo a motion guide needs, and Restore not cancelling a pending cut), so I'm only following up on mine.

  • Page weight: fixed, thanks. Every inline spot is now HoverVideo with a poster and a label, and the main demos have new posters. There are no plain <video> tags left in docs/studio-app, and all 28 poster paths exist.
  • Unused images: still open. docs/public/images/studio-app/export.jpg and project.jpg are still in the tree with no references in docs/.
  • Dated caption: still open, now at docs/studio-app/first-video.mdx:23 ("today's app" and a model version).
  • Nit: h2 { clear: both; } at docs/custom.css:1366 is unchanged. Still harmless today.

On the new code: the reduced-motion handling in docs/snippets/docs-video.jsx looks right to me. The effect that pauses and unloads the clip also runs on first mount, so a visitor who already has Reduce Motion on is covered, not only one who switches it on mid-visit. Play puts the source back. I also checked the new npx hyperframes open sample output in existing-project.mdx against packages/cli/src/commands/open.ts at this head. It matches what the command prints when run inside an agent session.

One thing for merge time: squash commits in this repo list every commit subject in the body, and several subjects here are working notes about builds, rollout and how the clips were recorded. Trimming the squash message to the PR title keeps those out of main's history.

I didn't check the app's behaviour (it isn't in this repo) or view the rendered pages.

Verdict: COMMENT
Reasoning: My page-weight point is fixed and what remains from my side is minor, but two content corrections from the existing review are still open at this head and I can't verify app behaviour from this repo.

…ding cut by deleting its row; remove two unused stills

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-checked the delta from e9aa8c01 to 2d2840df. Both remaining points are resolved. The motion guide now names the picture of the person alongside the ≤5s clip, and the pending-cut text tells readers to delete the row under Pending video edits, keeping Restore for words already cut. The two removed stills have no remaining references under docs/ and are listed in ALLOWED_DELETIONS with reasons. The caption no longer names a model. No further findings from me. CI was still running when I checked.

— Rames

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Independent review of exact 2d2840dfdbd4d6fb0af6e947bafee6d9f39ac56e (base ab57d0ee1446846d81d25d7d2411ec03e9927005). No remaining blocker found in the reviewed documentation corrections.

docs/studio-app/video-clips.mdx:36 now includes the person's picture alongside the ≤5s guide, matching Desktop video1GuideRefusal. workspace.mdx:55–57 now distinguishes deleting an unsent Pending video edits row from sending Restore for already-cut words; I traced PendingRow → PendingEditsList removal and Script selection/staging at Desktop 1729e96f34e5a755ab648a450548c117a4b5c58e.

Audited: the complete six-file delta from e9aa8c01, the remaining two findings against their consumers, removed-image references and reasoned deletion allowlist, navigation/link/poster references, shared DocsVideo/HoverVideo changes and cleanup, and selected prior transcription/pricing/Mac handoff corrections. Rames's prior reviews cover the broader workflow corrections; no duplicate inline findings.

Executed: docs motion source gate, all 49 CLI commands listed, 23 motion/deletion script tests (all pass), 28 local poster references and 45 internal links resolve; neither removed still has a remaining docs reference. Current-head hosted Lint completed successfully; I read its actual log (0 warnings/errors). The captured checks contain no failures, but Validate docs and several runtime/Windows checks were still running. This approval does not claim final CI completion.

Trusting / limits: the author's 354-claim census, b467/non-staff recording provenance and browser walk are attributed, not independently reproduced. No complete video-frame privacy audit, Mintlify browser playback/layout test, signed-in Desktop session or paid/provider call; no merge/deploy action.

Verdict: APPROVE
Reasoning: The two remaining source-backed instruction defects are fixed, and the bounded independent checks found no further blocker in the reviewed scope. Pending CI remains a separate merge gate.

— Magi

@ukimsanov
ukimsanov added this pull request to the merge queue Oct 24, 2026
Merged via the queue into main with commit 7224812 Oct 24, 2026
64 checks passed
@ukimsanov
ukimsanov deleted the docs/studio-app-pages branch October 24, 2026 21:52

This branch was successfully deployed

1 active deployment
staging - docs — 2d2840df Deployed Oct 24, 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.

4 participants