Skip to content

Releases: BackIssueApp/BackIssue

0.8.4

Choose a tag to compare

@DrBoon45 DrBoon45 released this 14 Sep 15:59

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 declares types: ['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
    verify what 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: true to 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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 09 Sep 17:28

Added

  • Reading lists now report how many volumes they span and the first few covers, so a list is recognisable before you open it.
  • Filling a reading list's gaps can target specific issues instead of every unowned one in the list.

v0.8.2

Choose a tag to compare

@DrBoon45 DrBoon45 released this 08 Sep 23:26

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 under tini, 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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 08 Sep 03:29

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=0 turns it off. The browser image now carries the
    same health check as the standard one.

v0.8.0

Choose a tag to compare

@DrBoon45 DrBoon45 released this 06 Sep 03:56

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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 05 Sep 21:58

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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 05 Sep 00:18

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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 04 Sep 18:23

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.
    And 001a-style numbers now match ComicVine's 1A. 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 (#-1 flashback 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

Choose a tag to compare

@DrBoon45 DrBoon45 released this 03 Sep 21:31

Added

  • CBL reading lists. Lists → Import CBL takes a .cbl file (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 to http://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 like http://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 .xml file 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 .cbr instead 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 like Stumptown v3 007 carries a vN volume 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, so vN /
    Vol N releases match by series and issue number as expected.

0.7.65

Choose a tag to compare

@DrBoon45 DrBoon45 released this 28 Jul 02:47

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 the year / year-asc collection sort.

Changed

  • The paginated collection query can be narrowed to an arbitrary set of series
    ids by a plugin-registered registerCollectionFilter, which is what backs the
    Library Filters modal (and the mobile audiobook filters).