Repository navigation
feat(player): add customizable branding to the preview player - #1
Draft
robinebers wants to merge 13 commits into
Draft
robinebers wants to merge 13 commits into
robinebers wants to merge 13 commits into
Conversation
…pacity (heygen-com#7583) * fix(studio): menus and popovers ease their scale in, not only their opacity * style(studio): format the floatingMotion test
…en-com#7689) skills/gsap was folded into the animation skill in heygen-com#1349, but build-copy still listed it, so every CLI build printed "[build-copy] skill not found, skipping: skills/gsap". Drop the entry, and add a test that every bundled skill name has a SKILL.md so the next rename fails CI instead of warning. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…indings (heygen-com#7699) A color-graded <video> is painted into a canvas the runtime inserts after it, with a runtime-generated id (__hf_color_grading_<video id>). Layout findings on that canvas (e.g. container_overflow for a punch-in inside an overflow:hidden box) named the canvas, so the fix hint "mark intentional overflow with data-layout-allow-overflow" pointed at an element the author never wrote. The audit already reads flags from the authored video (authoredElement); uniqueSelectorFor now names that element too, so the finding's selector, data attributes and source file are the video's. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…es with (heygen-com#7697) The settings line printed the encoder tier, so the default render said "30fps · standard · …" while it encoded the looks preset at CRF 16, and -q delivery said "high". A long-form render that came out at ~40 Mbps read as "standard quality" in its own log. The line now prints the --quality name as asked for and the CRF or bitrate in effect: "looks (CRF 16)" by default, "looks (CRF 20)" with --crf 20, "looks (10M)" with --video-bitrate 10M, "draft", "delivery". Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gen-com#7608) `hyperframes init --non-interactive` closes with `cd <name> && npm run …` lines for the person or agent to paste. The name went in as typed, so a name with a space or a quote printed a command that fails as written: `cd my first video` (bash: "cd: my: No such file or directory", zsh: "too many arguments") and `cd it's mine` (an unterminated quote). A new `shellArg` quotes a word only when a shell would split or expand it: double quotes, or single quotes when the text holds `$`, a backtick, `\`, `"` or `!`; on Windows, double quotes, with `\` paths left bare. `hyperframes open` / `preview --stop` hints (desktopApp's `shownDir`) already quoted whitespace with JSON.stringify and now use it too, so a name like `it's` or `a&b` is covered there as well. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
heygen-com#7700) duplicate_audio_track said two overlapping clips on one data-track-index "cause layered audio playback" and suggested moving one to another track. The render's mixer never reads data-track-index (every audible clip is its own amix input) and the docs call the attribute a Studio lane only, so the two clips are layered whatever their tracks: rendering a whoosh and a hit on track 6, then with the hit on track 7, gives byte-identical audio. The message now says both play and that the overlap is two clips sharing one Studio lane; the hint says splitting tracks leaves the mix unchanged, and that a leftover duplicate should be removed or moved. lint-rules.mdx said the audio "doubles up"; it now says the same as the message. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A page that embeds <hyperframes-player> can now give it its own play, pause and volume icons and its own loading logo, by putting elements with a slot attribute inside the player. Anything the page leaves out keeps today's HyperFrames look. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
7 tasks done
…#7714) * feat(studio): toasts show as a centred pill that rises in * fix(studio): error toasts stay up on a click so their text can be copied
…gen-com#7716) `hyperframes docs rendering` said workers run 1-8, but the engine clamps an explicit value to 24, and it never mentioned --format or --gif-loop. The options now match render.ts and the engine limit. Fixes heygen-com#7668
…ygen-com#7715) capture read --timeout with parseInt, so `--timeout 1s` became a 1 ms page-load timeout. grade-compare dropped an invalid value without a warning. Both now use the shared parseTimeoutMs helper that check and snapshot already use, keeping their defaults of 120000 ms and 5000 ms. Fixes heygen-com#7671
Open
7 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Teams that put the HyperFrames player inside their own product get the HyperFrames play button, volume icons and green HyperFrames logo on the loading screen, and there is no supported way to change them. The player looks like someone else's product sitting inside yours. The only workaround today is reaching into the player's internals, which can break with any release.
What changes
A page can now give the player its own artwork. You put an icon inside the
<hyperframes-player>tag and label which part it replaces: the play icon, the pause icon, the three volume icons (loud, quiet, muted) or the loading logo. The player shows it in place of its own.Before
The page supplies its own icons and logo, and the player ignores them.
After
The same page: the player shows the page's icons in the control bar and its logo on the loading screen.
Test plan
Checked in Chrome 157 against a build of
mainon the same pages:main.sandbox-origin="opaque".--hfp-color).controlsis turned off and on and after the player is moved in the page, and stay hidden whilecontrolsis off.bun run --cwd packages/player test(584 tests, 5 new), typecheck, oxlint, oxfmt, fallow, the comment checks andbun run verify:packed-manifestspass.How
<slot>in the player's shadow DOM, with today's SVG as the fallback:play-icon,pause-icon,volume-high-icon,volume-low-icon,volume-muted-iconandloading-mark. No new attributes, CSS variables, parts or styles.loading-markfallback, so a custom logo never gets them.mainpacks to 158,705 bytes, 11 under the old limit. This change adds about 380 bytes of code and 600 bytes of README (packed 159,691).Related work
No earlier issue or PR covers player icons or branding. heygen-com#241 added the speed menu and the control bar's CSS theming, whose color these icons pick up.