Time left and finished go by the length the player measured

A feed can be minutes out: ReThinking's gave 41:23 for a 43:48 file,
which read 0:08 left with 2:33 to play. The player's length is kept in
entry_state beside the position, per listener, where no scan can put
the feed's figure back, and preferred to the feed's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 18:39:40 +00:00
parent b9e0d9f3cb
commit 0a83c716eb
4 changed files with 48 additions and 28 deletions

View File

@@ -6,7 +6,7 @@ reasoning lives. New write-ups go at the top.
See [README.md](../README.md) for what the thing is.
## 2026-09-15 — A player nobody was listening to, saving over one that was
## 2026-09-15 — Kristen Bell again: a length minutes out, and an idle player
After 0.6.0 the Kristen Bell episode dropped out of Currently Listening again, with eleven
minutes left in the player. Its saved position was 41:15 of a file 43:48 long, 94% and finished
@@ -15,9 +15,11 @@ the feed, and it was wrong: the feed does say 41:23, but no length makes 41:15 u
The log had the answer. Saves every ten seconds while it played, then two that were not
playback: one beside the only request for the file since the restart, and the last in the same
millisecond as a page load. A player left paused further on, in another tab or on another
device, saved its own place as its page reloaded. Every save goes through `savePos`, and it
saved whatever the player held whether or not anyone had played it since.
millisecond as a page load. The likeliest reading was a player left paused further on, in
another tab or on another device, saving its place as its page reloaded, since every save goes
through `savePos` and it saved whatever the player held whether or not anyone had played it
since. That was never confirmed. Fifteen minutes later the listener was playing on from 41:15
and heard 2:33 left, which fits that position having been theirs all along.
`savePos` now saves only once the player has played since its last save, so an idle one never
writes, and only playing counts: the seek to where you left off happens paused, and counting it
@@ -25,8 +27,11 @@ would save back whatever the list said, however old. A jump back is also saved a
the ten-second check only ever looked forward. The fixture audio does not decode, so the browser
test stands in for a loaded player and counts what `savePos` sends.
The feed's length, 2 minutes 25 seconds short of the file, still moves this episode's 90% line
earlier than the player's. Not fixed here; the measured length only fills in a missing one.
What was certainly wrong was the length. At 41:15 the item list said 0:08 left and the player
2:33: the feed gives 41:23 for a file that decodes to 43:48. The length the player measures now
goes into `entry_state` beside the position, and wins over the feed's for the 90% line and every
time left. Not into `entries`, where each scan writes the feed's figure back, and per listener,
so one person's player never changes what another sees.
## 2026-09-15 — Currently Listening, empty for anyone who opens what they play