feat(container): update image ghcr.io/vavallee/bindery ( v1.33.2 ➔ v1.34.0 ) - #2625
Open
nerdz-bot[bot] wants to merge 1 commit into
Open
feat(container): update image ghcr.io/vavallee/bindery ( v1.33.2 ➔ v1.34.0 )#2625nerdz-bot[bot] wants to merge 1 commit into
nerdz-bot[bot] wants to merge 1 commit into
Conversation
no HelmRelease objects found in cluster |
nerdz-bot
Bot
force-pushed
the
renovate/ghcr.io-vavallee-bindery-1.x
branch
4 times, most recently
from
September 5, 2026 18:06
7a12239 to
972dc39
Compare
nerdz-bot
Bot
force-pushed
the
renovate/ghcr.io-vavallee-bindery-1.x
branch
from
September 6, 2026 01:23
972dc39 to
ac94689
Compare
nerdz-bot
Bot
force-pushed
the
renovate/ghcr.io-vavallee-bindery-1.x
branch
3 times, most recently
from
September 7, 2026 10:13
07fc334 to
475eb90
Compare
nerdz-bot
Bot
force-pushed
the
renovate/ghcr.io-vavallee-bindery-1.x
branch
from
September 7, 2026 20:12
475eb90 to
7b5c58a
Compare
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.
This PR contains the following updates:
v1.33.2→v1.34.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
vavallee/bindery (ghcr.io/vavallee/bindery)
v1.34.0Compare Source
A tidier interface, the second half of the audit, and the two things Discord asked for.
Twenty nine entries below, from thirty seven merged pull requests. The visible
change is the first pass at decluttering the interface: the Authors and Books
filter rows collapse into two menus, the rare per row actions move into an
overflow menu, and the app stops flashing light before it turns dark. Nothing
was taken away to achieve it; every option that was on those pill rows is still
there, one click further in, and the Filters button says how many are applied.
The rest is mostly the remainder of the tree scan that produced v1.33.4: four
more security fixes, a set of hot paths that were redoing work on every call,
and two controls that had never done anything being taken out of the interface
rather than left there promising behaviour that did not exist. The two features
both came from reports: a daily query cap for private trackers, and a log line
at the end of every automatic search so a silent sweep can be told apart from
one that never ran.
Two removals change what the API accepts. If you drive Bindery from a script,
read the Removed section before upgrading.
Added
GET /seriescan be paginated (#2345). The endpoint returned every series with every linked book, so the response grew with the whole catalogue and a large library paid for all of it on every load. Passlimitand/oroffsetand you get the same{items, total, limit, offset}envelope authors and books already use. Pass neither and the response stays the bare array it has always been, so nothing that consumes it today has to change.BINDERY_ENFORCE_TENANCYis off by default, which is right for the single user install nearly everyone runs, but an operator who adds a second account through Settings had no way to learn that the two accounts share one library. Boot now logs one warning naming the variable when there is more than one user and the gate is off. It is a warning and not a gate: several accounts sharing a library is a supported setup, and changing the default would change what every existing multi user install does.Changed
⋯menu (#2427). The monitored toggle stays where it was, since that is the control people actually use. The Discover card's own hand rolled menu now uses the same component and gains the keyboard handling it never had./system/statuswalked the entire image cache with one stat per file, which a 10,000 book library pays twice per cover, on a request the web UI makes from the root shell and four separate pages; the total is now memoised and adjusted by the exact delta after each cache write. The search filter compiled the same regular expression once per release and threw all but the first away, so a 500 result search compiled it 500 times. The wanted sweep reloaded the indexer list, the whole blocklist, the delay profiles and the preferred language once per book instead of once per sweep, and made seven separate status queries where one does. And the two startup backfills, which exist so that a change to the name normaliser re canonicalises existing rows, scanned the whole books and authors tables on every boot rather than only the boot after such a change. None of this changes what Bindery does, only how much it costs. Installs upgrading to this run each backfill once more and then settle.go-chito v5.3.2 andmodernc.org/sqliteto v1.57.0 on the Go side; i18next, react-i18next, react-router and the build and test tooling on the frontend. Every package keeps the licence it had.Fixed
/settings/indexersalso works now: it redirects to the tab it names.{id}and threw the error away, and a failed parse yields 0, soGET /downloadclient/abclooked up id 0 and answered "download client not found". A client that sent a bad id was told the resource does not exist. DELETE was worse: it ran the delete, the downloader eviction and the health drop against id 0 and then answered 204, so a typo in a script reported a successful delete that deleted nothing. All five now answer 400.make testfinishes again outside CI (#2293). The race detector cannot getinternal/api(1,000 tests) through a single timeout budget, so the target ran for half an hour and then died in a goroutine dump instead of a test result.make testnow mirrors the gating CI check exactly, and the race detector moved tomake test-race, which runs CI's same six shards. Thanks to magrhino for the report.t.TempDir()there hands back/var/..., an alias for/private/var/..., and Bindery's delete guard refuses any path reached through a symlinked parent. The test now resolves its temp root the way the guard's own unit test already did. Production behaviour is unchanged. Thanks to magrhino for the report.Removed
downloadinganddownloadedbook statuses were never written by anything in Bindery, so filtering the Books page or an author's catalogue by either returned no books no matter how many downloads were in flight. Both statuses are gone, along with the filter controls, the status legend entries and the API validation that accepted them. The Queue page remains the place to see downloads in progress. Any book row that picked up one of these values from a script or a third party client is rewritten to "wanted" on upgrade, and the API now rejects them.Security
GET /settingandGET /setting/{key}handed the Calibre library and binary paths, the import drop folder, the CWA ingest path, the ABS and Calibre path remaps and the last library scan summary to every authenticated account, including OPDS only readers, whileGET /system/storagehas always been admin gated for revealing exactly that. Reads of those keys now match the admin gate that already guarded writing them; admins see the real values and Settings is unchanged for them.golang.org/x/cryptomoves to v0.56.0, closing two high severity advisories that had made the image scan red on every pull request for long enough that people had started treating it as noise. Nothing in Bindery reaches the vulnerable code (it uses the library only for password hashing), so there is no exposure to act on, but a check that is always red hides the one that matters. The runtime image also moves off Debian 12, which reached end of life: the scanner's own data for an EOL release is incomplete, so a clean result there was not evidence of a clean image.v1.33.4Compare Source
A code audit, and the eight things it found that were wrong without anyone reporting them.
Nothing in this release came from a bug report. It is the output of a scan of the
whole tree, so the entries share a shape: each one is something Bindery did
quietly and confidently, on a path where nobody was watching. Three of them are
reachable by any account you have ever created, including a read-only reader
account. One of them destroys the database you asked it to protect.
Added
Fixed
.restore-failedand the live database is left alone. The staged file has no expiry, so if you change your mind before restarting, deletebindery.db.restore-pending.importExternalorimportHeldin a grey chip with no explanation, which is exactly when a user most needs to know why a row is not moving. Both now have a label and a line saying what they are waiting for.Security
POST /auth/oidc/test-discoverywas registered outside the admin group, so any authenticated account could point it at an address on your network and read the outcome. The four possible answers are distinguishable from each other, which turns the endpoint into a way to map internal hosts and ports from inside the Bindery container. The handler always believed it was admin-only; its own comment said so. Reachable by any account, including a reader account created only for OPDS..api_keyor.api_token, and both spellings of this key match neither, so it was returned in full to anyone signed in. It is now write-only, like the Hardcover token. The field on Settings → API Keys now loads empty. Your key is still stored and still in use. Type a new one only if you want to replace it; the Save button beside it stays disabled while the box is empty, so an accidental save cannot wipe what is stored.DELETE /blocklist/bulkdoes, and it is open to any authenticated account, so a large enough body could pin the process while Go grew the buffer to hold it. DELETE bodies are now capped like every other method, and an oversized one is refused with a clear status instead of being decoded.v1.33.3Compare Source
Six fixes for things Bindery was getting wrong without ever saying so.
Every entry here is a silence, not an error message. A grab that worked reported as
failed. Books you excluded quietly coming back. An ebook that no quality profile
would ever allow, on a path with no human watching. A track disappearing from a
multi-file audiobook. The one thread running through most of them is a check
answering a question it was never asked, or an absence being read as an answer.
Fixed
POST /torrents/addwith HTTP 200 and no body, where qBittorrent itself writesOk.. Bindery read the empty body as a rejection and failed every grab withadd torrent failed:and no message, while the torrent had in fact been accepted, downloaded to completion, and then sat there unimported. An empty body on a 200 is now an accept; a non-empty rejection body such asFails.still fails the grab, and a response Bindery could not finish reading now fails loudly instead of being mistaken for an empty one. Thanks to Gamegenie13 for the report.BINDERY_AUDIOBOOK_DIRis unset so both formats resolve to the same folder, importing a book's audiobook after its ebook created a sibling duplicate instead of joining it. It now merges into the book's existing folder. A same-named file already there, cover art carried by both formats being the usual case, is skipped rather than overwritten, and the skipped names are recorded on the import's History entry and thebookImportednotification. Libraries using the per-file audiobook naming template or multi-disc flattening still split, because those paths own the folder they create and merging them safely needs their rollback reworked first. Thanks to Daize for the request and to schmitzkr for the fix.Books 1-4, a box set, an omnibus, a "complete series". They still appear in interactive search so you can see and grab one deliberately, and if you do, the import is blocked with an explanation instead of running. Queue, Manual import is the way to take a pack. The wording is judged narrowly:Part 1-2is how a single long audiobook is split andTrilogyis how single books name their series, so neither counts, and if the book you track is itself a bundle then matching packs are still allowed for it. Thanks to magrhino for the report.hardlinkmode the second failed with "file exists" and left a half-imported folder the book never recorded; incopyandmovemode it silently replaced the first, and inmovethat track's contents were gone for good. Bindery now projects every destination name before it creates anything and blocks the import, naming both source files and the path they share, with nothing written and both files left in the download folder. The drop-folder handoff had the same flatten and is covered by the same check. A placement error that cannot be predicted, a full disk or a revoked permission, now also undoes what it placed instead of leaving a partial folder that made the next retry build a second one. Hardlink failures also stopped blaming your filesystem layout for unrelated errors: every failedos.Linkthat was not a cross-device error reported "download dir and library must be on the same filesystem", so a destination collision on a single dataset sent you to check mounts that were fine. A missing source, a permissions problem and an existing destination now each say what they are. Thanks to magrhino for the report.Configuration
📅 Schedule: (in timezone America/New_York)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate CLI.