Conversation
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.
What
hyperframes init demo --audio track.wav --non-interactive --skip-transcribesucceeds and copies the source file, but the generated composition contains no audio element. The same source is also lost during interactive initialization.Why
Only the video basename reaches the shared scaffolder. With an audio-only input that basename is absent, so the placeholder patcher removes both media elements and the resulting composition is silent.
How
Pass the audio basename through both initialization paths. Preserve and fill the template's audio element while removing its unused video element. Existing video initialization and blank templates retain their current behavior.
Test plan
HYPERFRAMES_NO_TELEMETRY=1 bunx --no-install vitest run packages/cli/src/commands/init.test.tspasses all 28 tests. The subprocess regression executes this worktree'scli.tsand verifies its generated audio reference, absence of a video clip, and copied WAV contents.ok: true.--audiobehavior).This branch contains only the two initialization files. It applies directly to
f6041d7597c8c53d381d4c27feb86b305b3317a4. Dependencies were installed separately; reused generated files belong only to unchanged packages. Source and workspace dependency resolution were checked to remain inside this worktree. Targeted oxlint, oxfmt and diff checks pass; the configured pre-commit and commit-message hooks run normally through this worktree's Lefthook binary.The full workspace build passed earlier in the audit, while the initialization fix was still being completed. All workspace typechecks subsequently passed with the initialization and GIF fixes applied. After adding the separate download fix, the final combined checkout passed the CLI build and typecheck, repository lint/format checks, and CLI suite (3,213 passed, 3 skipped). These broader gates were not rerun after splitting this standalone branch; its 28 initialization tests were rerun here.
The combined workspace run retained unrelated baseline/environment limitations: an AAC loudness assertion also fails with the original base implementation, and Node 25 native Web Storage initially conflicts with Player/Studio tests. Disabling that native feature passes all 370 Player tests and all 120 tests in the affected Studio files. The headless browser check retains the existing one-second WAV versus ten-second fallback-slot warning when transcription is skipped. Node 22, Linux/Windows and cloud rendering were not exercised locally.
Additional verification of the final combined state: after confirming that the original audit checkout contained exactly the three reviewed patches on
f6041d7597c8c53d381d4c27feb86b305b3317a4,HYPERFRAMES_NO_TELEMETRY=1 bun run buildandHYPERFRAMES_NO_TELEMETRY=1 bun run --filter '*' typecheckwere rerun and both passed. Before/after source and diff hashes are identical. These new whole-workspace results cover the final three-fix combination; this standalone branch's own focused tests and hook checks remain documented separately above.Current-upstream integration check: the three reviewed patches were also applied to a separate checkout of
a0a6244be7a40956c5343f5846609e584ee5c6b5. With independent dependencies and a freshly rebuilt current Core runtime, 388 focused tests passed: audio route/transport (97), capture classification (19), render orchestration (222), GIF preparation/compiler (10), and init/download (40). A real local Chrome/FFmpeg smoke check reused the init-generated audio element in a minimal two-second scene with a finite-loop GIF anddata-loop="false"; output was 160×90 H.264/AAC, 10 frames, 2.000 seconds, with one GIF playback and a 1.6-second tail hold. The screenshot retry branches were checked by unit tests, not an injected browser failure. Source/diff hashes remained unchanged. This verifies the combined patches against that upstream SHA; the independent commit and its original base remain unchanged.