From 07a417d167ee03008936d19e3c259f58be613334 Mon Sep 17 00:00:00 2001 From: 4gray Date: Fri, 4 Sep 2026 16:50:28 +0200 Subject: [PATCH] docs(agents): mirror the Embedded MPV relative-seek contract into AGENTS.md Review follow-up: the Shared Player Controls section documents the frame-copy commands and shortcuts, so the relative seekEmbeddedMpvBy invariant lives there too, next to the CLAUDE.md note. Co-Authored-By: Claude Fable 5.1 --- AGENTS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index f3ac937ef..a10b8037d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -278,6 +278,16 @@ Key files: commands are cancelled. Same-session IPC replies also yield to a broadcast snapshot received while the command was pending, preventing a successful recording acknowledgement from being rolled back by a stale reply. +- Embedded MPV seek steps (arrow keys, ±10 s buttons, `PlayerController.seekBy`) + go through the relative `seekEmbeddedMpvBy` IPC: every backend forwards the + delta as mpv `seek relative+exact` (addon export `seekBy`, helper + stdin command `seek-by`, Linux JSON IPC) and never advances the snapshot + position itself. Do not derive an absolute target from the renderer's + `positionSeconds`: it is floored to whole seconds, polled every 500 ms, and + a seek reply does not carry the new position, so rapid presses computed from + it collapse onto one target. Only the timeline scrub commits an absolute + `seek`. Contract: `docs/architecture/embedded-mpv-native.md` ("Resume And + Track Handling"). - DASH (`.mpd`) sources play through a lazily imported Shaka Player source engine (`libs/ui/playback/src/lib/shaka-engine/`) inside the HTML5 and ArtPlayer components; ClearKey keys come from KODIPROP-derived