$ show joshuacant/ProjectTitle
This repository is a KOReader plugin called 'Project: Title' that replaces the default file browser and history with alternative display modes: cover grid, cover list, details list, and filename list. It extracts book metadata and cover images, caches them in a SQLite database (with zstd compression), and displays progress bars, series information, tags, and custom book status screens. The plugin monkey-patches core KOReader widgets (FileChooser, FileManager, Menu, BookStatusWidget) to inject its own UI components. It also provides background metadata extraction, folder cover generation, and a user-patch extension mechanism. The code is written in Lua and is tightly integrated with KOReader's internal APIs, making it non-portable outside that ecosystem. However, several internal modules (gettext proxy, performance debugger, user-patch template) demonstrate reusable patterns for other KOReader plugins.
The LLM identified 3 files worth highlighting for reuse:
Custom gettext proxy that merges plugin translations with the host KOReader translations, falling back to KOReader strings when plugin translations are missing. This is a self-contained, reusable pattern for any KOReader plugin needing multilingual support without duplicating core strings.
Lightweight performance instrumentation helper that logs execution time and memory usage. It is a standalone module that can be dropped into any Lua project for simple profiling, demonstrating a clean, non-obvious debugging pattern.
Template for KOReader user patches that integrate with this plugin via the userpatch.registerPatchPluginFunc API. It documents a non-obvious extension mechanism that allows users to customize plugin behavior without modifying core files, and is reusable as a pattern for other KOReader plugins.