Skip to content

Motion becomes a value - #149

Open
nmbrthirteen wants to merge 1 commit into
clip-look-fixesfrom
clip-motion
Open

Motion becomes a value#149
nmbrthirteen wants to merge 1 commit into
clip-look-fixesfrom
clip-motion

Conversation

@nmbrthirteen

Copy link
Copy Markdown
Owner

Stacked on #148.

Every part of a clip moved according to numbers written into its own component: hormozi sprang with damping: 12, subtle slid eight pixels over six frames, the name card faded over eight. Changing any of it meant editing a component.

Motion is four values now, attached to a part:

type Motion = {
  enter: "none" | "fade" | "rise" | "pop";
  exit: "none" | "fade" | "sink";
  duration: number;   // frames
  feel: "snap" | "soft" | "linear";
};

Four, not a keyframe timeline. Every move a short actually makes is in that list, and a timeline is a surface people open once. If something real cannot be said this way, that is the argument for keyframes, and not before.

This changes nothing on its own

Each style ships the motion it already had. Verified by frame hash at t=2s, before and after:

Style Hash
hormozi 1a71d344…
karaoke 5f8e6c14…
subtle 84d48965…
branded 6bba026c…

All four identical. An overridden motion renders a different frame, which is the other half of the proof.

Carried as one value

--motion '{"captions":{"enter":"pop","exit":"sink","duration":8,"feel":"soft"}}' on process, and one motion input prop on the composition, because that is how it will arrive from a clip template rather than as a flag per property.

Every part of a clip moved according to numbers written into its own
component: hormozi sprang with damping 12, subtle slid eight pixels over six
frames, the name card faded over eight. Changing any of it meant editing a
component, which is the same as saying it could not be changed.

It is four values now — enter, exit, duration, feel — attached to a part and
nothing else. Four, not a keyframe timeline: every move a short actually
makes is in that list, and a timeline is a surface people open once. If
something real cannot be said this way, that is the argument for keyframes,
and not before.

Each style ships the motion it already had, so this changes nothing on its
own. Verified by hash: hormozi, karaoke, subtle and branded all render the
same frame before and after, and an overridden motion renders a different
one.

Carried as one JSON value rather than a flag per property, because that is
how it will arrive from a template.
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 0c13dac6-0ea7-497b-b82f-462387478364

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This was referenced Aug 10, 2026
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