Skip to content

feat(themes): add AMOLED theme with distinct light and dark color schemes#2457

Merged
acx10 merged 1 commit intobooklore-app:developfrom
balazs-szucs:reader-themes
Jan 24, 2026
Merged

feat(themes): add AMOLED theme with distinct light and dark color schemes#2457
acx10 merged 1 commit intobooklore-app:developfrom
balazs-szucs:reader-themes

Conversation

@balazs-szucs
Copy link
Collaborator

@balazs-szucs balazs-szucs commented Jan 24, 2026

🚀 Pull Request

📝 Description

Closes: #2439

image

🛠️ 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)

…emes

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
@acx10 acx10 added the enhancement Improvement to an existing feature label Jan 24, 2026
@acx10 acx10 merged commit a1ff5ee into booklore-app:develop Jan 24, 2026
5 checks passed
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Jan 24, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [booklore-app/BookLore](https://github.com/booklore-app/BookLore) | patch | `v1.18.4` → `v1.18.5` |

---

### Release Notes

<details>
<summary>booklore-app/BookLore (booklore-app/BookLore)</summary>

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

[Compare Source](booklore-app/booklore@v1.18.4...v1.18.5)

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

#### 🚀 New Features

- feat(book-browser): add responsive grid columns for mobile view ([#&#8203;2446](booklore-app/booklore#2446)) by [@&#8203;acx10](https://github.com/acx10)

#### ✨ Enhancements

- feat(dashboard-settings): update sort field options for Surname, and Personal Rating ([#&#8203;2456](booklore-app/booklore#2456)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(themes): add AMOLED theme with distinct light and dark color schemes ([#&#8203;2457](booklore-app/booklore#2457)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(book-browser): preserve scroll position when navigating back fro… ([#&#8203;2449](booklore-app/booklore#2449)) by [@&#8203;acx10](https://github.com/acx10)
- feat(pwa): add offline handling and fallback support ([#&#8203;2444](booklore-app/booklore#2444)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes

- fix(stats): show tooltip for single bubble and allow overflow in auth… ([#&#8203;2443](booklore-app/booklore#2443)) by [@&#8203;acx10](https://github.com/acx10)
- fix(opds): fix regression with browsing shelves ([#&#8203;2423](booklore-app/booklore#2423)) by [@&#8203;piffio](https://github.com/piffio)

#### 🛠️ Refactoring & Maintenance

- fix(ui): use local asset for page background ([#&#8203;2445](booklore-app/booklore#2445)) by [@&#8203;imnotjames](https://github.com/imnotjames)
- perf: lazy-load accordion content in library metadata settings ([#&#8203;2442](booklore-app/booklore#2442)) by [@&#8203;acx10](https://github.com/acx10)
- fix(cbx-reader): prevent touch drag on mobile and fix header title ov… ([#&#8203;2441](booklore-app/booklore#2441)) by [@&#8203;acx10](https://github.com/acx10)
- refactor: reduce re-renders and improve filter sidebar performance ([#&#8203;2440](booklore-app/booklore#2440)) by [@&#8203;acx10](https://github.com/acx10)
- Add clear warning when deleting books that files will be permanently … ([#&#8203;2438](booklore-app/booklore#2438)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

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

**Full Changelog**: <booklore-app/booklore@v1.18.4...v1.18.5>

</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4yIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3471
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
WorldTeacher pushed a commit to WorldTeacher/booklore that referenced this pull request Feb 19, 2026
# [1.18.0](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/compare/v1.17.0...1.18.0) (2026-02-12)

### Bug Fixes

* **additional-file-uploader:** add file size validation with UI feedback ([booklore-app#2516](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2516)) ([74ac2d2](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/74ac2d25d19937274bb24a76a6bf68041b382b4a))
* **amazon-parser:** handle Amazon error responses and improve error logging ([booklore-app#2294](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2294)) ([f1f16a9](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/f1f16a98d872f6fd829c8e51c96b65301fedcc13))
* **api:** Select correct Hardcover.app ISBN from lookup results ([booklore-app#2530](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2530)) ([09d4a30](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/09d4a3025a6ce1829b5d996851b7a8e0574b86e1))
* **audiobook-reader:** use preload=none for immediate streaming playback ([booklore-app#2518](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2518)) ([872bf5a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/872bf5a3f765fca67453d24791ed1d408afdf0b5))
* **audiobook-reader:** use preload=none with explicit load() for faster streaming ([booklore-app#2520](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2520)) ([67269ff](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/67269ffe4ced2eeb1b337f2be37704e335fa95de))
* **auth:** resolve DST-related login failure for refresh tokens ([booklore-app#2624](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2624)) ([555cd13](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/555cd13f8a0d9977f24597544ab4cd43f676f6a8))
* **book-browser:** correct mobile grid card size calculation and reduce gap ([596bfc5](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/596bfc5798d5af0c6d48738c9d8d75e5933e6fb5))
* **book-browser:** resolve footer menu not hiding after navigation back ([booklore-app#2626](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2626)) ([f34b18f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/f34b18f2b87f7575c96b5e08d019b142774f6c32))
* **book-rule-evaluator:** fix file type handling and add mapping for specific formats to fix magic shelve based on filetype ([booklore-app#2480](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2480)) ([df52e99](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/df52e9924e5e8354a30efffb56dc69e218ade14d))
* **cbx-reader:** prevent touch drag on mobile and fix header title overflow ([booklore-app#2441](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2441)) ([308d5bf](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/308d5bf87d7d5f1a9efe6dbfd8d6fb9c9ef00bb6))
* **chart-ui:** resolve glitches in chart rendering ([booklore-app#2290](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2290)) ([3a41e25](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/3a41e25aeb55f54a0ad5f9dd6721e0ef7cbb4644))
* **comicvine:** add fallback to issue detail endpoint for missing creator credits ([booklore-app#2694](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2694)) ([e8530fa](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/e8530fa0b70ca23d03ad3448b0a59fcd20ac95f9))
* **comicvine:** fix metadata search failing for titles containing '#<number>' ([booklore-app#2273](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2273)) ([99c8c13](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/99c8c131f6c3a0c9039e6760363b7b415ab6a0ff))
* **db:** remove unused CBX/PDF cache cleanup cron entries ([booklore-app#2402](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2402)) ([2cd2e7b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/2cd2e7bd16a8cbb14ae0531c0a08da10e94430d7))
* **docker:** add build and gradle directories to volumes in docker-compose ([booklore-app#2459](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2459)) ([d36ffaf](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d36ffaf3e4706f76725022fb2cdcca140e23c9c7))
* **epub-cover-extract:** improve cover image extraction with fallback handling ([booklore-app#2585](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2585)) ([cb5f703](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/cb5f703c7ef76ddf487343bc218317a00aea3b75))
* **epub-metadata:** enhance cover extraction with heuristic fallbacks for manifest and ZIP entries ([booklore-app#2636](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2636)) ([45dba44](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/45dba44833882cdf4055f9fe999134a775e98853))
* **epub:** add cover extraction fallback using meta cover attribute ([booklore-app#2310](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2310)) ([c7fa64c](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c7fa64c045a4b0142a69351cd41244f92cc7b551))
* **epub:** normalize text nodes in EPUB metadata content.opf ([booklore-app#2222](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2222)) ([24fabc9](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/24fabc97de24de9bba1f8547ffe00493f3c24649))
* **epub:** strip formatting from ISBN values to ensure correct extraction ([booklore-app#2248](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2248)) ([64f036f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/64f036fb715338e24d212a67fcdc9b0f8ff14977))
* **file naming:** follow documentation... ([booklore-app#2642](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2642)) ([d93f1b8](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d93f1b8dfb7279171fa5ca8016b0d579342a6789))
* **file-move:** implement transaction management for file moves and rollback on failure ([booklore-app#2588](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2588)) ([c7dd23e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c7dd23ed850eddbeb9d667af95cb3f669ed90507))
* **file-move:** implement transaction management for file moves and rollback on failure ([booklore-app#2592](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2592)) ([cd428c6](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/cd428c6fe3ef99fde515085c86d8de939b31b199))
* **file-move:** update empty directory cleanup to handle multiple library paths ([booklore-app#2634](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2634)) ([f5326ce](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/f5326ce4352cb8c2533ab2ed2bc4fa6aae87f490))
* **hardcover-sync:** Don't send repeated read status to Hardcover.app ([booklore-app#2609](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2609)) ([a941ef5](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a941ef51b5fc18b5a12a744ea6d6e9a1d3c5d7bf))
* **i18n:** align translation keys in metadata viewer, searcher, sidecar, and tabs components (EN/ES) ([92a86bf](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/92a86bf23ac45e9b1399c78309527f785a3d5148))
* **i18n:** dynamic sidebar translations and UI font normalization ([booklore-app#2683](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2683)) ([53403c1](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/53403c168de991a5458f340cd4a943801741efda))
* **library-processing:** re-fetch library entity after clearing entity manager during rescan ([booklore-app#2507](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2507)) ([878bc44](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/878bc44138315a819b30a789ec8b76d439484558))
* **library-service:** prevent concurrent library scans with a tracking set ([booklore-app#2637](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2637)) ([37f6417](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/37f6417e3dfa4e576a51db19de66ab2baf8441aa))
* **metadata-match:** include cover image in match score calculation and correct weight aggregation ([booklore-app#2513](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2513)) ([6c4934b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/6c4934b8bafe44372e5efc2b8bf6607817cce3b1))
* **metadata-parsers:** improve ISBN search logic and fallback strategies for metadata fetching ([booklore-app#2502](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2502)) ([257c016](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/257c016f3f1a9cb88ecb389b5b07e175530d9d05))
* **metadata-picker:** handle null and empty values in fetched metadata processing ([booklore-app#2269](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2269)) ([1f62e4c](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/1f62e4cd268cc8f2d877f6e280dfca165cda6bc2))
* **metadata-refresh:** correct provider priority order and enhance REPLACE_ALL handling ([booklore-app#2503](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2503)) ([58bfe22](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/58bfe2293a3f402a4cc0076591f0faeb28bbe676))
* **metadata-refresh:** filter book shelves by authenticated user ([booklore-app#2481](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2481)) ([bbea391](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/bbea391c9c7fae8a40ed8fdc334a0467d6099bf9))
* **metadata-update:** ensure per-book transaction isolation in bulk updates to prevent race conditions ([booklore-app#2536](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2536)) ([3a4de95](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/3a4de95c8c652df52522336da68c5fa271121896))
* **metadata-viewer:** update file type handling to filter comic book formats as CBX ([booklore-app#2338](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2338)) ([dfd757f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/dfd757fe364c67a0dc82f3e8b85383683e672ec8))
* **metadata:** ensure authors/genres are replaced, not merged, during metadata update by defaulting mergeCategories to [secure] ([booklore-app#2304](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2304)) ([0a3c6d7](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/0a3c6d72fade3187d40a5d47bde2d93a2d7ef6a3))
* **metadata:** improve cover errors, reduce metadata fetch count, and hide attach option ([booklore-app#2690](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2690)) ([6da6e8e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/6da6e8e373ca63f92f83207e928a8f573fd37dc9))
* **metadata:** missing lubimyczytac fields and fetch retry ([booklore-app#2179](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2179)) ([06a75c4](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/06a75c42c88f980206e302b3a1fe98c5d60f7c91))
* **migration:** add idempotent guards to V114-V117 migrations ([855b215](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/855b215ee5a02952e8459189665fd325d409ebb7))
* **migration:** move comic metadata triggers to separate migration ([7f3680d](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/7f3680dd21ca200c713f01ded104be09cec809a2))
* **opds:** fix regression with browsing shelves ([booklore-app#2423](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2423)) ([bb0ee83](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/bb0ee8373e2fae8c6e1684e6236d0352ba547c78)), closes [booklore-app#2147](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2147)
* **os_x-conversion:** ignore __MACOSX directory for conversions ([booklore-app#2479](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2479)) ([fab7c14](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/fab7c140309c5a3b318a2923daf1f5dfd5a1e474))
* **parsers:** increase request interval to prevent rate limiting issues ([booklore-app#2282](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2282)) ([709f90d](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/709f90dc6804c41913fbbda92cc0a70a71c06e7c))
* **PathPatternResolver:** remove leading slash from resolved pattern if first component is empty ([booklore-app#2339](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2339)) ([da83a70](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/da83a702816fde3dab8feb84a58c538774703e55))
* **reader:** add overflow menu to ebook reader mobile header ([a9faf7d](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a9faf7d1eaa18f7052eea2e042bac2d7efa8b92d))
* **reader:** disable tap-to-turn-page on mobile devices ([574bfdb](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/574bfdbe7a4918dc54885058095425a6f9c8f2ea))
* **reader:** enable text copy in ebook reader ([booklore-app#2700](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2700)) ([booklore-app#2702](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2702)) ([c1e0c72](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c1e0c721f77d9bfc3d508c7c383c6e4fb428059a))
* **reading sessions:** Split sessions, re-calculate times in book overview ([booklore-app#2393](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2393)) ([d137055](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d137055b83d3f369910023794a26c2647472aeef))
* Reading stats UI ([booklore-app#2322](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2322)) ([6338ed1](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/6338ed13fc95fe45bb42f5abf42c91ed36e1ee7b))
* **reading-stats,ui:** update heatmap to use local time formatting, fix tooltip css in reading-stats page ([booklore-app#2587](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2587)) ([7124578](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/7124578831293ddd33847e5b230262c3f4b45084))
* Refactor HardcoverSyncService to improve edition and page count ([booklore-app#2389](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2389)) ([67c1222](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/67c12223ea5dab8ba0d72f32c93496e057bac2d4))
* **scan-library:** prevent NPE during rescan for books with missing file associations ([booklore-app#2429](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2429)) ([21076d4](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/21076d4f5d4898b7bfe4d896fef6d6a554dda6d7))
* **series-page:** add missing overlay preference service to book card component ([booklore-app#2466](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2466)) ([496a67a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/496a67a784c061a1eed45c4b9088226d4a5bb2a3))
* **settings:** use boxed Integer for ScrollerConfig.maxItems to allow null ([booklore-app#2684](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2684)) ([78a8bb4](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/78a8bb4feab8e64d007f085d09f0d9be2363c3ee))
* split reading sessions based on the date ([booklore-app#2316](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2316)) ([acca38a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/acca38a40487691bf26b3be6e534f45b4d9bcd08))
* **stats:** fix inconsistent stat card styling and add median/session stats to completion race ([120334e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/120334eb28bb0b9961021f75ab2ea5f06f410dfb))
* **stats:** show tooltip for single bubble and allow overflow in author universe chart ([booklore-app#2443](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2443)) ([8278f47](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/8278f47c6afd2630059aaf47b67205948ae2f1e9))
* top bar layout issues ([b616ef8](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/b616ef872389f3f1444799450d6f36949ec28d2c))
* **ui:** clean cached properties ([booklore-app#2499](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2499)) ([be16c7e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/be16c7ef3c284fec28a73eeb2feb8bf8f5c54d27)), closes [booklore-app#2472](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2472)
* **ui:** correctly format lubimyczytac external rating link ([booklore-app#2491](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2491)) ([0a7b67b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/0a7b67b8294705164e25b2de95b36f6b3b592529))
* **ui:** rename bg.png to topbar.png and fix asset path ([d6fa1bd](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d6fa1bd9b83983e5d09ed46bd585e0612c6571c6))
* **ui:** use local asset for page background ([booklore-app#2445](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2445)) ([ffae8df](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/ffae8dfce35dc4e75dd133d63c9c6202591dc0e1))

### Features

* **api, build:** Upgrade to Java 25, Gradle 9, and Spring Boot 4, Jackson 3 ([booklore-app#2597](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2597)) ([108d94c](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/108d94c0f710b0be860d3b819f8aa66b715d51ea))
* **archive:** add ArchiveType via Magic Numbers detection and integrate into book processing ([booklore-app#2220](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2220)) ([105f477](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/105f477c7935deb4208f18a55a522778e389c1a3))
* **book-browser:** add responsive grid columns for mobile view ([booklore-app#2446](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2446)) ([330c31a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/330c31a70a60cd9c203df5e241aa991f6738aca2))
* **book-browser:** preserve scroll position when navigating back from book details ([booklore-app#2449](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2449)) ([a45a50b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a45a50b383bc0664291e133b0cadffee7e55268a))
* **book-uploader:** Improved UX of drag&drop when adding books. ([booklore-app#2410](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2410)) ([5d1a295](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/5d1a295d4925a65de5f9aa2018409b2a53fd88ef))
* **cbx-reader:** add fullscreen, slideshow, RTL, long strip mode and keyboard shortcuts ([booklore-app#2632](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2632)) ([5183b0d](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/5183b0ddfc7d01756f8187b471127e1212139b20))
* **cbx-reader:** enhance ZIP archive handling with Unicode support and fallback mechanisms ([booklore-app#2593](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2593)) ([9444a54](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/9444a544f979a97bf02c8e1bb5697676de0b6475))
* comic metadata picker, lazy-load providers, and UI improvements ([booklore-app#2679](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2679)) ([ffd4615](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/ffd4615b87d95b4f4ad20d2e03c5858257adbd03))
* **comic-metadata:** add extended comic metadata support ([booklore-app#2654](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2654)) ([c1c72ea](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c1c72ea7baab58a89581daecf4d519636552687c))
* **comicVine:** improve comic metadata structure with additional credits and fields ([booklore-app#2358](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2358)) ([66dee6d](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/66dee6d7e07ed8e281ee5d8f4a07db70b69d2be6))
* **content-restrictions:** add age rating and content rating support ([booklore-app#2619](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2619)) ([9f9c762](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/9f9c762180ea2bcf1821f5c7b0f5dc9357a9f05d))
* **custom-covers:** add functionality to generate custom covers for selected books ([booklore-app#2355](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2355)) ([691845a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/691845adb8b532ec7628de9da599029539572b2a))
* **dashboard-settings:** update sort field options for Surname, and Personal Rating ([booklore-app#2456](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2456)) ([c23e38b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c23e38b5a588a283884baf126ea7a56d33bb7be3))
* **deps:** add JPEG2000 support in PDFBox with Jai ImageIO dependencies ([booklore-app#2250](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2250)) ([8dd9b28](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/8dd9b285523c70cc59c4f61062a053811327b25f))
* **directory-picker:** add selection actions for folders, add buttons for select all, deselect all, and select current folder ([booklore-app#2293](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2293)) ([3b56294](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/3b56294d1ce961f7ed5b608469b3da8c6ef12d7d))
* **email:** add format selection to email book dialog ([booklore-app#2650](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2650)) ([b2a4aa7](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/b2a4aa7960dc6aed1802424f9cfe89c1dacf8ba3))
* **filter:** add audiobook narrator filter and sort option ([20e73bd](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/20e73bd1080c0f05b48ad2b6ea5c7f5dcbec9d5e))
* **filters:** add customizable visible filters setting ([booklore-app#2625](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2625)) ([f71966a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/f71966a9b61f5191553ad1b94ddf0df627e15feb))
* **filters:** implement cascading sidebar filters ([booklore-app#2616](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2616)) ([89b4319](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/89b43199706828dbc79d5f04f7fca09433530b6b))
* **google-books:** add optional API key configuration ([booklore-app#2629](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2629)) ([37ea0b1](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/37ea0b156ff1cf665e96befdc245d16a7654b20d))
* **google-parser:** improve Google Books API integration with improved metadata handling and series extraction ([booklore-app#2375](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2375)) ([193c949](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/193c9495a1d164a45a9cde5a456aa4bfdc84f1ed))
* **hardcover:** implement book details response and search service enhancements ([booklore-app#2303](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2303)) ([a0f4c8e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a0f4c8e43e05288badcc2bac1c7b53064188f7eb))
* **i18n:** add Transloco translation framework with EN/ES and 7 language scaffolds ([booklore-app#2681](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2681)) ([0f60faa](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/0f60faa124ef1b060a4c8649d69f8f7a367169ce))
* **i18n:** translate dashboard scroller titles dynamically (EN/ES) ([d133a87](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d133a8767e587a2d27d667da3606607b4a80b4f6))
* **icons:** Made icons for libraries and shelves optional with no default icons. ([booklore-app#2599](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2599)) ([1423629](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/14236299f2412f8e393a250d15a3e708bc4fba69))
* **kobo-sync:** add user scoped 2 way kobo sync ([booklore-app#2452](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2452)) ([a77cecd](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a77cecdf21dd2600845e57501a33da2e6d42537c))
* **kobo-sync:** Sync Shelves and Magic Shelves to Kobo Tags ([booklore-app#2236](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2236)) ([539734a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/539734a3cfbc024a58121d3b9dd21f82d00651c2))
* **library:** add validation for library path accessibility during rescan ([booklore-app#2347](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2347)) ([4e27b8a](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/4e27b8afab877518bbe5875a08cdc56ef1610027))
* **metadata:** add 'Replace When Provided' option to metadata replacement modes ([booklore-app#2379](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2379)) ([14fa7b0](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/14fa7b058b48c7b469ddf625196733e68bc64a01))
* **metadata:** add auto-save metadata feature in editor settings ([booklore-app#2274](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2274)) ([869bea9](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/869bea9ca51a641e62208214fac2161e79c6b23a))
* **metadata:** add configurable enabled fields for metadata editor and picker + UI tweaks ([booklore-app#2299](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2299)) ([4dc5c00](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/4dc5c0008c75062ad2ffc3f440815f9ed2535142))
* **metadata:** add custom metadata write to file support for moods, tags, ratings, and external IDs in PDF, and CBZ ([booklore-app#2552](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2552)) ([697de90](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/697de9052f206c7642a52e98b9fd062af697576d)), closes [TaskCreateRequest#getOptions](https://gitlab.theprivateserver.de/TaskCreateRequest/issues/getOptions)
* **metadata:** add replace mode option for metadata fetching ([booklore-app#2356](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2356)) ([5451bb4](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/5451bb470a84a33206793f6eff3c629614bd7e65))
* **metadata:** return full metadata from fetchMetadata instead of previews ([booklore-app#2689](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2689)) ([ff11ec5](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/ff11ec57b8f0794a4de287fc2cc3721d26b2232f))
* **metadata:** simplify series name extraction by removing volume suffix ([booklore-app#2385](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2385)) ([b2eb303](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/b2eb30396419f0fa90f1933d8df3c67295d3e56f))
* **mobile-api:** add updatedAt to progress DTOs for conflict detection ([2b6cc4b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/2b6cc4be7cf7d8b1f451febf97ff64f1890dae8f))
* **OpdsFeedService:** detect ZIP mime type for FB2 files when zipped ([booklore-app#2242](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2242)) ([9761c0e](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/9761c0e9b654b343749a69287967508fec3497cb))
* **pwa:** add offline handling and fallback support ([booklore-app#2444](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2444)) ([27c764f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/27c764f0f1bd842f42ed855b5b15585c9baf2537))
* **pwa:** Enable fullscreen mode for Android immersive reading ([booklore-app#2649](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2649)) ([9392caa](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/9392caa991b742994b5c3f96361a9313620f0513)), closes [booklore-app#2648](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2648)
* **reader:** add dark/light mode toggle and improved close button to PDF reader ([booklore-app#2699](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2699)) ([16de2d0](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/16de2d006f4aacb2743d455e720e23bf4353a6ed))
* **reader:** add fullscreen, keyboard shortcuts help, search cancel, and go-to-percentage to ebook reader ([booklore-app#2698](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2698)) ([672b716](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/672b7163f169045da17ac0e9a3d136a2a39f65f2))
* **reader:** add PDF annotations, Range streaming, and optimized chunk loading ([booklore-app#2701](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2701)) ([9ed6a3f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/9ed6a3fe726003dd7c2601174ed73d97183bb807))
* **reader:** improve cbx reader mobile header and slideshow indicator ([aac8246](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/aac8246bcfe5f06d67130ee9aab004566159914b))
* **shelf:** add shelf filtering options and integrate into book processing ([booklore-app#2268](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2268)) ([775887b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/775887b55f0d644ce5bef60755ea70630ccad930))
* **sidecar:** add sidecar JSON metadata file support ([booklore-app#2657](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2657)) ([e462b6c](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/e462b6c197b7e0711565ae1b36d42c20ca88b715))
* **sort:** Add sort by author surname and first name ([booklore-app#2292](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2292)) ([d4cd6f5](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/d4cd6f52f425be1f04fb2b3f8c9074c25f3c539e))
* **sorting:** add multi-field sorting support ([booklore-app#2628](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2628)) ([e0c3d8b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/e0c3d8b50df5f74e2c93676197363b616624f5e5))
* **sort:** replace compound sort options with atomic fields and multi-sort support ([booklore-app#2686](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2686)) ([0fa84e3](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/0fa84e34242626c5a825a8328df4cfbb122b0af2))
* **stats:** add 5 new user statistics charts ([booklore-app#2703](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2703)) ([8128269](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/812826931056c696e9eb2ac6903ad05a90404bdd))
* **themes:** add AMOLED theme with distinct light and dark color schemes ([booklore-app#2457](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2457)) ([a1ff5ee](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/a1ff5ee5195206f3e17d35933e80b74dbe2880c9))
* **ui:** add password confirmations ([booklore-app#2291](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2291)) ([4253322](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/4253322d2cd71f94a85a39d710eeb1bbe6a99814))
* **ui:** provide hyperlinks for books as book cards in grid view ([booklore-app#2500](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2500)) ([54eb3e0](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/54eb3e0ee0a2c82fb1b0d942dd6f28c4898d8320))
* **upload:** add upload progress tracking with progress bar and stats ([booklore-app#2640](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2640)) ([f540e75](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/f540e759941694f8b88fab2761b9b9a07e8a4447))
* **user-stats:** add monthly heatmap endpoint ([0c56b7b](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/0c56b7b720f6cbf08ff9dd77fd0937b80493be20))

### Performance Improvements

* lazy-load accordion content in library metadata settings ([booklore-app#2442](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2442)) ([1aea55f](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/1aea55faea562dd33365779be2e1fd32c64eb088))
* **regex:** introduce regex patterns for improved string handling in various services ([booklore-app#2386](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/issues/2386)) ([c42f62c](https://gitlab.theprivateserver.de/WorldTeacher/wt-booklore/commit/c42f62c338a2c417c11177a875d4c17d7cf3a84a))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Improvement to an existing feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] AMOLED Black Theme

2 participants