Skip to content

v2.54.1

Choose a tag to compare

@samuelgursky samuelgursky released this 18 Jun 13:20

v2.54.1

One more instance of the enum-keyed silent-failure class (issue #70), plus a
guard so the next one can't ship unnoticed.

Fixed

  • The raw timeline.export action passed type/subtype straight to
    Timeline.Export, which needs resolved resolve.EXPORT_* enum values — a
    JSON/MCP caller can't pass a live enum, so the action silently wrote nothing
    for every caller. It now resolves friendly format names (and EXPORT_*
    constant names) via the same _timeline_export_spec resolver that
    export_timeline_checked uses, and reports the resolved
    export_type/export_subtype.
  • export_timeline_checked resolved enum constants against the module global
    resolve (which can be None and silently degrade the EXPORT_* args to
    strings); it now uses get_resolve(), matching the issue-#70 lesson.

Added

  • An api_truth ↔ mitigation guard test: every enum-tagged catalog entry must
    declare a mitigation (its resolver/wrapper functions), each of which must
    exist in src.server. The next raw enum passthrough — a documented symbol with
    no real resolver, or a renamed/removed resolver — now fails CI. Added a
    Timeline.Export catalog entry and wired mitigation onto the AutoSyncAudio,
    CreateSubtitlesFromAudio, and CloudProject entries.

Validation

  • Full offline unit/static suite green (1238 tests; new export-resolution
    regression test + the mitigation guard).
  • Live-validated against DaVinci Resolve Studio 21.0.0
    (tests/live_enum_settings_check.py, read-only): fcpxml/edl resolve to the
    live EXPORT_* enum values rather than raw strings. (No timeline mutation or
    file write is performed by the check.)