Repository navigation
docs(studio-app): show the app working, three new pages, today's UI - #6223
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
jrusso1020
left a comment
There was a problem hiding this comment.
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.
|
|
||
| ## 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 |
There was a problem hiding this comment.
[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.
| ## 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 |
There was a problem hiding this comment.
[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.
| *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 |
There was a problem hiding this comment.
[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.
|
|
||
| - **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. |
There was a problem hiding this comment.
[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.
| 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 |
There was a problem hiding this comment.
[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.
|
|
||
| | | This Mac | Cloud | | ||
| | --- | --- | --- | | ||
| | Cost | Free | Paid per minute of video from your HeyGen API balance. 4K costs 1.5 times as much. | |
There was a problem hiding this comment.
[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.
|
|
||
| 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" /> |
There was a problem hiding this comment.
[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.
There was a problem hiding this comment.
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 toHoverVideoas already suggested: it usespreload="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.jpgandproject.jpgare no longer used anywhere indocs/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:21says 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; }indocs/custom.css:1366applies to every page. It's harmless now since.hf-asideis 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.
…e, Reference, Script)
…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.
…video edits, Send 1 edit, 0:22 to 0:17
…edit to Claude Code, 1 min 52 s edit)
…, 16 s); cloud rendering as the app shows it
… account (Up to $1.09 shown before Make)
…age mentions HeyGen's Checking step
…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
…; Automatic updates in troubleshooting
940f197 to
85f76bb
Compare
…n turns on mid-visit; play loads it again
jrusso1020
left a comment
There was a problem hiding this comment.
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:
- Remote transcription: resolved in text; it now says audio goes to HeyGen and names sign-in/plan or API-key requirements.
- 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.
- Script toolbar/Fix words: corrected to the current actions and unchanged audio.
- Motion guide: 5-second rejection, 15-second output and no-start-picture limits are fixed; the mandatory person's reference image is still omitted.
- CLI handoff/catch-up: Mac, active agent session, plain-terminal and import limitations now match CLI source.
- Cloud pricing: the enterprise-only 1.5 multiplier is gone; the page names the estimate shown by Export and approximately twice for 4K.
- 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.
|
|
||
| - **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. |
There was a problem hiding this comment.
[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.
There was a problem hiding this comment.
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.
|
|
||
| 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 |
There was a problem hiding this comment.
[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.
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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
HoverVideowith a poster and a label, and the main demos have new posters. There are no plain<video>tags left indocs/studio-app, and all 28 poster paths exist. - Unused images: still open.
docs/public/images/studio-app/export.jpgandproject.jpgare still in the tree with no references indocs/. - Dated caption: still open, now at
docs/studio-app/first-video.mdx:23("today's app" and a model version). - Nit:
h2 { clear: both; }atdocs/custom.css:1366is 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
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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
What
hyperframes open/catch-up/ Import projects), Reference a video, Share for review, plus The project screen (@, #, /, Script, panels).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
mainof 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.hyperframes-oss/docs/studio-demos/<name>-v2.mp4(versioned names, cached a year, nothing in git). Posters and stills are small JPGs indocs/public/images/studio-app/.DocsVideotakes an optionalaspectfor 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 existingHoverVideo(hasAudio={false}, new optionallabel), so they pause and respect reduced motion.custom.cssgains 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 lintpasses (includingcheck:docs-snippet-motion)