Releases: BackIssueApp/BackIssue
Release list
0.8.4
Added
-
Books and audiobooks from your download sources. A plugin can now ask
the app to download a book or audiobook (api.downloadMedia) and the same
sources that serve comics go looking: usenet and torrent search the book
and audiobook categories with a matcher built for how book releases are
named (author and title, no issue number; the right kind of file), and a
site source takes part when its definition declarestypes: ['ebook']or
['audiobook']. The plugin that owns the library type files the result
(api.registerMediaHandler) and whoever asked is told when it lands
(api.onMediaDownload). The Requests plugin uses this to fill approved
book requests. A book with an ISBN is asked for by ISBN first on catalog
sites, so the exact edition wins over a look-alike. A site source may
verifywhat it downloaded and refuse it (an EPUB whose own metadata
says it is a translation, say); the next-best candidate is tried. -
Sites behind DDoS-Guard. Its interstitial is recognised as a challenge,
a FlareSolverr "solve" that hands back the interstitial (the manual captcha
it escalates headless browsers to) is reported as one rather than parsed
as a page, and once the app's own browser clears a site, its cookies are
reused for plain requests to it. A site source can mark a setting
secret: trueto have it masked on its card. -
Books and audiobooks show in the queue. A book being searched for,
downloaded by a site source, or fetched by a download client is a row on
the Queue page with its source and progress, counts toward the sidebar
badge, and can be cancelled while a client has it. The log says which
source was searched, what release was picked, and what was filed. -
Add finds books and audiobooks. With a Books or Audiobooks library
(and its plugin), the Add button gains a tab for it: search the catalog,
see what is already on the shelf, add one and the download sources are
asked for it.
Fixed
- One browser per process: a site source that needs the browser now shares
the one a plugin already launched instead of starting a second Chromium
on the same profile, which Chromium refuses ("Opening in existing browser
session").
v0.8.3
v0.8.2
Fixed
- A collected edition no longer arrives in place of a single issue. A trade
or omnibus numbers its volume where an issue numbers itself, so a request for
issue 12 could be answered with volume 12 of a collection — a much larger
file, filed under that issue and marked done, so the real issue was never
fetched again. A release that announces itself as a collection is now refused
when the series being downloaded is not itself a collected run. Collections
still match their own releases, a series whose name carries an edition word
is unaffected, and a manual search still lists everything so you can choose.
Changed
-
Download sites are managed together, apart from plugins. A site the app
can download from is no longer a plugin of its own: sites live in a
sources/folder, all of them maintained in one place, and appear under
Download sites on the Plugins page with a link to their settings. The
plugin list stays about plugins as the number of sites grows. A site whose
code has to live elsewhere can still be a plugin, and when a plugin offers a
site that is already installed, the installed one is used and the log says
which plugin was ignored. -
A source is only searched for the library types it serves. A comics site
is no longer asked for a manga chapter, and a manga site is no longer asked
for a western comic, so a manual search stops waiting on requests that could
never match. Sources that carry anything, such as the indexer-backed ones,
are unaffected.
Added
- One FlareSolverr setting for every source. The service that gets past
Cloudflare is something you run, not a property of any one site, so it now
lives once in Settings → Downloading instead of being asked for by each
source. An address already set on a source is carried over automatically,
and still wins for that source if you keep it. - Sources say whether they need the browser build. The app ships in two
builds, and the lean one has no browser at all. A source now declares what
it needs, and the app always takes the cheapest route that works: plain
HTTP, then FlareSolverr, and the built-in browser only as a last resort. A
source that genuinely cannot work without a browser stays switched off on
the lean build and says so on its settings card, instead of failing every
download it is handed. - A toolkit for download-site sources. A plugin now describes a site in a
few dozen lines — how to search it and where a result's file or page images
are — and the app supplies the rest: browser-like HTTP with Cloudflare
handling (FlareSolverr when configured), per-site request pacing, the
shared release matcher, archive checking and CBR-to-CBZ conversion, page
image assembly into a CBZ or PDF, and a settings card with a Test button
that the Settings page renders by itself. Manga and manhwa sites, whose
chapters are lists of page images, are a first-class shape.
Fixed
- The event-loop watchdog now actually restarts a wedged server in Docker.
The app ran as the container's first process, and the kernel ignores a
process's own kill signal in that position, so the watchdog's restart was
silently a no-op (a stalled production server survived it for an hour).
The official images now start undertini, which also reaps the
health-check probes that piled up as zombie processes during a stall. A
server that still finds itself as PID 1 logs a warning saying how to fix it.
0.8.1
Added
- Diagnostics from the mobile apps. A phone signed in to the server can
send its own diagnostics report (device, app build, connection and
playback failures) through the server, which wraps it into a support
package and returns a code. An admin's phone sends the full package; any
other user's phone sends a lite one with no settings, folders, indexers or
server log. - Send to support. Next to the download, "Send to BackIssue support"
uploads the same package to the hosted service, authenticated with the
install's own metadata key, and shows a short code to quote in the
report. The package is kept for 60 days and only the BackIssue team can
open it. An optional note travels with it. - Support package. System → Tools → Getting help downloads one zip to
attach to a bug report: version and build, runtime and host, disk and
database size, settings with every key, password and token redacted,
installed plugins, libraries, jobs and schedules, queued and failed
downloads, recent history and the last two thousand log entries with
secrets blanked. No comics, user names or e-mail addresses are included.
Fixed
- Memory no longer climbs after cover and page resizing. Freed image
buffers stayed resident in glibc's allocator; on a large library the
server sat at 4 GB after a few bursts of cover renders. The Docker images
now run the app with jemalloc, which returns that memory, and fall back
to a two-arena malloc where it is missing. Child processes are not
preloaded.
Fixed
- One collection load on reload, not two. The web app requested the
first library page and the chip counts twice at boot.
Fixed
- Mobile library filters answer in milliseconds, not seconds. The
unpaginated collection list the mobile apps use mapped every series row,
including the whole on-demand ebook and audiobook catalogs, before
dropping the non-comic rows. On a large library that cost about four
seconds per filter change. The exclusion now happens in the query.
Fixed
- A frozen server restarts itself. If the main thread stops responding
for two minutes, or the heap sits at V8's limit for a minute and a half,
a watchdog thread kills the process so Docker's restart policy brings up
a fresh one, instead of the site silently timing out for hours. Memory
use is logged every ten minutes so a leak leaves a trend in the log.
BACKISSUE_WATCHDOG=0turns it off. The browser image now carries the
same health check as the standard one.
v0.8.0
Fixed
- The Add button is always on screen. The library toolbar scrolled
sideways with a hidden scrollbar, and Add sat at its far end — off-screen at
every desktop width, 1920 included. The filter chips now scroll on their
own, with the clipped edge fading out (and a mouse wheel scrolls them), while
sort, view, Select, Match and Add stay put. On phones the actions get their
own row. - Every sideways strip says when there is more. Wanted stats and chips,
plugin categories, settings tabs, queue bands and release filters fade at
the edge that has more content instead of cutting a word in half. - Adding a series finds the run you mean. Search results are ranked:
closest name first, then the familiar publishers and the ones already in
your library, newer and longer runs ahead of older and shorter ones.
"Batman" now leads with the current DC runs instead of translated reprints. - The weekly release notice no longer repeats after a restart. It is
deduped against the notification already stored for that week. - A missing series says so. A deleted or mistyped series link shows
"This series isn't in your library" with a way back, instead of a header of
placeholders and "is the app running?". Unknown URLs get a proper
not-found page, and a page your account can't open explains that rather
than silently showing Home. - The browser tab names the page ("Wanted · BackIssue", the series
title on a series page), so history and tabs make sense. - Phones: release rows keep their download button on screen; settings source
cards wrap their descriptions; the Wanted skip button and checkboxes are
finger-sized; the home page no longer tells you to use a sidebar you
can't see. - Dates on the Releases page read as local short dates ("ships Sep 9") and
the last check as "checked 5m ago". Stats names the built-in metadata
service instead of claiming a ComicVine key. - The sign-in error is a sentence. A failed library load in Settings is
reported instead of swallowed. Viewers no longer trigger forbidden
admin-only requests at start-up.
Changed
-
No more web fonts. The app linked Google Fonts that its own Content
Security Policy blocked, so every install rendered the fallback fonts
anyway and logged an error on each page. The link is gone and the system
font stacks are now the design. -
Installing, updating or removing a plugin now says it needs a restart.
The Plugins page only showed a passing toast, and its restart banner never
appeared for those actions (it only tracked enable/disable), so on Docker,
with no console to watch, the new or updated plugin silently stayed
inactive. The banner now names what is waiting ("Updated Reader to
1.4.0 — restart to apply") with the Restart now button, survives leaving
the page, and the catalog reflects what is on disk rather than what the
running process loaded. -
Collected editions never auto-downloaded. Automatic search for a trade,
hardcover or omnibus appended an issue-style number ("Series TPB 001") that
no release carries, so it always came up empty while a manual search found it.
Collections are now searched by name (plus "v02"-style for later volumes) and
a numberless release is accepted for the first volume. Regular runs are
unchanged. Manual search, and download sources that build on the shared
search helpers, follow the same rules. -
Official images now carry a signed release attestation that the hosted
metadata service uses to recognise genuine BackIssue builds. Nothing to
configure and nothing changes for users; builds from source keep working
on the service's standard tier.
v0.7.95
Added
- Releases, richer. Collected editions (trades, hardcovers, omnibuses) are
hidden by default behind a Collections chip; rows show the ship date,
cover date, series start year and volume; a release the feed couldn't place
on ComicVine gets a Find button that opens Add pre-filled with its name
and year; downloading a brand-new issue refreshes the series on its own
first. The weekly release notice names the first few issues, and a series
page shows Next: #N · date from this week's and next week's lists.
Fixed
- The weekly release feed now carries a full issue name in its title field;
the Releases view no longer shows it as a second line under the series, and
it is never cached as the issue's story title.
v0.7.9
Added
- Monitoring policies and per-issue picks. Every series now has a
monitoring policy — All issues, New issues from #…, or Off — set
from the ⋯ menu on the series page or in bulk from the Library. On top of the
policy, any issue can be picked or skipped by hand (the target button
on issue rows and on the Wanted page); a pick always beats the policy, so
you can want one issue of a series you don't otherwise monitor, or skip one
issue of a run you do. Pressing Download on an issue the policy doesn't want
records a pick, so a failed grab keeps being retried. "Wanted" is now one
definition shared by the Wanted page, the search schedules and the RSS and
announce watchers. - Wanted page: gaps, sorting, bulk selection. The page shows what
automation is going after, with a picked marker on issues you asked for
and each series' policy; All gaps switches to every missing issue,
wanted or not, so anything can be wanted with one click. Sort by series,
newest/oldest release, or most/fewest wanted; tick rows (shift-click for a
range) to Want, Don't want or Download them together. Skipping a queued or
failed issue takes it out of the queue. - Choose the default policy. Settings → Downloading → Monitor added
series decides what a series gets when it enters the library (added by
hand, Discover, Releases, reading lists, requests, import): All issues,
New issues only, or Off. Download on add queues what that policy wants. - You're told when a picked issue lands. Whoever picked an issue (by
hand, from a list, or through an approved request) gets a notification when
it arrives, and the pick retires. Picks whose issue turned up by other means
(a scan, a pack) are swept up by the nightly wanted search. - Ongoing / Ended filters in the Library, from enriched publication
status, with the status shown on list rows; and System → Tools → Refresh
series metadata, which re-pulls every matched series (one request a
second, stops cleanly on a rate limit) so older series get that status,
enrichment and any issues published since. - Want a whole reading list. Want all on a list makes every issue on it
wanted: series already in the library get the issues picked, series that
aren't are added with monitoring off and just those issues picked. - Download only the issues you asked for. Settings → Downloading →
Only the issues that were asked for: when a series is added because of
specific issues — a reading-list entry, a release, a CBL import — it arrives
with monitoring off and just those issues picked, so only they are
downloaded (now, and again if a grab fails). Adding from the Library or
Discover, where no particular issue was in mind, still monitors the whole
run. Off by default, so nothing changes unless you turn it on.
Changed
- Library filters gain Monitored beside Not monitored; series
monitoring new issues only show new from #… in the list view, and the bulk
bar has a Monitoring… action. The series page shows the policy as a
header tag, a Wanted count in the completion bar and a Wanted issue
filter; the old on/off Auto-download toggle is replaced by the policy menu. - Existing libraries migrate automatically: series that were auto-downloading
become All issues, everything else Off — nothing that was being
fetched stops. The Wanted page now defaults to wanted issues; the previous
every-gap view is the All gaps chip.
v0.7.8
Added
- Dedupe good copies. A series with two valid copies of the same issue
(two downloads, a scan beside a digital release) had no way to tidy up —
"Remove duplicates" only covered corrupt copies a good one had replaced.
It now removes extra good copies too, keeping the best (tagged first, then
the most pages, then the largest), and says which it kept. Tools → Remove
duplicate files does the same library-wide, previewing the good-copy part
to Logs unless you tick the box. - Tools → Re-check mismatched volumes. Finds series whose files go beyond
their ComicVine volume's last issue and re-matches them with the improved
matcher; a clear winner is applied and its files re-linked, the rest are
left for Fix match.
Fixed
- Files that were clearly on disk showed their issue as missing. Three
causes, all fixed. Filenames in the Series (Year) NNN (tags) style — a
common convention for libraries organised by other tools — parsed to no
issue number at all, so the file could never be tied to its ComicVine issue.
A ComicInfo tag whose<Number>didn't match ComicVine's numbering blocked
the link even when the filename was fine; the filename is now tried as well.
And001a-style numbers now match ComicVine's1A. The series page also
gains an unmatched files panel listing any file in the folder that isn't
tied to an issue, with the number BackIssue read from it — so the reason is
visible instead of the file being silently invisible. Rescanning a series
(or the next library scan) relinks existing files; no re-import needed. - Auto-match no longer picks a same-name mini over the real run. Matching
now weighs a volume's issue count against the files you have — a 13-issue
volume can't be the home of your #14–#163 — and, when the first search
isn't conclusive, also asks ComicVine for that year's volumes by name
(common titles have hundreds of volumes and the search stops at 100, so
the right run could be missing entirely). It also tries the series name
and year the files themselves carry in their tags — a short legacy row
("Jeff") that captured the folder of It's Jeff Infinity Comic now finds
the real volume. Fix match counts every file on disk, linked or not, so
the right volume ranks first. - PDFs were flagged corrupt. A PDF was being verified as if it were a ZIP
("not a zip file"); it's now recognised as a PDF, with its page count. - A completed download with a non-ASCII name could fail to import forever.
When the download client's reported file can't be read (a name like
"Blüdwire" mangled across a network mount), the job folder is searched for
the comic instead; and a release that still can't be read is blocklisted
rather than re-grabbed on every wanted search. - Negative issue numbers (
#-1flashback issues) now link. - Two series rows on one ComicVine volume. A series added straight from
ComicVine while the folder's own row was matched to the wrong volume left
two rows — and, once the folder row was re-matched, two copies of every
file. Matching now folds a twin row into the one being matched (files,
wanted issues and follows move over), and Tools → Merge duplicate
series cleans up pairs that already exist.
v0.7.7
Added
-
CBL reading lists. Lists → Import CBL takes a
.cblfile (the
reading-list format shared by many comic apps), or browses the community
catalog of 1,700+ curated lists — whole events, character runs and
alternate universes, far larger than a single ComicVine story arc — and
imports one in a click. The catalog is browsed like the repo itself:
publisher folders with counts, breadcrumbs, lists only at the level you're
in, and a search that flattens every folder at once; lists you've already
imported are marked. Any list can be previewed first — its books in
reading order with owned / missing / no-id counts, filters, and same-series
runs grouped without reordering — and a file you upload is previewed
before anything is created. Books resolve to ComicVine issues by the ids the
files carry (with a name + year + number fallback), the file's own reading
order is kept, and anything that can't be matched is shown after the
import — each with the reason — rather than dropped. Download missing, sharing and OPDS work on
the result like any other list. -
URL base for download clients. When a reverse proxy serves a download
client under a subpath rather than at the root — common with seedbox
providers and Docker stacks — set URL base on the client and BackIssue
talks tohttp://host:port/<base>/api/…. Same field the *arr apps call
"URL Base", and available for every client: SABnzbd, NZBGet,
qBittorrent, Transmission and Deluge. Blank keeps the previous behaviour
exactly. A path typed into the Host field is now understood as a URL base
too, instead of producing a broken address likehttp://host/sabnzbd:8080. -
Share a reading list with everyone. A list (or an imported story arc) can
be published so every user sees it alongside their own — useful for a house
reading order or a curated run. Only the owner can edit or delete a shared
list, and publishing rides a new Share reading lists permission
(lists.share, trusted tier) so admins decide who can put a list in front of
the whole install. Shared lists never expose mature content to roles that
can't otherwise see it. -
Sidecar metadata (share-safe tagging). A new Tag placement setting
(Settings → Metadata → Tagging & files, with a per-library override) writes
each comic's ComicInfo metadata to a.xmlfile next to the archive instead
of into it. The archive is never modified — its bytes stay identical, so
torrents keep seeding and DC-hub share hashes stay valid — and.cbr
downloads stay.cbrinstead of being converted for tagging. Sidecars are
read everywhere embedded tags are (scans, imports, the untagged filter),
follow their file through renames and refiling, and are cleaned up with it
on delete. When a file has both, the sidecar wins.
Fixed
- Auto-search now matches releases tagged with a volume marker. A release
named likeStumptown v3 007carries avNvolume marker before the issue
number; the parser was leaving it glued to the series name (Stumptown v3),
so the strict auto-download matcher rejected an otherwise perfect match — an
issue would show as unfindable automatically even though a manual search
surfaced and downloaded it fine. The marker is now stripped, sovN/
Vol Nreleases match by series and issue number as expected.
0.7.65
Fixed
- New volumes of long-running names no longer missing from Add search.
The Add-series and Match-to-ComicVine pickers capped results at 25/20, and
ComicVine lists same-name volumes oldest-first — so for names like "Batman"
the newest series (the ones people most often add) fell below the cutoff and
never appeared. Both pickers now show the full result list. (#2) - Add-series search no longer stalls the whole app on big libraries.
Flagging search results already in the collection looked up each of the 100
results by ComicVine id without an index — at hundreds of thousands of
series that table-scanned for ~20 seconds per search, freezing every other
request with it. The lookup is now indexed (instant, and the index applies
on upgrade).
Added
- Search by ComicVine id. The Add-series search accepts
cv:166619, a
pasted ComicVine URL, or a bare volume id and jumps straight to that volume —
the sure route when a name search can't surface the right series. (#2) - Filter a library by facets. A Filters button on book/audiobook
libraries opens a modal that narrows the grid by author, decade, format, and
reading status — each with live counts. It filters the real grid, so sorting,
search, and paging keep working within the selection. (The facet data comes
from a library plugin; libraries without one simply don't show the button.) - Collections. A Collections entry in the sidebar lists multi-volume
book/audiobook series — every series that groups 2+ volumes (box sets) — as a
focused view of the Library grid. - Sort by publication year. The Library sort gains newest- and oldest-first
by publication year; books and audiobooks carry the year, and undated titles
sort last. Plugins can drive it as theyear/year-asccollection sort.
Changed
- The paginated collection query can be narrowed to an arbitrary set of series
ids by a plugin-registeredregisterCollectionFilter, which is what backs the
Library Filters modal (and the mobile audiobook filters).