Skip to content

feat(studio): motion blur panel with Off / Subtle / Strong - #6112

Merged
vanceingalls merged 3 commits into
mainfrom
feat/studio-motion-blur-panel
Oct 24, 2026
Merged

vanceingalls merged 3 commits into
mainfrom
feat/studio-motion-blur-panel

Conversation

@vanceingalls

@vanceingalls vanceingalls commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

What

A Motion blur tab in Studio's right dock with one three-way control: Off / Subtle / Strong.

  • Subtle is the default blur: 240° shutter, samples sized to the smear.
  • Strong is the maximum: 720° shutter, 64 samples.
  • Off removes data-motion-blur and leaves the other attributes alone.

It writes the root attributes through the SDK, so a render uses the same setting and Undo works. It reads the live preview root, so it follows undo and outside edits. Locked with a note when a sub-composition is open (blur is read from the main root).

Adds @hyperframes/core/motion-blur-settings (attribute names, limits, parse and write helpers); the capture runtime now reads its config through it so editors and runtime share defaults.

Rebased onto main after #6106 to #6108 merged. The dock tab is titled Blur: with five tabs, "Motion blur" overflowed the default dock width by 10px.

Verified

  • Real Studio: Subtle wrote data-motion-blur="on"; Strong added shutter 720 and samples 64.
  • Full check run: tsc, size budgets, 7753 tests; panel tests mutation-checked.

Before

The fifth tab ("Motion blur") is clipped at the default dock width.

Before: the Motion blur tab is clipped

After

The tab is titled Blur and fits; the panel shows Off / Subtle / Strong.

After: the Blur tab fits

🤖 Generated with Claude Code

@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 · 1 nit · head 58269250

The panel works out the change against the preview DOM, but the write goes to the bytes on disk. Whenever those two differ, it can save a different level from the one picked, and undo inside the 1.5 s hold makes them differ. Details ↓ inline.

Scope

Read the whole diff and traced useVariablesPersist → persistSdkCandidateMutation (the candidate is cloned from readProjectFile, not the live session). Ran the 3 panel/model test files locally (28 pass), plus a throwaway repro for the blocker. On this stacked head only the perf/preview/regression workflows ran, so for the full suite I'm relying on your local run. No prior reviews.

— Genesis (Claude)

Comment thread packages/studio/src/components/panels/MotionBlurPanel.tsx Outdated
Comment thread packages/studio/src/components/panels/motionBlurPanelModel.ts
@vanceingalls
vanceingalls force-pushed the feat/capture-blur-auto-tier branch from 393e017 to 00442fe Compare October 23, 2026 05:41
@vanceingalls
vanceingalls force-pushed the feat/studio-motion-blur-panel branch 2 times, most recently from c06409c to b3c9c09 Compare October 23, 2026 05:50

@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 — 2 resolved, 0 open, 0 new · 58269250 → b3c9c097

Verification

Edits are now computed from the candidate root inside the mutation. The NothingToChange throw comes back out of persistSdkCandidateMutation as the same error instance and is swallowed, so a no-op writes no file and records no undo step. Ran the panel, model, dock and layout tests plus core motionBlurSettings locally: 112 pass. With the fix reverted, the new disagree test and the locked-level test fail. The first commit is unchanged after the rebase (range-diff =). regression and preview-regression are green; Player Safari perf was still running.

— Genesis (Claude)

@vanceingalls
vanceingalls force-pushed the feat/capture-blur-auto-tier branch from b40dc36 to 4ce56ce Compare October 23, 2026 19:34
@vanceingalls
vanceingalls force-pushed the feat/studio-motion-blur-panel branch from b3c9c09 to 050626a Compare October 23, 2026 19:34

@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 · 050626a2

The patch is line-for-line identical to b3c9c097 (compared with b40dc365...b3c9c097), which @heygengenesis approved after both of its findings were fixed. I also read the readConfig move onto readMotionBlurSettings. It only differs on invalid values: an empty shutter now means 240 instead of 0, and a non-numeric samples value now means auto instead of 16. Both are improvements.

— Genesis (pr-review)

@vanceingalls
vanceingalls force-pushed the feat/capture-blur-auto-tier branch from 4ce56ce to 0b4c3b8 Compare October 23, 2026 20:46
@vanceingalls
vanceingalls force-pushed the feat/studio-motion-blur-panel branch 2 times, most recently from a54a4d4 to e0b2dcf Compare October 23, 2026 20:55
heygengenesis[bot]
heygengenesis Bot previously approved these changes Oct 23, 2026

@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 resolved, 0 open, 0 new · 050626a2 → e0b2dcf0

Rebase only: the patch matches the approved head line for line.

— Genesis (pr-review)

Base automatically changed from feat/capture-blur-auto-tier to main October 23, 2026 21:20
@vanceingalls
vanceingalls dismissed heygengenesis[bot]’s stale review October 23, 2026 21:20

The base branch was changed.

@mintlify

mintlify Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

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

Project Status Preview Updated
hyperframes 🟢 Ready View Preview Oct 23, 2026, 9:47 PM

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

vanceingalls and others added 2 commits October 23, 2026 14:20
One three-way control in the right dock. Subtle is the default blur
(240 deg shutter, samples sized to the smear); Strong is 720 deg and 64
samples. Writes the root data-motion-blur attributes through the SDK so
renders match and undo works; reads live attributes from the preview.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The edits were worked out against the preview DOM but written to the file,
so a stale preview (undo inside the hold, a slow reload) could save a level
other than the one picked. They are now computed inside the mutation from
the candidate's root. While locked to a sub-composition no level is shown.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 271 (base branch 271), smooth 170 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (0)

Five tabs overflowed the default dock width by 10px and clipped a label
(Studio: load smoke). The tab is now titled Blur.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@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 open, 0 new · b3c9c097 → 82cadf3d

Verification

The rebase onto main left both earlier commits patch-identical (range-diff =). 82cadf3d only retitles the dock tab to "Blur" and updates the docs line. Nothing in code or tests matched on the old tab title; the panel heading and the radiogroup label still say "Motion blur". The latest CI and PR captures runs at this head are green; the earlier failed/cancelled pair was superseded.

— Genesis (Claude)

@vanceingalls
vanceingalls merged commit ffc327b into main Oct 24, 2026
127 of 130 checks passed
@vanceingalls
vanceingalls deleted the feat/studio-motion-blur-panel branch October 24, 2026 00:29

This branch was successfully deployed

1 active deployment
staging - docs — 82cadf3d Deployed Oct 23, 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.

1 participant