Skip to content

chore(core): label every montage tween — fully addressable / lint-clean#70

Merged
kiyeonjeon21 merged 1 commit into
mainfrom
chore/montage-addressable-labels
Jun 20, 2026
Merged

chore(core): label every montage tween — fully addressable / lint-clean#70
kiyeonjeon21 merged 1 commit into
mainfrom
chore/montage-addressable-labels

Conversation

@kiyeonjeon21

Copy link
Copy Markdown
Owner

What

Follow-up hygiene to the structural-editing rewrite (#69). That rewrite moved each shot's shot-${i} address onto the beat name and dropped the label off the interior fade-in and Ken Burns tweens. reframe lint checks each tween's own label and does not credit the enclosing beat (manifest.ts walkMotion), so a montage reported ~12 "unlabeled-motion" findings — lint noise that blocks lint --strict as a CI gate and was a regression from the pre-rewrite montage (where the Ken Burns carried shot-${i}).

How

Label every generated montage tween, alongside the shot-${i} beat name:

  • fade-in → shot-${i}-in
  • Ken Burns → shot-${i}-kb
  • crossfade → cross-${i+1} (unchanged; tests + clip-ripple depend on it)
  • last shot's closing fade → shot-${last}-out

All distinct → no duplicate-label collision. The motion is now fully addressable (an overlay can retime just the fade / Ken Burns) and lint-clean. Adds a lintScene regression test asserting zero unlabeled-motion on a montage.

Folded into the unpublished 0.6.40 (no version bump); CHANGELOG date corrected to the publish day (06-21).

Verification

  • reframe lint examples/scenes/photo-montage.ts | grep 'on "shot-'0 (title-glyph brand-* findings are pre-existing splitText behavior, out of scope)
  • 387 tests pass (+1 lint test), typecheck clean
  • verify-overlay still 4 applied / 0 orphaned (labels are additive; reorder/remove unaffected)
  • reframe labels shows new shot-0-in / shot-0-kb / shot-5-out rows; shot-${i}/cross-${i} unchanged

🤖 Generated with Claude Code

The structural-editing rewrite moved each shot's `shot-${i}` address onto
the beat name and left the interior fade-in and Ken Burns tweens unlabeled.
`reframe lint` checks each tween's own label (not the enclosing beat), so a
montage reported ~12 unaddressable-motion findings — lint noise that blocks
`lint --strict` as a CI gate.

Label every generated tween: fade-in `shot-${i}-in`, Ken Burns `shot-${i}-kb`,
crossfade `cross-${i+1}` (unchanged), and the last shot's closing fade
`shot-${last}-out`. The motion is now fully addressable (an overlay can retime
just the fade/Ken Burns) and lint-clean. Adds a lintScene regression test
asserting zero unlabeled-motion on a montage. Folded into the unpublished
0.6.40; CHANGELOG date corrected to the publish day.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kiyeonjeon21 kiyeonjeon21 merged commit f581884 into main Jun 20, 2026
1 check passed
@kiyeonjeon21 kiyeonjeon21 deleted the chore/montage-addressable-labels branch June 20, 2026 16:17
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