Skip to content

fix(cli): cloud render uses the composition's data-fps and skips unused heavy files - #6895

Merged
miguel-heygen merged 2 commits into
mainfrom
rafcloud/cloud-fps-upload
Oct 31, 2026
Merged

miguel-heygen merged 2 commits into
mainfrom
rafcloud/cloud-fps-upload

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

What

hyperframes cloud render now renders at the composition's root data-fps when --fps is not passed, and no longer uploads large working files nothing uses.

Why

A 24 fps animated film rendered at 30 fps unless --fps 24 was passed by hand. Separately, motion guides and plates left in assets/ pushed the upload zip past the 200 MB limit even though the composition never used them.

How

  • fps: resolveCloudFpsArg reuses resolveDefaultFpsArg, the same owner local render uses. A fractional data-fps (29.97) is left to the server default because the cloud API takes whole rates.
  • upload: after media offload, offloadHeavyMedia drops files of 5 MB or more that no reference points at, that no script or file mentions by name, and that no --variables value names. Smaller files and anything referenced are untouched.

Test plan

  • data-fps=24 with no flag resolves to 24; an explicit flag wins; absent or fractional leaves the default
  • an unreferenced heavy file is not in the archive; one named in --variables is kept
    fails without the fix: render.test.ts › resolveCloudFpsArg › "reads the root data-fps when --fps is absent", "lets an explicit --fps win", "leaves the server default when data-fps is absent or fractional"; offload.test.ts › "leaves heavy files nothing references out of the archive, but keeps one a variable names", "keeps a heavy file only a --variables value names, and drops the one nothing names", "prepares a nested entry's GIF from the file next to it, as the renderer resolves it" (6 failed on the unfixed source)
  • src/cloud and src/commands/cloud: 159 passed, 3 runs in a row
  • two existing tests that expected unreferenced heavy files to stay were updated to the new rule

@heygengenesis heygengenesis Bot left a comment

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.

Verdict: REQUEST CHANGES · 1 blocker · 0 important · 0 nits · head 4c90fba2

  • blocker — PR body has no fails without the fix: line. "(fail on main)" is noted, but name the tests on that line, e.g. render.test.ts › resolveCloudFpsArg › "reads the root data-fps when --fps is absent" and offload.test.ts › "leaves heavy files nothing references out of the archive, but keeps one a variable names".

Code reads correct otherwise; one approval after the body fix is fine from my side.

Scope

Read the full diff: cloud/render.ts (resolveCloudFpsArg via resolveDefaultFpsArg, fps parsed after project resolve, variables threaded into offload), cloud/offload.ts (dropUnusedHeavyFiles: referenced / ≥5 MB / script-or-text mention / --variables basename), tests. CI/CodeQL/Windows/preview-regression still running at review time.

@heygengenesis heygengenesis Bot left a comment

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.

Verdict: APPROVE · 0 blocker · 0 important · 0 nits · 4c90fba2 → 47a27539

1 resolved, 0 open, 0 new. The fails without the fix: line now names the tests. The new commit drops two doc comments and makes resolveCloudFpsArg read the directory from resolveProject; an invalid directory now fails at the same error box, just before --variables parsing. At review time, CI, CodeQL, Windows and preview-regression were still running; Comments passed.

@miguel-heygen
miguel-heygen added this pull request to the merge queue Oct 31, 2026
Merged via the queue into main with commit ee50cd2 Oct 31, 2026
69 checks passed
@miguel-heygen
miguel-heygen deleted the rafcloud/cloud-fps-upload branch October 31, 2026 21:20
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.

1 participant