[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-78029":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":28,"discoverSource":29},78029,"bookshelf.koplugin","AndyHazz\u002Fbookshelf.koplugin","AndyHazz","A nice looking home screen for KOReader. Lets you pick a book from your shelf and read it, with some customisation around the book preview info that's shown.",null,"Lua",172,6,2,7,0,18,24,64,54,80.94,"GNU Affero General Public License v3.0",false,"master",[],"2026-06-12 04:01:23","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Fbookshelf-logo-dark.png\">\n    \u003Cimg alt=\"Bookshelf\" src=\"assets\u002Fbookshelf-logo.png\" width=\"320\">\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n# Bookshelf\n\nA friendly home screen for KOReader. Browse your library by series, author, genre, collection, or anything you like; pick a book, glance at its cover, blurb, rating, and progress, and start reading.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F82f95a3e-7914-4236-855f-31d8dd09d83c\" width=\"19%\" alt=\"Bookshelf home screen\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F574976b3-c82d-4eeb-a8ac-848ea113aa35\" width=\"19%\" alt=\"Series view\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fabcdf0b2-a06b-46d4-9055-e710f2a124b5\" width=\"19%\" alt=\"Chip bar editor\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fb916c194-7423-4418-96c3-d0367119f45c\" width=\"19%\" alt=\"Hero card line editor\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F95799321-18fe-4495-84f4-73388a1ecc35\" width=\"19%\" alt=\"Library search\" \u002F>\n\u003C\u002Fp>\n\n## Install\n\n1. Download the latest **bookshelf.koplugin.zip** from [Releases](https:\u002F\u002Fgithub.com\u002FAndyHazz\u002Fbookshelf.koplugin\u002Freleases).\n2. Unzip it onto your device's KOReader plugins folder:\n\n   | Device | Plugins folder |\n   |--------|----------------|\n   | Kindle | `\u002Fmnt\u002Fus\u002Fkoreader\u002Fplugins\u002F` |\n   | Kobo | `\u002Fmnt\u002Fonboard\u002F.adds\u002Fkoreader\u002Fplugins\u002F` |\n   | Android | `\u003Ckoreader-dir>\u002Fplugins\u002F` |\n\n3. Restart KOReader.\n4. Open KOReader's menu and set **Start with -> Bookshelf**. Without this, KOReader opens its standard file browser on launch; you can still open Bookshelf manually from the menu.\n\n> **You also need CoverBrowser enabled** (Settings -> More plugins -> CoverBrowser). It supplies the covers and metadata Bookshelf uses. If it's disabled, Bookshelf shows a one-time notice and steps aside to KOReader's standard file browser.\n\nOnce it's running, the top menu has a **Bookshelf** section with everything else: chips, the book detail view, collections, updates, and settings.\n\n---\n\n## A quick tour\n\n### The chip bar (top of the screen)\n\nEach \"chip\" is a shelf. Tap one to switch shelves. Out of the box you get **Home**, **Recent**, **Series**, and **Favourites**, but you can rename, reorder, hide, or delete any of them and add as many of your own as you like.\n\nA chip can point at:\n\n- **Home** -- your library as folders, or as a flat list of every book.\n- **Recent** or **Latest** -- books you read recently, or books added recently.\n- A **stack** of series, authors, genres, collections, formats, ratings, or reading statuses. Tap a stack to drill into one of its members.\n- A **specific** series, author, genre, collection, format, rating, folder, or reading status -- a shelf showing just that one slice of your library.\n- **Favourites** -- the built-in starred shelf.\n\nEach chip remembers its own reading-status filter (Unread, Reading, On hold, Finished), sort priority (up to three levels deep, e.g. *surname, then series, then series number*), label, icon, and whether it's enabled.\n\n**To edit a chip:** long-press it. The footer of the editor has **+ Add new chip** if you'd like to start a fresh one.\n\nThe same menu (**menu -> Bookshelf chips…**) also has **Chip bar font size** for adjusting how big the chips render across the top of the screen.\n\n### Searching\n\nTap the search icon at the right of the chip bar. Search looks across folders, authors, series, genres, collections, and book titles in one go, and groups the results by category. Tapping a result drills into it; back-swipe to return to whichever shelf you were on.\n\n### The hero card (top of the shelf area)\n\nThe big card at the top of the screen previews the focused book. Tap a cover on the grid to focus it; the card refreshes with its title, author, description, rating, and progress. Tap the hero card cover to open the book.\n\nThe hero card has seven sections you can show, hide, or restyle:\n\n- **Status line** -- top right; defaults to disk space, battery, frontlight, Wi-Fi, and time.\n- **Rating** -- five tappable stars (off by default; tap a star to set or clear).\n- **Title**\n- **Author**\n- **Metadata** -- a free-form line; the default shows the series and series number for books in a series.\n- **Description** -- the book blurb. Tap to read the full text in a scrollable viewer.\n- **Progress** -- bottom-anchored line with an inline progress bar.\n\nTo edit them, open **menu -> Edit book detail view** (see [Customising the hero card](#customising-the-hero-card) below).\n\n### The shelf grid (the books)\n\nEach cover on the grid is either a book or a stack of books (for series, authors, etc.).\n\n- **Tap** a book to preview it in the hero card.\n- **Tap** the hero card cover to actually open the book.\n- **Long-press** a book to open the book menu (see below).\n- **Long-press** a stack to pin it to the chip bar as its own shelf.\n- **Swipe up** to collapse the hero and show more books at once.\n- **Swipe down** on the hero to restore it; **swipe down** on the shelf area to refresh the library after adding new books over USB or Calibre.\n\nThe full gesture reference is in [Gestures cheatsheet](#gestures-cheatsheet) below.\n\n---\n\n## The book menu (long-press a cover)\n\nLong-press any cover on the shelf or in the hero card to open the book menu. The header shows a cover thumbnail, the book's title and author, and a strip of **navigation pills** -- tappable shortcuts to the book's author, series, collections, genres, and parent folder. Tap any pill to drill into that shelf.\n\nBelow the header you'll find:\n\n| Button | What it does |\n|--------|--------------|\n| **Unopened \u002F Reading \u002F On hold \u002F Finished** | Reading status. Tap to change. Unopened clears progress and drops the book from Recent without touching highlights or bookmarks. |\n| **Show info** | KOReader's built-in book info dialog. |\n| **Collections (N)…** | Add or remove the book from any collection (Favourites, To Be Read, your own). The number shows current membership. |\n| **Rating** | Set a 1-to-5 star rating, or clear it. |\n| **Refresh metadata** | Re-read the cover and metadata from the file (useful after editing metadata externally). |\n| **Remove from history** | Drop the book from Recent without changing anything else on disk. |\n| **Reset book data…** | A wider purge with checkboxes for progress, bookmarks, highlights, notes, custom cover, and custom metadata. |\n| **Delete** | Permanently remove the file from disk (with a confirmation). |\n\nLong-pressing a series, author, genre, collection, format, rating, or folder stack instead opens a single **Pin to chip bar** prompt -- the fastest way to turn a stack you've drilled into into a permanent shelf.\n\n---\n\n## Collections\n\nCollections are named lists of books, and Bookshelf uses KOReader's built-in collection system, so anything you collect in Bookshelf shows up in KOReader's collection menu (and vice versa). Two collections come ready:\n\n- **Favourites** -- the built-in starred shelf. Always present; can't be renamed or deleted.\n- **To Be Read** -- a reading pile for things you haven't started yet.\n\nOpen **menu -> Manage collections…** to add new collections, rename or delete existing ones, and **pin** any collection to your chip bar as a dedicated shelf.\n\nTo put a book into a collection, long-press its cover and tap **Collections (N)…**. Tick the collections you want, then Save. The pill strip in the book menu's header updates immediately to reflect what's changed.\n\n---\n\n## Cover indicators\n\nEach cover can show small badges and bars at the corners. Configure them under **menu -> Settings -> Cover progress indicators**:\n\n- **Show reading bookmarks** -- a bookmark mark on books you're partway through.\n- **Show completed book badge** -- a check-mark pill at the bottom-left of finished books.\n- **Show progress bars** -- a thin colour bar above the bottom edge for in-progress books.\n- **Show page count** -- a \"pN\" pill in the bottom-right. (For EPUBs it works once you've opened the book at least once.)\n- **Show series #** -- a \"#3\" badge on covers in a series. Tri-state: Always, Within series folder (so mixed shelves stay clean), or Never.\n- **Read colour \u002F Unread colour** -- the two colours used by the progress bar.\n\n---\n\n## Customising the hero card\n\nOpen **menu -> Edit book detail view** to toggle each of the seven sections on or off. The same menu has a **Font scale** entry at the top for resizing everything in the hero card at once (50-200%). Tap a section's row to open its **line editor**.\n\nThe line editor lets you change the text and styling of one section. You'll see these controls:\n\n| Button | What it does |\n|--------|--------------|\n| **Bold** | Toggle bold weight. |\n| **Size** | A nudge dialog (-5 \u002F -1 \u002F +1 \u002F +5) over the font size, range 8 to 48 pixels. |\n| **Font** | Pick a font family. Shows previews when [Bookends](https:\u002F\u002Fgithub.com\u002FAndyHazz\u002Fbookends.koplugin) is installed. |\n| **Aa \u002F AA** | Toggle uppercase (hidden on the Description section). |\n| **L \u002F C \u002F R** | Cycle alignment (left, centre, right). |\n| **Bar style** | (Progress only) Cycle the inline progress bar's visual style. |\n| **+ Bar \u002F - Bar** | (Progress only) Add or remove the `%bar` placeholder. |\n| **Bar height** | (Progress only) Nudge the inline bar's height as a percentage. |\n| **Tokens…** | Pick from a categorised list of placeholders (see below). |\n| **Icons…** | Insert icon glyphs (requires Bookends). |\n| **Default** | Reset this section's text and styling to its defaults. |\n| **Cancel** | Revert and close. |\n| **Save** | Persist and close. |\n\nEdits update the hero card behind the editor in real time.\n\n### Tokens (placeholders)\n\nAny text in a hero section can include **tokens** -- placeholders that get replaced with live data. For example, `%title` becomes the book title; `%book_pct` becomes the percentage read.\n\nYou can wrap things in `[if:...]...[\u002Fif]` to show them only when the relevant data exists. For instance, `[if:series]%series_name #%series_num[\u002Fif]` only renders when the book is in a series.\n\nThe full token list is in the [Token cheatsheet](#token-cheatsheet) below.\n\n---\n\n## Updates\n\nOpen **menu -> Updates** to keep Bookshelf current:\n\n- **Notify on wake when update available** -- opt-in. Once an hour after a Wi-Fi-connected wake, Bookshelf checks the GitHub releases page and posts a quiet notification if a new version is out. Off by default; nothing is ever fetched without your permission.\n- **Installed version \u002F Update available** -- the current installed version. When a newer release exists, tap the row to read the release notes and choose **Update and restart**.\n- **Developer updates** (advanced) -- type a development branch name (e.g. `feat\u002Ffoo`) to install the tip of that branch. Use **Reset to latest stable release** to clear the dev branch and pull the latest published release.\n\nThe whole download, unpack, and restart sequence runs over Wi-Fi only and needs no extra plugins.\n\n---\n\n## Library refresh\n\nAfter adding new books over USB or via Calibre:\n\n- **Swipe down** on the shelf area for an immediate refresh; a brief \"Refreshing library\" notice appears.\n- **Tap a chip** -- Bookshelf checks for filesystem changes automatically on chip taps, so new books appear without a manual refresh.\n\n---\n\n## Reference\n\nEverything beyond this point is the full feature reference. Expand any section you need.\n\n\u003Ca id=\"gestures-cheatsheet\">\u003C\u002Fa>\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Gestures cheatsheet\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| Gesture | Where | What it does |\n|---------|-------|--------------|\n| **Tap** | Shelf cover (normal mode) | Preview the book in the hero card |\n| **Tap** | Shelf cover (expanded mode) | Open the book directly |\n| **Tap** | Hero card cover | Open the previewed book |\n| **Tap** | Hero card description | Open the full description in a scrollable viewer |\n| **Tap** | Hero card star | Set \u002F clear the book's rating |\n| **Tap** | Chip | Switch shelf |\n| **Tap** | Search icon | Open the library search |\n| **Tap** | \"Page N of M\" footer | Open the numeric page-jump dialog |\n| **Tap** | First \u002F prev \u002F next \u002F last chevrons | Page navigation |\n| **Long-press** | Chip | Open the chip editor |\n| **Long-press** | Shelf book cover | Open the per-book menu |\n| **Long-press** | Shelf stack cover (series, author, etc.) | Pin the stack to the chip bar |\n| **Long-press** | Prev \u002F next chevron | Skip 10 pages back \u002F forward (clamped to first \u002F last) |\n| **Long-press** | Hero card | Open the per-book menu for the previewed book |\n| **Swipe west** (\u003C-) | Hero card | Cycle preview to the next book in the active chip |\n| **Swipe west** (\u003C-) | Anywhere else | Next page; on the last page, drills out or switches chip |\n| **Swipe east** (->) | Hero card | Cycle preview to the previous book |\n| **Swipe east** (->) | Anywhere else | Previous page \u002F drill back out \u002F previous chip |\n| **Swipe north** (up) | Anywhere | Collapse hero to a thin status strip; expand the grid |\n| **Swipe south** (down) | Hero | Restore the full hero from expanded mode |\n| **Swipe south** (down) | Shelf area | Refresh the library walk |\n\nThe pagination row uses wide tap zones across the middle 75% of the screen. The outer 12.5% on each side is left free so KOReader's bottom-corner gestures (gestures.koplugin profiles for brightness, night mode, etc.) still register.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Chip sources, filters, and sorts\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n#### Sources\n\nEach chip points at one of:\n\n- **Home (folders)** -- your library as a folder tree.\n- **Home (flat)** -- every book in one list, no folders.\n- **Recent** -- books you've opened, newest-read first.\n- **Latest added** -- new files on disk, newest-added first (scan depth set under Advanced settings -> \"Latest\" walk depth).\n- **Favourites**\n- **Series**, **Authors**, **Genres**, **Collections**, **Formats**, **Ratings** -- a stack of all the values; drill into one to see its books.\n- **Specific** series \u002F author \u002F genre \u002F collection \u002F format \u002F rating \u002F folder \u002F reading status -- a shelf scoped to a single chosen value.\n\n#### Reading-status filter\n\nAny combination of **Unread**, **Reading**, **On hold**, and **Finished**. Off by default (everything visible).\n\n#### Sort priority\n\nUp to three levels per chip. Available sort keys:\n\n- **Title**, **Filename**\n- **Author surname**, **Author (given name)**\n- **Series name**, **Series index**\n- **Last opened** (most-recent-first by default)\n- **Date added** (most-recent-first by default)\n- **Percent read** (most progress first by default)\n- **Rating** (highest first; unrated last)\n- **Unread\u002FReading\u002FFinished** or **Reading\u002FUnread\u002FFinished** (status orderings)\n- **File size**\n- **Page count**\n- **Book count** (for stacks)\n\nDefaults adjust to the source (e.g. Recent defaults to *Last opened*; Latest added defaults to *Date added*). The first-level sort decides the order of stacks for grouped sources; subsequent levels order books within each stack.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Hero card line editor\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nThe book detail card has **seven editable sections**: Status, Rating, Title, Author, Metadata, Description, and Progress.\n\nOpen **menu -> Edit book detail view** to toggle each section on or off. Tap a section's row (when its toggle is on) to open the **line editor**.\n\nEdits live-update the hero behind the editor on every keystroke; only the right column of the card is rebuilt, so the cover stays untouched.\n\n#### Editor buttons\n\n| Button | What it does |\n|--------|--------------|\n| **Bold** | Toggle bold weight |\n| **Size** | -5 \u002F -1 \u002F +1 \u002F +5 nudge over the font size (range 8-48 px) |\n| **Font** | Font family picker |\n| **Aa \u002F AA** | Case toggle (hidden on Description) |\n| **L \u002F C \u002F R** | Alignment cycle (left \u002F centre \u002F right) |\n| **Bar style** | (Progress only) Cycle inline progress-bar styles |\n| **+ Bar \u002F - Bar** | (Progress only) Insert or remove the `%bar` token in the template |\n| **Bar height** | (Progress only) Nudge the inline bar's height (% of text height) |\n| **Tokens…** | Categorised token catalogue with live preview |\n| **Icons…** | Insert icon glyphs (requires Bookends) |\n| **Default** | Reset this section's template and styling to defaults |\n| **Cancel** | Revert and close |\n| **Save** | Persist and close |\n\n#### Bookends extras\n\nSeveral editor surfaces use the [Bookends](https:\u002F\u002Fgithub.com\u002FAndyHazz\u002Fbookends.koplugin) plugin when it's installed. Everything degrades gracefully when it isn't:\n\n| Surface | With Bookends | Without |\n|---------|---------------|---------|\n| Token picker | Modal with chips, search, live preview | Plain Menu over the token catalogue |\n| Icon picker | Full Material Design icon library | Button hidden |\n| Font picker | Each family rendered in its own typeface, weight variants deduped | Plain Menu over the system font list |\n| Progress-bar styles | 7 styles (`bordered`, `solid`, `rounded`, `metro`, `wavy`, `radial`, `radial_hollow`) | 2 styles (`bordered`, `solid`) |\n\n\u003C\u002Fdetails>\n\n\u003Ca id=\"token-cheatsheet\">\u003C\u002Fa>\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Token cheatsheet\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nTokens are placeholders prefixed with `%`. Conditional logic uses `[if:cond]…[\u002Fif]` (with optional `[else]`).\n\n#### Book metadata\n\n| Token | Example |\n|-------|---------|\n| `%title` | *The Great Gatsby* |\n| `%author` | *F. Scott Fitzgerald* (first author) |\n| `%authors` | *Neil Gaiman, Terry Pratchett* (all authors) |\n| `%series` \u002F `%series_name` | *Dune* |\n| `%series_num` | *1* |\n| `%rating` | *★★★☆☆* (empty when unrated) |\n| `%filename` | *The_Great_Gatsby* |\n| `%format` | *EPUB* |\n| `%lang` | *en* |\n| `%description` | Book blurb (HTML stripped, entities decoded) |\n\n#### Position and progress\n\n| Token | Example |\n|-------|---------|\n| `%page_num` \u002F `%page_count` | *42* \u002F *218* |\n| `%pages_left` | *176* |\n| `%book_pct` \u002F `%book_pct_left` | *19%* \u002F *81%* |\n| `%bar` | Inline progress-bar widget (Progress section only) |\n| `%spacer` | Elastic gap that pushes content left\u002Fright. `Reading%spacer47%` renders *Reading* on the left and *47%* on the right. |\n\n#### Statistics (requires the `statistics` plugin)\n\n| Token | Example |\n|-------|---------|\n| `%book_time_left` | *3h 45m* |\n| `%book_read_time` | *2h 30m* |\n| `%book_pages_read` | *142* |\n| `%days_reading_book` | *7* |\n| `%pages_per_day` | *12* |\n| `%speed` | *42* (pages per hour) |\n\nStatistics tokens auto-hide when the plugin is absent or the book has no recorded reading time.\n\n#### Time and date\n\n| Token | Example |\n|-------|---------|\n| `%time` \u002F `%time_24h` | *14:35* |\n| `%time_12h` | *2:35 pm* |\n| `%date` \u002F `%date_long` \u002F `%date_numeric` | *3 May* \u002F *3 May 2026* \u002F *03\u002F05\u002F2026* |\n| `%weekday` \u002F `%weekday_short` | *Monday* \u002F *Mon* |\n| `%datetime{%H:%M}` | Custom `os.date` format |\n\n#### Device\n\n| Token | Example |\n|-------|---------|\n| `%batt` \u002F `%batt_icon` | *73%* \u002F charge-aware glyph |\n| `%wifi_icon` | Wi-Fi icon (connected \u002F disconnected) |\n| `%light` \u002F `%light_pct` \u002F `%light_icon` | *18* \u002F *75%* \u002F lightbulb glyph |\n| `%warmth` | Frontlight warmth (natural-light only) |\n| `%nightmode` | Moon glyph when night mode is on, sun otherwise |\n| `%mem` \u002F `%ram` | System memory (%) \u002F KOReader RSS (MiB) |\n| `%disk` | Free space on the books partition (GB) |\n\n#### Conditionals\n\n```\n[if:book_time_left]%book_time_left LEFT[else]Open to start reading[\u002Fif]\n[if:lang!=en]Lang: %lang\\n[\u002Fif]%description\n[if:batt\u003C20]LOW BATTERY %batt[\u002Fif]\n[if:not series]Standalone[\u002Fif]\n```\n\nComparisons: `=` `!=` `\u003C` `>` `\u003C=` `>=`. Boolean: `and`, `or`, `not`. Numeric tokens compare numerically; string tokens compare by string equality.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Settings file (advanced)\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nBookshelf stores its settings in a dedicated file alongside KOReader's other plugin data, separate from `settings.reader.lua`:\n\n| Platform | Path |\n|----------|------|\n| Linux \u002F dev | `~\u002F.config\u002Fkoreader\u002Fsettings\u002Fbookshelf.lua` |\n| Kindle | `\u002Fmnt\u002Fus\u002Fkoreader\u002Fsettings\u002Fbookshelf.lua` |\n| Kobo | `\u002Fmnt\u002Fonboard\u002F.adds\u002Fkoreader\u002Fsettings\u002Fbookshelf.lua` |\n| Android | `\u003Ckoreader-dir>\u002Fsettings\u002Fbookshelf.lua` |\n\nExisting v1 settings migrate automatically on first launch -- legacy keys are read from `settings.reader.lua`, copied across with the `bookshelf_` prefix stripped, and removed from the global file.\n\n#### Selected keys\n\n| Key | Shape |\n|-----|-------|\n| `tabs` | Ordered list of chip records (id, label, icon, source, filter, sort_priority, enabled). |\n| `hero_regions` | Per-section overrides (sparse). One entry per section (status \u002F rating \u002F title \u002F author \u002F metadata \u002F description \u002F progress) with any subset of template, font_face, font_size, bold, uppercase, alignment, disabled, bar_style, bar_height. |\n| `font_scale` | Global zoom for hero text (50-200%). |\n| `chip_font_scale` | Chip bar font size (50-300%). |\n| `chip_flex_widths` | Boolean. When true, longer-labelled chips get more horizontal space than icon-only ones. |\n| `active_chip` \u002F `active_page` \u002F `drill_path` | Persisted navigation state, restored on KOReader restart. |\n| `progress_bar_enabled` \u002F `progress_bookmark_enabled` \u002F `progress_badge_enabled` \u002F `progress_page_count_enabled` | Cover indicator toggles. |\n| `show_series_num` | \"always\" \u002F \"in_series\" \u002F \"never\". |\n| `progress_fill` \u002F `progress_track` | Cover-bar colours (% black). |\n| `calibre_metadata` | BETA. Read metadata from `metadata.calibre` if present. |\n| `latest_walk_depth` | How deep the **Latest** source scans your library. |\n| `show_close_msg` | Show the centred \"Closing book…\" toast when exiting a book. |\n| `dev_branch` \u002F `last_install_source` \u002F `check_updates` | Updater state. |\n| `migrated` | One-shot flag; presence indicates v1 -> v2 migration has run. |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Known limitations\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- **`%bar` styling lives in the Progress section.** Inserting `%bar` in another section still renders the widget, but uses the bordered default style and 100% height since the Bar style \u002F Bar height buttons only appear in the Progress section's editor.\n- **Italic** is reachable only via the font picker (by selecting an italic family). The line editor has no italic toggle because `TextBoxWidget` doesn't synthesise italic from upright fonts.\n- **Inline format tags** `[b]`, `[i]`, `[u]` in templates are stripped before display. Use the per-section Bold button instead.\n- **Page count for EPUBs** requires opening the book at least once. The count comes from KOReader's pagemap or reading statistics, both of which are populated only after the first paginate.\n\n\u003C\u002Fdetails>\n\n---\n\n## License\n\nAGPL-3.0 -- see [LICENSE](LICENSE)\n","Bookshelf 是一个为 KOReader 电子书阅读器设计的美观且用户友好的主页界面。它允许用户通过系列、作者、类型或收藏等多种方式浏览个人图书馆，并选择书籍开始阅读，同时提供书籍封面、简介、评分和阅读进度等预览信息的自定义功能。该项目采用 Lua 语言编写，具有良好的定制性和扩展性，特别适合喜欢个性化设置以及需要更直观管理大量电子书的读者使用。","2026-06-11 03:56:21","CREATED_QUERY"]