Skip to content

Release v1.5.0 - #174

Merged
Gnathonic merged 24 commits into
mainfrom
develop
Mar 1, 2026
Merged

Release v1.5.0#174
Gnathonic merged 24 commits into
mainfrom
develop

Conversation

@Gnathonic

Copy link
Copy Markdown
Owner

Summary

Release v1.5.0 — see CHANGELOG.md for full details.

Added

  • WebDAV download retry with resume support
  • Automatic OCR from mokuro-bunko — image-only volumes get text data on refresh
  • Catalog drop shadow toggle for spine showcase mode
  • Delete cloud-only series without downloading
  • Volume keyboard shortcuts (E, C, Delete, Shift+Delete)
  • Cover page stitching for spread artwork
  • Cover picker rotation and cloud sync
  • Escape closes editor and cover picker modals

Changed

  • Smarter series grouping by title instead of internal ID

Fixed

  • Dual page cover handling
  • AnkiConnect page numbers, tags on mobile, and card update formatting

🤖 Generated with Claude Code

Gnathonic and others added 24 commits February 20, 2026 23:35
…eries toggle

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WebDAV download retry with resume and compact cloud series
Existing field values containing <style> blocks had their newlines
converted to <br> tags, breaking CSS. Replace {existing} tokens with
temporary markers before newline normalization and restore the raw
HTML afterward.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Unknown file extensions were coerced to application/octet-stream and
surfaced as broken entries in the cover picker. Skip files that don't
match known image extensions instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Guard against non-string or whitespace-only mokuro_version values
when deciding whether to include mokuro metadata in volume sidecars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… embedding

Add embedMokuroInArchive option to compress-volume and the file worker
so cloud uploads can store OCR metadata as a separate sidecar file
rather than inside the archive. Change the default for
embedSidecarsInArchive to false.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…cloud sync

Replace zoom controls with a rotate-90 button and lock the image
position so only the crop box moves. Sort cover candidates by OCR
page order instead of filename, filter out generated placeholder
images, and sync updated covers to cloud as WebP sidecars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…download

Move download and upload logic for Google Drive, WebDAV, and MEGA into
a shared sync/core layer that both the main thread providers and the
web worker can reuse. This eliminates ~400 lines of duplicated
provider-specific code from the unified file worker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Delegate upload/download in Google Drive, WebDAV, and MEGA providers
to the shared core layer. Add UploadPayload type and onProgress
callback to the provider interface. Add WebDAV deleteSeriesFolder with
per-file fallback, and order cloud manager series deletion
archive-first with sidecars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mpletion

Add generateVolumeSidecarsFromDb to compress-volume so the worker can
produce and upload sidecars alongside the archive. The backup queue no
longer loads sidecars on the main thread or uploads them post-complete,
and optimistic cache entries now include the archive size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow appending a second page horizontally to the crop source so
spread covers split across two pages can be cropped as one image.
Includes an append/remove workflow and proper URL lifecycle cleanup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use case-insensitive whitespace-normalized series titles for grouping
and routing so cloud placeholders and local volumes always merge into
the same series entry. Drop the series_uuid prop from catalog
components and add a delete-from-cloud menu for placeholder-only
series.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…r matching

Keep the cloud placeholder series/volume identity for image-only
imports so they stay grouped with existing volumes. Use the cached
cloud file list instead of a live provider listing for sidecar
lookup, and prefer the original cloud directory path when matching
sidecars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…idecars

Scan library and cloud storage for .mokuro/.mokuro.gz sidecar files
that match local image-only volumes and queue background OCR upgrades.
The WebDAV client now lists mokuro files alongside archives, and the
placeholder generators match sidecars to local volumes missing OCR
data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The cover page check in shouldShowSinglePage was below the dual mode
early return, so explicit dual mode skipped 2 pages from the cover
instead of 1. Move the cover check above the mode override so the
first page is always treated as single when hasCover is enabled.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
pageNumber is already 1-indexed when passed from Reader and TextBoxes
but resolveTemplate and the field modal preview were adding 1 again.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Thread pageIndex prop through MangaPage → TextBoxes so each page
knows its own index for onUpdateCard. Previously the page number
was derived from reading progress, always yielding the lower page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AnkiConnect Android doesn't support the addTags action, so the tags
field is now disabled with an explanation in update mode on mobile.
Also skip the no-op addTags call at runtime on mobile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add dropShadow setting to catalog with UI toggle in settings. The
spine preset defaults to shadows off. Per-series offset adjustable
via Shift+Scroll, per-volume via Alt+Shift+Scroll, with visual
indicators and right-click reset. Resolves conflict with
compactCloudSeries composite key.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Thread spine_width through import parsing, processing, database
storage, VolumeMetadata type, and CBZ export. This field will be
used for catalog stacking layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
E (edit), Delete (delete), Shift+Delete (cloud delete), C (change cover)
when hovering over a volume item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevent Escape from propagating to the series page's
back-navigation handler when editor or cover picker modals are open.
Uses capture-phase window listener so the modal intercepts Escape
before the series page's bubble-phase handler.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
mokuro-reader Ready Ready Preview, Comment Mar 1, 2026 6:36am

Request Review

@Gnathonic
Gnathonic merged commit a82a1a0 into main Mar 1, 2026
8 of 10 checks passed
vncthar pushed a commit to vncthar/mokuro-reader that referenced this pull request Mar 10, 2026
…en-manager

Simplify token manager and fix auto re-auth behavior
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant