Skip to content

3.0.0

Compare
Choose a tag to compare
@johnfactotum johnfactotum released this 12 Nov 16:58
· 217 commits to gtk4 since this release

Foliate has been completely rewritten from scratch with the latest platform libraries, GTK 4 and Adwaita, with refreshed interface and improved performance. It now has its own e-book parser and renderer, and no longer uses Epub.js and KindleUnpack.

Some features could not be ported in time. Most notably, this version has no support for OPDS catalogs and offline dictionaries.

UI changes:

  • The library and the e-book viewer are unified in a single window (#509)
  • The library now loads more books as you scroll, no longer requiring clicks to load more items (#583).
  • Table of contents, annotations, bookmarks are now in a sidebar, which is docked to the side by default, but can also be set to be always folded (overlaid on top of content when revealed)
  • The "Add Bookmark" button is moved to the header bar, and the page will show a ribbon when bookmarked (#863)
  • Removed "turn page on tap"; use swiping instead
  • Removed option for skeuomorphic shadows
  • Removed experimental traditional titlebar option

Book rendering:

  • It no longer loads the entire file into memory, greatly reducing startup time and memory usage, and it no longer loads every item in the TOC, further improving startup time (#526, #813)
  • Reloading now properly reloads the file, rather than merely re-rendering (#544)
  • Mobipocket and Kindle files are no longer extracted on disk; they are processed entirely in memory
  • Mobipocket files are now divided into sections at <mbp:pagebreak> tags, which greatly improves performance as it no longer requires rendering the whole book at once (#764). Unfortunately this also means existing annotations for this format will not be displayed correctly.
  • When a page is not valid XHTML, it will be processed as HTML (#699)
  • It no longer tries to override fonts with CSS. Instead, you can now configure the default serif, sans-serif, and monospace fonts (#222), as well as setting the minimum font size (#906).
  • Added support for obfuscated fonts (#721)
  • Added support for user stylesheet (#947)
  • FB2: fixed infinite recursion bug (#935) and comments are now correctly ignored (#972)
  • Added experimental support for PDF files (#139)
  • Removed support for CBR, CBT, and CB7 files (CBZ is still supported)

Layout:

  • Paginated mode now has animation and 1:1 touchscreen and touchpad swipe gestures (#188, #862)
  • Paginated mode supports more than two columns. The number of columns is controlled by a maximum width setting. As the window gets wider, it will add more columns to prevent lines from getting too long.
  • Margins are now relative to the viewport size
  • It is now possible to configure both max width and max height.
  • The page reflows faster when resizing, and reliably stays at the same location without flashing (#459)
  • Switching between paginated and scrolled layouts is faster and can be done with a shortcut (Ctrl+M)
  • Removed continuous scrolling mode, as the new renderer does not support it (yet)

Locations:

  • Locations are now calculated from raw byte size instead of character count. The progress slider and reading time estimates are available instantly when you first open a book, and locations are no longer cached. Old .json files in the cache directory can be deleted.
  • The progress slider now turns pages as you drag, and can be used with keyboard and mouse wheel (#386)
  • Page-list and landmarks are now supported and can be accessed from the location popover

Find in book:

  • Results are now shown in the sidebar (#674)
  • Added option to ignore diacritics (#778) and to match whole words only
  • Added shortcuts for going to next and previous matches (Ctrl+G and Ctrl+Shift+G) (#693)

Image viewer:

  • Images are opened with double click by default; removed options for single, right, and middle click
  • Images are now copied and saved in their original format (previously, they were always converted to PNG)

Narration:

  • Text-to-speech now uses Speech Dispatcher, and supports pausing, skipping, word highlighting, SSML, and speed and pitch controls (#829)
  • Added support for EPUB Media Overlays

Copying:

  • Selected text can now be copied with HTML formatting (#954)
  • Added "Copy with Citation", which adds the author and title info to the copied text, (#445)
  • Added "Copy Identifier", which copies the CFI of the text fragment (#998)

Security:

  • The WebView no longer has unlimited file access (#391)
  • Flatpak: removed sandbox escape permission.

Other changes:

  • Added underline option for annotations (#378)
  • Annotations are now saved with timestamps (#1048)
  • Added the ability to print chapters and selections (#430)
  • WebKit's inspector is always enabled, and can be accessed from the menu, or by pressing F12

Technical changes:

  • The executable has been renamed to foliate. Previously it was com.github.johnfactotum.Foliate.
  • Platform libraries
    • Minimum version for GJS is now 1.76
    • It requires GTK >= 4.12 and WebKitGTK 6.0
    • It requires libadwaita (previously, it optionally depended on libhandy)
    • It no longer depends on iso-code, as locales are now handled with the Intl API in GJS
    • gspell is no longer an optional dependency, as it doesn't work with GTK 4
    • It no longer depends on Python (previously, it optionally required it for running KindleUnpack)
  • JavaScript libraries
    • JavaScript libraries are now built from NPM (#460)
    • It bundles zip.js instead of JSZip
    • It bundles fflate and uses it to decompress fonts for Kindle files
    • It no longer bundles libarchive.js
    • It no longer bundles crypto-js. Checksum is now generated by GLib.

Note
Don't download the source .zip or .tar.gz from GitHub. Those don't include submodules and don't work. To download the source code, use git clone --recurse-submodules https://github.com/johnfactotum/foliate.git.