You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add vse-cut-list example witnessing the 4.5-to-5.x sequencer API rename
AI-generated VSE code still targets the pre-rename API everywhere:
sequence_editor.sequences is gone on 5.x, new_effect ends strips with
length= there but frame_end= on 4.5, and frame_final_* reads are
deprecated aliases for left_handle/right_handle/duration. No existing
example covers the sequencer, so this drift had no smoke-gated witness.
The example builds a deterministic cut list (color programs, a clamped
GAMMA_CROSS fed by a dedicated source pair, a scene strip, a text strip),
asserts every span against its closed form on each version's canonical
accessors, and re-asserts after a save/reload round-trip. A --check-pixels
mode witnesses the compositing contract on a tiny render. Hazards found
while authoring are witnessed too: the cross clamps to the source overlap,
effect strips consume their inputs only when stacked above them, and a
same-scene scene strip renders transparent.
Runs check-only on 4.5 LTS and 5.1 in blender-smoke; the render is the
sequencer's own output staged in the dark studio per VISUAL-STYLE, gated
against the pinned contact-sheet set.
Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
<ahref="examples/vse-cut-list/"><imgsrc="examples/vse-cut-list/preview.webp"alt="VSE cut list: a two-by-two program wall in a dark studio — crimson, teal, and amber color strips plus the mid cross-blend cell, composited by the sequencer over a scene strip, with the span caption below" /></a>
293
+
</td>
294
+
<tdvalign="middle">
295
+
296
+
### [vse-cut-list](examples/vse-cut-list/)
297
+
298
+
The sequencer API rename from 4.5 LTS to 5.x — `strips` (never `.sequences`), `new_effect`
299
+
ending in `length=` vs `frame_end=`, and `left_handle`/`right_handle`/`duration` replacing
300
+
the deprecated `frame_final_*`. Asserts closed-form spans, GC wiring and clamping, the
301
+
consumed-input compositing contract, and a save/reload round-trip.
- Gallery coverage follow-ups from the GPv3 review: light-linking, VSE sequences-to-strips witness (`grease-pencil-rosette`, `armature-bend`, `text-version-stamp`, and `image-pixels-testcard` shipped first)
100
+
- Gallery coverage follow-ups from the GPv3 review: light-linking(`grease-pencil-rosette`, `armature-bend`, `text-version-stamp`, `image-pixels-testcard`, and `vse-cut-list` shipped first)
101
101
-~~UV-layer authoring witness~~**SHIPPED** as `examples/uv-layer-grid/` — `create_grid(..., calc_uvs=True)` silent no-op without a pre-existing UV layer; closed-form UV fill + explicit assignment fallback; dual-panel render (flat texel (0,0) vs neon checker)
102
102
-~~Image save-format witness~~**SHIPPED** as `examples/png-exr-alpha/` — float→PNG is RGBA16 and false-unpremultiplies as if associated-alpha (closed-form err 0.98 at RGB 0.02 / a=1/255); OpenEXR preserves float RGBA; byte→PNG is straight RGBA8; `EXR color_mode='RGB'` drops alpha
103
103
- Attribute domain witness: writing a POINT-domain color attribute and reading it as if it were CORNER (or vice versa) silently shears colors across shared verts — companion to `color-attribute-wheel`
104
104
- Light-linking collection witness: object light linking / receiver collections so a key illuminates only the hero (common AI miss when staging multi-light studios)
105
-
- VSE sequences-to-strips witness: building a short cut list from `sequences.new_effect` / movie strips and asserting frame ranges survive reload
105
+
-~~VSE sequences-to-strips witness~~**SHIPPED** as `examples/vse-cut-list/` — `.sequences` removed on 5.x (4.5 bridges to `.strips`), `new_effect` end kwarg `frame_end=` (4.5) vs `length=` (5.x), `frame_final_*` deprecated in favor of `left_handle`/`right_handle`/`duration`, TRANSFORM effect type removed, GAMMA_CROSS clamps to the source overlap, effect strips consume inputs only when stacked above them, same-scene scene strips render transparent; save/reload round-trip + tiny-render pixel witness
106
+
- GAMMA_CROSS blend-curve witness: the cross blend is not the naive linear mix (mid-cross measured (0.341, 0.349, 0.463) from crimson (0.85, 0.10, 0.22) and teal (0.06, 0.75, 0.80)) — derive and assert the gamma-space closed form per frame; follow-up to `vse-cut-list`
107
+
- Falsy `bpy_prop_collection` trap snippet: an empty collection is falsy, so `editor.strips or editor.sequences` silently falls through to the legacy accessor on an empty timeline — always branch on `hasattr`; likely generalizes across the API (found authoring `vse-cut-list`)
<aclass="card-media" href="vse-cut-list/" aria-label="vse-cut-list example detail page">
452
+
<imgsrc="assets/vse-cut-list-hero.webp" alt="vse-cut-list — The sequencer API rename from 4.5 LTS to 5.x — strips (never .sequences), new_effect ending in length= vs frame_end=, and left_handle/right_handle/duration…" loading="lazy" decoding="async" />
453
+
</a>
454
+
<divclass="card-body">
455
+
<h2><ahref="vse-cut-list/">vse-cut-list</a></h2>
456
+
<pclass="teaches">The sequencer API rename from 4.5 LTS to 5.x — strips (never .sequences), new_effect ending in length= vs frame_end=, and left_handle/right_handle/duration replacing the deprecated frame_final_*. A deterministic cut list — color programs, a clamped GAMMA_CROSS, a scene strip, a text strip — asserted before and after save/reload.</p>
457
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Each side hard-fails the other's spelling: TypeError on the wrong end kwarg, AttributeError on .sequences. The cross clamps to the source overlap, effect strips consume their inputs only when stacked above them, and a same-scene scene strip renders transparent.</p>
458
+
<aclass="card-link" href="vse-cut-list/">View example <spanaria-hidden="true">→</span></a>
0 commit comments