Skip to content

10.5.0 - #644

Merged
luisangelsm merged 198 commits into
masterfrom
develop
Nov 9, 2026
Merged

10.5.0#644
luisangelsm merged 198 commits into
masterfrom
develop

Conversation

@luisangelsm

Copy link
Copy Markdown
Member

YACReader

  • Add Bicubic as a scaling method in Settings, offering sharper images than Bilinear and faster scaling than Lanczos.
  • Fix opening comics at page -1 after removing them from the "Reading" list.
  • Improve toolbar on macOS.

YACReaderLibrary

  • Reading lists and labels keep comics whose files are removed from the library. Their covers show in gray, with their metadata and last known file name. You can still edit their metadata, get data from Comic Vine, set a custom cover, reorder them, and remove them from the list. When the same file comes back, at any path, the comic is available again.
  • Reading lists and labels keep a comic when its file is replaced, for example by a tool that writes ComicInfo.xml into the archive.
  • Import reading lists in CBL XML or JSON format. Preview and adjust matches to comics in your library, and keep missing books in the reading order so you can find them later.
  • Match missing books to library comics individually or across an entire reading list.
  • Export reading lists as CBL XML, JSON, or a web page.
  • Create smart lists that show the current results of a saved search.
  • Organize reading lists and smart lists in folders.
  • Track missing issues in regular folders, using Comic Vine or entering the issue numbers yourself. Edit their metadata and covers, and automatically match newly added files to the missing issues.
  • Include the same comic more than once in a reading list, with each appearance keeping its place in the reading order.
  • Sort search results by series, volume, and issue number.
  • The metadata editor saves only the fields that you change, also when you edit several comics. Comic Vine changes only the fields that it returns.
  • Report failed Comic Vine lookups and incomplete results.
  • Fix removing comics belonging to child reading lists from a parent list view.
  • Fix newly added comics sometimes appearing in the middle of a reading list instead of at the end.
  • Fix library lock handling and add a way to clear these locks from the GUI and webui.
  • Improve library opening speed over network shares.
  • Unify the title and tool bars for a more integrated look (Windows/macOS).

Server

  • Add server API v3 so compatible mobile clients can browse missing comics, reading lists, and smart lists, including their folders, with content ordered as on the desktop. Existing clients remain supported.
  • Fix a security issue that could let cover requests access image files outside the library's covers folder.
  • Fix memory leak updating libraries.
  • Improve covers API performance.

WebUI

  • Browse reading lists, smart lists, their folders, Favorites, tags, and Recent from the library menu.
  • View missing comics in reading lists and folders, including their available metadata and covers.
  • Choose how many days count as recent in this browser's settings.
  • Improve the home page and add a connect device dialog. iOS and Android clients can use now the QR scaner with the webui.
  • Add mouse wheel page navigation to the reader.
  • Add PageUp, PageDown, Home and End keys to the reader.
  • The back button now returns to where you were, keeping the scroll position.
  • Save the reading progress when the tab goes to the background.
  • Show better error messages.
  • Add a favicon.
  • Open read comics on the first page.
  • Go to the next or previous comic from the reader. Comics opened from a list follow the order of that list, all others follow their folder.

All GUI apps

  • Fix the apps sometimes getting stuck in fullscreen mode after a restart. YACReaderLibrary no longer starts in fullscreen mode, and YACReader still does when you close it in fullscreen mode, but you can always leave it.

The branch filter on pull_request kept stacked PRs, which target a
feature branch, from running CI. Signing and publishing steps still
run only on master and develop.
ComicDB is a value type with a ComicFile and a ComicInfo; ComicInfo::id
is a ComicInfoId. The scanner uses DiskItem and the server folder content
uses FolderContentItem instead of LibraryItem pointer lists. The reader
stream keeps its layout.

Fixes: the remote progress functions took the comic id inside
ComicInfo::id; they now take a ComicId. The unused server v1 overload of
updateFromRemoteClient is removed.
Changes:
- the server lists send the real values of comic_info_id, path,
  file_type, parent_id, added, last_time_opened, cover_page and
  original_cover_size, and leave out NULL fields
- the Reading and Recent reloads compare integer seconds, so rows are
  no longer removed and inserted again
- reader updates, read state, type and rating change every row of the
  comic_info
- the Continue Reading banner reads the rows instead of one query per
  comic; getAllComics and getComics use one query
- folder, reading list and label loops read by column position
- the remote progress readers no longer leak rows in takeUpdatedData
With the 7zip backend, the apps load the 7z library at runtime, and only
the installers put it in place. Tests that read archives failed on every
7zip CI job. Executables now get the bundled library in utils/ after the
build, and on Linux the library is also looked for there, after the
installed paths.
Fixes:
- removing a comic from a reading list with child lists removes it
  from the child list that holds it
- appending to a reading list starts at the end of that list, not
  after the rows of all lists
- the pre-9.5 cover step no longer commits the upgrade transaction
- a failed reorder or removal reloads the list
Changes:
- an unreadable replacement rolls back, so the comic keeps its row and
  its list entries and the next update tries again
- a replacement with the same comic_info keeps coverPage
- the old values are no longer copied over a known comic_info
This is critical because otherwise Android can crash.
luisangelsm and others added 29 commits November 6, 2026 14:57
Refine translations in yacreaderlibrary_zh_CN.ts
Dragging a file over/across the reader window, but not dropping it, would unlink the page progress from the library by setting isClient = false in dragEnterEvent before the file was actually dropped and the reader opened it. Reader skipped sendComic() on close, so the library silently lost the reading progress.

isClient is set false when a file is actually opened with dropEvent already so the unlinking still works in that case.
Fixed dragging file across reader unlinking progress
When a comic opened from the file system could not be read, the reset
that follows the error disabled the previous and next comic actions, so
the shortcuts could not move on to the neighbouring files. The reset now
updates those actions the same way the double manga page switch does.
The previous commit moved the body of doubleMangaPageSwitch into a new
updatePrevNextActions() overload and left doubleMangaPageSwitch only
forwarding to it. That overload shares its name with
updatePrevNextActions(bool, bool) but works the state out instead of
applying it. Since doubleMangaPageSwitch never did more than this, the
two become one function, refreshPrevNextActions, in the place
doubleMangaPageSwitch had, and every caller uses it.
…ssing

Opening a recent file that no longer exists also resets the viewer, and
the reset now sets the actions from the neighbours of the comic that was
open before, while no comic is shown. Forgetting those neighbours first
keeps the actions disabled there, as before, for comics not opened from
the library. For comics opened from the library the reset works the
actions out from the sibling list, so nothing changes there.
…le-comic

Keep the previous and next comic actions after a file fails to open
Update Simplified Chinese language pack
The v2 and v3 cover routes decoded each cover and encoded it again as
JPEG for every request. The scaling that needed this was removed long
ago, so the routes only spent CPU and lowered the quality.

Every cover in a library is already a JPEG, so the routes now send the
file. They also send an ETag and answer a matching If-None-Match with a
304. Custom covers replace the file under the same name, so browsers
must revalidate and cannot cache them for a fixed time.
The reader saved the page only once, when leaving it, so a tab that the
OS killed in the background could lose the progress.

It now also saves when the tab is hidden, and it can save again if the
reading continues after that. It does not send the same page twice.
The "Settings saved." message came back on every reload of the page.
Fix translations in yacreaderlibrary_zh_CN.ts
@luisangelsm
luisangelsm merged commit 10f823d into master Nov 9, 2026
26 checks passed
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.

5 participants