Tags: Gman0909/ComicBlaster
Tags
Linux client: force X11 backend under Wayland to fix portrait maximise. The native GDK Wayland path under KWin only covers ~half the screen when the display is rotated to portrait/tablet mode. Default GDK_BACKEND=x11 (XWayland) on Wayland sessions unless the user has set it, which maximises full-screen correctly. Documented the override in the README. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Client v0.5.2 - Tailscale discovery now emits MagicDNS HTTPS URL alongside raw-IP HTTP so the picker shows the durable, works-anywhere URL. - Login screen: 'Use a different server' link to return to the picker when a server was selected but never logged in. - (Server) http_host config field restored — fixes bind collisions when something else holds the port on another interface.
client-v0.5.0 — Offline reading.
The native client (Windows / macOS / Linux) can now download comics
to local storage and read them without a server connection. The
web client is unchanged.
What you can do
===============
- Download a comic for offline reading by clicking the new
download badge in the bottom-left of any library card. Bulk
download from the selection toolbar with the Download button.
- See total local storage usage and free disk space, and remove
individual or all downloads, from Settings → Offline storage.
- Open the app without an internet connection. If the server is
unreachable but you have downloaded comics, the cached library
appears with a banner; downloaded items are readable, others are
dimmed and can't be opened. A Retry connection button surfaces
in the banner.
- Read pages offline; reader progress is queued locally and
synced to the server when connectivity returns.
Storage location: <user-config-dir>/ComicBlaster/offline/
Windows: %APPDATA%\ComicBlaster\offline\
macOS: ~/Library/Application Support/ComicBlaster/offline/
Linux: ~/.config/comicblaster/offline/
Supported formats: PDF, ePub, CBZ, CBR. The Wails AssetServer
extracts pages from CBZ/CBR on the fly; PDFs and ePubs are loaded
whole-file. No server changes — the entire offline surface is
client-local. Downloads are per-(server, comic) so connecting to
two different ComicBlasters keeps their inventories separate.
Behaviour invariants preserved
==============================
- Web client: every offline feature gates on isNative(); the
browser library renders exactly as before.
- Token semantics: 401/403 still bounces to login, only
network errors fall back to offline mode.
- Progress accuracy: server's seq-gated upsert means queue
replay can't clobber newer positions with older ones.
client-v0.4.1 — ePub layout, PDF covers, delete-file safety.
Bug-fix release. Notable changes since client-v0.4.0:
- ePub reader: skip broken spine items (idref pointing at a missing
manifest entry) instead of crashing into a black screen. Surface
a visible error overlay if even the fallback render fails.
- ePub reader layout: image now fills the viewport (was rendering
at natural size in a corner), bottom-bar slider + "Page X / Y"
label, backward navigation works (the OPF omitted linear="yes"
which broke epub.js's section.prev/next).
- PDF covers: scanner now extracts a cover thumbnail by shelling
out to pdftocairo (poppler-utils, present on most Linux
distros). Previous build's PDFs without covers get backfilled
automatically on next scan. Falls back silently if pdftocairo
isn't installed — the manual "Set thumbnail" flow still works.
- Remove → delete file: when os.Remove fails (typically a
systemd sandbox forbidding writes to the library mount, or
permission issues on a network share), the server now adds
the path to the ignore list as a safety net so the file
doesn't reappear on the next scan. The client surfaces the
underlying OS error in the modal instead of silently closing.
If you hit "remove → delete file" failing with an EROFS error: the
service's systemd unit needs the library mount in ReadWritePaths.
Edit /etc/systemd/system/comicblaster.service to add it, then
systemctl daemon-reload + restart.
client-v0.4.0 — file browser, scanner resilience, missing-file manage…
…ment.
Notable changes since client-v0.3.1:
- Settings → Library paths now has a Browse server button that
drives a server-side filesystem picker, so adding a library
path works the same whether the client is on the same box as
the server or talking to it over Tailscale. Manual text entry
still available for the NFS / SMB / power-user case. Includes
an inline "New folder" action that mkdirs on the server.
- Scanner no longer wipes the DB when a library root goes stale.
A pre-flight ReadDir tells the scanner when a root is empty or
inaccessible (e.g. a CIFS mount that survives os.Stat but
returns zero entries because the NAS is asleep); comics under
such a root are left untouched. Files that ARE genuinely missing
under a healthy root get flagged with the new missing_since
column. The row + its progress / labels / collection
memberships stay intact.
- Settings → Missing files is the only place hard-delete happens.
Auto-hides when the count is zero. Shows the count, a toggle to
surface missing files in the library (greyscale cover + red
MISSING pill + click disabled), and a bulk-remove button with
confirmation. No automatic 30-day purge anymore — the user is
in charge.
- Library "Hide" renamed to "Remove" throughout (single + bulk).
When the user picks "Also delete from disk" the server skips
the ignore-list step — a file that no longer exists doesn't
need a stale ignore-list pointer.
- Library "Last read" sort now defaults to descending the first
time you switch to it, so the comic you're currently reading
sits at the top instead of one you finished six months ago.
Everything continues to work in the browser, in the Wails native
client, and across same-machine vs cross-machine deployments.
Recovery note: an earlier version of the scanner wiped per-user
state during a NAS outage. If you upgrade from an affected v0.3.x
and lost reading progress / labels / collections, restore from a
snapshot tarball (covers + comicblaster.db) and use the
path-matched merge SQL — the FK targets follow the comic path, so
re-scanning afterwards rewires everything cleanly.
Branded release — D2 app icon with proper alpha transparency. Same code as the deleted prior v0.3.1; only difference is that client/build/appicon.png now has a transparent background instead of opaque white from Firefox's default page bg. Wails-generated icon.ico inherits that, so the taskbar / dock icon composites cleanly on every OS.
Snapshot before next stretch of work.
State at this point:
- Reader pagination + save-on-exit fully working (CBZ, PDF, ePub).
- Library progress bars rendered for all formats including PDF + ePub.
- Mobile sort collapsed into icon popover (search bar usable on phones).
- WCAG 2.1 AA pass: 0 violations across library, library/collections,
reader (CBZ + PDF), and settings.
- Reader top bar resized for both desktop and mobile.
- README has setup + first-run + user-management instructions and
embedded screenshots.
- Deployed on the Pi at http://192.168.0.7:8082 (binary, web bundle,
DB all current).
Restore from this tag: git checkout snapshot-2026-05-21
Pi data tarball lives next to this tag's date — see commit body / Pi.
PreviousNext