Skip to content

Introduce three new analytical charts: Taste Ratings, Reading Backlog, and Series Progress#2383

Merged
acx10 merged 1 commit intodevelopfrom
feature/more-charts
Jan 21, 2026
Merged

Introduce three new analytical charts: Taste Ratings, Reading Backlog, and Series Progress#2383
acx10 merged 1 commit intodevelopfrom
feature/more-charts

Conversation

@acx10
Copy link
Collaborator

@acx10 acx10 commented Jan 21, 2026

🚀 Pull Request

📝 Description

🛠️ Changes Implemented

🧪 Testing Strategy

📸 Visual Changes (if applicable)


⚠️ Required Pre-Submission Checklist

Please Read - This Checklist is Mandatory

Important Notice: We've experienced several production bugs recently due to incomplete pre-submission checks. To maintain code quality and prevent issues from reaching production, we're enforcing stricter adherence to this checklist.

All checkboxes below must be completed before requesting review. PRs that haven't completed these requirements will be sent back for completion.

Mandatory Requirements (please check ALL boxes):

  • Code adheres to project style guidelines and conventions
  • Branch synchronized with latest develop branch (please resolve any merge conflicts)
  • 🚨 CRITICAL: Automated unit tests added/updated to cover changes (MANDATORY for ALL Spring Boot backend and Angular frontend changes - this is non-negotiable)
  • 🚨 CRITICAL: All tests pass locally (run ./gradlew test for Spring Boot backend, and ng test for Angular frontend - NO EXCEPTIONS)
  • 🚨 CRITICAL: Manual testing completed in local development environment (verify your changes work AND no existing functionality is broken - test related features thoroughly)
  • Flyway migration versioning follows correct sequence (if database schema was modified)
  • Documentation PR submitted to booklore-docs (required for features or enhancements that introduce user-facing or visual changes)

Why This Matters:

Recent production incidents have been traced back to:

  • Incomplete testing coverage (especially backend)
  • Merge conflicts not resolved before merge
  • Missing documentation for new features

Backend changes without tests will not be accepted. By completing this checklist thoroughly, you're helping maintain the quality and stability of Booklore for all users.

Note to Reviewers: Please verify the checklist is complete before beginning your review. If items are unchecked, kindly ask the contributor to complete them first.


💬 Additional Context (optional)

@acx10 acx10 added the feature Addition of new functionality label Jan 21, 2026
@acx10 acx10 merged commit 54af081 into develop Jan 21, 2026
@acx10 acx10 deleted the feature/more-charts branch January 21, 2026 16:17
@acx10 acx10 mentioned this pull request Jan 22, 2026
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Jan 22, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/booklore-app/booklore](https://github.com/booklore-app/booklore) | minor | `v1.17.0` → `v1.18.2` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>booklore-app/booklore (ghcr.io/booklore-app/booklore)</summary>

### [`v1.18.2`](https://github.com/booklore-app/booklore/releases/tag/v1.18.2)

[Compare Source](booklore-app/booklore@v1.18.0...v1.18.2)

#### 🌟 What's New in v1.18.2

This release introduces some of the largest and most impactful features Booklore has seen so far:

- **New Ebook Reader**: Introducing a responsive, clean, and intuitive reader based on Foliate.js. Supports EPUB, AZW3, MOBI, and FB2 formats, with highlights, notes, and bookmarks for seamless reading.
- **Bi-Directional Reading Progress Sync**: Reading progress now syncs automatically between Booklore and KoReader, with Kobo support coming in upcoming releases.
- **Streaming Ebook Reading (Beta)**: Large ebooks, such as multi-hundred-page cookbooks or textbooks, can now be read page by page, minimizing memory and storage usage.
- **Optimized PDF & CBZ Streaming**: PDF and CBX files no longer need to be fully extracted for reading; pages are streamed directly, improving performance for large files.
- **Enhanced Charts**: All charts have been redesigned for clarity and visual appeal. Three new chart types have been added: Taste Ratings, Reading Backlog, and Series Progress.
- **Komga-Compatible API**: Connect your Komga apps, such as Mihon or Komelia, directly to Booklore for unified library management.
- **Progressive Web App Support**: Booklore can now be installed as a PWA, allowing access without browser UI limitations for a cleaner reading experience.

#### 🐛 Bug Fixes (v1.18.2 + v1.18.1)

- fix(db): remove unused CBX/PDF cache cleanup cron entries ([#&#8203;2402](booklore-app/booklore#2402))
- Fix showstopper bugs in v1.18.0 ([#&#8203;2399](booklore-app/booklore#2399)) by [@&#8203;acx10](https://github.com/acx10)
- fix(reading sessions): Split sessions, re-calculate times in book overview ([#&#8203;2393](booklore-app/booklore#2393)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)

#### 🚀 New Features (v1.18.0)

- Introduced additional library charts to surface meaningful insights ([#&#8203;2390](booklore-app/booklore#2390)) by [@&#8203;acx10](https://github.com/acx10)
- Introduce three new analytical charts: Taste Ratings, Reading Backlog, and Series Progress ([#&#8203;2383](booklore-app/booklore#2383)) by [@&#8203;acx10](https://github.com/acx10)
- Initialize progress web app ([#&#8203;2351](booklore-app/booklore#2351)) by [@&#8203;acx10](https://github.com/acx10)
- feat(custom-covers): add functionality to generate custom covers for selected books ([#&#8203;2355](booklore-app/booklore#2355)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Implement streaming EPUB reader with on-demand loading ([#&#8203;2350](booklore-app/booklore#2350)) by [@&#8203;acx10](https://github.com/acx10)
- Feat/komga api ([#&#8203;2071](booklore-app/booklore#2071)) by [@&#8203;farfromrefug](https://github.com/farfromrefug)
- Revamp streaming PDF reader to render pages on demand ([#&#8203;2332](booklore-app/booklore#2332)) by [@&#8203;acx10](https://github.com/acx10)
- Revamp the CBX reader layout for improved structure and usability ([#&#8203;2330](booklore-app/booklore#2330)) by [@&#8203;acx10](https://github.com/acx10)
- Add support for annotations and book notes in the new ebook reader ([#&#8203;2313](booklore-app/booklore#2313)) by [@&#8203;acx10](https://github.com/acx10)
- Bidirectional progress sync between koreader and booklore reader ([#&#8203;2312](booklore-app/booklore#2312)) by [@&#8203;acx10](https://github.com/acx10)
- feat(metadata): add configurable enabled fields for metadata editor a… ([#&#8203;2299](booklore-app/booklore#2299)) by [@&#8203;acx10](https://github.com/acx10)
- Implement Public Shelves ([#&#8203;1969](booklore-app/booklore#1969)) by [@&#8203;cjd](https://github.com/cjd)
- Introduce a new eBook reader with support for EPUB, MOBI, AZW3, and FB2 formats ([#&#8203;2258](booklore-app/booklore#2258)) by [@&#8203;acx10](https://github.com/acx10)
- feat(metadata): add auto-save metadata feature in editor settings ([#&#8203;2274](booklore-app/booklore#2274)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- RanobeDB Light Novel metadata provider ([#&#8203;2221](booklore-app/booklore#2221)) by [@&#8203;Nedra1998](https://github.com/Nedra1998)

#### ✨ Enhancements (v1.18.0)

- feat(metadata): add 'Replace When Provided' option to metadata replacement modes ([#&#8203;2379](booklore-app/booklore#2379)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(google-parser): improve Google Books API integration with improved metadata handling and series extraction ([#&#8203;2375](booklore-app/booklore#2375)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(metadata): add replace mode option for metadata fetching ([#&#8203;2356](booklore-app/booklore#2356)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(comicVine): improve comic metadata structure with additional credits and fields ([#&#8203;2358](booklore-app/booklore#2358)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(library): add validation for library path accessibility during rescan ([#&#8203;2347](booklore-app/booklore#2347)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(ui): add password confirmations ([#&#8203;2291](booklore-app/booklore#2291)) by [@&#8203;arjunsrinivasan1997](https://github.com/arjunsrinivasan1997)
- feat(sort): Add sort by author surname and first name ([#&#8203;2292](booklore-app/booklore#2292)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(directory-picker): add selection actions for folders, add buttons for select all, deselect all, and select current folder ([#&#8203;2293](booklore-app/booklore#2293)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(hardcover): Improve Hardcover metadata accuracy and rate limiting ([#&#8203;2303](booklore-app/booklore#2303)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(shelf): add shelf filtering options and integrate into book processing ([#&#8203;2268](booklore-app/booklore#2268)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Stream CBX contents directly from the archive instead of unzipping and caching files ([#&#8203;2229](booklore-app/booklore#2229)) by [@&#8203;acx10](https://github.com/acx10)

#### 🎨 UI Tweaks (v1.18.0)

- Polish view and metadata settings page UI ([#&#8203;2362](booklore-app/booklore#2362)) by [@&#8203;acx10](https://github.com/acx10)
- Optimize metadata picker for mobile layout ([#&#8203;2361](booklore-app/booklore#2361)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes (v1.18.0)

- Fix touch issues with ebook reader ([#&#8203;2395](booklore-app/booklore#2395)) by [@&#8203;acx10](https://github.com/acx10)
- Fix failing book cover search due to HTTP 403 ([#&#8203;2392](booklore-app/booklore#2392)) by [@&#8203;acx10](https://github.com/acx10)
- fix: Refactor HardcoverSyncService to improve edition and page count ([#&#8203;2389](booklore-app/booklore#2389)) by [@&#8203;boludo00](https://github.com/boludo00)
- fix(kobo): Update KoboResources file to match Calibre web to fix issues with Overdrive ([#&#8203;2367](booklore-app/booklore#2367)) by [@&#8203;cra21k](https://github.com/cra21k)
- fix(comic-metadata):  fix series grouping bug with external ComicInfo.xml metadata ([#&#8203;2385](booklore-app/booklore#2385)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(PathPatternResolver): remove leading slash from resolved pattern if first component is empty ([#&#8203;2339](booklore-app/booklore#2339)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(ui): map comic book extensions to CBX filter in book details ([#&#8203;2338](booklore-app/booklore#2338)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix: Reading stats UI ([#&#8203;2322](booklore-app/booklore#2322)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix: split reading sessions based on the date ([#&#8203;2316](booklore-app/booklore#2316)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(chart-ui): resolve glitches in chart rendering ([#&#8203;2290](booklore-app/booklore#2290)) by [@&#8203;acx10](https://github.com/acx10)
- fix(comicvine): fix metadata search failing for titles containing '#<number>' ([#&#8203;2273](booklore-app/booklore#2273)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(reading statistics ui): small fixes ([#&#8203;2276](booklore-app/booklore#2276)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(metadata-picker): handle null and empty values in fetched metadata processing ([#&#8203;2269](booklore-app/booklore#2269)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(OpdsFeedService): detect ZIP mime type for FB2 files when zipped ([#&#8203;2242](booklore-app/booklore#2242)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub): strip formatting from ISBN values to ensure correct extraction ([#&#8203;2248](booklore-app/booklore#2248)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(deps): add JPEG2000 support in PDFBox with Jai ImageIO dependencies ([#&#8203;2250](booklore-app/booklore#2250)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata): missing lubimyczytac fields and fetch retry ([#&#8203;2179](booklore-app/booklore#2179)) by [@&#8203;Spynacz](https://github.com/Spynacz)

#### 🛠️ Refactoring & Maintenance (v1.18.0)

- Refactor: Enhance healthcheck response with version info and DTO ([#&#8203;2378](booklore-app/booklore#2378)) by [@&#8203;hyun4965](https://github.com/hyun4965)
- perf(regex): introduce regex patterns for improved string handling invarious services ([#&#8203;2386](booklore-app/booklore#2386)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix: Yes/No buttons on bookdrop import have reversed colors/icons ([#&#8203;2363](booklore-app/booklore#2363)) by [@&#8203;acx10](https://github.com/acx10)
- Normalize book progress percentage rounding ([#&#8203;2359](booklore-app/booklore#2359)) by [@&#8203;acx10](https://github.com/acx10)
- chore(metadata-warning): add warnings about metadata quality for file naming and moving features ([#&#8203;2340](booklore-app/booklore#2340)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(api,epub): add cover extraction fallback using meta cover attribute for URL-encoded cover image hrefs ([#&#8203;2310](booklore-app/booklore#2310)) by [@&#8203;ajbanck](https://github.com/ajbanck)
- fix(amazon-parser): handle Amazon error responses and improve error logging ([#&#8203;2294](booklore-app/booklore#2294)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata): ensure authors/genres are replaced, not merged, during metadata update by defaulting mergeCategories to false ([#&#8203;2304](booklore-app/booklore#2304)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- chore(docs): update copyright year in README ([#&#8203;2323](booklore-app/booklore#2323)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Refactor metadata picker and parsers for Amazon, Goodreads, and Google ([#&#8203;2327](booklore-app/booklore#2327)) by [@&#8203;acx10](https://github.com/acx10)
- Refactor dialogs for a consistent look and feel ([#&#8203;2321](booklore-app/booklore#2321)) by [@&#8203;acx10](https://github.com/acx10)
- Refactor common dialog header and footer components ([#&#8203;2318](booklore-app/booklore#2318)) by [@&#8203;acx10](https://github.com/acx10)
- Refactor the Book Browser to simplify and streamline the implementation ([#&#8203;2317](booklore-app/booklore#2317)) by [@&#8203;acx10](https://github.com/acx10)
- Centralize book tag color definitions ([#&#8203;2314](booklore-app/booklore#2314)) by [@&#8203;acx10](https://github.com/acx10)
- Remove support for the legacy ePub reader ([#&#8203;2287](booklore-app/booklore#2287)) by [@&#8203;acx10](https://github.com/acx10)
- fix(parsers): increase request interval to prevent rate limiting issues ([#&#8203;2282](booklore-app/booklore#2282)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- (Refactor) Extract file-specific information from book ([#&#8203;1734](booklore-app/booklore#1734)) by [@&#8203;piffio](https://github.com/piffio)
- Update query to use startTime instead of createdAt ([#&#8203;2272](booklore-app/booklore#2272)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- feat(archive): add ArchiveType via Magic Numbers detection and integrate into book processing ([#&#8203;2220](booklore-app/booklore#2220)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub): normalize text nodes in EPUB metadata content.opf ([#&#8203;2222](booklore-app/booklore#2222)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)

#### 📦 Dependencies (v1.18.0)

- chore(deps): bump tar from 7.5.2 to 7.5.6 in /booklore-ui ([#&#8203;2387](booklore-app/booklore#2387)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump lodash-es from 4.17.21 to 4.17.23 in /booklore-ui ([#&#8203;2388](booklore-app/booklore#2388)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore: update Angular dependencies to latest minor/patch versions ([#&#8203;2285](booklore-app/booklore#2285)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v1.18.2`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v1.18.2`

**Full Changelog**: <booklore-app/booklore@v1.17.0...v1.18.2>

#### 📸 Screenshots

<img width="750" height="471" alt="Screenshot 2026-01-22 at 12 10 47 PM" src="https://github.com/user-attachments/assets/d5118bbf-771c-495d-b2a3-a695027a6bcd" />
<img width="750" height="451" alt="Screenshot 2026-01-22 at 12 06 23 PM" src="https://github.com/user-attachments/assets/13456e8f-e3bb-4373-b6c8-b4871c5b5504" />
<img width="750" height="452" alt="Screenshot 2026-01-22 at 12 02 35 PM" src="https://github.com/user-attachments/assets/d2f8a2d6-6ea8-43d2-b990-7a058ca45e29" />
<img width="750" height="452" alt="Screenshot 2026-01-22 at 12 01 46 PM" src="https://github.com/user-attachments/assets/0aff60b3-238f-4f6e-a2b5-c962f844e7ba" />
<img width="632" height="710" alt="Screenshot 2026-01-22 at 12 04 22 PM" src="https://github.com/user-attachments/assets/fd4fcc98-3d95-4662-ac61-a93d534f3ed3" />
<img width="632" height="710" alt="Screenshot 2026-01-22 at 12 04 27 PM" src="https://github.com/user-attachments/assets/5464a3d4-a6f7-4e8d-acfc-1ca7fb14e9ec" />
<img width="632" height="710" alt="Screenshot 2026-01-22 at 12 04 33 PM" src="https://github.com/user-attachments/assets/c7722037-ba00-4bea-a166-150b6557caf3" />
<img width="632" height="710" alt="Screenshot 2026-01-22 at 12 05 47 PM" src="https://github.com/user-attachments/assets/6011c4ee-efa2-4471-a9b0-9fd2b2d09712" />
<img width="750" height="471" alt="Screenshot 2026-01-22 at 12 13 56 PM" src="https://github.com/user-attachments/assets/820465a6-59d7-44d7-9eef-56f69451ab85" />
<img width="750" height="402" alt="Screenshot 2026-01-22 at 1 17 59 AM" src="https://github.com/user-attachments/assets/08aa7a57-aa54-4672-ab1c-b35551e88b51" />
<img width="750" height="369" alt="Screenshot 2026-01-22 at 1 17 41 AM" src="https://github.com/user-attachments/assets/2f08f94f-59e4-40f1-932b-07b028620875" />
<img width="750" height="317" alt="Screenshot 2026-01-22 at 1 18 11 AM" src="https://github.com/user-attachments/assets/947c96cc-ab9a-481d-adb0-2a1472393ee8" />
<img width="750" height="471" alt="Screenshot 2026-01-22 at 12 09 34 PM" src="https://github.com/user-attachments/assets/3bfc4666-7aa5-45db-a2b5-f16f0a3a8b5c" />
<img width="750" height="471" alt="Screenshot 2026-01-22 at 12 09 28 PM" src="https://github.com/user-attachments/assets/1c3cc89f-1cd6-4dd3-b0f2-26b9ad56aa66" />
<img width="750" height="451" alt="Screenshot 2026-01-22 at 12 07 03 PM" src="https://github.com/user-attachments/assets/8b9577c0-db09-4bf1-8903-f9ceca7b9964" />

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4yIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3369
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Addition of new functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant