[PR #1727] [MERGED] Pause and end playback if the Vue layer receives a progress update wh… #1670

Closed
opened 2026-04-25 00:00:31 +02:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/advplyr/audiobookshelf-app/pull/1727
Author: @indiefan
Created: 11/16/2025
Status: Merged
Merged: 11/23/2025
Merged by: @advplyr

Base: masterHead: lost-progress-fix


📝 Commits (2)

  • fa0b9ed Pause and end playback if the Vue layer receives a progress update while having no played track ref.
  • 892686b Update components/app/AudioPlayer.vue

📊 Changes

1 file changed (+1 additions, -0 deletions)

View changed files

📝 components/app/AudioPlayer.vue (+1 -0)

📄 Description

…ile having no played track ref.

Brief summary

#1385 contains repro steps for disassociating the native player from the vue layer. While not technically the trigger users are experiencing in the wild, it's a good method for triggering a similar state, and one that we should be resilient towards. After using it to harden the Native/Vue sync behavior, I will send a patch to address that specific trigger.

This change recognizes when the native audio player is sending updates while the the Vue layer does not believe audio is being played. Regardless of how we got into that state, I believe we should pause and close playback to avoid losing progress. Fwiw, if this state is expected under normal conditions (and recoverable) then we shouldn't land my PR.

Which issue is fixed?

Fixes #1385 (progress will not be lost any more).

Pressing "play" from native/bluetooth controls in this state will still result in an error toast (because the native and Vue players have become disassociated). Looking into a follow up to restore/rehydrate the Vue layer from a playing native audio player, but I think this fix should go in first as it at least avoids the outcome where progress is lost.

Pull Request Type

It affects both I believe because it changes the Vue behavior. I have tested this on iOS, but in theory the change makes sense for both platforms (we probably don't want native playback to continue when the Vue layer believes it to have stopped).

In-depth Description

Not much more to say than what's above.

How have you tested this?

Tested on iOS using the repro steps provided on #1385 to trigger disassociation of Native/Vue layers and verify remediation.

Screenshots

N/A.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/advplyr/audiobookshelf-app/pull/1727 **Author:** [@indiefan](https://github.com/indiefan) **Created:** 11/16/2025 **Status:** ✅ Merged **Merged:** 11/23/2025 **Merged by:** [@advplyr](https://github.com/advplyr) **Base:** `master` ← **Head:** `lost-progress-fix` --- ### 📝 Commits (2) - [`fa0b9ed`](https://github.com/advplyr/audiobookshelf-app/commit/fa0b9ed6ab4a22cda345948ed7191ff3a0709eb0) Pause and end playback if the Vue layer receives a progress update while having no played track ref. - [`892686b`](https://github.com/advplyr/audiobookshelf-app/commit/892686b21346284a2757cafa74e68ade8c845037) Update components/app/AudioPlayer.vue ### 📊 Changes **1 file changed** (+1 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `components/app/AudioPlayer.vue` (+1 -0) </details> ### 📄 Description …ile having no played track ref. ## Brief summary #1385 contains repro steps for disassociating the native player from the vue layer. While not technically the trigger users are experiencing in the wild, it's a good method for triggering a similar state, and one that we should be resilient towards. After using it to harden the Native/Vue sync behavior, I will send a patch to address that specific trigger. This change recognizes when the native audio player is sending updates while the the Vue layer does not believe audio is being played. Regardless of how we got into that state, I believe we should pause and close playback to avoid losing progress. Fwiw, if this state is expected under normal conditions (and recoverable) then we shouldn't land my PR. ## Which issue is fixed? Fixes #1385 (progress will not be lost any more). Pressing "play" from native/bluetooth controls in this state will still result in an error toast (because the native and Vue players have become disassociated). Looking into a follow up to restore/rehydrate the Vue layer from a playing native audio player, but I think this fix should go in first as it at least avoids the outcome where progress is lost. ## Pull Request Type It affects both I believe because it changes the Vue behavior. I have tested this on iOS, but in theory the change makes sense for both platforms (we probably don't want native playback to continue when the Vue layer believes it to have stopped). ## In-depth Description Not much more to say than what's above. ## How have you tested this? Tested on iOS using the repro steps provided on #1385 to trigger disassociation of Native/Vue layers and verify remediation. ## Screenshots N/A. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2026-04-25 00:00:31 +02:00
adam closed this issue 2026-04-25 00:00:31 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#1670