From 83aa57add3be62cb38acb1612ff6257a2996972f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 28 Sep 2026 09:46:57 -0700 Subject: A clip the reader turned the sound on for stays loud for the session, however its box is rebuilt. Pinning the box only protected it from a patch in place. A repaint that pairs children differently, the window unmounting the row and mounting it again, or a quoted note loading all rebuilt the player muted with the button back; the URL is remembered now, and a rebuilt box starts loud with no button. Muting again from the player's own control forgets it. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01VhUKyXKtsJ67QAFfb7QR9D --- tools/video-autoplay-test.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tools/video-autoplay-test.js') diff --git a/tools/video-autoplay-test.js b/tools/video-autoplay-test.js index 29a1437..583c908 100644 --- a/tools/video-autoplay-test.js +++ b/tools/video-autoplay-test.js @@ -77,6 +77,12 @@ try { JSON.stringify(await page.evaluate(() => { const v = document.querySelector('.note-video-box video'); return v && { paused: v.paused, t: v.currentTime, err: v.error && v.error.code, ready: v.readyState }; }))); await page.evaluate(() => document.querySelector('.note-video-box .vid-sound').click()); await sleep(500); check('Unmute turns the sound on, and the button leaves (the player\'s own controls carry mute)', await page.evaluate(() => { const v = document.querySelector('.note-video-box video'); const b = document.querySelector('.note-video-box .vid-sound'); return !v.muted && !b; })); + // the box rebuilt from scratch (the row re-rendered by hand, the way a + // window remount or a quote load would) comes back loud, with no button + await page.evaluate(() => { const box = document.querySelector('.note-video-box'); const row = box.closest('.row'); row.remove(); }); + await page.evaluate(() => { const b = [...document.querySelectorAll('button')].find((n) => /dark mode/i.test(n.textContent)); if (b) { b.click(); b.click(); } }); await sleep(800); + check('a rebuilt box keeps the sound on for the session', await waitFor(() => { const v = document.querySelector('.note-video-box video'); return v && !v.muted && !document.querySelector('.note-video-box .vid-sound'); }, 6000), + JSON.stringify(await page.evaluate(() => { const v = document.querySelector('.note-video-box video'); return v && { muted: v.muted, btn: !!document.querySelector('.note-video-box .vid-sound') }; }))); await page.evaluate(() => window.scrollTo(0, 1000)); await sleep(700); check('scrolled away, it pauses', await waitFor(() => { const v = document.querySelector('.note-video-box video'); return v && v.paused; }, 4000)); -- cgit v1.2.3