[Bug]: Orphaned entry in "Local Books" after moving a downloaded book to another library. #1241

Open
opened 2026-04-24 23:54:54 +02:00 by adam · 4 comments
Owner

Originally created by @dedors on GitHub (Jul 20, 2025).

I have verified that the bug is not already awaiting release

Yes

What was the Problem?

When a downloaded book is moved from one library to another, the local book becomes orphaned. The app correctly tags the book as "missing", but the entry remains stuck in the local books list section with no way to remove it.

Steps to Reproduce the Issue

Download a book to the device.

On the server-side, move the book's folder to a different library.

Notice that the book is now marked as "missing" in the app.

What was Expected?

Add a remove / delete button

OR, ideally: Re-associate the local file with the book's new library location, preserving playback progress and listening history. This would require the server to detect that a book was moved at the file-system level, which could potentially be achieved by parsing an associated .json metadata file to track the item's unique identity.

Phone Model

Pixel 9 Pro

Phone OS

Android 16

Audiobookshelf App Version

Android App - 0.9.81

Installation Source

Google Play Store

Additional Notes

Image
Originally created by @dedors on GitHub (Jul 20, 2025). ### I have verified that the [bug is not already awaiting release](https://github.com/advplyr/audiobookshelf-app/issues?q=is%3Aissue%20label%3A%22awaiting%20release%22) Yes ### What was the Problem? When a downloaded book is moved from one library to another, the local book becomes orphaned. The app correctly tags the book as "missing", but the entry remains stuck in the local books list section with no way to remove it. ### Steps to Reproduce the Issue Download a book to the device. On the server-side, move the book's folder to a different library. Notice that the book is now marked as "missing" in the app. ### What was Expected? Add a remove / delete button OR, ideally: Re-associate the local file with the book's new library location, preserving playback progress and listening history. This would require the server to detect that a book was moved at the file-system level, which could potentially be achieved by parsing an associated .json metadata file to track the item's unique identity. ### Phone Model Pixel 9 Pro ### Phone OS Android 16 ### Audiobookshelf App Version Android App - 0.9.81 ### Installation Source Google Play Store ### Additional Notes <img width="1074" height="1215" alt="Image" src="https://github.com/user-attachments/assets/3a38eaa1-446e-4fc8-9104-c2769a6e70fb" />
adam added the bugandroid labels 2026-04-24 23:54:54 +02:00
Author
Owner

@nichwall commented on GitHub (Jul 20, 2025):

I'm confused, are you moving the file on the server or locally on your phone?

The server is able to detect file moves using the inode of the file, but this relies on you moving the audio files within the same drive instead of copying the files.

@nichwall commented on GitHub (Jul 20, 2025): I'm confused, are you moving the file on the server or locally on your phone? The server is able to detect file moves using the inode of the file, but this relies on you moving the audio files within the same drive instead of copying the files.
Author
Owner

@dedors commented on GitHub (Jul 22, 2025):

I'm confused, are you moving the file on the server or locally on your phone?

The server is able to detect file moves using the inode of the file, but this relies on you moving the audio files within the same drive instead of copying the files.

On the server-side, move the book's folder to a different library.

On the server, the folder was moved (via smb), but was on still the same disk. From Audiobooks/Series/Seriename/Bookname to Audiobooks/Books/Bookname. (Series and Books are the 2 libraries).

@dedors commented on GitHub (Jul 22, 2025): > I'm confused, are you moving the file on the server or locally on your phone? > > The server is able to detect file moves using the inode of the file, but this relies on you moving the audio files within the same drive instead of copying the files. > On the server-side, move the book's folder to a different library. On the server, the folder was moved (via smb), but was on still the same disk. From Audiobooks/Series/Seriename/Bookname to Audiobooks/Books/Bookname. (Series and Books are the 2 libraries).
Author
Owner

@nichwall commented on GitHub (Jul 22, 2025):

On the server, the folder was moved (via smb), but was on still the same disk. From Audiobooks/Series/Seriename/Bookname to Audiobooks/Books/Bookname. (Series and Books are the 2 libraries).

Network mounted drives do not have stable inodes, so that explains why the move was not detected.

Either way the app should allow deleting the local media files if it is not longer on the server.

@nichwall commented on GitHub (Jul 22, 2025): > On the server, the folder was moved (via smb), but was on still the same disk. From Audiobooks/Series/Seriename/Bookname to Audiobooks/Books/Bookname. (Series and Books are the 2 libraries). Network mounted drives do not have stable inodes, so that explains why the move was not detected. Either way the app should allow deleting the local media files if it is not longer on the server.
Author
Owner

@dedors commented on GitHub (Jul 22, 2025):

Network mounted drives do not have stable inodes, so that explains why the move was not detected.

My apologies, I was unclear here. The files are actually local on the server, as I moved them using SMB. For context, the setup is a Docker container running on Unraid, which has a single mounted local folder for data access.

@dedors commented on GitHub (Jul 22, 2025): > Network mounted drives do not have stable inodes, so that explains why the move was not detected. My apologies, I was unclear here. The files are actually local on the server, as **I** moved them using SMB. For context, the setup is a Docker container running on Unraid, which has a single mounted local folder for data access.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#1241