Skip to content

A paused episode overwrites newer progress synced from another device #461

Closed

Description

@chhoumann

A device that has an episode loaded and paused writes its own, older position over newer progress synced from another device.

Reproduce (found by DOCS5 on master 48e1d50, Obsidian 1.14.4, Linux; evidence in the program store under evidence/DOCS5/runtime-save-recovery.md)

  1. Desktop: play an episode, pause at 47.7 s. data.json records 47.7.
  2. Another device continues the episode to 90 s; sync delivers a data.json with 90 s and PodNotes picks it up (onExternalSettingsChange).
  3. Memory now holds 90 s, but the desktop player still shows 47.7 s.
  4. The window hides, or PodNotes saves for any other reason (player.save() then flushSaves()): data.json goes back to 47.7 s. Sync then carries 47.7 s back to the other device, so the listening done there is lost on both.

Seeking the desktop player to 90 s before it saves keeps the synced position, which shows the cause: the loaded player's position is written back regardless of whether it changed on this device.

Expected: a paused episode that this device hasn't moved adopts the synced position, and the player shows it. A save never replaces synced progress with a position this device didn't produce. While the episode is playing on this device, its own position wins.

This is the common "listen on the phone, come back to the desktop" handoff, so it matters for 2.22.0's multi-device sync (#388, #398). Until it's fixed, the held release docs (#458) work around it with a manual handoff step.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions