From d83b3eab25cc29af2d3bd2c0c4d61c07790774bb Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sun, 3 May 2026 22:14:59 -0400 Subject: [PATCH] fix(web/m7-364): TrackRef field shape + seek-on-restore + drawer inert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI svelte-check failed on 5 type errors caused by the slice using duration_ms/album_name fields that don't exist on TrackRef (the real shape uses duration_sec + album_id/album_title). Fixed across QueueDrawer, QueueDrawer.test, QueueTrackRow.test, persisted.test, and the inline `state.current = null` in PlayerBar.test (TrackRef | undefined, not | null). Final whole-slice review concerns also rolled in: - C1 (Critical): persisted position was restored to UI but never seeked into the audio element — first timeupdate snapped _position back to 0. Added a one-shot _pendingRestorePosition module ref + consumePendingRestorePosition() export; layout's loadedmetadata handler now seeks once on restore. - I1 (Important): throttled-write effect now wraps _queue / _index reads in untrack so the dependency tracking matches the design intent. Position remains the only tracked dep. - I4 (Important): drawer gets inert={!queueDrawerOpen} so its inner buttons drop out of tab order when closed (aria-hidden alone doesn't do that). Removed redundant role="complementary" from