u/AndyHazz

Bookshelf v2.2
▲ 105 r/koreader

Bookshelf v2.2

Bookshelf is a home-screen plugin for KOReader with a focus on books.

v2.2 expands on collection management with bulk editing support as the headline feature.

Some of these features are getting fairly complex in terms of what's possible and how you might want to use them, but the core bookshelf experience is being kept as simple as possible - these are all optional layers available for when you want to go deeper.

What's new:

  • Selection mode + bulk edit. Long-press a book's Select button, a stack, or wire a gesture, then pick books across folders/chips/drilldowns and apply status / collections / rating / refresh metadata / reset / delete files / remove-from-history in one go. Per-book and bulk both stage changes in a draft until you tap Apply.
  • Stack actions get smarter. Long-press any series / author / genre / folder. Add to / remove from / pin to chip bar. When your selection partially overlaps a stack you get explicit "Add X more" and "Remove X already selected" buttons (e.g. select Fiction, then remove Mystery to get a selection of non-Mystery fiction books).
  • Stacks now know about their contents. Folder stacks treat books in subfolders too (so adding "Calibre/Tolkien" picks up everything underneath). Folders also light up when any book inside them is selected, and a new 'Selected/Total' partial badge replaces the count when a stack is partially selected.
  • Status filter now actually filters group views. Set a filter to e.g. "Reading + Unread" on the Genres or Series chip and stacks whose books are all filtered out disappear.
  • Count badges on folder cards, with format options. Two new settings: "Stack count badge" (Off / Folders only / Groups only / All) and "Stack count format" (Total or Finished / Total). Pick the second to see "you've finished 12 of 47 in this genre" at a glance.
  • Hero card polish. A couple of community suggestions from GitHub implemented here, thanks for the input - Long titles balance their wrapping (no more widow words on the last line) and use tighter line height so the title reads as one unit (#58). The currently-reading icon stays visible while drilled into a series or folder - tap it to pop your open book back into the hero without leaving your view (#59).
  • Home folders sort by content. "Most recently opened" now bubbles a folder up when any book inside it was opened recently, instead of pinning every folder to the never-opened tier. KOReader's "Folders and files mixed" toggle is now honoured too, and changes refresh bookshelf immediately.
  • New chips land next to where you were. Pin from a stack or use the editor's + Add and the new chip lands next to the chip you're currently on, instead of being shunted to the end of the strip.

Download / install: https://github.com/AndyHazz/bookshelf.koplugin/releases

Full notes in the release. As always, feedback / issue reports / feature requests very welcome on GitHub. Although they're piling up a bit! I'll get round to addressing most of them in time, but still focusing on rounding out the core bookshelf feature set.

u/AndyHazz — 1 day ago
▲ 109 r/koreader

[Plugin] Bookshelf v2.1 - collection management

Following on from the big chip bar upgrade recently in v2, we now have v2.1 to round out the weekend, bringing more ways to easily manage your collections and make even better use of those editable chips - long press a book to open the new info window, giving easy access to edit status and showing all tags (author/genre/collections etc), which you can tap through to view all matching books.

https://github.com/AndyHazz/bookshelf.koplugin/releases

Also tap the 'Collections ...' button to open a new collection management window (second screenshot) where you can multi-select/create/rename/delete collections.

Long press any folder/genre/author stack throughout bookshelf, and you can pin that group directly to the chip bar for quick access.

There's also a design tweak to the finished book status, dropping the slightly awkward 'bookmark-check' glyph for a regular tick in a box. Hopefully not too controversial!

EDIT: It was a bit controversial, I don't really want to add too many design options to Bookshelf, it is what it is - but in this case I think there's a distinction between those that prefer a more celebratory/distinct style (the original and now, again, default style), and those who prefer a subtle indicator that the book has been ticked off. To help make that separation more distinct, I have reduced the tick box style size accordingly. v2.1.1 includes this option.

Pop a star on the github repo if you like using Bookshelf!

u/AndyHazz — 4 days ago
▲ 152 r/koreader

[Plugin] Bookshelf v2 - The chip bar is now open!

Huge update to Bookshelf's chip bar that allows switching between different views of your library and is now starting to fulfil its potential in v2 with full customisation.

https://github.com/AndyHazz/bookshelf.koplugin

Customisable chips

The chips along the top are now editable. Long-press any chip (or open Bookshelf chips from the menu) and you can:

  • Rename it, give it an icon, or both. Text and icons can mix in the same label.
  • Change its source: Home, Recently read, Latest added, Authors, Genres, Series, Tags, Formats, Ratings, Favourites, or a specific genre / author / series / tag / format / rating / folder / collection.
  • Filter by reading status.
  • Set up to 3 levels of sort priority.
  • Reorder, hide, add, or delete chips.

Each chip remembers its own settings. Your TBR chip can sort by author surname while your Recently Read chip sorts by last opened.

Multi-level sorting

The single sort per chip is replaced with a 3-level priority list. Sort an Authors chip by surname, then by series, then by series number. Picking a source sets a sensible default; tweak from there. The ↑ arrow shows only when a level is flipped from its natural direction.

New sort keys: Page count, Rating, Most recently read (strict read time, so a freshly-synced unread genre doesn't push itself up), and Most recently added.

True author surname extraction handles "Forename Surname", "Surname, Forename", and multi-author entries; compound surnames with particles (Le Guin, van der Berg) are kept whole.

Star ratings

A new Rating region for the hero card with interactive stars. Tap to set; tap the same star again to clear. Stores in the same DocSettings field KOReader's Book Status dialog uses, so ratings show up everywhere.

Two new chip sources match: Ratings (group view, one card per star count plus Unrated) and Specific rating (a single bucket as a chip).

Search

  • Always shows all matching folders, authors, series, genres, tags, and books regardless of which chips are enabled.
  • Tapping a stack keeps you in search mode with the stack name added to the breadcrumb.
  • Drilling into a group sorts books by series then series number then title by default.
  • Cover thumbnails refresh per render so swiping back from a drill never shows corrupted images.

Library refresh

  • Swipe down on the shelf area to refresh after adding books. A "Refreshing library" notice appears while it's working.
  • Auto-detection picks up new books on the next chip tap based on actual file system changes.

Bookshelf remembers where you were

Close a book and you return to the same chip, page, and drilled-in stack. Restart KOReader and the same state restores.

Hero card customisation

  • Tap a truncated description to open the full text in a scrollable viewer.
  • "Open book" tap is restricted to the cover. Description, stars, and other interactive areas own their own zones.
  • Long-press anywhere on the hero opens the book menu.

Pagination polish

  • The pagination footer now uses wide tap zones across a 75% strip; the outer 12.5% on each side is left clear for KOReader's bottom-corner gestures.
  • Long-press prev or next skips 10 pages instead of 1.
  • Tap "Page N of M" opens a numeric page-jump dialog.

Chip bar visuals

  • Chip bar font size with a live nudge dialog.
  • Flexible chip widths so longer text labels get more room than icon-only ones.
  • Mixed labels render text bold and icons regular weight so glyphs don't look blobby.

Cover indicators

  • New Show page count toggle puts a "p<N>" pill at the bottom-right of each cover. Works for EPUBs once you've opened them at least once.
  • Show series # is now three-state: Always / Within series folder / Never. The "in series" mode suppresses the "#N" badge on mixed-source views where it just reads as noise.

Layouts on small / phone-tall screens

The shelf row count now adapts. On phone-tall devices (Boox Palma and similar) the bookshelf drops to 2 shelf rows by default so the hero card has proportional space. Expanded mode still reveals an extra row.

Fixes

  • Crash on auto-dim when the dimmer plugin fired its ramp task. (#39)
  • Crash loop when Bookshelf was set as the home screen but CoverBrowser was disabled. A one-time notification now explains the dependency and Bookshelf falls back to the file manager cleanly.

Performance

For larger libraries:

  • Custom-source chips batch-fetch metadata in one SQLite query.
  • Re-visiting a chip within a session is effectively free.
  • The library walk runs once per real change, not on a 2 minute timer. So performance stays fast, battery use minimised when you're not constantly changing your library files.

Under the hood

Plugin settings live in their own file (settings/bookshelf.lua) instead of the global settings.reader.lua. Existing settings migrate automatically on first launch, leftover v1.1.x files are cleaned up, and plugin source files have been reorganised into a lib/ folder. Advance support for the next KOReader version's plugin delete/cleanup feature (removing bookshelf will give an option to remove settings as well)

As with any release this size, and the range of possible library and device configurations you all have, I expect there's something I will have missed. Please raise any issues on GitHub. I'm mainly interested in bugs as I have plenty of feature ideas :)

u/AndyHazz — 5 days ago

[Plugin] Bookshelf v1.1.2 - performance and compatibility update

Minor update, mainly focused on performance and compatibility (continuing work on the foundations before moving too fast into new features for now). Since bookshelf only publicly released a short while ago, I'm still working through issues that may only affect a small number of users but is all good groundwork to have in place before adding too much on top.

Exiting a book should now feel faster - we still have to wait for koreader to finish closing the book before bookshelf becomes interactive, but bookshelf should appear on screen faster so you know your gesture/action had an effect.

This release will definitely be of interest to legacy/non-touch device users, as we now have full support for dpad navigation. I've tested on desktop emulator as I don't have a dpad device currently, let me know on github if you have any issues.

.docx and other file formats previously unsupported will now appear within bookshelf, added to the whitelist for files.

github.com
u/AndyHazz — 8 days ago
▲ 148 r/koreader

[Plugin] Bookshelf v1.1 - Progress indicators and extra polish

Bookshelf v1.1, now with progress indicators (all optional if you want to toggle them off for a cleaner look), also lots of bug fixes and performance improvements made since v1.0.

https://github.com/AndyHazz/bookshelf.koplugin/releases

More options when you long press a book so you can mark as finished/reset/delete directly from Bookshelf.

First pass at translations are in there too, for the same languages supported by Bookends. I welcome PRs on github for any improvements to those.

Next release likely to be expanding on sorting/filtering and tab customisation. Lots of feature requests in that area on github already!

Pop a star on Bookshelf in github if you like the plugin :)

https://github.com/AndyHazz/bookshelf.koplugin

u/AndyHazz — 10 days ago
▲ 181 r/koreader

[Plugin] - Bookshelf v1.0

Edit: v1.0.10 is the latest release, should bring significant performance improvements for anyone with large libraries (and noticeable performance improvements even for smaller libraries) - update from within the app. Thanks for all the early adopters today helping with testing the improvements!

Since I posted at the start of the week with a bit of a preview, I think Bookshelf is now ready for release.

https://github.com/AndyHazz/bookshelf.koplugin

It's a bit different I think to other UI plugins, in that it barely patches stock Koreader at all. The only patch is to add the menu icon in the top level, so it should be very resiliant to any koreader updates and it won't really care what other plugins you have installed - the flipside being that it won't make use of any of those plugins either. It is what it is.

It's basically a full screen widget, you can use the Koreader 'Starts with' menu option and choose 'Bookshelf', or you can just use the bookshelf menu to open and close it. It should even run fine as a layer over the top of other UI plugins.

Within the widget, we have a reasonably fully featured book browsing system. Tap any book to see it's details in the top panel, and tap again to open it.

The little 'open book' button on the left of the tab bar will take you back to whatever your current 'open book' is.

You can swipe up to hide the book detail and get an extra row if you like, and swipe down to show it again.

The book detail area, and the status bar at the top, all works a bit like my other plugin Bookends, with a token system to give you lots of control over the fonts, size, icons and even some conditional logic for those who want to go that deep.

If you do have bookends installed as well, then it will recognise that and give some extra progress bar styles and more fully featured token and icon pickers for the book detail customisation.

I've only just made the github repo public, so go ahead and be the first to give it a star :)

After you've tried it out of course ...

u/AndyHazz — 13 days ago

Just a small update but one worth attention for any .cbz or .pdf readers - you can now set a background fill for Bookends, in the preset menu alongside the text and icon colour.

I've published a new 'Comic book' preset to the gallery for you to download to get the look in this screenshot, credit to 'fatcats55' who recently submitted 'Clean and informative' to the gallery, as I used that preset as a basis for this one.

That's actually the 50th preset submitted to the gallery, thanks to everyone who has contributed so far :)

https://github.com/AndyHazz/bookends.koplugin

p.s. this release also includes a minor change to the font picker, not user facing in this release but groundwork for upcoming release of Bookshelf

u/AndyHazz — 16 days ago
▲ 207 r/koreader

Just a little preview on something else I've been working on alongside Bookends - Bookshelf is a (another) new plugin that pretties up your library browsing experience. Unlike Bookends where you get complete freedom, this is kept simple with a fixed layout, but you can edit the information displayed in several areas using Bookends token system, so that'll be familiar to some.

Not quite ready for release yet, but coming along nicely :)

u/AndyHazz — 17 days ago

New in v5.9, you can set the bar thickness separately for read/unread portions. Can be used simply to get a kobo-style progress bar using the solid style and tweaking the colours darker (like the full width bottom bar in the screenshot), but also gives more design options for all other bar styles.

https://github.com/AndyHazz/bookends.koplugin

u/AndyHazz — 20 days ago

Bookends is a plugin that gives you full control over progress bars and book information displayed in your reader view.

Now in v5.7 - Go nuts with icons in your bookends, I've included a searchable library of ALL icons included in koreader's core font files. You can still use curated selections of icons that are more likely to be useful - but go ahead and find that obscure icon that matches your theme ideas.

This release also standardises the preset, token and icon library with the same UI for search and filter. e.g. search the token library for 'author' and find all the options for how to show authors.

Also 2 new dynamic icons for warmth and frontlight, and 8 new reading stat tokens - e.g. %book_streak (days reading current book).

https://github.com/AndyHazz/bookends.koplugin

Edit: 5.7 actually released now, sorry for the delay!

u/AndyHazz — 22 days ago

Quite a bit has been added thanks to user feedback since the v5 release a couple of days ago, it's great to get all this feedback and help make the plugin even better! So, I thought it worth a post to summarise the new bits and give a big thanks to the r/koreader community for suggestions and help in testing to get all of these improvements released:

Layout & visuals

  • Stretchier left/right overlays. When one side is short and the other is long, the long side now grows into the freed space rather than capping at half the screen.
  • Wi-Fi icon always renders (slashed glyph when off) so its slot doesn't collapse. Wrap with [if:wifi=on]%wifi[/if] to restore hide-on-off, or [if:connected]%wifi[/if] for connected-only.
  • Progress blocks category in the symbol picker: ▰▱, ▮▯, squares, shaded blocks for stepped progress indicators.

Token system

  • %authors for multi-author books, joined with commas. %author_1...%author_5 for pick-by-position; [if:authors&gt;1] enables clean %author, et al. patterns.
  • 12 more tokens usable in [if:] conditionals: chap_time_left, book_time_left, book_read_time, session_time, highlights, notes, bookmarks, filename, lang, series_name, series_num, warmth. Numeric ones compare directly: [if:book_time_left&gt;30].
  • &gt;= and &lt;= operators in conditionals (no more &gt;49 workarounds).
  • Quoted strings in conditionals for multi-word values: [if:author="J.R.R. Tolkien"], [if:title!="Untitled"].
  • Chapter tokens fall back to whole-book values when there's no chapter info. %chap_pct etc. now render usefully in chapterless books, single-chapter books, and last chapters.

Other plugins' status in your overlays

  • %plugin_content picks up text from any plugin that uses KOReader's footer hook. KOReader's bundled Read Timer shows its countdown automatically; on Kobo, kobo.koplugin users get their Bluetooth indicator. Works even with the stock status bar disabled.
  • %plugin_content{&lt;plugin&gt;} filters to a single plugin so you can place each one in its own zone, e.g. %plugin_content{readtimer} for just the countdown.

Compatibility & polish

  • Better night-mode patch compatibility. No more pulsing frontlight or frozen screen when running with patches like 2-dim-during-refresh.lua.
  • Less nightmode flicker. The minute-tick refresh now only repaints the overlay area, and only when a time-sensitive token is actually in use.
  • Development branch installer under Settings > Advanced for testing in-progress fixes; the version line shows whether you're on a release or a branch.
  • Bottom-center tap gesture can be reset to "Do nothing" without the obscure "tap the active radio to deselect" trick.

Full release notes: https://github.com/AndyHazz/bookends.koplugin/releases

u/AndyHazz — 26 days ago