v2.46.0
v2.46.0
Community PR bundle: five contributed fixes and features (#62, #63, #64, #65, #66), live-validated on Resolve Studio 21.
Fixed
- Timeline marker frames are now correctly relative to the timeline start (#66). Timecode params and the playhead default rebase by
GetStartFrame(), so markers on hour-start timelines land where the Resolve UI shows them instead of an hour past the end of the timeline. Rawframeparams pass through unchanged and are documented as relative-to-start. Contact sheets and marker thumbnail review rebase the other way, with a guard so legacy absolute-stored markers still sample the intended frame. - Project lint no longer flags audio-only timelines as empty (#62). Live lint state reports per-type
video_item_count/audio_item_count/subtitle_item_count.
Added
media_pool.check_proxy_media_compatibility(#63): ffprobe-vs-source signature diagnostics covering resolution, fps, frame count, sample rate, and expected codec/profile. Same-aspect downscales count as compatible — half-res proxies are the normal proxy workflow.- Readback verification envelopes (
verified_operation) aroundmedia_pool.link_proxy_checked(#63) andmedia_pool.append_to_timeline(#64): preflight, execution, post-state readback, verification status, and a journal event.link_proxy_checkedgainscheck_compatibility/require_compatibleguards that refuse incompatible proxies before linking (PROXY_INCOMPATIBLE). binsin declarative project specs (#65): missing media-pool bin paths plan asensureactions and are created idempotently; existing bins are noops. Bin paths normalize to theMaster/prefix so unprefixed spec bins converge instead of reporting perpetual drift.
Validation
- Full offline unit suite green: 1153 passed, 0 failed (plus 207 subtests).
- Release static checks green: import probe, API parity audit, undefined-name / action-list / panel-docs drift guards, npm pack.
- Live Resolve Studio 21.0.0.47 validation on disposable projects with synthetic media:
tests/live_marker_validation.pypassed on an hour-start timeline (raw frame 12 → 12, playhead → 120, timecode +2s → 48; all markers within the visible timeline).- Proxy link readback: half-res ProRes proxy linked with
verification_status: readback_verified(Proxy Media Pathconfirmed viaGetClipProperty), zero contradictions; mismatched square/30fps file correctly refused byrequire_compatiblebefore linking.