fix(overlay): drive timing review playhead from mpv playback position

- Preview session observes time-pos, waits for loaded media before seeking, and acks each command
- Forward positions to the modal over media-timing-review:preview-position
- Cursor follows the real position, pauses while buffering, and stays at the clip end when done
- Replace the fixed end-of-clip timer with a 15s stall timeout
- Document preview cursor behavior and ownership in docs
This commit is contained in:
sudacode committed 2026-09-29 18:07:07 -07:00
1 parent 04b878dd93
commit fdb0a31fff
14 files changed
+335 -57

No files matched your search

+4 -15
View File
@@ -1687,7 +1687,7 @@ body:focus-visible,
--selection-end: 80%;
--original-start: 25%;
--original-end: 75%;
--playhead-duration: 1s;
--playhead-position: var(--selection-start);
position: relative;
height: 52px;
@@ -1803,10 +1803,10 @@ body:focus-visible,
.media-timing-review-playhead {
position: absolute;
z-index: 5;
z-index: 7;
top: 0;
bottom: 0;
left: var(--selection-start);
left: clamp(0px, var(--playhead-position), calc(100% - 2px));
width: 2px;
background: var(--ctp-yellow);
box-shadow: 0 0 12px color-mix(in srgb, var(--ctp-yellow) 75%, transparent);
@@ -1816,16 +1816,6 @@ body:focus-visible,
.media-timing-review-track.is-previewing .media-timing-review-playhead {
opacity: 1;
animation: media-timing-review-playhead var(--playhead-duration) linear forwards;
}
@keyframes media-timing-review-playhead {
from {
left: var(--selection-start);
}
to {
left: var(--selection-end);
}
}
/* A thin line centered on the clip edge, so the line itself is the trim boundary. */
@@ -2128,8 +2118,7 @@ body:focus-visible,
animation: none;
}
.media-timing-review-track.is-loading::after,
.media-timing-review-track.is-previewing .media-timing-review-playhead {
.media-timing-review-track.is-loading::after {
animation: none;
}
}