Repository navigation
Releases: fexofenadine/cbzLab
Release list
cbzLab 2.1.0
Downloads: cbzLab-2.1.0-win-x64.exe for Windows, cbzLab-2.1.0-linux-x64 for Linux
(run chmod +x on it first). The -debug.zip files add debug symbols for crash reports;
the .zip/.tar.gz files are for the in-app updater in older versions.
A review-driven fix release: safety, correctness, speed, and settings that had
quietly stopped working.
Safety
- A settings backup can no longer write files outside the settings folder.
Import used to trust every path inside the.cbzlabfile, so a crafted
backup could drop a file anywhere you can write; such entries are now
refused and counted. - Converting a book to the other format no longer silently overwrites a file
that already has the new name. You're asked first, a clash with another book
open in cbzLab is refused, and the status says the original was kept. - 7-Zip is no longer used to write CBR. Asked for a
.cbr, it reports success
but writes its own 7z format, which cbzLab and most readers can't open. Only
WinRAR's rar tool is used (now also found in its default install folder), and
every CBR save is checked for the RAR signature before replacing anything. - Settings files are written atomically, so a crash mid-write can't truncate
them, and a hand-edited file with a typo is set aside rather than overwritten. - The ComicVine API key no longer ends up in the log.
Things that didn't work
- Auto Page Count on open, Auto-select first file and Clear filter on open
were in Settings but did nothing. All three work again. - Existing installs never received new themes or fields:
schema.jsonand
themes.jsonwere copied once on first run and never updated, so Tokyo
Night, Catppuccin, Gruvbox, True Black and High Contrast silently fell back
to Solarized Dark. They're now kept current - an untouched copy is replaced,
an edited one keeps your changes and gains what's missing. - ComicVine issue lists were cached forever, so an ongoing series never showed
its new issues. Cached answers now expire, the cache is capped, and series
longer than 500 issues are fully reachable. - A book with a macOS
__MACOSXfolder had its junk._files counted as
pages (inflating Page Count), possibly used as the cover, and joined into
combined books as broken pages. They're now ignored everywhere. - Update downloads timed out after 15 seconds, and the updater broke on a
user folder containing an apostrophe or accented letter. - On Linux, two books whose names differ only in case were treated as one.
Metadata
- Partial dates like
2019-03,March 2019andMar 2019no longer gain a
made-up day of 1, and a half-typed date no longer writes a wrong year while
you're still typing it. - Validation now enforces Month 1-12, Day 1-31, a four-digit Year and no
negative counts. - Guess from Filename reads "(of 12)" as Count and ignores release tags like
"(Digital)" in the series name. - A duplicated tag now shows the value a save actually edits, new elements are
written in the ComicInfo schema's order, and a book with unreadable
ComicInfo.xml says so when opened. - ComicVine's plain "artist" credit now fills Penciller and Inker.
- Trim Footers keeps WebP pages as WebP.
Speed and polish
- Opening a CBZ and loading its cover read only what's needed instead of the
whole archive: 2 to 27 times faster per book on the files tested. - Batch edits in "Modified first" sort no longer freeze the app.
- Autosave only rewrites changed files, in the background; covers decode off
the UI thread, a few at a time. - Covers are shown whole instead of cropped at the top and bottom, and field
boxes keep the same width on every tab. - Logs older than 30 days are pruned, and backups no longer include autosave
drafts.
Full Changelog: v2.0.10...v2.1.0
cbzLab 2.0.10
Downloads: cbzLab-2.0.10-win-x64.exe for Windows, cbzLab-2.0.10-linux-x64 for Linux
(run chmod +x on it first). The -debug.zip files add debug symbols for crash reports;
the .zip/.tar.gz files are for the in-app updater in older versions.
- Fixed Check for Updates being unable to install anything since 2.0.9. The
updater only looked for a.zip(Windows) or.tar.gz(Linux) download,
and 2.0.9 stopped publishing those in favour of the bare executable, so it
could only offer a link. The updater now prefers the bare executable, falls
back to the archive, and never mistakes a debug zip for an update. - Releases publish the
.zip/.tar.gzarchives again, containing just the
executable, so installs older than this one can still update themselves. - Release notes now open with a short guide to which download to pick.
What's Changed
- Bump Avalonia and Avalonia.Desktop by @dependabot[bot] in #18
Full Changelog: v2.0.9...v2.0.10
cbzLab 2.0.9
- GitHub releases no longer bundle debug symbols into the main download. Each
release now ships four assets: a plain Windows exe and a plain Linux binary
(no.pdb, no zip - the executable is the whole download), plus a
win-x64/linux-x64 debug zip for each platform containing the executable
together with its.pdb, for anyone who actually needs to debug a crash. - Fixed a version-string drift bug: 2.0.8's release bumped
cbzLab.csproj's
<Version>but missedMainWindow.axaml.cs'sDisplayVersionconstant and
MainWindow.axaml'sTitle, so the title bar and the About/Check for
Updates dialogs kept reporting 2.0.7 even after 2.0.8 shipped. All three are
back in sync as of this release.
Full Changelog: v2.0.8...v2.0.9
cbzLab 2.0.8
- Fixed the CI build, which had been failing since SkiaSharp was auto-bumped
from 3.119.4 to 4.152.1. The app compiled fine, but every FooterTrimService
test crashed at runtime: the managed SkiaSharp had jumped to 152 while the
native libSkiaSharp bundled by Avalonia.Skia stayed at 119, and the two
refuse to run together. SkiaSharp is pinned back to 3.119.4, the version
Avalonia.Skia actually resolves, and told to move only when Avalonia does. - Told Dependabot to leave SkiaSharp alone, so the same incompatible bump
cannot land again on its own.
What's Changed
- Bump SkiaSharp from 3.119.4 to 4.152.1 by @dependabot[bot] in #16
- Bump Microsoft.NET.Test.Sdk from 18.10.0 to 18.10.1 by @dependabot[bot] in #15
Full Changelog: v2.0.7...v2.0.8
cbzLab 2.0.7
- Extracting a "Publisher - Year" header from the summary is now a Tools
command rather than something that happens on open. Running on every open
meant a folder import could mark hundreds of files dirty at once, before
anyone had asked for it. Tools > Extract Publisher/Year from Summary applies
it to the selected files, or to every open file when nothing is selected,
the same scope rule Find and Replace uses, and reports how many it changed. - Dropped the settings toggle that went with the old behaviour. A command you
choose to run needs no switch, and a switch that gates nothing is just
another setting that appears to do something and does not.
Full Changelog: v2.0.6...v2.0.7
cbzLab 2.0.6
- Some sources put the publisher and year at the top of the Summary instead of
in the proper fields, as a "Publisher - Year" line followed by a blank line.
On open, that line is now read: the publisher and year go into those fields
if they are empty, and the line is removed from the summary along with the
blank line and any surrounding whitespace. Fields that already have a value
are never overwritten, and the edit is left unsaved so it shows in the editor
and can be reverted. Controlled by a new Settings toggle, on by default. - The match is deliberately fussy, because getting it wrong would eat someone's
prose: the line must stand alone, end in a four digit year, and be followed
by a blank line or nothing. A summary opening "Batman - 1939 was the year it
all began." is left completely alone. Any of the three dash characters works
as the separator, since the summary was written by whoever packaged the book.
Full Changelog: v2.0.5...v2.0.6
cbzLab 2.0.5
- New File > Open Folder... (Ctrl+Shift+O, and an optional toolbar button):
opens every cbz/cbr/zip/rar under a folder, including subfolders, in one go.
An unreadable branch is skipped rather than aborting the scan, results are
natural-sorted so issue 10 follows issue 2, and opening more than 100 at once
asks first. Verified on a 2000-book tree spread across 17 subfolders: the scan
found all 2000 and the import completed in about 3 seconds. - Files opened this way save back to exactly where they came from. Each file
carries its own absolute path and every save path writes to it, so a book in
a nested subfolder is rewritten in place - confirmed by editing the most
deeply nested book in a test tree, saving, and checking that the file on disk
changed while the folder structure and every other book stayed untouched. - File rows now show their full path as a tooltip, since after a recursive open
two books in different subfolders can easily share a filename.
Full Changelog: v2.0.4...v2.0.5
cbzLab 2.0.4
- Opening a large batch of archives is dramatically faster. Measured on 2000
books, a bulk import went from 6.52s to 0.12s (53x), and 10,000 books now
import in 0.81s at a flat 0.08ms per book. Three things were responsible:
the file list was re-filtered and re-sorted once per file (O(n^2 log n)
overall), the whole settings file was rewritten to disk once per file for a
recent-files list that only keeps 8 entries, and archives were read strictly
one at a time. Reads are now parallel, and the list and settings are each
updated once at the end. - Cover thumbnails load lazily, per visible row, instead of being decoded for
every open file up front. Holding one decoded cover per book cost ~234KB
each - about 457MB at 2000 books - which was the real ceiling on library
size rather than speed. Memory is now bounded by what is on screen, and a
bulk import no longer pays for a second pass through each archive just to
extract a cover it may never show.
Full Changelog: v2.0.3...v2.0.4
cbzLab 2.0.3
- New Tools → Combine Archives…, for reassembling a TPB that was released split
across several files. Select two or more open archives, order them (defaulting
to alphabetical by filename, with up/down reordering and Sort A–Z / Reverse),
and they're joined into one new CBZ: every source's pages in order, renumbered
into a single continuous sequence that follows the first book's own naming
convention, plus the first book's ComicInfo.xml. The joined book is then opened
and selected in the editor with its Page Count corrected and any trailing
"(Part 1)"-style marker trimmed off Title/Series — left unsaved and visible, so
the change can be reviewed or reverted rather than applied silently. Also
available as an optional "Combine…" toolbar button. - New Tools → Trim Branding Footers…, which finds and cuts the strip some
sources graft onto the bottom of pages (a solid bar carrying a site name).
It is self-calibrating — the bar's height is measured from the book itself,
so nothing needs configuring per source and no reference images are stored —
and every detected band is shown as an actual image strip in the dialog, so
what would be cut can be checked before anything is written. Only the pages
you confirm are re-encoded; every other page is copied through byte-for-byte,
and the result is always written to a new file. Also available as an optional
"Trim Footers…" toolbar button. - These are the first features that write page images, which the project's
founding constraint previously ruled out entirely. The constraint is now
narrower rather than gone: both only ever write a new archive and leave
every source file untouched on disk. Combining additionally copies page bytes
verbatim without decoding them; footer trimming is the one path that genuinely
re-encodes, and only for the pages actually being cropped.
What's Changed
- Bump Microsoft.NET.Test.Sdk from 18.9.0 to 18.10.0 by @dependabot[bot] in #14
Full Changelog: v2.0.2...v2.0.3
cbzLab 2.0.2
What's Changed
- build(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #7
- build(deps): bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #8
- build(deps): bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #9
- build(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #10
- Bump Avalonia and Avalonia.Desktop by @dependabot[bot] in #12
Full Changelog: v2.0.1...v2.0.2