booklore: enable the BookDrop watched-import folder (2.3.1-2)#5856
Open
arquiguru wants to merge 1 commit into
Open
booklore: enable the BookDrop watched-import folder (2.3.1-2)#5856arquiguru wants to merge 1 commit into
arquiguru wants to merge 1 commit into
Conversation
The store description advertises BookLore's BookDrop feature, but the package never mounted the fixed /bookdrop container path, so the watched folder silently did nothing on Umbrel. - Mount Umbrel's shared Downloads storage subfolder BookDrop at /bookdrop (compatibility path; current umbrelOS rewrites it to home/Downloads) - Declare STORAGE_DOWNLOADS in permissions - Add an idempotent pre-start hook that creates the host folder and chowns it to the container's uid 1000 on both path generations, covering fresh installs and updates of existing installs - Bump version to 2.3.1-2 with user-facing release notes (including that BookLore moves files out of the folder after import)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this fixes
BookLore's own App Store description highlights BookDrop as a headline feature:
But the package never wired it up. BookLore watches a fixed container path
/bookdrop(it is not configurable via env), and the compose file only mounts/app/dataand/books. So on Umbrel the advertised drop folder maps to an ephemeral in-image directory the user can't reach, and BookDrop silently does nothing. Files placed anywhere the user can reach are never seen.This is a package defect: the store listing promises a feature the package can't deliver.
User story
A user reads the description, expects a drop folder, and finds none. There is no supported way to use BookDrop on Umbrel without hand-editing the compose file after every app update.
The change
Following this repo's
umbrel-update-app/umbrel-package-appskill guidance for adding a shared-Downloads bind mount:docker-compose.yml— mount aBookDropsubfolder of Umbrel's shared Downloads storage at the fixed/bookdroppath:- ${UMBREL_ROOT}/data/storage/downloads/BookDrop:/bookdropUses the compatibility
data/storage/downloadspath that current umbrelOS rewrites tohome/Downloadsat patch time, per the skill's storage guidance. This surfaces the folder in the Files app and on the network share, so users can drag books straight in.umbrel-app.yml— declarepermissions: [STORAGE_DOWNLOADS](same astransmission,navidrome,audiobookshelf,metube, which also mount Downloads or a subdir), and add user-facingreleaseNotesexplaining the new folder and that BookLore moves each file out of the folder into the library after a successful import (the folder emptying itself is expected, not data loss).hooks/pre-start— idempotent migration modeled onnavidrome/hooks/pre-start: create the host-sideBookDropfolder andchownit to the container's uid/gid (1000:1000) before containers start, so both fresh installs and updates of existing installs get a writable folder. It resolves both path generations (home/Downloads/BookDropon current umbrelOS,data/storage/downloads/BookDropon older), since the hook itself is not rewritten by umbreld.No change to the BookLore application image; this is packaging-only. Version bumped
2.3.1-1→2.3.1-2so existing installs are offered the update.Testing
Tested on UmbrelOS (Debian 13, kernel 6.12, x86_64) against a live BookLore install carrying real user data.
pre-starthook logic against an existing install and recreated thewebcontainer with the new mount.docker inspectconfirms.../home/Downloads/BookDrop -> /bookdrop(umbreld rewrote the packageddata/storage/downloads/BookDroppath tohome/Downloads/BookDrop, exactly as the skill documents). App stays onumbrel_main_network; web UI returns HTTP 302 (login redirect = healthy).home/Downloads/BookDropowned1000:1000, idempotent on re-run.PENDING_REVIEWrow appeared in thebookdrop_filetable, i.e. it showed up on the app's Bookdrop review page.Downloads/BookDropfrom macOS Finder via the Umbrel network share → BookLore's watcher detected it in ~2 seconds and extracted cover art → clicked Import on the Bookdrop review page → file moved into the library (/books/<Author>/<Title>/…), record finalized (Success: 1, Failed: 0), and the source file was deleted from the drop folder (self-emptying confirmed).bookdrop_filetable reconciled cleanly after the test file was removed; existing/app/data,/books, and/var/lib/mysqlmounts untouched.Notes
npm run lint:apps -- booklore --check-images: 0 errors, 1 pre-existing warning — themariadb:12.0.2tag digest has moved upstream since it was last pinned. That is unrelated to this PR, so the existing digest is left as-is per the linter's own guidance.Architecture tested: linux/amd64. No breaking changes; no migration action required from users.