Compare commits

41 Commits

Author SHA1 Message Date
6fb7a92c12 chore(deps): update helm release cilium to v1.19.1
All checks were successful
lint-test-helm / lint-helm (pull_request) Successful in 39s
2026-02-24 20:49:10 +00:00
15423676b5 chore(deps): update booklore-app/booklore to v2 (major) (#4176)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 37s
renovate / renovate (push) Successful in 2m38s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [booklore-app/BookLore](https://github.com/booklore-app/BookLore) | major | `v1.18.5` → `v2.0.1` |
| [ghcr.io/booklore-app/booklore](https://github.com/booklore-app/booklore) | major | `v1.18.5` → `v2.0.1` |

---

### Release Notes

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

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

[Compare Source](https://github.com/booklore-app/BookLore/compare/v2.0.0...v2.0.1)

#### 🌟 What's New in v2.0.1

#### 🐛 Bug Fixes

- Fix max upload size description to include all file formats ([#&#8203;2894](https://github.com/booklore-app/BookLore/issues/2894)) by [@&#8203;acx10](https://github.com/acx10)
- Fix magic shelf physical book filter and polish UI ([#&#8203;2888](https://github.com/booklore-app/BookLore/issues/2888)) by [@&#8203;acx10](https://github.com/acx10)
- Fix metadata settings not saving due to null deserialization error ([#&#8203;2886](https://github.com/booklore-app/BookLore/issues/2886)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Kobo download/image URLs using wrong port behind reverse proxy ([#&#8203;2875](https://github.com/booklore-app/BookLore/issues/2875)) by [@&#8203;acx10](https://github.com/acx10)
- Fix app crash on startup when /bookdrop volume is not mounted ([#&#8203;2873](https://github.com/booklore-app/BookLore/issues/2873)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- Hide sidecar tab for physical books ([#&#8203;2887](https://github.com/booklore-app/BookLore/issues/2887)) by [@&#8203;acx10](https://github.com/acx10)
- Translations update from Hosted Weblate ([#&#8203;2866](https://github.com/booklore-app/BookLore/issues/2866)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.0.1`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.0.1`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v2.0.0...v2.0.1>

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

[Compare Source](https://github.com/booklore-app/BookLore/compare/v1.18.5...v2.0.0)

#### 🌟 What's New in v2.0.0

This is the biggest Booklore release yet, with nearly 200 commits touching every part of the application:

- **Multi-Format Book Support & Audiobooks**: Books can now have multiple file formats (EPUB, PDF, CBZ, etc.) attached to a single entry. Full audiobook support is here with a dedicated player, streaming playback, narrator filtering, and session tracking.
- **Duplicate Book Detection & Merge**: Booklore can now detect duplicate books across your library. A new merge tool lets you combine duplicates, choose which formats to keep, and optionally move files, all without losing metadata.
- **Author Metadata via Audnexus**: Author pages now pull rich metadata (bios, images) from the Audnexus API, with a dedicated author browser, detail page, and editor.
- **Series Browser**: A brand new series browser page with search, filtering, sorting, and resizable cards for browsing your series collection at a glance.
- **Annotation Notebook**: All your highlights, notes, and bookmarks are now collected in a searchable, paginated notebook view.
- **Audit Log System**: Admins can now see a full audit trail of significant actions (user management, library changes, metadata operations) with geo flags, relative timestamps, and filterable logs.
- **Bidirectional Kobo Sync**: Full two-way reading progress sync with Kobo devices, plus shelves and magic shelves now sync as Kobo tags.
- **Cascading Sidebar Filters**: Filters now cascade, so selecting an author narrows available series, genres, etc. You can also customize which filters are visible.
- **10+ New Statistics Charts**: A massive expansion of the stats page with reading heatmaps, distribution charts, completion races, and more.
- **PDF Annotations & Reader Upgrades**: The PDF reader now supports annotations, dark/light mode toggle, and Range streaming. The ebook reader gains fullscreen, keyboard shortcuts, and go-to-percentage. The CBX reader adds fullscreen, slideshow, RTL, and long strip mode.
- **Sidecar Metadata Files**: Booklore can now read and write `.metadata.json` sidecar files alongside your books for portable metadata storage.
- **Extended Comic Metadata**: Full ComicInfo.xml support with a dedicated comic metadata picker and write-back to CBZ/PDF files.
- **Internationalization via Weblate**: Booklore is now fully translatable with Transloco and Weblate integration. Ships with 15+ languages including Hungarian, Slovenian, Croatian, Swedish, Chinese, and Japanese.
- **Java 25, Spring Boot 4, Gradle 9**: The entire backend has been upgraded to the latest stack. Nginx has been removed; Angular is now served directly from Spring Boot.
- **Login Rate Limiting**: Brute-force protection on the login endpoint. Plus new age and content rating support for restricted libraries.
- **Performance**: Book list API optimized with ETag caching, delta sync, and IndexedDB. Project Lilliput compact object headers reduce heap usage.

#### 🚀 New Features

- Introduce multi-format book support, including audiobooks ([#&#8203;2486](https://github.com/booklore-app/BookLore/issues/2486)) by [@&#8203;acx10](https://github.com/acx10)
- Add duplicate book detection/merge and fix format-related data loss ([#&#8203;2820](https://github.com/booklore-app/BookLore/issues/2820)) by [@&#8203;acx10](https://github.com/acx10)
- Add author metadata via Audnexus with browser, detail, and editor pages ([#&#8203;2843](https://github.com/booklore-app/BookLore/issues/2843)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add series browser page ([#&#8203;2771](https://github.com/booklore-app/BookLore/issues/2771)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add annotation notebook with server-side pagination ([#&#8203;2736](https://github.com/booklore-app/BookLore/issues/2736)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add audit log system for tracking admin-significant actions ([#&#8203;2759](https://github.com/booklore-app/BookLore/issues/2759)) by [@&#8203;acx10](https://github.com/acx10)
- Add bidirectional Kobo reading progress sync ([#&#8203;2791](https://github.com/booklore-app/BookLore/issues/2791)) by [@&#8203;acx10](https://github.com/acx10)
- feat(filters): implement cascading sidebar filters ([#&#8203;2616](https://github.com/booklore-app/BookLore/issues/2616)) by [@&#8203;acx10](https://github.com/acx10)
- feat(cbx-reader): add fullscreen, slideshow, RTL, long strip mode and keyboard shortcuts ([#&#8203;2632](https://github.com/booklore-app/BookLore/issues/2632)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sidecar): add sidecar JSON metadata file support ([#&#8203;2657](https://github.com/booklore-app/BookLore/issues/2657)) by [@&#8203;acx10](https://github.com/acx10)
- feat(comic-metadata): add extended comic metadata support ([#&#8203;2654](https://github.com/booklore-app/BookLore/issues/2654)) by [@&#8203;acx10](https://github.com/acx10)
- feat(i18n): add Transloco translation framework with EN/ES and 7 language scaffolds ([#&#8203;2681](https://github.com/booklore-app/BookLore/issues/2681)) by [@&#8203;acx10](https://github.com/acx10)
- feat(api, build): Upgrade to Java 25, Gradle 9, and Spring Boot 4, Jackson 3 ([#&#8203;2597](https://github.com/booklore-app/BookLore/issues/2597)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Remove nginx and serve Angular directly from Spring Boot ([#&#8203;2662](https://github.com/booklore-app/BookLore/issues/2662)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add login rate limiting to prevent brute-force attacks ([#&#8203;2761](https://github.com/booklore-app/BookLore/issues/2761)) by [@&#8203;acx10](https://github.com/acx10)
- feat(content-restrictions): add age rating and content rating support ([#&#8203;2619](https://github.com/booklore-app/BookLore/issues/2619)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sorting): add multi-field sorting support ([#&#8203;2628](https://github.com/booklore-app/BookLore/issues/2628)) by [@&#8203;acx10](https://github.com/acx10)
- feat(metadata): add custom metadata write to file support for moods, tags, ratings, and external IDs in PDF, and CBZ ([#&#8203;2552](https://github.com/booklore-app/BookLore/issues/2552)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(metadata) Save basic metadata to EPUB file - Bonus use Calibre Custom Columns for importing metadata. ([#&#8203;1879](https://github.com/booklore-app/BookLore/issues/1879)) by [@&#8203;jadehawk](https://github.com/jadehawk)
- feat: add grouped field dropdown and composite fields to magic shelf ([#&#8203;2750](https://github.com/booklore-app/BookLore/issues/2750)) by [@&#8203;acx10](https://github.com/acx10)
- feat(filters): add customizable visible filters setting ([#&#8203;2625](https://github.com/booklore-app/BookLore/issues/2625)) by [@&#8203;acx10](https://github.com/acx10)
- Add 10 advanced stats charts ([#&#8203;2850](https://github.com/booklore-app/BookLore/issues/2850)) by [@&#8203;acx10](https://github.com/acx10)
- feat(stats): add 5 new user statistics charts ([#&#8203;2703](https://github.com/booklore-app/BookLore/issues/2703)) by [@&#8203;acx10](https://github.com/acx10)
- feat(i18n): add Weblate integration and auth translations ([#&#8203;2727](https://github.com/booklore-app/BookLore/issues/2727)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add else clause and value modifiers to file naming patterns ([#&#8203;2724](https://github.com/booklore-app/BookLore/issues/2724)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add button to fetch metadata from book file ([#&#8203;2739](https://github.com/booklore-app/BookLore/issues/2739)) by [@&#8203;acx10](https://github.com/acx10)
- feat(google-books): add optional API key configuration ([#&#8203;2629](https://github.com/booklore-app/BookLore/issues/2629)) by [@&#8203;acx10](https://github.com/acx10)

####  Enhancements

- feat(reader): add PDF annotations, Range streaming, and optimized chunk loading ([#&#8203;2701](https://github.com/booklore-app/BookLore/issues/2701)) by [@&#8203;acx10](https://github.com/acx10)
- feat(reader): add fullscreen, keyboard shortcuts, search cancel, and go-to-percentage ([#&#8203;2698](https://github.com/booklore-app/BookLore/issues/2698)) by [@&#8203;acx10](https://github.com/acx10)
- feat(reader): add dark/light mode toggle and improved close button to PDF reader ([#&#8203;2699](https://github.com/booklore-app/BookLore/issues/2699)) by [@&#8203;acx10](https://github.com/acx10)
- feat(kobo-sync): add user scoped 2 way kobo sync ([#&#8203;2452](https://github.com/booklore-app/BookLore/issues/2452)) by [@&#8203;b3nk3](https://github.com/b3nk3)
- feat(kobo-sync): Sync Shelves and Magic Shelves to Kobo Tags ([#&#8203;2236](https://github.com/booklore-app/BookLore/issues/2236)) by [@&#8203;xcashy](https://github.com/xcashy)
- Redesign series page layout and book list tab ([#&#8203;2847](https://github.com/booklore-app/BookLore/issues/2847)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sort): replace compound sort options with atomic fields and multi-sort support ([#&#8203;2686](https://github.com/booklore-app/BookLore/issues/2686)) by [@&#8203;acx10](https://github.com/acx10)
- Add moveFiles option to attach/merge and per-book delete in duplicate merger ([#&#8203;2833](https://github.com/booklore-app/BookLore/issues/2833)) by [@&#8203;acx10](https://github.com/acx10)
- feat: enhance audit logs with geo flags, relative time, and UX improvements ([#&#8203;2760](https://github.com/booklore-app/BookLore/issues/2760)) by [@&#8203;acx10](https://github.com/acx10)
- feat(bookdrop): add ability to poll the bookdrop folder ([#&#8203;2768](https://github.com/booklore-app/BookLore/issues/2768)) by [@&#8203;arjunsrinivasan1997](https://github.com/arjunsrinivasan1997)
- feat: add metadata presence filter to magic shelf ([#&#8203;2757](https://github.com/booklore-app/BookLore/issues/2757)) by [@&#8203;acx10](https://github.com/acx10)
- feat(upload): add upload progress tracking with progress bar and stats ([#&#8203;2640](https://github.com/booklore-app/BookLore/issues/2640)) by [@&#8203;acx10](https://github.com/acx10)
- feat(email): add format selection to email book dialog ([#&#8203;2650](https://github.com/booklore-app/BookLore/issues/2650)) by [@&#8203;acx10](https://github.com/acx10)
- feat(pwa): Enable fullscreen mode for Android immersive reading ([#&#8203;2649](https://github.com/booklore-app/BookLore/issues/2649)) by [@&#8203;alondero](https://github.com/alondero)
- Add Hungarian and Slovenian language support ([#&#8203;2846](https://github.com/booklore-app/BookLore/issues/2846)) by [@&#8203;acx10](https://github.com/acx10)
- fix(library-service): prevent concurrent library scans with a tracking set ([#&#8203;2637](https://github.com/booklore-app/BookLore/issues/2637)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat: add configurable sidebar width setting ([#&#8203;2749](https://github.com/booklore-app/BookLore/issues/2749)) by [@&#8203;acx10](https://github.com/acx10)
- refactor(download): simplify file download to use browser native handling ([#&#8203;2639](https://github.com/booklore-app/BookLore/issues/2639)) by [@&#8203;acx10](https://github.com/acx10)

#### 🎨 UI Tweaks

- Add visual polish to book card component ([#&#8203;2788](https://github.com/booklore-app/BookLore/issues/2788)) by [@&#8203;acx10](https://github.com/acx10)
- refactor: centralize access-denied card styles into shared mixin ([#&#8203;2515](https://github.com/booklore-app/BookLore/issues/2515)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes

- fix(auth): resolve DST-related login failure for refresh tokens ([#&#8203;2624](https://github.com/booklore-app/BookLore/issues/2624)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Kobo sync HeadersTooLargeException for large libraries ([#&#8203;2809](https://github.com/booklore-app/BookLore/issues/2809)) by [@&#8203;acx10](https://github.com/acx10)
- fix(metadata-refresh): Correct metadata update priorities and preserve disabled fields during 'replace all' ([#&#8203;2503](https://github.com/booklore-app/BookLore/issues/2503)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-parsers): improve ISBN search logic and fallback strategies for metadata fetching ([#&#8203;2502](https://github.com/booklore-app/BookLore/issues/2502)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-update): ensure per-book transaction isolation in bulk updates to prevent race conditions ([#&#8203;2536](https://github.com/booklore-app/BookLore/issues/2536)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-refresh): fix filter book shelves by authenticated user logs out the user. ([#&#8203;2481](https://github.com/booklore-app/BookLore/issues/2481)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix null collection errors for PDFs, audiobooks, and physical books ([#&#8203;2817](https://github.com/booklore-app/BookLore/issues/2817)) by [@&#8203;acx10](https://github.com/acx10)
- fix(library-processing): re-fetch library entity after clearing entity manager during rescan ([#&#8203;2507](https://github.com/booklore-app/BookLore/issues/2507)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(file-move): ensure file moves are rolled back if database update fails ([#&#8203;2588](https://github.com/booklore-app/BookLore/issues/2588)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(file-move): update empty directory cleanup to handle multiple library paths ([#&#8203;2634](https://github.com/booklore-app/BookLore/issues/2634)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix CBR/CB7 to CBZ conversion losing track of file path ([#&#8203;2835](https://github.com/booklore-app/BookLore/issues/2835)) by [@&#8203;acx10](https://github.com/acx10)
- fix(cbz-reader): CBZ reading regression and optimize ZIP parsing strategy ([#&#8203;2593](https://github.com/booklore-app/BookLore/issues/2593)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix PDF reader not loading alternate format files ([#&#8203;2836](https://github.com/booklore-app/BookLore/issues/2836)) by [@&#8203;acx10](https://github.com/acx10)
- fix(epub-cover-extract): improve cover image extraction with fallback handling ([#&#8203;2585](https://github.com/booklore-app/BookLore/issues/2585)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub-metadata): enhance cover extraction with heuristic fallbacks for manifest and ZIP entries ([#&#8203;2636](https://github.com/booklore-app/BookLore/issues/2636)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(book-rule-evaluator): fix file type handling and add mapping for specific formats to fix magic shelve based on filetype ([#&#8203;2480](https://github.com/booklore-app/BookLore/issues/2480)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix magic shelf rule evaluation for numeric comparisons ([#&#8203;2795](https://github.com/booklore-app/BookLore/issues/2795)) by [@&#8203;acx10](https://github.com/acx10)
- Fix read status NULL progress handling in rule evaluator ([#&#8203;2821](https://github.com/booklore-app/BookLore/issues/2821)) by [@&#8203;acx10](https://github.com/acx10)
- Fix bookdrop race condition processing files before fully written ([#&#8203;2785](https://github.com/booklore-app/BookLore/issues/2785)) by [@&#8203;acx10](https://github.com/acx10)
- fix(bookdrop): handle file modifications in Bookdrop event handler ([#&#8203;2559](https://github.com/booklore-app/BookLore/issues/2559)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(hardcover-sync): Don't send repeated read status to Hardcover.app ([#&#8203;2609](https://github.com/booklore-app/BookLore/issues/2609)) by [@&#8203;PhasecoreX](https://github.com/PhasecoreX)
- fix(api): Select correct Hardcover.app ISBN from lookup results ([#&#8203;2530](https://github.com/booklore-app/BookLore/issues/2530)) by [@&#8203;PhasecoreX](https://github.com/PhasecoreX)
- fix(ui): fix memory leaks and cascading API calls in metadata editor ([#&#8203;2716](https://github.com/booklore-app/BookLore/issues/2716)) by [@&#8203;acx10](https://github.com/acx10)
- fix: replace Quill editor with native HTML rendering for book descriptions ([#&#8203;2733](https://github.com/booklore-app/BookLore/issues/2733)) by [@&#8203;acx10](https://github.com/acx10)
- Fix reading stats queries not accounting for timezone ([#&#8203;2844](https://github.com/booklore-app/BookLore/issues/2844)) by [@&#8203;acx10](https://github.com/acx10)
- Fix reading session timeline long sessions, tooltip perf, and week mismatch ([#&#8203;2848](https://github.com/booklore-app/BookLore/issues/2848)) by [@&#8203;acx10](https://github.com/acx10)
- fix(reading-stats,ui): update heatmap to use local time formatting… ([#&#8203;2587](https://github.com/booklore-app/BookLore/issues/2587)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(select-all): "Mark All" bug and add "Remove from all shelves" bulk action across components ([#&#8203;2562](https://github.com/booklore-app/BookLore/issues/2562)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(opds): Fix OPDS CBR mime type reporting and strict Archive detection ([#&#8203;2592](https://github.com/booklore-app/BookLore/issues/2592)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix OPDS shelf filter cartesian product ([#&#8203;2837](https://github.com/booklore-app/BookLore/issues/2837)) by [@&#8203;acx10](https://github.com/acx10)
- fix(comic-metadata): fix series grouping bug with external ComicInfo.xml metadata ([#&#8203;2385](https://github.com/booklore-app/BookLore/issues/2385)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix additional file uploader bugs and improve metadata viewer ([#&#8203;2816](https://github.com/booklore-app/BookLore/issues/2816)) by [@&#8203;acx10](https://github.com/acx10)
- Fix PWA offline fallback blocking localhost access when internet is disconnected ([#&#8203;2784](https://github.com/booklore-app/BookLore/issues/2784)) by [@&#8203;acx10](https://github.com/acx10)
- fix(audiobook-reader): use preload=none for immediate streaming playback ([#&#8203;2518](https://github.com/booklore-app/BookLore/issues/2518)) by [@&#8203;acx10](https://github.com/acx10)
- fix: reset audiobook progress and clear cached progress in UI ([#&#8203;2711](https://github.com/booklore-app/BookLore/issues/2711)) by [@&#8203;acx10](https://github.com/acx10)
- Fix cbx reader prev/next book stacking on close ([#&#8203;2858](https://github.com/booklore-app/BookLore/issues/2858)) by [@&#8203;acx10](https://github.com/acx10)
- Fix ebook reader header not hiding on mobile tap ([#&#8203;2857](https://github.com/booklore-app/BookLore/issues/2857)) by [@&#8203;acx10](https://github.com/acx10)
- fix(reader): enable text copy in ebook reader ([#&#8203;2702](https://github.com/booklore-app/BookLore/issues/2702)) by [@&#8203;acx10](https://github.com/acx10)
- Fix CBZ reader scroll position reset in infinite scroll mode ([#&#8203;2781](https://github.com/booklore-app/BookLore/issues/2781)) by [@&#8203;acx10](https://github.com/acx10)
- Fix column gap +/- buttons in eBook reader default settings ([#&#8203;2780](https://github.com/booklore-app/BookLore/issues/2780)) by [@&#8203;acx10](https://github.com/acx10)
- Fix email provider creation failing due to null shared field ([#&#8203;2794](https://github.com/booklore-app/BookLore/issues/2794)) by [@&#8203;acx10](https://github.com/acx10)
- Fix audit logs pagination bug and add URL query param sync ([#&#8203;2787](https://github.com/booklore-app/BookLore/issues/2787)) by [@&#8203;acx10](https://github.com/acx10)
- Fix audit log description overflow for bulk metadata refresh ([#&#8203;2783](https://github.com/booklore-app/BookLore/issues/2783)) by [@&#8203;acx10](https://github.com/acx10)
- Fix multiple author card menus opening simultaneously ([#&#8203;2852](https://github.com/booklore-app/BookLore/issues/2852)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Goodreads label mappings and format config ([#&#8203;2779](https://github.com/booklore-app/BookLore/issues/2779)) by [@&#8203;AlfredSimpson](https://github.com/AlfredSimpson)
- fix(ui): encode filter values in query params to handle commas in names ([#&#8203;2717](https://github.com/booklore-app/BookLore/issues/2717)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): prevent footer submenu from rendering off screen ([#&#8203;2714](https://github.com/booklore-app/BookLore/issues/2714)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): inline mobile charts submenu to prevent layout overflow ([#&#8203;2713](https://github.com/booklore-app/BookLore/issues/2713)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): correctly format lubimyczytac external rating link ([#&#8203;2491](https://github.com/booklore-app/BookLore/issues/2491)) by [@&#8203;sebhewelt](https://github.com/sebhewelt)
- Fix iconDisplay binding syntax in metadata viewer ([#&#8203;2772](https://github.com/booklore-app/BookLore/issues/2772)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- Fix mobile toolbar overlapping on small screens ([#&#8203;2856](https://github.com/booklore-app/BookLore/issues/2856)) by [@&#8203;acx10](https://github.com/acx10)
- Fix book browser header title overflow on mobile ([#&#8203;2808](https://github.com/booklore-app/BookLore/issues/2808)) by [@&#8203;acx10](https://github.com/acx10)
- fix(book-browser): resolve footer menu not hiding after navigation back ([#&#8203;2626](https://github.com/booklore-app/BookLore/issues/2626)) by [@&#8203;acx10](https://github.com/acx10)
- fix: align frontend Page interfaces with VIA\_DTO serialization format ([#&#8203;2751](https://github.com/booklore-app/BookLore/issues/2751)) by [@&#8203;acx10](https://github.com/acx10)
- fix: show provider icons in metadata viewer when only ID is present ([#&#8203;2734](https://github.com/booklore-app/BookLore/issues/2734)) by [@&#8203;acx10](https://github.com/acx10)
- fix: hide show-more button when description fits without truncation ([#&#8203;2766](https://github.com/booklore-app/BookLore/issues/2766)) by [@&#8203;acx10](https://github.com/acx10)
- fix: use audiobook thumbnail for audiobook entries in notebook ([#&#8203;2763](https://github.com/booklore-app/BookLore/issues/2763)) by [@&#8203;acx10](https://github.com/acx10)
- fix: show session numbers in book ([#&#8203;2696](https://github.com/booklore-app/BookLore/issues/2696)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(settings): use boxed Integer for ScrollerConfig.maxItems to allow null ([#&#8203;2684](https://github.com/booklore-app/BookLore/issues/2684)) by [@&#8203;acx10](https://github.com/acx10)
- fix(series-multi-select): Fix transparency in series multi select pop-up ([#&#8203;2555](https://github.com/booklore-app/BookLore/issues/2555)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix: Filter text overwrites on long options ([#&#8203;2540](https://github.com/booklore-app/BookLore/issues/2540)) by [@&#8203;acx10](https://github.com/acx10)
- Fix: Lock icons do not stay with publisher and series name input fields ([#&#8203;2539](https://github.com/booklore-app/BookLore/issues/2539)) by [@&#8203;acx10](https://github.com/acx10)
- fix(metadata): improve cover errors, reduce metadata fetch count, and hide attach option ([#&#8203;2690](https://github.com/booklore-app/BookLore/issues/2690)) by [@&#8203;acx10](https://github.com/acx10)

####  Performance

- perf: optimize book list API with ETag, delta sync, and IndexedDB caching ([#&#8203;2753](https://github.com/booklore-app/BookLore/issues/2753)) by [@&#8203;acx10](https://github.com/acx10)
- perf: enable compact object headers (Project Lilliput) ([#&#8203;2755](https://github.com/booklore-app/BookLore/issues/2755)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- refactor: split BookService into BookFileService and BookMetadataManageService ([#&#8203;2758](https://github.com/booklore-app/BookLore/issues/2758)) by [@&#8203;acx10](https://github.com/acx10)
- chore: fix memory leaks, add aria-labels, improve type safety and logging ([#&#8203;2764](https://github.com/booklore-app/BookLore/issues/2764)) by [@&#8203;acx10](https://github.com/acx10)
- chore: add caching, validation, lazy routes, refresh rate limiting, JaCoCo, and cleanup ([#&#8203;2762](https://github.com/booklore-app/BookLore/issues/2762)) by [@&#8203;acx10](https://github.com/acx10)
- perf: strip unused fields from book list API response ([#&#8203;2741](https://github.com/booklore-app/BookLore/issues/2741)) by [@&#8203;acx10](https://github.com/acx10)
- perf(epub): Replace linear manifest scans with HashMaps in EPUB reader ([#&#8203;2598](https://github.com/booklore-app/BookLore/issues/2598)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(metadata): return full metadata from parsers instead of previews ([#&#8203;2689](https://github.com/booklore-app/BookLore/issues/2689)) by [@&#8203;acx10](https://github.com/acx10)
- feat: comic metadata picker, lazy-load providers, and UI improvements ([#&#8203;2679](https://github.com/booklore-app/BookLore/issues/2679)) by [@&#8203;acx10](https://github.com/acx10)
- Add complete translations for all supported languages ([#&#8203;2831](https://github.com/booklore-app/BookLore/issues/2831)) by [@&#8203;acx10](https://github.com/acx10)
- Add Hungarian and Slovenian language support ([#&#8203;2846](https://github.com/booklore-app/BookLore/issues/2846)) by [@&#8203;acx10](https://github.com/acx10)
- Add Croatian and Swedish translations for login page ([#&#8203;2786](https://github.com/booklore-app/BookLore/issues/2786)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add i18n translations for stats, pdf reader, magic shelf, and remaining components (en/es) ([#&#8203;2742](https://github.com/booklore-app/BookLore/issues/2742)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add i18n translations for book components, services, and readers (en/es) ([#&#8203;2738](https://github.com/booklore-app/BookLore/issues/2738)) by [@&#8203;acx10](https://github.com/acx10)
- fix(i18n): dynamic sidebar translations and UI font normalization ([#&#8203;2683](https://github.com/booklore-app/BookLore/issues/2683)) by [@&#8203;acx10](https://github.com/acx10)
- feat: disable PDF printing for users without download permission ([#&#8203;2737](https://github.com/booklore-app/BookLore/issues/2737)) by [@&#8203;acx10](https://github.com/acx10)
- feat(ui): add file name column to table view and include filename in search ([#&#8203;2712](https://github.com/booklore-app/BookLore/issues/2712)) by [@&#8203;acx10](https://github.com/acx10)
- feat(ui): provide hyperlinks for books as book cards in grid view ([#&#8203;2500](https://github.com/booklore-app/BookLore/issues/2500)) by [@&#8203;berb](https://github.com/berb)
- feat(ui): Add sort by filePath ([#&#8203;1180](https://github.com/booklore-app/BookLore/issues/1180) and [#&#8203;2364](https://github.com/booklore-app/BookLore/issues/2364)) ([#&#8203;2512](https://github.com/booklore-app/BookLore/issues/2512)) by [@&#8203;chiguirepower](https://github.com/chiguirepower)
- feat(icons): Made icons for libraries and shelves optional with no default icons. ([#&#8203;2599](https://github.com/booklore-app/BookLore/issues/2599)) by [@&#8203;arthurgiroux](https://github.com/arthurgiroux)
- fix(comicvine): add fallback to issue detail endpoint for missing creator credits ([#&#8203;2694](https://github.com/booklore-app/BookLore/issues/2694)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub-metadata): enhance cover extraction with heuristic fallbacks for manifest and ZIP entries ([#&#8203;2636](https://github.com/booklore-app/BookLore/issues/2636)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-match): Fix metadata quality calculation to properly handle locked fields ([#&#8203;2513](https://github.com/booklore-app/BookLore/issues/2513)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(ui): reload shelves when enabling Kobo sync ([#&#8203;2715](https://github.com/booklore-app/BookLore/issues/2715)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui):  standardize button labels and styles across components ([#&#8203;2560](https://github.com/booklore-app/BookLore/issues/2560)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- chore: redesign README for cleaner layout and visual polish ([#&#8203;2728](https://github.com/booklore-app/BookLore/issues/2728)) by [@&#8203;acx10](https://github.com/acx10)
- fix: make README logo visible in GitHub light mode ([#&#8203;2756](https://github.com/booklore-app/BookLore/issues/2756)) by [@&#8203;acx10](https://github.com/acx10)
- chore: clean up PR template and contributing guide ([#&#8203;2660](https://github.com/booklore-app/BookLore/issues/2660)) by [@&#8203;acx10](https://github.com/acx10)
- fix(file naming): add leading zero to series index ([#&#8203;2642](https://github.com/booklore-app/BookLore/issues/2642)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- Update viewport meta tag to prevent auto-zoom on iOS when entering in… ([#&#8203;2620](https://github.com/booklore-app/BookLore/issues/2620)) by [@&#8203;jmswangit](https://github.com/jmswangit)
- test(API): add missing tests for BookMapperV2 ([#&#8203;2495](https://github.com/booklore-app/BookLore/issues/2495)) by [@&#8203;piffio](https://github.com/piffio)
- fix(audiobook-reader): use preload=none with explicit load() for faster streaming ([#&#8203;2520](https://github.com/booklore-app/BookLore/issues/2520)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): clean cached properties ([#&#8203;2499](https://github.com/booklore-app/BookLore/issues/2499)) by [@&#8203;piffio](https://github.com/piffio)
- fix(additional-file-uploader): add file size validation with UI feedback ([#&#8203;2516](https://github.com/booklore-app/BookLore/issues/2516)) by [@&#8203;acx10](https://github.com/acx10)
- fix(os\_x-conversion): ignore \_\_MACOSX directory for conversions ([#&#8203;2479](https://github.com/booklore-app/BookLore/issues/2479)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(series-page): add missing overlay preference service to book card ([#&#8203;2466](https://github.com/booklore-app/BookLore/issues/2466)) by [@&#8203;xcashy](https://github.com/xcashy)
- fix(docker): add build and gradle directories to volumes in docker compose ([#&#8203;2459](https://github.com/booklore-app/BookLore/issues/2459)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)

#### 📦 Dependencies

- chore(deps): bump org.springframework.boot from 4.0.2 to 4.0.3 in /booklore-api in the gradle-dependencies group ([#&#8203;2813](https://github.com/booklore-app/BookLore/issues/2813)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 15 updates ([#&#8203;2814](https://github.com/booklore-app/BookLore/issues/2814)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group across 1 directory with 18 updates ([#&#8203;2687](https://github.com/booklore-app/BookLore/issues/2687)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 13 updates ([#&#8203;2721](https://github.com/booklore-app/BookLore/issues/2721)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 20 updates ([#&#8203;2542](https://github.com/booklore-app/BookLore/issues/2542)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the gradle-dependencies group across 1 directory with 7 updates ([#&#8203;2659](https://github.com/booklore-app/BookLore/issues/2659)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the gradle-dependencies group in /booklore-api with 2 updates ([#&#8203;2720](https://github.com/booklore-app/BookLore/issues/2720)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump tar from 7.5.7 to 7.5.9 in /booklore-ui ([#&#8203;2805](https://github.com/booklore-app/BookLore/issues/2805)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump tar from 7.5.6 to 7.5.7 in /booklore-ui ([#&#8203;2534](https://github.com/booklore-app/BookLore/issues/2534)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump hono from 4.11.9 to 4.12.0 in /booklore-ui ([#&#8203;2815](https://github.com/booklore-app/BookLore/issues/2815)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump qs from 6.14.1 to 6.14.2 in /booklore-ui ([#&#8203;2722](https://github.com/booklore-app/BookLore/issues/2722)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump [@&#8203;modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) and [@&#8203;angular/cli](https://github.com/angular/cli) in /booklore-ui ([#&#8203;2612](https://github.com/booklore-app/BookLore/issues/2612)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump actions/setup-node from 4 to 6 ([#&#8203;2573](https://github.com/booklore-app/BookLore/issues/2573)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)

#### ⚙️ CI/CD

- ci: move Angular/Gradle builds to native CI steps to eliminate QEMU emulation ([#&#8203;2705](https://github.com/booklore-app/BookLore/issues/2705)) by [@&#8203;acx10](https://github.com/acx10)
- chore: add performance label to release drafter categories ([#&#8203;2754](https://github.com/booklore-app/BookLore/issues/2754)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.0.0`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.0.0`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v1.18.5...v2.0.0>

#### 📸 Screenshots

<img width="750" alt="Book browser with audiobook library and cascading sidebar filters" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/book-browser-audiobooks-library.png" />
<img width="750" alt="Book detail page with multi-format support and alternative formats" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/book-detail-multi-format.png" />
<img width="300" alt="Audiobook player with streaming playback" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/audiobook-player.png" />
<img width="300" alt="Ebook reader" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/ebook-reader.png" />
<img width="750" alt="CBX comic reader with fullscreen, slideshow, RTL, and long strip mode" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/cbx-comic-reader.png" />
<img width="750" alt="Annotation notebook with highlights, notes, and bookmarks" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/annotation-notebook.png" />
<img width="750" alt="Author browser with Audnexus metadata" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/author-browser.png" />
<img width="750" alt="Series browser with search, filter, and sort" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/series-browser.png" />
<img width="500" alt="Reading Clock statistics chart" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-clock-stats.png" />
<img width="750" alt="Reading Survival Curve and Book Length Sweet Spot charts" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-survival-book-length-charts.png" />
<img width="750" alt="Reading Completion Race chart" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-completion-race.png" />

</details>

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

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

[Compare Source](https://github.com/booklore-app/booklore/compare/v2.0.0...v2.0.1)

#### 🌟 What's New in v2.0.1

#### 🐛 Bug Fixes

- Fix max upload size description to include all file formats ([#&#8203;2894](https://github.com/booklore-app/booklore/issues/2894)) by [@&#8203;acx10](https://github.com/acx10)
- Fix magic shelf physical book filter and polish UI ([#&#8203;2888](https://github.com/booklore-app/booklore/issues/2888)) by [@&#8203;acx10](https://github.com/acx10)
- Fix metadata settings not saving due to null deserialization error ([#&#8203;2886](https://github.com/booklore-app/booklore/issues/2886)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Kobo download/image URLs using wrong port behind reverse proxy ([#&#8203;2875](https://github.com/booklore-app/booklore/issues/2875)) by [@&#8203;acx10](https://github.com/acx10)
- Fix app crash on startup when /bookdrop volume is not mounted ([#&#8203;2873](https://github.com/booklore-app/booklore/issues/2873)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- Hide sidecar tab for physical books ([#&#8203;2887](https://github.com/booklore-app/booklore/issues/2887)) by [@&#8203;acx10](https://github.com/acx10)
- Translations update from Hosted Weblate ([#&#8203;2866](https://github.com/booklore-app/booklore/issues/2866)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.0.1`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.0.1`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v2.0.0...v2.0.1>

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

[Compare Source](https://github.com/booklore-app/booklore/compare/v1.18.5...v2.0.0)

#### 🌟 What's New in v2.0.0

This is the biggest Booklore release yet, with nearly 200 commits touching every part of the application:

- **Multi-Format Book Support & Audiobooks**: Books can now have multiple file formats (EPUB, PDF, CBZ, etc.) attached to a single entry. Full audiobook support is here with a dedicated player, streaming playback, narrator filtering, and session tracking.
- **Duplicate Book Detection & Merge**: Booklore can now detect duplicate books across your library. A new merge tool lets you combine duplicates, choose which formats to keep, and optionally move files, all without losing metadata.
- **Author Metadata via Audnexus**: Author pages now pull rich metadata (bios, images) from the Audnexus API, with a dedicated author browser, detail page, and editor.
- **Series Browser**: A brand new series browser page with search, filtering, sorting, and resizable cards for browsing your series collection at a glance.
- **Annotation Notebook**: All your highlights, notes, and bookmarks are now collected in a searchable, paginated notebook view.
- **Audit Log System**: Admins can now see a full audit trail of significant actions (user management, library changes, metadata operations) with geo flags, relative timestamps, and filterable logs.
- **Bidirectional Kobo Sync**: Full two-way reading progress sync with Kobo devices, plus shelves and magic shelves now sync as Kobo tags.
- **Cascading Sidebar Filters**: Filters now cascade, so selecting an author narrows available series, genres, etc. You can also customize which filters are visible.
- **10+ New Statistics Charts**: A massive expansion of the stats page with reading heatmaps, distribution charts, completion races, and more.
- **PDF Annotations & Reader Upgrades**: The PDF reader now supports annotations, dark/light mode toggle, and Range streaming. The ebook reader gains fullscreen, keyboard shortcuts, and go-to-percentage. The CBX reader adds fullscreen, slideshow, RTL, and long strip mode.
- **Sidecar Metadata Files**: Booklore can now read and write `.metadata.json` sidecar files alongside your books for portable metadata storage.
- **Extended Comic Metadata**: Full ComicInfo.xml support with a dedicated comic metadata picker and write-back to CBZ/PDF files.
- **Internationalization via Weblate**: Booklore is now fully translatable with Transloco and Weblate integration. Ships with 15+ languages including Hungarian, Slovenian, Croatian, Swedish, Chinese, and Japanese.
- **Java 25, Spring Boot 4, Gradle 9**: The entire backend has been upgraded to the latest stack. Nginx has been removed; Angular is now served directly from Spring Boot.
- **Login Rate Limiting**: Brute-force protection on the login endpoint. Plus new age and content rating support for restricted libraries.
- **Performance**: Book list API optimized with ETag caching, delta sync, and IndexedDB. Project Lilliput compact object headers reduce heap usage.

#### 🚀 New Features

- Introduce multi-format book support, including audiobooks ([#&#8203;2486](https://github.com/booklore-app/booklore/issues/2486)) by [@&#8203;acx10](https://github.com/acx10)
- Add duplicate book detection/merge and fix format-related data loss ([#&#8203;2820](https://github.com/booklore-app/booklore/issues/2820)) by [@&#8203;acx10](https://github.com/acx10)
- Add author metadata via Audnexus with browser, detail, and editor pages ([#&#8203;2843](https://github.com/booklore-app/booklore/issues/2843)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add series browser page ([#&#8203;2771](https://github.com/booklore-app/booklore/issues/2771)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add annotation notebook with server-side pagination ([#&#8203;2736](https://github.com/booklore-app/booklore/issues/2736)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add audit log system for tracking admin-significant actions ([#&#8203;2759](https://github.com/booklore-app/booklore/issues/2759)) by [@&#8203;acx10](https://github.com/acx10)
- Add bidirectional Kobo reading progress sync ([#&#8203;2791](https://github.com/booklore-app/booklore/issues/2791)) by [@&#8203;acx10](https://github.com/acx10)
- feat(filters): implement cascading sidebar filters ([#&#8203;2616](https://github.com/booklore-app/booklore/issues/2616)) by [@&#8203;acx10](https://github.com/acx10)
- feat(cbx-reader): add fullscreen, slideshow, RTL, long strip mode and keyboard shortcuts ([#&#8203;2632](https://github.com/booklore-app/booklore/issues/2632)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sidecar): add sidecar JSON metadata file support ([#&#8203;2657](https://github.com/booklore-app/booklore/issues/2657)) by [@&#8203;acx10](https://github.com/acx10)
- feat(comic-metadata): add extended comic metadata support ([#&#8203;2654](https://github.com/booklore-app/booklore/issues/2654)) by [@&#8203;acx10](https://github.com/acx10)
- feat(i18n): add Transloco translation framework with EN/ES and 7 language scaffolds ([#&#8203;2681](https://github.com/booklore-app/booklore/issues/2681)) by [@&#8203;acx10](https://github.com/acx10)
- feat(api, build): Upgrade to Java 25, Gradle 9, and Spring Boot 4, Jackson 3 ([#&#8203;2597](https://github.com/booklore-app/booklore/issues/2597)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Remove nginx and serve Angular directly from Spring Boot ([#&#8203;2662](https://github.com/booklore-app/booklore/issues/2662)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add login rate limiting to prevent brute-force attacks ([#&#8203;2761](https://github.com/booklore-app/booklore/issues/2761)) by [@&#8203;acx10](https://github.com/acx10)
- feat(content-restrictions): add age rating and content rating support ([#&#8203;2619](https://github.com/booklore-app/booklore/issues/2619)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sorting): add multi-field sorting support ([#&#8203;2628](https://github.com/booklore-app/booklore/issues/2628)) by [@&#8203;acx10](https://github.com/acx10)
- feat(metadata): add custom metadata write to file support for moods, tags, ratings, and external IDs in PDF, and CBZ ([#&#8203;2552](https://github.com/booklore-app/booklore/issues/2552)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(metadata) Save basic metadata to EPUB file - Bonus use Calibre Custom Columns for importing metadata. ([#&#8203;1879](https://github.com/booklore-app/booklore/issues/1879)) by [@&#8203;jadehawk](https://github.com/jadehawk)
- feat: add grouped field dropdown and composite fields to magic shelf ([#&#8203;2750](https://github.com/booklore-app/booklore/issues/2750)) by [@&#8203;acx10](https://github.com/acx10)
- feat(filters): add customizable visible filters setting ([#&#8203;2625](https://github.com/booklore-app/booklore/issues/2625)) by [@&#8203;acx10](https://github.com/acx10)
- Add 10 advanced stats charts ([#&#8203;2850](https://github.com/booklore-app/booklore/issues/2850)) by [@&#8203;acx10](https://github.com/acx10)
- feat(stats): add 5 new user statistics charts ([#&#8203;2703](https://github.com/booklore-app/booklore/issues/2703)) by [@&#8203;acx10](https://github.com/acx10)
- feat(i18n): add Weblate integration and auth translations ([#&#8203;2727](https://github.com/booklore-app/booklore/issues/2727)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add else clause and value modifiers to file naming patterns ([#&#8203;2724](https://github.com/booklore-app/booklore/issues/2724)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add button to fetch metadata from book file ([#&#8203;2739](https://github.com/booklore-app/booklore/issues/2739)) by [@&#8203;acx10](https://github.com/acx10)
- feat(google-books): add optional API key configuration ([#&#8203;2629](https://github.com/booklore-app/booklore/issues/2629)) by [@&#8203;acx10](https://github.com/acx10)

####  Enhancements

- feat(reader): add PDF annotations, Range streaming, and optimized chunk loading ([#&#8203;2701](https://github.com/booklore-app/booklore/issues/2701)) by [@&#8203;acx10](https://github.com/acx10)
- feat(reader): add fullscreen, keyboard shortcuts, search cancel, and go-to-percentage ([#&#8203;2698](https://github.com/booklore-app/booklore/issues/2698)) by [@&#8203;acx10](https://github.com/acx10)
- feat(reader): add dark/light mode toggle and improved close button to PDF reader ([#&#8203;2699](https://github.com/booklore-app/booklore/issues/2699)) by [@&#8203;acx10](https://github.com/acx10)
- feat(kobo-sync): add user scoped 2 way kobo sync ([#&#8203;2452](https://github.com/booklore-app/booklore/issues/2452)) by [@&#8203;b3nk3](https://github.com/b3nk3)
- feat(kobo-sync): Sync Shelves and Magic Shelves to Kobo Tags ([#&#8203;2236](https://github.com/booklore-app/booklore/issues/2236)) by [@&#8203;xcashy](https://github.com/xcashy)
- Redesign series page layout and book list tab ([#&#8203;2847](https://github.com/booklore-app/booklore/issues/2847)) by [@&#8203;acx10](https://github.com/acx10)
- feat(sort): replace compound sort options with atomic fields and multi-sort support ([#&#8203;2686](https://github.com/booklore-app/booklore/issues/2686)) by [@&#8203;acx10](https://github.com/acx10)
- Add moveFiles option to attach/merge and per-book delete in duplicate merger ([#&#8203;2833](https://github.com/booklore-app/booklore/issues/2833)) by [@&#8203;acx10](https://github.com/acx10)
- feat: enhance audit logs with geo flags, relative time, and UX improvements ([#&#8203;2760](https://github.com/booklore-app/booklore/issues/2760)) by [@&#8203;acx10](https://github.com/acx10)
- feat(bookdrop): add ability to poll the bookdrop folder ([#&#8203;2768](https://github.com/booklore-app/booklore/issues/2768)) by [@&#8203;arjunsrinivasan1997](https://github.com/arjunsrinivasan1997)
- feat: add metadata presence filter to magic shelf ([#&#8203;2757](https://github.com/booklore-app/booklore/issues/2757)) by [@&#8203;acx10](https://github.com/acx10)
- feat(upload): add upload progress tracking with progress bar and stats ([#&#8203;2640](https://github.com/booklore-app/booklore/issues/2640)) by [@&#8203;acx10](https://github.com/acx10)
- feat(email): add format selection to email book dialog ([#&#8203;2650](https://github.com/booklore-app/booklore/issues/2650)) by [@&#8203;acx10](https://github.com/acx10)
- feat(pwa): Enable fullscreen mode for Android immersive reading ([#&#8203;2649](https://github.com/booklore-app/booklore/issues/2649)) by [@&#8203;alondero](https://github.com/alondero)
- Add Hungarian and Slovenian language support ([#&#8203;2846](https://github.com/booklore-app/booklore/issues/2846)) by [@&#8203;acx10](https://github.com/acx10)
- fix(library-service): prevent concurrent library scans with a tracking set ([#&#8203;2637](https://github.com/booklore-app/booklore/issues/2637)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat: add configurable sidebar width setting ([#&#8203;2749](https://github.com/booklore-app/booklore/issues/2749)) by [@&#8203;acx10](https://github.com/acx10)
- refactor(download): simplify file download to use browser native handling ([#&#8203;2639](https://github.com/booklore-app/booklore/issues/2639)) by [@&#8203;acx10](https://github.com/acx10)

#### 🎨 UI Tweaks

- Add visual polish to book card component ([#&#8203;2788](https://github.com/booklore-app/booklore/issues/2788)) by [@&#8203;acx10](https://github.com/acx10)
- refactor: centralize access-denied card styles into shared mixin ([#&#8203;2515](https://github.com/booklore-app/booklore/issues/2515)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes

- fix(auth): resolve DST-related login failure for refresh tokens ([#&#8203;2624](https://github.com/booklore-app/booklore/issues/2624)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Kobo sync HeadersTooLargeException for large libraries ([#&#8203;2809](https://github.com/booklore-app/booklore/issues/2809)) by [@&#8203;acx10](https://github.com/acx10)
- fix(metadata-refresh): Correct metadata update priorities and preserve disabled fields during 'replace all' ([#&#8203;2503](https://github.com/booklore-app/booklore/issues/2503)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-parsers): improve ISBN search logic and fallback strategies for metadata fetching ([#&#8203;2502](https://github.com/booklore-app/booklore/issues/2502)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-update): ensure per-book transaction isolation in bulk updates to prevent race conditions ([#&#8203;2536](https://github.com/booklore-app/booklore/issues/2536)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-refresh): fix filter book shelves by authenticated user logs out the user. ([#&#8203;2481](https://github.com/booklore-app/booklore/issues/2481)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix null collection errors for PDFs, audiobooks, and physical books ([#&#8203;2817](https://github.com/booklore-app/booklore/issues/2817)) by [@&#8203;acx10](https://github.com/acx10)
- fix(library-processing): re-fetch library entity after clearing entity manager during rescan ([#&#8203;2507](https://github.com/booklore-app/booklore/issues/2507)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(file-move): ensure file moves are rolled back if database update fails ([#&#8203;2588](https://github.com/booklore-app/booklore/issues/2588)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(file-move): update empty directory cleanup to handle multiple library paths ([#&#8203;2634](https://github.com/booklore-app/booklore/issues/2634)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix CBR/CB7 to CBZ conversion losing track of file path ([#&#8203;2835](https://github.com/booklore-app/booklore/issues/2835)) by [@&#8203;acx10](https://github.com/acx10)
- fix(cbz-reader): CBZ reading regression and optimize ZIP parsing strategy ([#&#8203;2593](https://github.com/booklore-app/booklore/issues/2593)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix PDF reader not loading alternate format files ([#&#8203;2836](https://github.com/booklore-app/booklore/issues/2836)) by [@&#8203;acx10](https://github.com/acx10)
- fix(epub-cover-extract): improve cover image extraction with fallback handling ([#&#8203;2585](https://github.com/booklore-app/booklore/issues/2585)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub-metadata): enhance cover extraction with heuristic fallbacks for manifest and ZIP entries ([#&#8203;2636](https://github.com/booklore-app/booklore/issues/2636)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(book-rule-evaluator): fix file type handling and add mapping for specific formats to fix magic shelve based on filetype ([#&#8203;2480](https://github.com/booklore-app/booklore/issues/2480)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix magic shelf rule evaluation for numeric comparisons ([#&#8203;2795](https://github.com/booklore-app/booklore/issues/2795)) by [@&#8203;acx10](https://github.com/acx10)
- Fix read status NULL progress handling in rule evaluator ([#&#8203;2821](https://github.com/booklore-app/booklore/issues/2821)) by [@&#8203;acx10](https://github.com/acx10)
- Fix bookdrop race condition processing files before fully written ([#&#8203;2785](https://github.com/booklore-app/booklore/issues/2785)) by [@&#8203;acx10](https://github.com/acx10)
- fix(bookdrop): handle file modifications in Bookdrop event handler ([#&#8203;2559](https://github.com/booklore-app/booklore/issues/2559)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(hardcover-sync): Don't send repeated read status to Hardcover.app ([#&#8203;2609](https://github.com/booklore-app/booklore/issues/2609)) by [@&#8203;PhasecoreX](https://github.com/PhasecoreX)
- fix(api): Select correct Hardcover.app ISBN from lookup results ([#&#8203;2530](https://github.com/booklore-app/booklore/issues/2530)) by [@&#8203;PhasecoreX](https://github.com/PhasecoreX)
- fix(ui): fix memory leaks and cascading API calls in metadata editor ([#&#8203;2716](https://github.com/booklore-app/booklore/issues/2716)) by [@&#8203;acx10](https://github.com/acx10)
- fix: replace Quill editor with native HTML rendering for book descriptions ([#&#8203;2733](https://github.com/booklore-app/booklore/issues/2733)) by [@&#8203;acx10](https://github.com/acx10)
- Fix reading stats queries not accounting for timezone ([#&#8203;2844](https://github.com/booklore-app/booklore/issues/2844)) by [@&#8203;acx10](https://github.com/acx10)
- Fix reading session timeline long sessions, tooltip perf, and week mismatch ([#&#8203;2848](https://github.com/booklore-app/booklore/issues/2848)) by [@&#8203;acx10](https://github.com/acx10)
- fix(reading-stats,ui): update heatmap to use local time formatting… ([#&#8203;2587](https://github.com/booklore-app/booklore/issues/2587)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(select-all): "Mark All" bug and add "Remove from all shelves" bulk action across components ([#&#8203;2562](https://github.com/booklore-app/booklore/issues/2562)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(opds): Fix OPDS CBR mime type reporting and strict Archive detection ([#&#8203;2592](https://github.com/booklore-app/booklore/issues/2592)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix OPDS shelf filter cartesian product ([#&#8203;2837](https://github.com/booklore-app/booklore/issues/2837)) by [@&#8203;acx10](https://github.com/acx10)
- fix(comic-metadata): fix series grouping bug with external ComicInfo.xml metadata ([#&#8203;2385](https://github.com/booklore-app/booklore/issues/2385)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix additional file uploader bugs and improve metadata viewer ([#&#8203;2816](https://github.com/booklore-app/booklore/issues/2816)) by [@&#8203;acx10](https://github.com/acx10)
- Fix PWA offline fallback blocking localhost access when internet is disconnected ([#&#8203;2784](https://github.com/booklore-app/booklore/issues/2784)) by [@&#8203;acx10](https://github.com/acx10)
- fix(audiobook-reader): use preload=none for immediate streaming playback ([#&#8203;2518](https://github.com/booklore-app/booklore/issues/2518)) by [@&#8203;acx10](https://github.com/acx10)
- fix: reset audiobook progress and clear cached progress in UI ([#&#8203;2711](https://github.com/booklore-app/booklore/issues/2711)) by [@&#8203;acx10](https://github.com/acx10)
- Fix cbx reader prev/next book stacking on close ([#&#8203;2858](https://github.com/booklore-app/booklore/issues/2858)) by [@&#8203;acx10](https://github.com/acx10)
- Fix ebook reader header not hiding on mobile tap ([#&#8203;2857](https://github.com/booklore-app/booklore/issues/2857)) by [@&#8203;acx10](https://github.com/acx10)
- fix(reader): enable text copy in ebook reader ([#&#8203;2702](https://github.com/booklore-app/booklore/issues/2702)) by [@&#8203;acx10](https://github.com/acx10)
- Fix CBZ reader scroll position reset in infinite scroll mode ([#&#8203;2781](https://github.com/booklore-app/booklore/issues/2781)) by [@&#8203;acx10](https://github.com/acx10)
- Fix column gap +/- buttons in eBook reader default settings ([#&#8203;2780](https://github.com/booklore-app/booklore/issues/2780)) by [@&#8203;acx10](https://github.com/acx10)
- Fix email provider creation failing due to null shared field ([#&#8203;2794](https://github.com/booklore-app/booklore/issues/2794)) by [@&#8203;acx10](https://github.com/acx10)
- Fix audit logs pagination bug and add URL query param sync ([#&#8203;2787](https://github.com/booklore-app/booklore/issues/2787)) by [@&#8203;acx10](https://github.com/acx10)
- Fix audit log description overflow for bulk metadata refresh ([#&#8203;2783](https://github.com/booklore-app/booklore/issues/2783)) by [@&#8203;acx10](https://github.com/acx10)
- Fix multiple author card menus opening simultaneously ([#&#8203;2852](https://github.com/booklore-app/booklore/issues/2852)) by [@&#8203;acx10](https://github.com/acx10)
- Fix Goodreads label mappings and format config ([#&#8203;2779](https://github.com/booklore-app/booklore/issues/2779)) by [@&#8203;AlfredSimpson](https://github.com/AlfredSimpson)
- fix(ui): encode filter values in query params to handle commas in names ([#&#8203;2717](https://github.com/booklore-app/booklore/issues/2717)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): prevent footer submenu from rendering off screen ([#&#8203;2714](https://github.com/booklore-app/booklore/issues/2714)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): inline mobile charts submenu to prevent layout overflow ([#&#8203;2713](https://github.com/booklore-app/booklore/issues/2713)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): correctly format lubimyczytac external rating link ([#&#8203;2491](https://github.com/booklore-app/booklore/issues/2491)) by [@&#8203;sebhewelt](https://github.com/sebhewelt)
- Fix iconDisplay binding syntax in metadata viewer ([#&#8203;2772](https://github.com/booklore-app/booklore/issues/2772)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- Fix mobile toolbar overlapping on small screens ([#&#8203;2856](https://github.com/booklore-app/booklore/issues/2856)) by [@&#8203;acx10](https://github.com/acx10)
- Fix book browser header title overflow on mobile ([#&#8203;2808](https://github.com/booklore-app/booklore/issues/2808)) by [@&#8203;acx10](https://github.com/acx10)
- fix(book-browser): resolve footer menu not hiding after navigation back ([#&#8203;2626](https://github.com/booklore-app/booklore/issues/2626)) by [@&#8203;acx10](https://github.com/acx10)
- fix: align frontend Page interfaces with VIA\_DTO serialization format ([#&#8203;2751](https://github.com/booklore-app/booklore/issues/2751)) by [@&#8203;acx10](https://github.com/acx10)
- fix: show provider icons in metadata viewer when only ID is present ([#&#8203;2734](https://github.com/booklore-app/booklore/issues/2734)) by [@&#8203;acx10](https://github.com/acx10)
- fix: hide show-more button when description fits without truncation ([#&#8203;2766](https://github.com/booklore-app/booklore/issues/2766)) by [@&#8203;acx10](https://github.com/acx10)
- fix: use audiobook thumbnail for audiobook entries in notebook ([#&#8203;2763](https://github.com/booklore-app/booklore/issues/2763)) by [@&#8203;acx10](https://github.com/acx10)
- fix: show session numbers in book ([#&#8203;2696](https://github.com/booklore-app/booklore/issues/2696)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- fix(settings): use boxed Integer for ScrollerConfig.maxItems to allow null ([#&#8203;2684](https://github.com/booklore-app/booklore/issues/2684)) by [@&#8203;acx10](https://github.com/acx10)
- fix(series-multi-select): Fix transparency in series multi select pop-up ([#&#8203;2555](https://github.com/booklore-app/booklore/issues/2555)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- Fix: Filter text overwrites on long options ([#&#8203;2540](https://github.com/booklore-app/booklore/issues/2540)) by [@&#8203;acx10](https://github.com/acx10)
- Fix: Lock icons do not stay with publisher and series name input fields ([#&#8203;2539](https://github.com/booklore-app/booklore/issues/2539)) by [@&#8203;acx10](https://github.com/acx10)
- fix(metadata): improve cover errors, reduce metadata fetch count, and hide attach option ([#&#8203;2690](https://github.com/booklore-app/booklore/issues/2690)) by [@&#8203;acx10](https://github.com/acx10)

####  Performance

- perf: optimize book list API with ETag, delta sync, and IndexedDB caching ([#&#8203;2753](https://github.com/booklore-app/booklore/issues/2753)) by [@&#8203;acx10](https://github.com/acx10)
- perf: enable compact object headers (Project Lilliput) ([#&#8203;2755](https://github.com/booklore-app/booklore/issues/2755)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- refactor: split BookService into BookFileService and BookMetadataManageService ([#&#8203;2758](https://github.com/booklore-app/booklore/issues/2758)) by [@&#8203;acx10](https://github.com/acx10)
- chore: fix memory leaks, add aria-labels, improve type safety and logging ([#&#8203;2764](https://github.com/booklore-app/booklore/issues/2764)) by [@&#8203;acx10](https://github.com/acx10)
- chore: add caching, validation, lazy routes, refresh rate limiting, JaCoCo, and cleanup ([#&#8203;2762](https://github.com/booklore-app/booklore/issues/2762)) by [@&#8203;acx10](https://github.com/acx10)
- perf: strip unused fields from book list API response ([#&#8203;2741](https://github.com/booklore-app/booklore/issues/2741)) by [@&#8203;acx10](https://github.com/acx10)
- perf(epub): Replace linear manifest scans with HashMaps in EPUB reader ([#&#8203;2598](https://github.com/booklore-app/booklore/issues/2598)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- feat(metadata): return full metadata from parsers instead of previews ([#&#8203;2689](https://github.com/booklore-app/booklore/issues/2689)) by [@&#8203;acx10](https://github.com/acx10)
- feat: comic metadata picker, lazy-load providers, and UI improvements ([#&#8203;2679](https://github.com/booklore-app/booklore/issues/2679)) by [@&#8203;acx10](https://github.com/acx10)
- Add complete translations for all supported languages ([#&#8203;2831](https://github.com/booklore-app/booklore/issues/2831)) by [@&#8203;acx10](https://github.com/acx10)
- Add Hungarian and Slovenian language support ([#&#8203;2846](https://github.com/booklore-app/booklore/issues/2846)) by [@&#8203;acx10](https://github.com/acx10)
- Add Croatian and Swedish translations for login page ([#&#8203;2786](https://github.com/booklore-app/booklore/issues/2786)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add i18n translations for stats, pdf reader, magic shelf, and remaining components (en/es) ([#&#8203;2742](https://github.com/booklore-app/booklore/issues/2742)) by [@&#8203;acx10](https://github.com/acx10)
- feat: add i18n translations for book components, services, and readers (en/es) ([#&#8203;2738](https://github.com/booklore-app/booklore/issues/2738)) by [@&#8203;acx10](https://github.com/acx10)
- fix(i18n): dynamic sidebar translations and UI font normalization ([#&#8203;2683](https://github.com/booklore-app/booklore/issues/2683)) by [@&#8203;acx10](https://github.com/acx10)
- feat: disable PDF printing for users without download permission ([#&#8203;2737](https://github.com/booklore-app/booklore/issues/2737)) by [@&#8203;acx10](https://github.com/acx10)
- feat(ui): add file name column to table view and include filename in search ([#&#8203;2712](https://github.com/booklore-app/booklore/issues/2712)) by [@&#8203;acx10](https://github.com/acx10)
- feat(ui): provide hyperlinks for books as book cards in grid view ([#&#8203;2500](https://github.com/booklore-app/booklore/issues/2500)) by [@&#8203;berb](https://github.com/berb)
- feat(ui): Add sort by filePath ([#&#8203;1180](https://github.com/booklore-app/booklore/issues/1180) and [#&#8203;2364](https://github.com/booklore-app/booklore/issues/2364)) ([#&#8203;2512](https://github.com/booklore-app/booklore/issues/2512)) by [@&#8203;chiguirepower](https://github.com/chiguirepower)
- feat(icons): Made icons for libraries and shelves optional with no default icons. ([#&#8203;2599](https://github.com/booklore-app/booklore/issues/2599)) by [@&#8203;arthurgiroux](https://github.com/arthurgiroux)
- fix(comicvine): add fallback to issue detail endpoint for missing creator credits ([#&#8203;2694](https://github.com/booklore-app/booklore/issues/2694)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(epub-metadata): enhance cover extraction with heuristic fallbacks for manifest and ZIP entries ([#&#8203;2636](https://github.com/booklore-app/booklore/issues/2636)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(metadata-match): Fix metadata quality calculation to properly handle locked fields ([#&#8203;2513](https://github.com/booklore-app/booklore/issues/2513)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(ui): reload shelves when enabling Kobo sync ([#&#8203;2715](https://github.com/booklore-app/booklore/issues/2715)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui):  standardize button labels and styles across components ([#&#8203;2560](https://github.com/booklore-app/booklore/issues/2560)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- chore: redesign README for cleaner layout and visual polish ([#&#8203;2728](https://github.com/booklore-app/booklore/issues/2728)) by [@&#8203;acx10](https://github.com/acx10)
- fix: make README logo visible in GitHub light mode ([#&#8203;2756](https://github.com/booklore-app/booklore/issues/2756)) by [@&#8203;acx10](https://github.com/acx10)
- chore: clean up PR template and contributing guide ([#&#8203;2660](https://github.com/booklore-app/booklore/issues/2660)) by [@&#8203;acx10](https://github.com/acx10)
- fix(file naming): add leading zero to series index ([#&#8203;2642](https://github.com/booklore-app/booklore/issues/2642)) by [@&#8203;WorldTeacher](https://github.com/WorldTeacher)
- Update viewport meta tag to prevent auto-zoom on iOS when entering in… ([#&#8203;2620](https://github.com/booklore-app/booklore/issues/2620)) by [@&#8203;jmswangit](https://github.com/jmswangit)
- test(API): add missing tests for BookMapperV2 ([#&#8203;2495](https://github.com/booklore-app/booklore/issues/2495)) by [@&#8203;piffio](https://github.com/piffio)
- fix(audiobook-reader): use preload=none with explicit load() for faster streaming ([#&#8203;2520](https://github.com/booklore-app/booklore/issues/2520)) by [@&#8203;acx10](https://github.com/acx10)
- fix(ui): clean cached properties ([#&#8203;2499](https://github.com/booklore-app/booklore/issues/2499)) by [@&#8203;piffio](https://github.com/piffio)
- fix(additional-file-uploader): add file size validation with UI feedback ([#&#8203;2516](https://github.com/booklore-app/booklore/issues/2516)) by [@&#8203;acx10](https://github.com/acx10)
- fix(os\_x-conversion): ignore \_\_MACOSX directory for conversions ([#&#8203;2479](https://github.com/booklore-app/booklore/issues/2479)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)
- fix(series-page): add missing overlay preference service to book card ([#&#8203;2466](https://github.com/booklore-app/booklore/issues/2466)) by [@&#8203;xcashy](https://github.com/xcashy)
- fix(docker): add build and gradle directories to volumes in docker compose ([#&#8203;2459](https://github.com/booklore-app/booklore/issues/2459)) by [@&#8203;balazs-szucs](https://github.com/balazs-szucs)

#### 📦 Dependencies

- chore(deps): bump org.springframework.boot from 4.0.2 to 4.0.3 in /booklore-api in the gradle-dependencies group ([#&#8203;2813](https://github.com/booklore-app/booklore/issues/2813)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 15 updates ([#&#8203;2814](https://github.com/booklore-app/booklore/issues/2814)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group across 1 directory with 18 updates ([#&#8203;2687](https://github.com/booklore-app/booklore/issues/2687)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 13 updates ([#&#8203;2721](https://github.com/booklore-app/booklore/issues/2721)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the npm-dependencies group in /booklore-ui with 20 updates ([#&#8203;2542](https://github.com/booklore-app/booklore/issues/2542)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the gradle-dependencies group across 1 directory with 7 updates ([#&#8203;2659](https://github.com/booklore-app/booklore/issues/2659)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump the gradle-dependencies group in /booklore-api with 2 updates ([#&#8203;2720](https://github.com/booklore-app/booklore/issues/2720)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump tar from 7.5.7 to 7.5.9 in /booklore-ui ([#&#8203;2805](https://github.com/booklore-app/booklore/issues/2805)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump tar from 7.5.6 to 7.5.7 in /booklore-ui ([#&#8203;2534](https://github.com/booklore-app/booklore/issues/2534)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump hono from 4.11.9 to 4.12.0 in /booklore-ui ([#&#8203;2815](https://github.com/booklore-app/booklore/issues/2815)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump qs from 6.14.1 to 6.14.2 in /booklore-ui ([#&#8203;2722](https://github.com/booklore-app/booklore/issues/2722)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump [@&#8203;modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) and [@&#8203;angular/cli](https://github.com/angular/cli) in /booklore-ui ([#&#8203;2612](https://github.com/booklore-app/booklore/issues/2612)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): bump actions/setup-node from 4 to 6 ([#&#8203;2573](https://github.com/booklore-app/booklore/issues/2573)) by @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)

#### ⚙️ CI/CD

- ci: move Angular/Gradle builds to native CI steps to eliminate QEMU emulation ([#&#8203;2705](https://github.com/booklore-app/booklore/issues/2705)) by [@&#8203;acx10](https://github.com/acx10)
- chore: add performance label to release drafter categories ([#&#8203;2754](https://github.com/booklore-app/booklore/issues/2754)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.0.0`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.0.0`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v1.18.5...v2.0.0>

#### 📸 Screenshots

<img width="750" alt="Book browser with audiobook library and cascading sidebar filters" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/book-browser-audiobooks-library.png" />
<img width="750" alt="Book detail page with multi-format support and alternative formats" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/book-detail-multi-format.png" />
<img width="300" alt="Audiobook player with streaming playback" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/audiobook-player.png" />
<img width="300" alt="Ebook reader" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/ebook-reader.png" />
<img width="750" alt="CBX comic reader with fullscreen, slideshow, RTL, and long strip mode" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/cbx-comic-reader.png" />
<img width="750" alt="Annotation notebook with highlights, notes, and bookmarks" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/annotation-notebook.png" />
<img width="750" alt="Author browser with Audnexus metadata" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/author-browser.png" />
<img width="750" alt="Series browser with search, filter, and sort" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/series-browser.png" />
<img width="500" alt="Reading Clock statistics chart" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-clock-stats.png" />
<img width="750" alt="Reading Survival Curve and Book Length Sweet Spot charts" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-survival-book-length-charts.png" />
<img width="750" alt="Reading Completion Race chart" src="https://github.com/booklore-app/booklore/releases/download/v2.0.0/reading-completion-race.png" />

</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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS44IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuOCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4176
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 20:46:25 +00:00
c55adf2c53 chore(deps): update dependency element-hq/element-web to v1.12.11 (#4213)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 37s
renovate / renovate (push) Successful in 3m2s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [element-hq/element-web](https://github.com/element-hq/element-web) | patch | `v1.12.10` → `v1.12.11` |

---

### Release Notes

<details>
<summary>element-hq/element-web (element-hq/element-web)</summary>

### [`v1.12.11`](https://github.com/element-hq/element-web/releases/tag/v1.12.11)

[Compare Source](https://github.com/element-hq/element-web/compare/v1.12.10...v1.12.11)

#### 🦖 Deprecations

- Remove UIFeature.BulkUnverifiedSessionsReminder setting ([#&#8203;31943](https://github.com/element-hq/element-web/pull/31943)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Remove unused function to auto-rageshake when key backup is not set up ([#&#8203;31942](https://github.com/element-hq/element-web/pull/31942)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).

####  Features

- Room list: update the visuals in order to have better contrast ([#&#8203;32421](https://github.com/element-hq/element-web/pull/32421)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Set history visibility to "invited" for DMs and new non-public rooms when creating a room ([#&#8203;31974](https://github.com/element-hq/element-web/pull/31974)). Contributed by [@&#8203;langleyd](https://github.com/langleyd).
- Remove server acl status/summaries from timeline  ([#&#8203;32461](https://github.com/element-hq/element-web/pull/32461)). Contributed by [@&#8203;langleyd](https://github.com/langleyd).
- Update `globalBlacklistUnverifiedDevices` on setting change ([#&#8203;31983](https://github.com/element-hq/element-web/pull/31983)). Contributed by [@&#8203;kaylendog](https://github.com/kaylendog).
- Add badge for history visibiltity to room info panel ([#&#8203;31927](https://github.com/element-hq/element-web/pull/31927)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).

#### 🐛 Bug Fixes

- Default useOnlyCurrentProfiles to true ([#&#8203;32524](https://github.com/element-hq/element-web/pull/32524)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Keep custom theme active after reload ([#&#8203;32506](https://github.com/element-hq/element-web/pull/32506)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Update font format from 'ttf' to 'truetype' ([#&#8203;32493](https://github.com/element-hq/element-web/pull/32493)). Contributed by [@&#8203;all-yall](https://github.com/all-yall).
- Fix videos on Firefox ([#&#8203;32497](https://github.com/element-hq/element-web/pull/32497)). Contributed by [@&#8203;p1gp1g](https://github.com/p1gp1g).
- Use a dedicated FAQ/help entry for key storage. ([#&#8203;32480](https://github.com/element-hq/element-web/pull/32480)). Contributed by [@&#8203;mxandreas](https://github.com/mxandreas).
- Avoid showing two chat timelines side by side after a call ([#&#8203;32484](https://github.com/element-hq/element-web/pull/32484)). Contributed by [@&#8203;robintown](https://github.com/robintown).
- Update screenshot for reactive display name disambiguation ([#&#8203;32431](https://github.com/element-hq/element-web/pull/32431)). Contributed by [@&#8203;aditya-cherukuru](https://github.com/aditya-cherukuru).
- Fix Status Bar being unreadable when the user overrides the default OS light/dark theme. ([#&#8203;32442](https://github.com/element-hq/element-web/pull/32442)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- fix: Remove state\_key: null from Seshat search results ([#&#8203;31524](https://github.com/element-hq/element-web/pull/31524)). Contributed by [@&#8203;shinaoka](https://github.com/shinaoka).
- Fix user pill deserialisation ([#&#8203;31947](https://github.com/element-hq/element-web/pull/31947)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4213
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 20:38:00 +00:00
9ad256db81 chore(deps): update vectorim/element-web docker tag to v1.12.11 (#4209)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 45s
renovate / renovate (push) Successful in 3m9s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [vectorim/element-web](https://github.com/element-hq/element-web) | patch | `v1.12.10` → `v1.12.11` |

---

### Release Notes

<details>
<summary>element-hq/element-web (vectorim/element-web)</summary>

### [`v1.12.11`](https://github.com/element-hq/element-web/releases/tag/v1.12.11)

[Compare Source](https://github.com/element-hq/element-web/compare/v1.12.10...v1.12.11)

#### 🦖 Deprecations

- Remove UIFeature.BulkUnverifiedSessionsReminder setting ([#&#8203;31943](https://github.com/element-hq/element-web/pull/31943)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Remove unused function to auto-rageshake when key backup is not set up ([#&#8203;31942](https://github.com/element-hq/element-web/pull/31942)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).

####  Features

- Room list: update the visuals in order to have better contrast ([#&#8203;32421](https://github.com/element-hq/element-web/pull/32421)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Set history visibility to "invited" for DMs and new non-public rooms when creating a room ([#&#8203;31974](https://github.com/element-hq/element-web/pull/31974)). Contributed by [@&#8203;langleyd](https://github.com/langleyd).
- Remove server acl status/summaries from timeline  ([#&#8203;32461](https://github.com/element-hq/element-web/pull/32461)). Contributed by [@&#8203;langleyd](https://github.com/langleyd).
- Update `globalBlacklistUnverifiedDevices` on setting change ([#&#8203;31983](https://github.com/element-hq/element-web/pull/31983)). Contributed by [@&#8203;kaylendog](https://github.com/kaylendog).
- Add badge for history visibiltity to room info panel ([#&#8203;31927](https://github.com/element-hq/element-web/pull/31927)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).

#### 🐛 Bug Fixes

- Default useOnlyCurrentProfiles to true ([#&#8203;32524](https://github.com/element-hq/element-web/pull/32524)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Keep custom theme active after reload ([#&#8203;32506](https://github.com/element-hq/element-web/pull/32506)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Update font format from 'ttf' to 'truetype' ([#&#8203;32493](https://github.com/element-hq/element-web/pull/32493)). Contributed by [@&#8203;all-yall](https://github.com/all-yall).
- Fix videos on Firefox ([#&#8203;32497](https://github.com/element-hq/element-web/pull/32497)). Contributed by [@&#8203;p1gp1g](https://github.com/p1gp1g).
- Use a dedicated FAQ/help entry for key storage. ([#&#8203;32480](https://github.com/element-hq/element-web/pull/32480)). Contributed by [@&#8203;mxandreas](https://github.com/mxandreas).
- Avoid showing two chat timelines side by side after a call ([#&#8203;32484](https://github.com/element-hq/element-web/pull/32484)). Contributed by [@&#8203;robintown](https://github.com/robintown).
- Update screenshot for reactive display name disambiguation ([#&#8203;32431](https://github.com/element-hq/element-web/pull/32431)). Contributed by [@&#8203;aditya-cherukuru](https://github.com/aditya-cherukuru).
- Fix Status Bar being unreadable when the user overrides the default OS light/dark theme. ([#&#8203;32442](https://github.com/element-hq/element-web/pull/32442)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- fix: Remove state\_key: null from Seshat search results ([#&#8203;31524](https://github.com/element-hq/element-web/pull/31524)). Contributed by [@&#8203;shinaoka](https://github.com/shinaoka).
- Fix user pill deserialisation ([#&#8203;31947](https://github.com/element-hq/element-web/pull/31947)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4209
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 20:32:01 +00:00
cec1bfca70 chore(deps): update helm release rook-ceph-cluster to v1.19.2 (#4219)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 59s
renovate / renovate (push) Successful in 3m4s
2026-02-24 20:19:14 +00:00
4de931a318 chore(deps): update kube-prometheus-stack docker tag to v82.3.0 (#4205)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m2s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [kube-prometheus-stack](https://github.com/prometheus-operator/kube-prometheus) ([source](https://github.com/prometheus-community/helm-charts)) | minor | `82.2.1` → `82.3.0` |

---

### Release Notes

<details>
<summary>prometheus-community/helm-charts (kube-prometheus-stack)</summary>

### [`v82.3.0`](https://github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-82.3.0)

[Compare Source](https://github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.2.1...kube-prometheus-stack-82.3.0)

kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.

#### What's Changed

- \[kube-prometheus-stack] Update kube-prometheus-stack dependency non-major updates by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;6670](https://github.com/prometheus-community/helm-charts/pull/6670)

**Full Changelog**: <https://github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.2.1...kube-prometheus-stack-82.3.0>

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

Reviewed-on: #4205
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 20:15:08 +00:00
78a834ed10 chore(deps): update g33kphr33k/musicgrabber docker tag to v2.2.1 (#4204)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| g33kphr33k/musicgrabber | minor | `2.1.2` → `2.2.1` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4204
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 20:14:30 +00:00
c76cae8b3f chore(deps): update helm release rook-ceph to v1.19.2 (#4217)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 47s
render-manifests-push / render-manifests-push (push) Has been skipped
renovate / renovate (push) Successful in 4m14s
2026-02-24 20:05:55 +00:00
80e7d7b974 chore(deps): update dependency rook/rook to v1.19.2 (#4216)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 46s
renovate / renovate (push) Has been cancelled
2026-02-24 20:05:14 +00:00
d6e0004e23 chore(deps): update dependency element-hq/synapse to v1.148.0 (#4203)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 55s
renovate / renovate (push) Successful in 5m12s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [element-hq/synapse](https://github.com/element-hq/synapse) | minor | `v1.147.1` → `v1.148.0` |

---

### Release Notes

<details>
<summary>element-hq/synapse (element-hq/synapse)</summary>

### [`v1.148.0`](https://github.com/element-hq/synapse/releases/tag/v1.148.0)

[Compare Source](https://github.com/element-hq/synapse/compare/v1.147.1...v1.148.0)

### Synapse 1.148.0 (2026-02-24)

No significant changes since 1.148.0rc1.

### Synapse 1.148.0rc1 (2026-02-17)

#### Features

- Support sending and receiving [MSC4354 Sticky Event](https://github.com/matrix-org/matrix-spec-proposals/pull/4354) metadata. ([#&#8203;19365](https://github.com/element-hq/synapse/issues/19365))

#### Improved Documentation

- Fix reference to the `experimental_features` section of the configuration manual documentation. ([#&#8203;19435](https://github.com/element-hq/synapse/issues/19435))

#### Deprecations and Removals

- Remove support for [MSC3244: Room version capabilities](https://github.com/matrix-org/matrix-spec-proposals/pull/3244) as the MSC was rejected. ([#&#8203;19429](https://github.com/element-hq/synapse/issues/19429))

#### Internal Changes

- Add in-repo Complement tests so we can test Synapse specific behavior at an end-to-end level. ([#&#8203;19406](https://github.com/element-hq/synapse/issues/19406))
- Push Synapse docker images to Element OCI Registry. ([#&#8203;19420](https://github.com/element-hq/synapse/issues/19420))
- Allow configuring the Rust HTTP client to use HTTP/2 only. ([#&#8203;19457](https://github.com/element-hq/synapse/issues/19457))
- Correctly refuse to start if the Rust workspace config has changed and the Rust library has not been rebuilt. ([#&#8203;19470](https://github.com/element-hq/synapse/issues/19470))

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

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4203
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 19:59:27 +00:00
2c09f8431d chore(deps): update ghcr.io/valkey-io/valkey docker tag to v9.0.3 (#4214)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m29s
renovate / renovate (push) Successful in 4m1s
2026-02-24 19:53:23 +00:00
f75f8f583e chore(deps): update dependency cert-manager/cert-manager to v1.19.4 (#4212)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 53s
renovate / renovate (push) Has been cancelled
2026-02-24 19:50:15 +00:00
6c1d095842 chore(deps): update helm release grafana-operator to v5.22.0 (#4202)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 45s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [grafana-operator](https://github.com/grafana/helm-charts) | minor | `5.21.4` → `5.22.0` |

---

### Release Notes

<details>
<summary>grafana/helm-charts (grafana-operator)</summary>

### [`v5.22.0`](https://github.com/grafana/helm-charts/releases/tag/grafana-operator-5.22.0)

[Compare Source](https://github.com/grafana/helm-charts/compare/grafana-operator-5.21.4...grafana-operator-5.22.0)

Helm chart for the [grafana-operator](https://github.com/grafana/grafana-operator)

Tag on source: <https://github.com/grafana/grafana-operator/releases/tag/v5.22.0>

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

Reviewed-on: #4202
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 19:46:42 +00:00
cffc26f6e4 chore(deps): update helm release matrix-synapse to v3.12.22 (#4208)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 54s
renovate / renovate (push) Successful in 5m32s
2026-02-24 19:35:36 +00:00
1420dc1216 chore(deps): update helm release cert-manager to v1.19.4 (#4206)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 43s
renovate / renovate (push) Has been cancelled
2026-02-24 19:31:19 +00:00
1eebf0f1a8 chore(deps): update dependency grafana/grafana-operator to v5.22.0 (#4201)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 54s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [grafana/grafana-operator](https://github.com/grafana/grafana-operator) | minor | `v5.21.4` → `v5.22.0` |

---

### Release Notes

<details>
<summary>grafana/grafana-operator (grafana/grafana-operator)</summary>

### [`v5.22.0`](https://github.com/grafana/grafana-operator/releases/tag/v5.22.0)

[Compare Source](https://github.com/grafana/grafana-operator/compare/v5.21.4...v5.22.0)

<!-- Release notes generated using configuration in .github/release.yml at master -->

We're happy to announce version 5.22.0 of the Grafana Operator!

This release contains a bunch of new and exciting features like:

- The brand new [`GrafanaManifest`](https://grafana.github.io/grafana-operator/docs/examples/manifests/) resource
  - This allows you to manage resources previously not supported by the operator but available through the new Kuberentes-style Grafana APIs (e.g Playlists, ShortURLs) as well as resources introduced by plugins (e.g. Frontend O11y configuration in Grafana Cloud).
- Dynamic resource patching (currently only available to `GrafanaManifest` resources)
  - Patch resources with arbitrary `jq` scripts before submitting them to the Grafana API!
- Alert rule groups have been updated to support more fields exposed by the Grafana API
- Service accounts no longer require a name and will default to `metadata.name`

#### Upgrade instructions

##### Using Helm

```sh

# Upgrade the operator image & deployment
helm upgrade -i grafana-operator oci://ghcr.io/grafana/helm-charts/grafana-operator --version 5.22.0

# Upgrading CRDs
kubectl apply --server-side --force-conflicts -f https://github.com/grafana/grafana-operator/releases/download/v5.22.0/crds.yaml
```

##### Using kubectl

```sh

# Namespace Scope
kubectl replace -f https://github.com/grafana/grafana-operator/releases/download/v5.22.0/kustomize-namespace_scoped.yaml

# Cluster Scope
kubectl replace -f https://github.com/grafana/grafana-operator/releases/download/v5.22.0/kustomize-cluster_scoped.yaml
```

##### Using kustomize

```sh
flux pull artifact oci://ghcr.io/grafana/kustomize/grafana-operator:v5.22.0 --output ./grafana-operator/
```

##### Using OLM

Releases are published to [operatorhub.io](https://operatorhub.io/operator/grafana-operator) as well as the OpenShift Operator Catalog. Depending on the installation, existing installations will either upgrade automatically or require approval from an administrator.

#### What's Changed

##### Changes that might need your attention

- chore(Helm): simplify helm chart by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2463](https://github.com/grafana/grafana-operator/pull/2463)
  - We changed the default fallback for the cache strategy to `safe` instead of `off`. If you haven't explicitly set `enforceCacheLabels` to null, this does not affect you.

##### Features

- feat(controllers): add new GrafanaManifest resource by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2448](https://github.com/grafana/grafana-operator/pull/2448)
- feat(GrafanaAlertRuleGroup): add support for targetDatasourceUid in recording rules by [@&#8203;RobertClarke64](https://github.com/RobertClarke64) in [#&#8203;2478](https://github.com/grafana/grafana-operator/pull/2478)
- feat(GrafanaAlertRuleGroup): add support for `active_time_intervals` in `notificationSettings` by [@&#8203;heliapb](https://github.com/heliapb) in [#&#8203;2479](https://github.com/grafana/grafana-operator/pull/2479)
- feat(GrafanaManifest): add support for dynamic resource patching by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2470](https://github.com/grafana/grafana-operator/pull/2470)
- feat(GrafanaServiceAccount): Make `.spec.name` optional by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2524](https://github.com/grafana/grafana-operator/pull/2524)

##### Fixes

- fix(GrafanaDashboard): update Grafana status even when remote state matches by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2440](https://github.com/grafana/grafana-operator/pull/2440)
- fix(AlertRuleGroup): skip reconciliation when there's no drift in remote state by [@&#8203;heliapb](https://github.com/heliapb) in [#&#8203;2439](https://github.com/grafana/grafana-operator/pull/2439)
- fix(GrafanaAlertRuleGroup): allow deprecated fields `dashboardUid` and `panelId` by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2450](https://github.com/grafana/grafana-operator/pull/2450)
- fix(logs): Leader election log format by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2466](https://github.com/grafana/grafana-operator/pull/2466)
- fix: add CRD validation for URLs in external grafana, dashboards, and library panels by [@&#8203;heliapb](https://github.com/heliapb) in [#&#8203;2446](https://github.com/grafana/grafana-operator/pull/2446)
- fix(GrafanaManifest): consider forbidden error as success when deleting manifests by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2468](https://github.com/grafana/grafana-operator/pull/2468)
- fix(helm): missing list namespaces permission with `watchNamespaceSelector` by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2465](https://github.com/grafana/grafana-operator/pull/2465)
- fix(Grafana): missing HTTPRoute backendRefs (alternative solution) by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2510](https://github.com/grafana/grafana-operator/pull/2510)
- fix(GrafanaContactPoint): use list based matching as a workaround for 10.4.0-10.4.5 by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2507](https://github.com/grafana/grafana-operator/pull/2507)

##### Dependencies

- chore(deps): update dependency ko-build/ko to v0.18.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2422](https://github.com/grafana/grafana-operator/pull/2422)
- chore(deps): update dependency kubernetes-sigs/controller-tools to v1.35.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2425](https://github.com/grafana/grafana-operator/pull/2425)
- chore(deps): update dependency kubernetes-sigs/controller-tools to v0.20.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2424](https://github.com/grafana/grafana-operator/pull/2424)
- chore(deps): update docker.io/grafana/grafana docker tag to v12.3.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2423](https://github.com/grafana/grafana-operator/pull/2423)
- fix(deps): update kubernetes packages to v0.35.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2427](https://github.com/grafana/grafana-operator/pull/2427)
- fix(deps): update module github.com/onsi/ginkgo/v2 to v2.27.4 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2434](https://github.com/grafana/grafana-operator/pull/2434)
- fix(deps): update module github.com/onsi/ginkgo/v2 to v2.27.5 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2441](https://github.com/grafana/grafana-operator/pull/2441)
- fix(deps): update module github.com/grafana/grafana-plugin-sdk-go to v0.285.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2444](https://github.com/grafana/grafana-operator/pull/2444)
- chore: bump go to 1.25.6 by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2445](https://github.com/grafana/grafana-operator/pull/2445)
- chore(deps): update dependency kubernetes-sigs/controller-runtime to v0.22.5 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2454](https://github.com/grafana/grafana-operator/pull/2454)
- fix(deps): update module sigs.k8s.io/controller-runtime to v0.22.5 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2455](https://github.com/grafana/grafana-operator/pull/2455)
- chore(deps): update dependency kubernetes-sigs/controller-runtime to v0.23.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2458](https://github.com/grafana/grafana-operator/pull/2458)
- fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2459](https://github.com/grafana/grafana-operator/pull/2459)
- fix(deps): update module github.com/grafana/grafana-plugin-sdk-go to v0.286.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2462](https://github.com/grafana/grafana-operator/pull/2462)
- chore(deps): update dependency kubernetes-sigs/controller-runtime to v0.23.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2471](https://github.com/grafana/grafana-operator/pull/2471)
- fix(deps): update module sigs.k8s.io/controller-runtime to v0.23.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2472](https://github.com/grafana/grafana-operator/pull/2472)
- chore(deps): update docker.io/grafana/grafana docker tag to v12.3.2 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2475](https://github.com/grafana/grafana-operator/pull/2475)
- fix(deps): update module github.com/onsi/ginkgo/v2 to v2.28.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2477](https://github.com/grafana/grafana-operator/pull/2477)
- fix(deps): update module github.com/grafana/grafana-plugin-sdk-go to v0.287.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2487](https://github.com/grafana/grafana-operator/pull/2487)
- fix(deps): update module github.com/alecthomas/kong to v1.14.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2488](https://github.com/grafana/grafana-operator/pull/2488)
- fix(deps): update module k8s.io/apimachinery to v0.35.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2492](https://github.com/grafana/grafana-operator/pull/2492)
- chore(deps): update dependency kubernetes-sigs/kustomize to v5.8.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2496](https://github.com/grafana/grafana-operator/pull/2496)
- fix(deps): update kubernetes packages to v0.35.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2498](https://github.com/grafana/grafana-operator/pull/2498)
- fix(deps): update module k8s.io/apiextensions-apiserver to v0.35.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2499](https://github.com/grafana/grafana-operator/pull/2499)
- fix(deps): update module github.com/grafana/grafana-plugin-sdk-go to v0.288.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2500](https://github.com/grafana/grafana-operator/pull/2500)
- chore(deps): update docker.io/grafana/grafana docker tag to v12.3.3 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2502](https://github.com/grafana/grafana-operator/pull/2502)
- fix(deps): update module github.com/grafana/grafana-plugin-sdk-go to v0.288.0 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2505](https://github.com/grafana/grafana-operator/pull/2505)
- chore(deps): update dependency kubernetes-sigs/controller-tools to v0.20.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2509](https://github.com/grafana/grafana-operator/pull/2509)
- chore(deps): update grafana/shared-workflows/get-vault-secrets action to v1.3.1 by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2526](https://github.com/grafana/grafana-operator/pull/2526)
- chore(deps): lock file maintenance by [@&#8203;renovate-sh-app](https://github.com/renovate-sh-app)\[bot] in [#&#8203;2503](https://github.com/grafana/grafana-operator/pull/2503)

##### Documentation

- fix(docs): prefix absolute links in docs by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2421](https://github.com/grafana/grafana-operator/pull/2421)
- fix(docs): git URLs by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2430](https://github.com/grafana/grafana-operator/pull/2430)
- proposal: `GrafanaManifest` resource by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2431](https://github.com/grafana/grafana-operator/pull/2431)
- docs(quickstart): Undisturbed editing with `suspend=true` and link to Common Options by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2451](https://github.com/grafana/grafana-operator/pull/2451)
- proposal: dynamic patching proposal by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2436](https://github.com/grafana/grafana-operator/pull/2436)
- chore(CRDs): `GrafanaManifest` missing and removal of `GrafanaManifestTemplates` by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2473](https://github.com/grafana/grafana-operator/pull/2473)
- docs: document JaaS example by [@&#8203;sebhoss](https://github.com/sebhoss) in [#&#8203;2370](https://github.com/grafana/grafana-operator/pull/2370)
- fix(docs): unified\_alerting.enabled type in multiple replicas example by [@&#8203;klinch0](https://github.com/klinch0) in [#&#8203;2493](https://github.com/grafana/grafana-operator/pull/2493)
- docs: grafana manifest documentation by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2520](https://github.com/grafana/grafana-operator/pull/2520)
- chore: prep-release 5.22.0 by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2528](https://github.com/grafana/grafana-operator/pull/2528)

##### Other Changes

- chore(Makefile): switch deploy target to to its own overlay by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2419](https://github.com/grafana/grafana-operator/pull/2419)
- chore(controllers): move test container creation to tk8s package by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2443](https://github.com/grafana/grafana-operator/pull/2443)
- chore(controllers): Refactor creation of HTTP Clients by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2449](https://github.com/grafana/grafana-operator/pull/2449)
- chore(controllers): normalize logging by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2382](https://github.com/grafana/grafana-operator/pull/2382)
- chore(helm): reduce the number of RBAC resources  by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2464](https://github.com/grafana/grafana-operator/pull/2464)
- chore(RBAC Kustomize/OpenShift): Only allow lease management within the operators current namespace by [@&#8203;Baarsgaard](https://github.com/Baarsgaard) in [#&#8203;2467](https://github.com/grafana/grafana-operator/pull/2467)
- chore(api, controllers): modernize code using Go 1.26 features by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2497](https://github.com/grafana/grafana-operator/pull/2497)
- feat(tests): add support for grafana version overrides  by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2490](https://github.com/grafana/grafana-operator/pull/2490)
- chore(controllers): embed gtime to cut build time by [@&#8203;weisdd](https://github.com/weisdd) in [#&#8203;2514](https://github.com/grafana/grafana-operator/pull/2514)
- refactor: use kyaml instead of simplejson for fieldpath by [@&#8203;theSuess](https://github.com/theSuess) in [#&#8203;2519](https://github.com/grafana/grafana-operator/pull/2519)

#### New Contributors

- [@&#8203;heliapb](https://github.com/heliapb) made their first contribution in [#&#8203;2439](https://github.com/grafana/grafana-operator/pull/2439)
- [@&#8203;RobertClarke64](https://github.com/RobertClarke64) made their first contribution in [#&#8203;2478](https://github.com/grafana/grafana-operator/pull/2478)
- [@&#8203;sebhoss](https://github.com/sebhoss) made their first contribution in [#&#8203;2370](https://github.com/grafana/grafana-operator/pull/2370)
- [@&#8203;klinch0](https://github.com/klinch0) made their first contribution in [#&#8203;2493](https://github.com/grafana/grafana-operator/pull/2493)

**Full Changelog**: <https://github.com/grafana/grafana-operator/compare/v5.21.4...v5.22.0>

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

Reviewed-on: #4201
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 19:27:31 +00:00
cabcd80aaf feat: move route to chart
All checks were successful
lint-test-helm / lint-helm (push) Successful in 37s
render-manifests-push / render-manifests-push (push) Successful in 59s
renovate / renovate (push) Successful in 4m58s
2026-02-23 22:12:16 -06:00
23a10877ba feat: add decluttarr
Some checks failed
lint-test-helm / lint-helm (push) Failing after 7s
render-manifests-push / render-manifests-push (push) Successful in 1m0s
renovate / renovate (push) Successful in 3m4s
2026-02-23 22:09:04 -06:00
ba590d0d42 chore(deps): update ghcr.io/traefik/traefik docker tag to v3.6.9 (#4199)
All checks were successful
lint-test-docker / lint-docker-compose (push) Successful in 1m5s
render-manifests-dispatch / render-manifests-dispatch (push) Successful in 42m20s
renovate / renovate (push) Successful in 2m13s
2026-02-24 02:33:52 +00:00
49e3454be3 chore(deps): update dependency dani-garcia/vaultwarden to v1.35.4 (#4197)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 42s
renovate / renovate (push) Has been cancelled
2026-02-24 02:29:32 +00:00
cb73d062ec chore(deps): update calibrain/shelfmark to v1.1.2 (#4196)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-02-24 02:29:17 +00:00
fa9cfda358 chore(deps): update ghcr.io/autobrr/qui docker tag to v1.14.1 (#4187)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 46s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/autobrr/qui](https://github.com/autobrr/qui) | patch | `v1.14.0` → `v1.14.1` |

---

### Release Notes

<details>
<summary>autobrr/qui (ghcr.io/autobrr/qui)</summary>

### [`v1.14.1`](https://github.com/autobrr/qui/releases/tag/v1.14.1)

[Compare Source](https://github.com/autobrr/qui/compare/v1.14.0...v1.14.1)

#### Changelog

##### Bug Fixes

- [`6f3171c`](6f3171c07d): fix(auth): avoid chromium basic auth resets on expired qui sessions ([#&#8203;1495](https://github.com/autobrr/qui/issues/1495)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`d5acab7`](d5acab7e24): fix(automations): make managed full tag sync idempotent ([#&#8203;1494](https://github.com/autobrr/qui/issues/1494)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`9fdc949`](9fdc949adc): fix(crossseed): avoid webhook notification spam on pending matches ([#&#8203;1496](https://github.com/autobrr/qui/issues/1496)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`350edb3`](350edb3ea4): fix(notifications): improve torrent and automation event samples ([#&#8203;1501](https://github.com/autobrr/qui/issues/1501)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`e2c032c`](e2c032c924): fix(qbittorrent): ignore pseudo tracker labels in domain parsing ([#&#8203;1489](https://github.com/autobrr/qui/issues/1489)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`e00c70d`](e00c70df49): fix(qbittorrent): repair unified torrent sorting ([#&#8203;1490](https://github.com/autobrr/qui/issues/1490)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`4d95325`](4d95325805): fix(themes): clarify crypto donation discount flow ([#&#8203;1503](https://github.com/autobrr/qui/issues/1503)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`579ea8d`](579ea8d34c): fix(themes): clarify premium checkout and crypto flow ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`ece956a`](ece956a237): fix(torrents): scope instance column to unified cross-instance data ([#&#8203;1502](https://github.com/autobrr/qui/issues/1502)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`27cf6d2`](27cf6d2767): fix(ui): hide unified entry when one instance is active ([#&#8203;1493](https://github.com/autobrr/qui/issues/1493)) ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`80d911f`](80d911ff53): fix(ui): remove single-instance indent in header menu ([@&#8203;s0up4200](https://github.com/s0up4200))
- [`6ae7625`](6ae76256f1): fix(ui): restore instances header in menu ([@&#8203;s0up4200](https://github.com/s0up4200))

##### Other Changes

- [`336dc9a`](336dc9af3b): docs: update payment info ([#&#8203;1424](https://github.com/autobrr/qui/issues/1424)) ([@&#8203;s0up4200](https://github.com/s0up4200))

**Full Changelog**: <https://github.com/autobrr/qui/compare/v1.14.0...v1.14.1>

#### Docker images

- `docker pull ghcr.io/autobrr/qui:v1.14.1`
- `docker pull ghcr.io/autobrr/qui:latest`

#### What to do next?

- Join our [Discord server](https://discord.autobrr.com/qui)

Thank you for using qui!

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4187
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 02:26:22 +00:00
687dd54bed chore(deps): update g33kphr33k/musicgrabber docker tag to v2.1.2 (#4194)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m34s
renovate / renovate (push) Successful in 3m25s
2026-02-24 00:38:03 +00:00
e7e243fe43 chore(deps): update dependency traefik/traefik to v3.6.9 (#4193)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m32s
renovate / renovate (push) Has been cancelled
2026-02-24 00:33:23 +00:00
733b813a96 chore(deps): update dependency grafana/loki to v3.6.7 (#4192)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-02-24 00:32:40 +00:00
02776b1a15 chore(deps): update searxng/searxng:latest docker digest to edf110a (#4172)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m12s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| searxng/searxng | digest | `c5e5aed` → `edf110a` |

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4172
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-24 00:28:44 +00:00
1bac35275e chore(deps): update vaultwarden/server docker tag to v1.35.4 (#4189)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m32s
renovate / renovate (push) Successful in 6m22s
2026-02-23 23:17:29 +00:00
f9bae7a7d1 chore(deps): update ghcr.io/actualbudget/actual docker tag to v26.2.1 (#4186)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m37s
renovate / renovate (push) Has been cancelled
2026-02-23 23:13:00 +00:00
6a00ceaa2b chore(deps): update ollama/ollama to v0.17.0 (#4169)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 41s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ollama/ollama](https://github.com/ollama/ollama) | minor | `0.16.3` → `0.17.0` |
| ollama/ollama | minor | `0.16.3` → `0.17.0` |

---

### Release Notes

<details>
<summary>ollama/ollama (ollama/ollama)</summary>

### [`v0.17.0`](https://github.com/ollama/ollama/releases/tag/v0.17.0)

[Compare Source](https://github.com/ollama/ollama/compare/v0.16.3...v0.17.0)

#### OpenClaw

OpenClaw can now be installed and configured automatically via Ollama, making it the easiest way to get up and running with OpenClaw with open models like Kimi-K2.5, GLM-5, and Minimax-M2.5.

##### Get started

`ollama launch openclaw`

<img width="2368" height="1830" alt="oc1" src="https://github.com/user-attachments/assets/cb9443d6-92cc-4c13-b26b-87e5f6c09b4e" />

##### Websearch in OpenClaw

When using cloud models, websearch is enabled - allowing OpenClaw to search the internet.

<img width="2368" height="1830" alt="oc3" src="https://github.com/user-attachments/assets/a4400e6d-e4c4-485b-bd11-823a624962a2" />

#### What's Changed
* Improved tokenizer performance
* Ollama's macOS and Windows apps will now default to a context length based on available VRAM

#### New Contributors
* @&#8203;natl-set made their first contribution in https://github.com/ollama/ollama/pull/14322

**Full Changelog**: <https://github.com/ollama/ollama/compare/v0.16.3...v0.17.0>

</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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4169
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-23 23:09:39 +00:00
6f4467f2aa chore(deps): update kube-prometheus-stack docker tag to v82.2.1 (#4181)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m53s
renovate / renovate (push) Successful in 3m48s
2026-02-23 18:05:06 +00:00
de0848713a chore(deps): update helm release argo-cd to v9.4.4 (#4180)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 42s
renovate / renovate (push) Has been cancelled
2026-02-23 18:03:39 +00:00
1c07cdb7eb chore(deps): update ghcr.io/open-webui/open-webui docker tag to v0.8.5 (#4179)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-02-23 18:03:05 +00:00
9d87fa7880 feat: remove huntarr
All checks were successful
lint-test-helm / lint-helm (push) Successful in 35s
lint-test-docker / lint-docker-compose (push) Successful in 48s
render-manifests-push / render-manifests-push (push) Successful in 1m16s
renovate / renovate (push) Successful in 5m29s
2026-02-23 11:41:05 -06:00
70b8751398 chore(deps): update dependency actualbudget/actual to v26.2.1 (#4177)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 40s
renovate / renovate (push) Successful in 3m34s
2026-02-23 16:03:19 +00:00
3c93618690 chore(deps): update dependency argoproj/argo-cd to v3.3.2 (#4175)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 15s
renovate / renovate (push) Successful in 4m0s
2026-02-23 14:02:55 +00:00
201204dd03 chore(deps): update ghcr.io/linuxserver/plex:1.43.0 docker digest to 55c2def (#4171)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m11s
renovate / renovate (push) Successful in 2m56s
2026-02-23 11:03:13 +00:00
b8337c135a chore(deps): update g33kphr33k/musicgrabber docker tag to v2.1.1 (#4167)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
renovate / renovate (push) Successful in 3m45s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| g33kphr33k/musicgrabber | minor | `2.0.4` → `2.1.1` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4167
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-23 04:54:48 +00:00
07e974b121 chore(deps): update dependency garethgeorge/backrest to v1.12.0 (#4156)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 11s
render-manifests-dispatch / render-manifests-dispatch (push) Failing after 31m9s
renovate / renovate (push) Successful in 2m5s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [garethgeorge/backrest](https://github.com/garethgeorge/backrest) | minor | `v1.11.2` → `v1.12.0` |

---

### Release Notes

<details>
<summary>garethgeorge/backrest (garethgeorge/backrest)</summary>

### [`v1.12.0`](https://github.com/garethgeorge/backrest/releases/tag/v1.12.0)

[Compare Source](https://github.com/garethgeorge/backrest/compare/v1.11.2...v1.12.0)

Happy to announce 1.12.0 -- in particular I'd like to highlight simplified SFTP management. Backrest can now instantiate SSH keypairs for you (stored alongside your config.json) and can automate the process of installing them on your remote server and configuring your known\_hosts.

As usual, this release also comes with quality of life improvements and bug fixes including new translations, restoring some tool tips that were lost in the move to Chakra UI, and stricter cronexpr validations.

##### Features

- add a --from-source option to install.sh to build backrest locally ([b1d5403](b1d5403e1f))
- add Dry Run Backup action ([#&#8203;1098](https://github.com/garethgeorge/backrest/issues/1098)) ([4063d8f](4063d8fafc))
- add japanese ([#&#8203;1114](https://github.com/garethgeorge/backrest/issues/1114)) ([92b8254](92b82546b8))
- SFTP configuration UI (enabled for `sftp:` URIs) with support for SSH key bootstrapping ([#&#8203;961](https://github.com/garethgeorge/backrest/issues/961)) ([3250ff4](3250ff481d))

##### Bug Fixes

- enable systemd unit, change rc service ([#&#8203;1113](https://github.com/garethgeorge/backrest/issues/1113)) ([ec4764c](ec4764c909))
- spanish translations improved with context and standardized ([#&#8203;1117](https://github.com/garethgeorge/backrest/issues/1117)) ([844ed1d](844ed1db33))
- stricter cronexpr validation ([45d980b](45d980b16e))
- tooltips and section headers for check and prune policies ([9130539](91305396f8))
- use cmd.SysProcAttr.HideWindow to spawn background processes on Windows ([#&#8203;1101](https://github.com/garethgeorge/backrest/issues/1101)) ([7638b5f](7638b5f2dc))

</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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuOCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4156
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-22 17:27:24 +00:00
e6829c3c4f chore(deps): update karakeep-app/karakeep to v0.31.0 (#4163)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 11s
renovate / renovate (push) Successful in 2m18s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/karakeep-app/karakeep](https://github.com/karakeep-app/karakeep) | minor | `0.30.0` → `0.31.0` |
| [karakeep-app/karakeep](https://github.com/karakeep-app/karakeep) | minor | `0.30.0` → `0.31.0` |

---

### Release Notes

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

### [`v0.31.0`](https://github.com/karakeep-app/karakeep/releases/tag/v0.31.0): 0.31.0

[Compare Source](https://github.com/karakeep-app/karakeep/compare/v0.30.0...v0.31.0)

##### 0.31.0

Welcome to the 0.31.0 release of Karakeep! This release brings synchronized reading progress, LLM-based OCR, a revamped import pipeline, drag-and-drop for lists, highlights on mobile, a lot of mobile polish, and fixes for some long standing bugs. Huge thanks to our contributors for this release [@&#8203;esimkowitz](https://github.com/esimkowitz), [@&#8203;WieserDaniel](https://github.com/WieserDaniel), [@&#8203;chen-ye](https://github.com/chen-ye), [@&#8203;SnowSquire](https://github.com/SnowSquire), [@&#8203;mokhovyk](https://github.com/mokhovyk), [@&#8203;evan6seven](https://github.com/evan6seven), [@&#8203;ElectricTea](https://github.com/ElectricTea), [@&#8203;RobertRosca](https://github.com/RobertRosca), [@&#8203;sweepies](https://github.com/sweepies), [@&#8203;usr3](https://github.com/usr3) and everyone who shipped code, triaged bugs, or shared feedback for this release.

> If you enjoy using Karakeep, consider supporting the project [here ️](https://buymeacoffee.com/mbassem) or via GitHub [here](https://github.com/sponsors/MohamedBassem).

<a href="https://www.buymeacoffee.com/mbassem" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" width="auto" height="50" ></a>

And in case you missed it, we now have a ☁️ managed offering ☁️ for those who don't want to self-host. You can signup [here](https://cloud.karakeep.app) 🎉.

##### New Features 🚀

- Synchronized reading progress across all your devices ([#&#8203;2302](https://github.com/karakeep-app/karakeep/issues/2302)). By [@&#8203;esimkowitz](https://github.com/esimkowitz)!
  - Your reading position is now saved and synced, so you can pick up right where you left off on any device.
- LLM-based OCR as an alternative to Tesseract ([#&#8203;2442](https://github.com/karakeep-app/karakeep/issues/2442))
  - You can now use your configured LLM for OCR instead of Tesseract, which produces significantly better results for image and asset bookmarks.
- Revamped Import pipeline ([#&#8203;2378](https://github.com/karakeep-app/karakeep/issues/2378))
  - The import experience got another big overhaul: a new import details page ([#&#8203;2451](https://github.com/karakeep-app/karakeep/issues/2451)), a dedicated low-priority queue for import crawling ([#&#8203;2452](https://github.com/karakeep-app/karakeep/issues/2452)), better progress tracking, ability to pause an import and more resilient error handling.
- Drag-and-drop bookmarks into lists ([#&#8203;2469](https://github.com/karakeep-app/karakeep/issues/2469))
- Highlights support on mobile ([#&#8203;2494](https://github.com/karakeep-app/karakeep/issues/2494))
  - You can now view and create highlights in the mobile app's reader view.
- AI tag suggestions: instructs the model to limit auto-tagging to a subset of your existing tags for more consistent results ([#&#8203;2444](https://github.com/karakeep-app/karakeep/issues/2444)).
- Export lists in backups and exports ([#&#8203;2484](https://github.com/karakeep-app/karakeep/issues/2484))
  - Automated backups and full exports now include your lists.
- Others:
  - Retry buttons for dangling (aka pending) bookmarks in the admin panel ([#&#8203;2341](https://github.com/karakeep-app/karakeep/issues/2341)).
  - Add signup support to the mobile app.
  - OpenAI service tier configuration via `OPENAI_SERVICE_TIER` ([#&#8203;2339](https://github.com/karakeep-app/karakeep/issues/2339)). By [@&#8203;RobertRosca](https://github.com/RobertRosca)!
  - Import from Instapaper ([#&#8203;2434](https://github.com/karakeep-app/karakeep/issues/2434)). By [@&#8203;WieserDaniel](https://github.com/WieserDaniel)!
  - Privacy-respecting bookmark debugger admin tool ([#&#8203;2373](https://github.com/karakeep-app/karakeep/issues/2373))
  - MCP server now supports custom configurable HTTP headers ([#&#8203;2436](https://github.com/karakeep-app/karakeep/issues/2436)). By [@&#8203;chen-ye](https://github.com/chen-ye)!
  - New search qualifiers:
    - `source:` filter to search by bookmark source (mobile, extension, web, etc.) ([#&#8203;2465](https://github.com/karakeep-app/karakeep/issues/2465)).
    - `tag:` alias for `#` and `!` alias for negation ([#&#8203;2425](https://github.com/karakeep-app/karakeep/issues/2425)).
    - New "Title Contains" condition in the Rule Engine ([#&#8203;2354](https://github.com/karakeep-app/karakeep/issues/2354)). By [@&#8203;mokhovyk](https://github.com/mokhovyk)!

##### UX Improvements 

- Mobile app overhaul:
  - Native tabs and more native-feeling screens.
  - Animated UI feedback in the sharing modal ([#&#8203;2427](https://github.com/karakeep-app/karakeep/issues/2427)).
  - Show bookmark count in the all lists view.
- Better looking content fetching loading state in the bookmark preview.
- Two-phase metadata updates so bookmarks show up faster while crawling is still in progress ([#&#8203;2467](https://github.com/karakeep-app/karakeep/issues/2467)).
- Links to apps, extensions and docs in the profile dropdown.
- Extension autofocuses on note field on open ([#&#8203;2366](https://github.com/karakeep-app/karakeep/issues/2366)). By [@&#8203;SnowSquire](https://github.com/SnowSquire)!
- Improving the visual consistency of the settings page.
- Opt-in OAuth auto-redirect for single-provider passwordless setups ([#&#8203;2483](https://github.com/karakeep-app/karakeep/issues/2483))
- Add a download button for assets in the bookmark options menu.
- API keys now show their last-used dates to better identify unused keys.
- Fix masonry overflow in bookmark grids ([#&#8203;2400](https://github.com/karakeep-app/karakeep/issues/2400)). By [@&#8203;evan6seven](https://github.com/evan6seven)!
- Hide confusing `No suggestions` message when no search suggestions are available.

##### Fixes 🔧

- \[Security] Sanitize reddit's crawling output to prevent stored XSS. This was reported by [@&#8203;ByamB4](https://github.com/ByamB4) and published as a github advisory (GHSA-mg93-f9mw-wpgj).
- Eliminated O(n²) parsing of Netscape bookmark imports ([#&#8203;2338](https://github.com/karakeep-app/karakeep/issues/2338)).
- Smart lists can now be used in search qualifiers and in other smart list queries ([#&#8203;2470](https://github.com/karakeep-app/karakeep/issues/2470))
- Parallelize content extraction in the crawler worker for faster crawling.
- Batch meilisearch indexing requests for better performance ([#&#8203;2441](https://github.com/karakeep-app/karakeep/issues/2441)).
- Auto dismiss dialogs during crawling that might have caused worker crashes before.
- Use user's preferred language for manual summarization ([#&#8203;2429](https://github.com/karakeep-app/karakeep/issues/2429)).
- Accept more permissive RSS feed content types ([#&#8203;2353](https://github.com/karakeep-app/karakeep/issues/2353)). By [@&#8203;ElectricTea](https://github.com/ElectricTea)!
- Fix clipping of reader view in smaller screens.
- Fix overscrolling in some setting pages (e.g. AI settings).
- Stop theme flashes with Cloudflare Rocket Loader ([#&#8203;2340](https://github.com/karakeep-app/karakeep/issues/2340)). By [@&#8203;sweepies](https://github.com/sweepies)!
- Retry 403, 429 and 5XX status codes from the crawler.
- Lower priority of recrawling and mass admin actions to avoid starving interactive traffic.
- Fix scrolling in manage lists/edit tags when inside a dialog ([#&#8203;2258](https://github.com/karakeep-app/karakeep/issues/2258)).
- Respect archived display behavior setting in mobile lists and tags ([#&#8203;2499](https://github.com/karakeep-app/karakeep/issues/2499)).
- Fix flicker on closing bookmark preview on search page.
- Share PDFs from the mobile app as files instead of links.
- Fix high CPU usage of browser container after large imports due to leaking contexts. ([#&#8203;2503](https://github.com/karakeep-app/karakeep/issues/2503))
- Reader settings preview in the mobile app now matches reader view formatting ([#&#8203;2365](https://github.com/karakeep-app/karakeep/issues/2365)). By [@&#8203;esimkowitz](https://github.com/esimkowitz)!
- When saving an image or a link from a page using "Add to Karakeep" menu item, the title of the original page is no longer incorrectly used for that link.

##### For Developers 🛠️

- Docker images moved from Alpine to Debian.
- OpenTelemetry instrumentation for database queries and extra tracing in OTEL traces ([#&#8203;2453](https://github.com/karakeep-app/karakeep/issues/2453)).
- Prometheus metric for bookmark crawl latency ([#&#8203;2461](https://github.com/karakeep-app/karakeep/issues/2461)).
- New `checkUrl` API endpoint to check if a URL is already bookmarked.
- `attachedBy` field in the update tags API endpoint to mark the tag as added by human or AI ([#&#8203;2281](https://github.com/karakeep-app/karakeep/issues/2281)).
- Upgraded to Expo SDK 54, React 19.2.1, and Node.js 24.
- CLI can now search bookmarks ([#&#8203;2426](https://github.com/karakeep-app/karakeep/issues/2426)).

##### Screenshots 📸

##### Reader Progress

![https://github.com/user-attachments/assets/86b259f6-2ce7-493f-a02c-d883c76c901c](https://github.com/user-attachments/assets/86b259f6-2ce7-493f-a02c-d883c76c901c)

##### Import Details

![https://github.com/user-attachments/assets/b37c91a5-b74a-4de5-94d3-f25c346cae7b](https://github.com/user-attachments/assets/b37c91a5-b74a-4de5-94d3-f25c346cae7b)

##### Upgrading 📦

To upgrade:

- If you're using `KARAKEEP_VERSION=release`, run `docker compose pull && docker compose up -d`.
- If you're pinning it to a specific version, bump the version and then run `docker compose pull && docker compose up -d`.

##### All Commits

- fix(workers): sanitize reddits metascraper output - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`ba3db95`](https://github.com/karakeep-app/karakeep/commit/ba3db95)
- fix(i18n): update en\_US translation strings - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`52c1e9f`](https://github.com/karakeep-app/karakeep/commit/52c1e9f0)
- i18n: Sync weblate translations - Weblate in [`f7ae922`](https://github.com/karakeep-app/karakeep/commit/f7ae922c)
- fix(workers): mitigate leaking browser contexts and setup and auto reaper ([#&#8203;2503](https://github.com/karakeep-app/karakeep/issues/2503)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`627faf5`](https://github.com/karakeep-app/karakeep/commit/627faf51)
- fix(web): avoid flicker on closing bookmark preview on search page - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`ec0aaad`](https://github.com/karakeep-app/karakeep/commit/ec0aaad0)
- fix(mobile): respect archiveDisplayBehaviour setting in lists and tags ([#&#8203;2499](https://github.com/karakeep-app/karakeep/issues/2499)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`59a2560`](https://github.com/karakeep-app/karakeep/commit/59a25607)
- fix(web): fix scrolling in manage lists/edit tags when inside a dialog. fixes [#&#8203;2258](https://github.com/karakeep-app/karakeep/issues/2258) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e37d728`](https://github.com/karakeep-app/karakeep/commit/e37d7286)
- fix(mobile): remove the use of custom safe areas - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`ef0b50b`](https://github.com/karakeep-app/karakeep/commit/ef0b50be)
- fix(mobile): remove smart lists from manage\_lists page - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`7124d15`](https://github.com/karakeep-app/karakeep/commit/7124d15b)
- docs: correct breaking typo in 05-singlefile.md doc ([#&#8203;2496](https://github.com/karakeep-app/karakeep/issues/2496)) - [@&#8203;brandongalbraith](https://github.com/brandongalbraith) in [`0e3bc6f`](https://github.com/karakeep-app/karakeep/commit/0e3bc6f1)
- fix(mobile): fix formsheets on android - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`228eb20`](https://github.com/karakeep-app/karakeep/commit/228eb208)
- fix(ui): fix the colors of buttons in the settings page - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`3d6c83d`](https://github.com/karakeep-app/karakeep/commit/3d6c83d5)
- fix(ui): Improve visual consistency in all settings page - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e02a4c5`](https://github.com/karakeep-app/karakeep/commit/e02a4c5e)
- feat: add checkUrl endpoint to replace searchBookmarks for URL existence checks - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b249273`](https://github.com/karakeep-app/karakeep/commit/b2492735)
- fix: auto dismiss dialogs during crawling - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`23ae17f`](https://github.com/karakeep-app/karakeep/commit/23ae17fa)
- deps: fix mismatch in [@&#8203;types/react](https://github.com/types/react) across packages - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`6f78d2f`](https://github.com/karakeep-app/karakeep/commit/6f78d2f8)
- deps: upgrade playwright to 1.58.2 - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`07cc3ef`](https://github.com/karakeep-app/karakeep/commit/07cc3eff)
- fix(restate): call onError on rpc failures - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`4fd0eaf`](https://github.com/karakeep-app/karakeep/commit/4fd0eaf0)
- fix(mobile): drop the use of custom safe areas in bookmark lists - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`447d2cc`](https://github.com/karakeep-app/karakeep/commit/447d2cc8)
- fix(mobile): fix headers in android app - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`349fe05`](https://github.com/karakeep-app/karakeep/commit/349fe05e)
- fix: parallelize content extraction in crawler worker - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`74c3452`](https://github.com/karakeep-app/karakeep/commit/74c34529)
- fix(ux): hide autocomplete dropdown when there are no suggestions - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`c6417d8`](https://github.com/karakeep-app/karakeep/commit/c6417d8e)
- docs: Add Cloudflare Workers AI provider ([#&#8203;2486](https://github.com/karakeep-app/karakeep/issues/2486)) - [@&#8203;usr3](https://github.com/usr3) in [`5946ce8`](https://github.com/karakeep-app/karakeep/commit/5946ce8f)
- feat: add synchronized reading progress for bookmarks ([#&#8203;2302](https://github.com/karakeep-app/karakeep/issues/2302)) - [@&#8203;esimkowitz](https://github.com/esimkowitz) in [`fff0a28`](https://github.com/karakeep-app/karakeep/commit/fff0a280)
- feat(mobile): Add highlights support for the mobile app ([#&#8203;2494](https://github.com/karakeep-app/karakeep/issues/2494)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`459ee50`](https://github.com/karakeep-app/karakeep/commit/459ee50e)
- fix: dont trigger background jobs if bookmark doesn't change on updateTags call - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`fbc63b9`](https://github.com/karakeep-app/karakeep/commit/fbc63b92)
- fix(import): truncate title to max length in import worker - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`74b174a`](https://github.com/karakeep-app/karakeep/commit/74b174ad)
- feat(crawler): retrun 403, 429 and 5XX status codes - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`1c5c8ec`](https://github.com/karakeep-app/karakeep/commit/1c5c8ec6)
- fix(web): fix clipping of reader view in smaller screens - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`41d2f0d`](https://github.com/karakeep-app/karakeep/commit/41d2f0d7)
- fix(web): fix double scrolling in sidebar layout - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`a8e8ce9`](https://github.com/karakeep-app/karakeep/commit/a8e8ce98)
- feat(ui): Add a better content fetching loading state in the bookmark preview - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`be09027`](https://github.com/karakeep-app/karakeep/commit/be090270)
- feat: add a download button to the More submenu in bookmark options - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`2c57aa8`](https://github.com/karakeep-app/karakeep/commit/2c57aa87)
- feat: add OAuth auto-redirect functionality ([#&#8203;2483](https://github.com/karakeep-app/karakeep/issues/2483)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`33b91e3`](https://github.com/karakeep-app/karakeep/commit/33b91e3f)
- feat: export lists in backups and exports ([#&#8203;2484](https://github.com/karakeep-app/karakeep/issues/2484)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`0c458ba`](https://github.com/karakeep-app/karakeep/commit/0c458ba1)
- feat(workers): extract html parsing into a subprocess ([#&#8203;2485](https://github.com/karakeep-app/karakeep/issues/2485)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`7a10067`](https://github.com/karakeep-app/karakeep/commit/7a100672)
- feat(mobile): make the bookmark edit UIs look more native - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`ec7ef00`](https://github.com/karakeep-app/karakeep/commit/ec7ef00f)
- fix: share PDFs as files instead of links in mobile app - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`0fab1aa`](https://github.com/karakeep-app/karakeep/commit/0fab1aa6)
- feat: link to apps and extensions, docs and twitter in profile dropdown - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`d72788f`](https://github.com/karakeep-app/karakeep/commit/d72788ff)
- fix: dedup list and recent search suggestions - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`8539c83`](https://github.com/karakeep-app/karakeep/commit/8539c836)
- fix: Support nested smart lists with cycle detection ([#&#8203;2470](https://github.com/karakeep-app/karakeep/issues/2470)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b3d3602`](https://github.com/karakeep-app/karakeep/commit/b3d3602d)
- feat(mobile): Add animated UI feedback to sharing modal ([#&#8203;2427](https://github.com/karakeep-app/karakeep/issues/2427)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b41b564`](https://github.com/karakeep-app/karakeep/commit/b41b5647)
- feat(mobile): more native screens - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e455e46`](https://github.com/karakeep-app/karakeep/commit/e455e468)
- feat(ai): Support restricting AI tags to a subset of existing tags ([#&#8203;2444](https://github.com/karakeep-app/karakeep/issues/2444)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`4186c4c`](https://github.com/karakeep-app/karakeep/commit/4186c4c6)
- feat(mcp): Support custom configurable HTTP headers ([#&#8203;2436](https://github.com/karakeep-app/karakeep/issues/2436)) - [@&#8203;chen-ye](https://github.com/chen-ye) in [`77b186c`](https://github.com/karakeep-app/karakeep/commit/77b186c3)
- feat: Added Import for Instapaper ([#&#8203;2434](https://github.com/karakeep-app/karakeep/issues/2434)) - [@&#8203;WieserDaniel](https://github.com/WieserDaniel) in [`fbe7e3a`](https://github.com/karakeep-app/karakeep/commit/fbe7e3a9)
- feat: Add drag-and-drop support for bookmarks to lists ([#&#8203;2469](https://github.com/karakeep-app/karakeep/issues/2469)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`485e994`](https://github.com/karakeep-app/karakeep/commit/485e9948)
- feat(crawler): Split bookmark metadata updates into two phases for faster feedback ([#&#8203;2467](https://github.com/karakeep-app/karakeep/issues/2467)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`c8464e3`](https://github.com/karakeep-app/karakeep/commit/c8464e30)
- feat: add source filter to query language ([#&#8203;2465](https://github.com/karakeep-app/karakeep/issues/2465)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b05a753`](https://github.com/karakeep-app/karakeep/commit/b05a7531)
- fix: treat bookmark not found as a no-op in rule engine instead of a failure ([#&#8203;2464](https://github.com/karakeep-app/karakeep/issues/2464)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`960ca9b`](https://github.com/karakeep-app/karakeep/commit/960ca9b6)
- fix(extension): dont store tab title when saving links or images. fixes [#&#8203;2462](https://github.com/karakeep-app/karakeep/issues/2462) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`1a01f75`](https://github.com/karakeep-app/karakeep/commit/1a01f75d)
- feat: Add separate queue for import link crawling ([#&#8203;2452](https://github.com/karakeep-app/karakeep/issues/2452)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`bbd65fd`](https://github.com/karakeep-app/karakeep/commit/bbd65fd6)
- fix: lower the priority of recrawling - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`7d53e2e`](https://github.com/karakeep-app/karakeep/commit/7d53e2e4)
- feat(metrics): add prometheus metric for bookmark crawl latency ([#&#8203;2461](https://github.com/karakeep-app/karakeep/issues/2461)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b264080`](https://github.com/karakeep-app/karakeep/commit/b2640803)
- feat(db): add OpenTelemetry instrumentation for database queries - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`9e5693c`](https://github.com/karakeep-app/karakeep/commit/9e5693c6)
- feat(import): new import details page ([#&#8203;2451](https://github.com/karakeep-app/karakeep/issues/2451)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e59fd98`](https://github.com/karakeep-app/karakeep/commit/e59fd98b)
- feat: add extra instrumentation in the otel traces ([#&#8203;2453](https://github.com/karakeep-app/karakeep/issues/2453)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`538035c`](https://github.com/karakeep-app/karakeep/commit/538035c4)
- fix(import): sanitize error messages to prevent backend detail leakage ([#&#8203;2455](https://github.com/karakeep-app/karakeep/issues/2455)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`93ad2e2`](https://github.com/karakeep-app/karakeep/commit/93ad2e20)
- fix(import): propagate crawling/tagging failure to import status - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`50320ec`](https://github.com/karakeep-app/karakeep/commit/50320ecd)
- fix: backfill old sessions and do queue backpressure ([#&#8203;2449](https://github.com/karakeep-app/karakeep/issues/2449)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e8e48a4`](https://github.com/karakeep-app/karakeep/commit/e8e48a41)
- feat: Import workflow v3 ([#&#8203;2378](https://github.com/karakeep-app/karakeep/issues/2378)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`3c838dd`](https://github.com/karakeep-app/karakeep/commit/3c838ddb)
- feat: Add LLM-based OCR as alternative to Tesseract ([#&#8203;2442](https://github.com/karakeep-app/karakeep/issues/2442)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`3fcccb8`](https://github.com/karakeep-app/karakeep/commit/3fcccb85)
- feat: batch meilisearch requests ([#&#8203;2441](https://github.com/karakeep-app/karakeep/issues/2441)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`54243b8`](https://github.com/karakeep-app/karakeep/commit/54243b8c)
- fix(mobile): migrate from RN image to expo-image - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e861880`](https://github.com/karakeep-app/karakeep/commit/e8618800)
- feat(mobile): use native tabs for mobile - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`bf5c99c`](https://github.com/karakeep-app/karakeep/commit/bf5c99cb)
- feat(mobile): add signup support to the mobile app - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`5cb7306`](https://github.com/karakeep-app/karakeep/commit/5cb73069)
- fix: better looking error message when article content is unavailable - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`67501ed`](https://github.com/karakeep-app/karakeep/commit/67501ed6)
- refactor: migrate trpc to the new react query integration mode ([#&#8203;2438](https://github.com/karakeep-app/karakeep/issues/2438)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`65f6e83`](https://github.com/karakeep-app/karakeep/commit/65f6e83f)
- feat(mobile): show num bookmarks in the all lists view - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`4bc1b90`](https://github.com/karakeep-app/karakeep/commit/4bc1b90f)
- fix: use user's preferred language for manual summarization ([#&#8203;2429](https://github.com/karakeep-app/karakeep/issues/2429)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`95bfa56`](https://github.com/karakeep-app/karakeep/commit/95bfa569)
- feat(cli): Add bookmark search command ([#&#8203;2426](https://github.com/karakeep-app/karakeep/issues/2426)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`42cdc93`](https://github.com/karakeep-app/karakeep/commit/42cdc937)
- feat(search): add tag: alias for # and ! alias for negation ([#&#8203;2425](https://github.com/karakeep-app/karakeep/issues/2425)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`5656e39`](https://github.com/karakeep-app/karakeep/commit/5656e394)
- feat(extension): autofocus on note open ([#&#8203;2366](https://github.com/karakeep-app/karakeep/issues/2366)) - [@&#8203;SnowSquire](https://github.com/SnowSquire) in [`bf2c6de`](https://github.com/karakeep-app/karakeep/commit/bf2c6ded)
- feat: Add attachedBy field to update tags endpoint ([#&#8203;2281](https://github.com/karakeep-app/karakeep/issues/2281)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e09061b`](https://github.com/karakeep-app/karakeep/commit/e09061bd)
- docker: add USE\_JEMALLOC env var and disable it by default - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`edf3f68`](https://github.com/karakeep-app/karakeep/commit/edf3f681)
- docker: switch to jemalloc - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`6535a5a`](https://github.com/karakeep-app/karakeep/commit/6535a5a2)
- docker: move from alpine to debian - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b0036ef`](https://github.com/karakeep-app/karakeep/commit/b0036ef1)
- feat: track api key usage dates - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`7b5f632`](https://github.com/karakeep-app/karakeep/commit/7b5f6328)
- deps(mobile): upgrade to sdk 54 - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`6094d36`](https://github.com/karakeep-app/karakeep/commit/6094d360)
- feat(rules): add "Title Contains" condition to Rule Engine ([#&#8203;1670](https://github.com/karakeep-app/karakeep/issues/1670)) ([#&#8203;2354](https://github.com/karakeep-app/karakeep/issues/2354)) - [@&#8203;mokhovyk](https://github.com/mokhovyk) in [`c56cf4e`](https://github.com/karakeep-app/karakeep/commit/c56cf4e2)
- fix(mobile): Reader settings preview on mobile matches reader view formatting ([#&#8203;2365](https://github.com/karakeep-app/karakeep/issues/2365)) - [@&#8203;esimkowitz](https://github.com/esimkowitz) in [`1b98014`](https://github.com/karakeep-app/karakeep/commit/1b98014d)
- fix(web): avoid masonry overflow in bookmark grids ([#&#8203;2400](https://github.com/karakeep-app/karakeep/issues/2400)) - [@&#8203;evan6seven](https://github.com/evan6seven) in [`789188b`](https://github.com/karakeep-app/karakeep/commit/789188b5)
- deps: upgrade react to 19.2.1 - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`086b464`](https://github.com/karakeep-app/karakeep/commit/086b464d)
- fix(mobile): add custom headers to card banners. fixes [#&#8203;2342](https://github.com/karakeep-app/karakeep/issues/2342) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b4dbc9c`](https://github.com/karakeep-app/karakeep/commit/b4dbc9ce)
- feat: privacy-respecting bookmark debugger admin tool ([#&#8203;2373](https://github.com/karakeep-app/karakeep/issues/2373)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`0f9132b`](https://github.com/karakeep-app/karakeep/commit/0f9132b5)
- fix: Accept more permissive RSS feed content types and Fix User-Agent key ([#&#8203;2353](https://github.com/karakeep-app/karakeep/issues/2353)) - [@&#8203;ElectricTea](https://github.com/ElectricTea) in [`0e938c1`](https://github.com/karakeep-app/karakeep/commit/0e938c14)
- fix: harden the restate implementation ([#&#8203;2370](https://github.com/karakeep-app/karakeep/issues/2370)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`f48e98e`](https://github.com/karakeep-app/karakeep/commit/f48e98e1)
- fix: parallelize queue enqueues in bookmark routes - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`4ba1475`](https://github.com/karakeep-app/karakeep/commit/4ba1475d)
- feat: add openai service tier configuration option ([#&#8203;2339](https://github.com/karakeep-app/karakeep/issues/2339)) - [@&#8203;RobertRosca](https://github.com/RobertRosca) in [`aa7a81e`](https://github.com/karakeep-app/karakeep/commit/aa7a81e0)
- fix: stop theme flashes with cloudflare rocket loader ([#&#8203;2340](https://github.com/karakeep-app/karakeep/issues/2340)) - [@&#8203;sweepies](https://github.com/sweepies) in [`2a6fe6e`](https://github.com/karakeep-app/karakeep/commit/2a6fe6e6)
- feat: Add retry buttons for pending bookmarks in admin panel ([#&#8203;2341](https://github.com/karakeep-app/karakeep/issues/2341)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`e195f40`](https://github.com/karakeep-app/karakeep/commit/e195f40b)
- fix: Eliminate the O(n2) parsing of the netscape import parsing ([#&#8203;2338](https://github.com/karakeep-app/karakeep/issues/2338)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`6fe2063`](https://github.com/karakeep-app/karakeep/commit/6fe20639)
- feat(mobile): use react native sonner - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`016433d`](https://github.com/karakeep-app/karakeep/commit/016433d4)

</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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4163
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-22 17:18:41 +00:00
0013ab467d chore(deps): update searxng/searxng:latest docker digest to c5e5aed (#4164)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
renovate / renovate (push) Successful in 1m28s
2026-02-22 14:02:22 +00:00
0fa269eec4 chore(deps): update searxng/searxng:latest docker digest to 1106e11 (#4161)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 32s
renovate / renovate (push) Successful in 2m34s
2026-02-22 10:02:21 +00:00
55 changed files with 161 additions and 211 deletions

View File

@@ -23,4 +23,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
# renovate: datasource=github-releases depName=actualbudget/actual # renovate: datasource=github-releases depName=actualbudget/actual
appVersion: 26.2.0 appVersion: 26.2.1

View File

@@ -9,7 +9,7 @@ actual:
main: main:
image: image:
repository: ghcr.io/actualbudget/actual repository: ghcr.io/actualbudget/actual
tag: 26.2.0 tag: 26.2.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ

View File

@@ -15,8 +15,8 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: argo-cd - name: argo-cd
version: 9.4.3 version: 9.4.4
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
# renovate: datasource=github-releases depName=argoproj/argo-cd # renovate: datasource=github-releases depName=argoproj/argo-cd
appVersion: v3.3.1 appVersion: v3.3.2

View File

@@ -27,4 +27,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png
# renovate: datasource=github-releases depName=garethgeorge/backrest # renovate: datasource=github-releases depName=garethgeorge/backrest
appVersion: v1.11.2 appVersion: v1.12.0

View File

@@ -8,7 +8,7 @@ backrest:
main: main:
image: image:
repository: garethgeorge/backrest repository: garethgeorge/backrest
tag: v1.11.2 tag: v1.12.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ

View File

@@ -126,7 +126,6 @@ blocky:
home-assistant IN CNAME traefik-cl01tl home-assistant IN CNAME traefik-cl01tl
home-assistant-code-server IN CNAME traefik-cl01tl home-assistant-code-server IN CNAME traefik-cl01tl
hubble IN CNAME traefik-cl01tl hubble IN CNAME traefik-cl01tl
huntarr IN CNAME traefik-cl01tl
immich IN CNAME traefik-cl01tl immich IN CNAME traefik-cl01tl
jellyfin IN CNAME traefik-cl01tl jellyfin IN CNAME traefik-cl01tl
jellystat IN CNAME traefik-cl01tl jellystat IN CNAME traefik-cl01tl

View File

@@ -30,4 +30,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/booklore.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/booklore.png
# renovate: datasource=github-releases depName=booklore-app/BookLore # renovate: datasource=github-releases depName=booklore-app/BookLore
appVersion: v1.18.5 appVersion: v2.0.1

View File

@@ -9,7 +9,7 @@ booklore:
main: main:
image: image:
repository: ghcr.io/booklore-app/booklore repository: ghcr.io/booklore-app/booklore
tag: v1.18.5 tag: v2.0.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: cert-manager - name: cert-manager
repository: https://charts.jetstack.io repository: https://charts.jetstack.io
version: v1.19.3 version: v1.19.4
digest: sha256:114cb3c074866dd41725580ac14367f0aa03653f362ae156430f1dc0ee6ddd32 digest: sha256:5c4a0a0568677bfcf4529e6ec6a005957cd1820fd5f1d1f108e74370d409fe88
generated: "2026-02-02T23:06:15.144687867Z" generated: "2026-02-24T19:30:44.415585645Z"

View File

@@ -14,8 +14,8 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: cert-manager - name: cert-manager
version: v1.19.3 version: v1.19.4
repository: https://charts.jetstack.io repository: https://charts.jetstack.io
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/cert-manager.png icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/cert-manager.png
# renovate: datasource=github-releases depName=cert-manager/cert-manager # renovate: datasource=github-releases depName=cert-manager/cert-manager
appVersion: v1.19.3 appVersion: v1.19.4

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: cilium - name: cilium
repository: https://helm.cilium.io/ repository: https://helm.cilium.io/
version: 1.18.6 version: 1.19.1
digest: sha256:8ea328ac238524b5b423e6289f5e25d05ef64e6aa19cfd5de238f1d5dd533e9b digest: sha256:bf5e8b3233c18bdb9409bb98c9a7ea4114e0e04e8489a49fdb2d29ded0cfa429
generated: "2026-02-05T12:00:20.15778-06:00" generated: "2026-02-24T20:49:03.271826215Z"

View File

@@ -15,7 +15,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: cilium - name: cilium
version: 1.18.6 version: 1.19.1
repository: https://helm.cilium.io/ repository: https://helm.cilium.io/
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/cilium.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/cilium.png
# renovate: datasource=github-releases depName=cilium/cilium # renovate: datasource=github-releases depName=cilium/cilium

View File

@@ -0,0 +1,6 @@
dependencies:
- name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
digest: sha256:548ae1f8699100a2f6bac11a4a3137402b3eea340c7a3db4d9f1813ad6a11dca
generated: "2026-02-23T22:08:42.516245-06:00"

View File

@@ -0,0 +1,20 @@
apiVersion: v2
name: decluttarr
version: 1.0.0
description: decluttarr
keywords:
- decluttarr
- servarr
home: https://wiki.alexlebens.dev/s/
sources:
- https://github.com/ManiMatter/decluttarr
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
maintainers:
- name: alexlebens
dependencies:
- name: app-template
alias: decluttarr
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
# renovate: datasource=github-releases depName=ManiMatter/decluttarr
appVersion: v2.0.0

View File

@@ -0,0 +1,21 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: decluttarr-config-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: decluttarr-config-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: config.yaml
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/decluttarr/config
metadataPolicy: None
property: config.yaml

View File

@@ -0,0 +1,32 @@
decluttarr:
controllers:
main:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
containers:
main:
image:
repository: ghcr.io/manimatter/decluttarr
tag: v2.0.0
pullPolicy: IfNotPresent
env:
- name: TZ
value: America/Chicago
resources:
requests:
cpu: 10m
memory: 128Mi
persistence:
config:
enabled: true
type: secret
name: decluttarr-config-secret
advancedMounts:
main:
main:
- path: /app/config/config.yaml
readOnly: true
mountPropagation: None
subPath: config.yaml

View File

@@ -24,4 +24,4 @@ dependencies:
version: 2.3.0 version: 2.3.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/element.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/element.png
# renovate: datasource=github-releases depName=element-hq/element-web # renovate: datasource=github-releases depName=element-hq/element-web
appVersion: v1.12.10 appVersion: v1.12.11

View File

@@ -2,7 +2,7 @@ element-web:
replicaCount: 1 replicaCount: 1
image: image:
repository: vectorim/element-web repository: vectorim/element-web
tag: v1.12.10 tag: v1.12.11
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
defaultServer: defaultServer:
url: https://matrix.alexlebens.dev url: https://matrix.alexlebens.dev

View File

@@ -287,9 +287,6 @@ gatus:
- name: prowlarr - name: prowlarr
url: https://prowlarr.alexlebens.net url: https://prowlarr.alexlebens.net
<<: *defaults <<: *defaults
- name: huntarr
url: https://huntarr.alexlebens.net
<<: *defaults
- name: bazarr - name: bazarr
url: https://bazarr.alexlebens.net url: https://bazarr.alexlebens.net
<<: *defaults <<: *defaults

View File

@@ -251,7 +251,7 @@ valkey-renovate:
image: image:
registry: ghcr.io registry: ghcr.io
repository: valkey-io/valkey repository: valkey-io/valkey
tag: 9.0.2-alpine tag: 9.0.3-alpine
resources: resources:
requests: requests:
cpu: 10m cpu: 10m

View File

@@ -1,7 +1,7 @@
dependencies: dependencies:
- name: grafana-operator - name: grafana-operator
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
version: 5.21.4 version: 5.22.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.7.0 version: 7.7.0
@@ -11,5 +11,5 @@ dependencies:
- name: redis-replication - name: redis-replication
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 1.0.4 version: 1.0.4
digest: sha256:e93e3ce24fc395b07f64b9536a48c7b91e1a5de594406df9e5690c3b6b04f63a digest: sha256:ef0a64bd24d9c0d5e861fc949c173fecaaf418627b2bc64973547a9d577aa5cf
generated: "2026-02-21T13:55:30.346865-06:00" generated: "2026-02-24T19:40:11.951103549Z"

View File

@@ -17,7 +17,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: grafana-operator - name: grafana-operator
version: 5.21.4 version: 5.22.0
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
@@ -33,4 +33,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/grafana.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/grafana.png
# renovate: datasource=github-releases depName=grafana/grafana-operator # renovate: datasource=github-releases depName=grafana/grafana-operator
appVersion: v5.21.4 appVersion: v5.22.0

View File

@@ -591,12 +591,6 @@ homepage:
href: https://prowlarr.alexlebens.net href: https://prowlarr.alexlebens.net
siteMonitor: http://prowlarr.prowlarr:80 siteMonitor: http://prowlarr.prowlarr:80
statusStyle: dot statusStyle: dot
- Huntarr:
icon: https://raw.githubusercontent.com/plexguide/Huntarr.io/main/frontend/static/logo/128.png
description: Content upgrader
href: https://huntarr.alexlebens.net
siteMonitor: http://huntarr.huntarr:80
statusStyle: dot
- Bazarr: - Bazarr:
icon: sh-bazarr.webp icon: sh-bazarr.webp
description: Subtitles description: Subtitles

View File

@@ -1,9 +0,0 @@
dependencies:
- name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
- name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.7.0
digest: sha256:a3df74f75bbc4aa303a70031732c8727a19d516deb106996c035e30e8ef103c4
generated: "2026-01-16T18:47:16.606690576Z"

View File

@@ -1,26 +0,0 @@
apiVersion: v2
name: huntarr
version: 1.0.0
description: Huntarr
keywords:
- huntarr
- servarr
home: https://wiki.alexlebens.dev/s/831ca16e-d308-4d7b-9213-f841834c1181
sources:
- https://github.com/plexguide/Huntarr.io
- https://hub.docker.com/r/huntarr/huntarr
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
maintainers:
- name: alexlebens
dependencies:
- name: app-template
alias: huntarr
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
- name: volsync-target
alias: volsync-target-config
version: 0.7.0
repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/huntarr.png
# renovate: datasource=github-releases depName=plexguide/huntarr
appVersion: 9.3.7

View File

@@ -1,70 +0,0 @@
huntarr:
controllers:
main:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
containers:
main:
image:
repository: ghcr.io/plexguide/huntarr
tag: 9.3.7
pullPolicy: IfNotPresent
env:
- name: TZ
value: US/Central
resources:
requests:
cpu: 100m
memory: 256Mi
service:
main:
controller: main
ports:
http:
port: 80
targetPort: 9705
protocol: HTTP
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- huntarr.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: huntarr
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence:
config:
forceRename: huntarr-config
storageClass: ceph-block
accessMode: ReadWriteOnce
size: 5Gi
advancedMounts:
main:
main:
- path: /config
readOnly: false
volsync-target-config:
pvcTarget: huntarr-config
local:
enabled: true
schedule: 26 8 * * *
remote:
enabled: false
external:
enabled: true
schedule: 26 9 * * *

View File

@@ -33,4 +33,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/webp/karakeep.webp icon: https://cdn.jsdelivr.net/gh/selfhst/icons/webp/karakeep.webp
# renovate: datasource=github-releases depName=karakeep-app/karakeep # renovate: datasource=github-releases depName=karakeep-app/karakeep
appVersion: 0.30.0 appVersion: 0.31.0

View File

@@ -9,7 +9,7 @@ karakeep:
main: main:
image: image:
repository: ghcr.io/karakeep-app/karakeep repository: ghcr.io/karakeep-app/karakeep
tag: 0.30.0 tag: 0.31.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: DATA_DIR - name: DATA_DIR

View File

@@ -1,12 +1,12 @@
dependencies: dependencies:
- name: kube-prometheus-stack - name: kube-prometheus-stack
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
version: 82.2.0 version: 82.3.0
- name: app-template - name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
- name: redis-replication - name: redis-replication
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 1.0.4 version: 1.0.4
digest: sha256:00762fccd6819bc6cc15eb36c6afcc3006198a3861ce4886456028910205fe43 digest: sha256:41de0559e2f4e85a33ca006520cf67c85abaf5691f3cd0aacf7b66ba0d95ce50
generated: "2026-02-20T15:03:56.36908709Z" generated: "2026-02-24T20:10:32.588038295Z"

View File

@@ -20,7 +20,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: kube-prometheus-stack - name: kube-prometheus-stack
version: 82.2.0 version: 82.3.0
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
- name: app-template - name: app-template
alias: ntfy-alertmanager alias: ntfy-alertmanager

View File

@@ -23,4 +23,4 @@ dependencies:
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/loki.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/loki.png
# renovate: datasource=github-releases depName=grafana/loki # renovate: datasource=github-releases depName=grafana/loki
appVersion: 3.6.6 appVersion: 3.6.7

View File

@@ -1,7 +1,7 @@
dependencies: dependencies:
- name: matrix-synapse - name: matrix-synapse
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
version: 3.12.21 version: 3.12.22
- name: app-template - name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
@@ -38,5 +38,5 @@ dependencies:
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.7.0 version: 0.7.0
digest: sha256:c90f4e4cf247a2fc0b1bc455ab8840f48e7fdf825aad3ebb3a41a9996ae4bc19 digest: sha256:50e77b928a33c3c154e49546f73b0547439aab81a9ccfe22abe61496d3d5582b
generated: "2026-02-21T13:56:27.155487-06:00" generated: "2026-02-24T19:34:51.367657762Z"

View File

@@ -29,7 +29,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: matrix-synapse - name: matrix-synapse
version: 3.12.21 version: 3.12.22
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
- name: app-template - name: app-template
alias: matrix-hookshot alias: matrix-hookshot
@@ -81,4 +81,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/matrix.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/matrix.png
# renovate: datasource=github-releases depName=element-hq/synapse # renovate: datasource=github-releases depName=element-hq/synapse
appVersion: v1.147.1 appVersion: v1.148.0

View File

@@ -9,7 +9,7 @@ music-grabber:
main: main:
image: image:
repository: g33kphr33k/musicgrabber repository: g33kphr33k/musicgrabber
tag: 2.0.4 tag: 2.2.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: MUSIC_DIR - name: MUSIC_DIR

View File

@@ -31,4 +31,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ollama.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ollama.png
# renovate: datasource=github-releases depName=ollama/ollama # renovate: datasource=github-releases depName=ollama/ollama
appVersion: 0.16.3 appVersion: 0.17.0

View File

@@ -22,7 +22,7 @@ ollama:
main: main:
image: image:
repository: ollama/ollama repository: ollama/ollama
tag: 0.16.3 tag: 0.17.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: OLLAMA_KEEP_ALIVE - name: OLLAMA_KEEP_ALIVE
@@ -58,7 +58,7 @@ ollama:
main: main:
image: image:
repository: ollama/ollama repository: ollama/ollama
tag: 0.16.3 tag: 0.17.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: OLLAMA_KEEP_ALIVE - name: OLLAMA_KEEP_ALIVE
@@ -94,7 +94,7 @@ ollama:
main: main:
image: image:
repository: ollama/ollama repository: ollama/ollama
tag: 0.16.3 tag: 0.17.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: OLLAMA_KEEP_ALIVE - name: OLLAMA_KEEP_ALIVE
@@ -117,7 +117,7 @@ ollama:
main: main:
image: image:
repository: ghcr.io/open-webui/open-webui repository: ghcr.io/open-webui/open-webui
tag: v0.8.3 tag: v0.8.5
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: ENV - name: ENV

View File

@@ -9,7 +9,7 @@ plex:
main: main:
image: image:
repository: ghcr.io/linuxserver/plex repository: ghcr.io/linuxserver/plex
tag: 1.43.0@sha256:bbe0118e39e2c071fc5fe39af3f32072207bf4146d56b6a8901bcb23082df207 tag: 1.43.0@sha256:55c2def2eb662c2ce1a13e569278aeb87b2509ac7c57711d0da0a5d6d1607ad8
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ

View File

@@ -212,7 +212,7 @@ qbittorrent:
qui: qui:
image: image:
repository: ghcr.io/autobrr/qui repository: ghcr.io/autobrr/qui
tag: v1.14.0 tag: v1.14.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: QUI__METRICS_ENABLED - name: QUI__METRICS_ENABLED

View File

@@ -1,12 +1,12 @@
dependencies: dependencies:
- name: rook-ceph - name: rook-ceph
repository: https://charts.rook.io/release repository: https://charts.rook.io/release
version: v1.19.1 version: v1.19.2
- name: rook-ceph-cluster - name: rook-ceph-cluster
repository: https://charts.rook.io/release repository: https://charts.rook.io/release
version: v1.19.1 version: v1.19.2
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 2.3.0 version: 2.3.0
digest: sha256:99e0dea26a3c15cea01fb21fd0db36d3bef27de332858e5126f1b36310c2901e digest: sha256:32298e3004a4b411ded3a82a2eea31b350b8e8909bd193538fa3c6be0b8a0e94
generated: "2026-02-07T00:39:02.693159674Z" generated: "2026-02-24T20:18:18.200779597Z"

View File

@@ -16,10 +16,10 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: rook-ceph - name: rook-ceph
version: v1.19.1 version: v1.19.2
repository: https://charts.rook.io/release repository: https://charts.rook.io/release
- name: rook-ceph-cluster - name: rook-ceph-cluster
version: v1.19.1 version: v1.19.2
repository: https://charts.rook.io/release repository: https://charts.rook.io/release
- name: cloudflared - name: cloudflared
alias: cloudflared-rgw alias: cloudflared-rgw
@@ -27,4 +27,4 @@ dependencies:
version: 2.3.0 version: 2.3.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ceph.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ceph.png
# renovate: datasource=github-releases depName=rook/rook # renovate: datasource=github-releases depName=rook/rook
appVersion: v1.19.1 appVersion: v1.19.2

View File

@@ -9,7 +9,7 @@ searxng:
main: main:
image: image:
repository: searxng/searxng repository: searxng/searxng
tag: latest@sha256:d061b9eb0cf0f6a0e46708b58c6ebabaebac6bea96dfbbc2e17afdc86975a1ae tag: latest@sha256:edf110a2816d8963949d03879c72a7e19c221b5f7bfb7952a33ae073f96ccb18
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: SEARXNG_BASE_URL - name: SEARXNG_BASE_URL
@@ -39,7 +39,7 @@ searxng:
main: main:
image: image:
repository: searxng/searxng repository: searxng/searxng
tag: latest@sha256:d061b9eb0cf0f6a0e46708b58c6ebabaebac6bea96dfbbc2e17afdc86975a1ae tag: latest@sha256:edf110a2816d8963949d03879c72a7e19c221b5f7bfb7952a33ae073f96ccb18
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: SEARXNG_BASE_URL - name: SEARXNG_BASE_URL

View File

@@ -1,9 +1,9 @@
dependencies: dependencies:
- name: seerr-chart - name: seerr-chart
repository: oci://ghcr.io/seerr-team/seerr repository: oci://ghcr.io/seerr-team/seerr
version: 3.1.0 version: 3.2.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.7.0 version: 0.7.0
digest: sha256:db6c3b46e534d77e6992c20bec376b88761eae63339ae17b59c811b264b57b55 digest: sha256:c603e70725cdee68a9cd618847f95ae40e969c1e48ae6a8a6665d9f734753f24
generated: "2026-02-16T22:06:27.640526736Z" generated: "2026-02-23T22:11:46.69471-06:00"

View File

@@ -17,7 +17,7 @@ maintainers:
dependencies: dependencies:
- name: seerr-chart - name: seerr-chart
repository: oci://ghcr.io/seerr-team/seerr repository: oci://ghcr.io/seerr-team/seerr
version: 3.1.0 version: 3.2.0
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config
version: 0.7.0 version: 0.7.0

View File

@@ -1,28 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: seerr
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: seerr
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- seerr.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: seerr-seerr-chart
port: 80
weight: 100

View File

@@ -24,6 +24,22 @@ seerr-chart:
storageClass: ceph-block storageClass: ceph-block
ingress: ingress:
enabled: false enabled: false
route:
main:
enabled: true
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- seerr.alexlebens.net
matches:
- path:
type: PathPrefix
value: /
resources: resources:
requests: requests:
cpu: 10m cpu: 10m

View File

@@ -23,4 +23,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shelfmark.webp icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shelfmark.webp
# renovate: datasource=github-releases depName=calibrain/shelfmark # renovate: datasource=github-releases depName=calibrain/shelfmark
appVersion: v1.1.1 appVersion: v1.1.2

View File

@@ -9,7 +9,7 @@ shelfmark:
main: main:
image: image:
repository: ghcr.io/calibrain/shelfmark repository: ghcr.io/calibrain/shelfmark
tag: v1.1.1 tag: v1.1.2
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: FLASK_PORT - name: FLASK_PORT

View File

@@ -22,4 +22,4 @@ dependencies:
repository: https://traefik.github.io/charts repository: https://traefik.github.io/charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp icon: https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp
# renovate: datasource=github-releases depName=traefik/traefik # renovate: datasource=github-releases depName=traefik/traefik
appVersion: v3.6.8 appVersion: v3.6.9

View File

@@ -35,4 +35,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/vaultwarden.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/vaultwarden.png
# renovate: datasource=github-releases depName=dani-garcia/vaultwarden # renovate: datasource=github-releases depName=dani-garcia/vaultwarden
appVersion: 1.35.3 appVersion: 1.35.4

View File

@@ -9,7 +9,7 @@ vaultwarden:
main: main:
image: image:
repository: vaultwarden/server repository: vaultwarden/server
tag: 1.35.3 tag: 1.35.4
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: DOMAIN - name: DOMAIN

View File

@@ -101,7 +101,6 @@ customDNS:
home-assistant IN CNAME traefik-cl01tl home-assistant IN CNAME traefik-cl01tl
home-assistant-code-server IN CNAME traefik-cl01tl home-assistant-code-server IN CNAME traefik-cl01tl
hubble IN CNAME traefik-cl01tl hubble IN CNAME traefik-cl01tl
huntarr IN CNAME traefik-cl01tl
immich IN CNAME traefik-cl01tl immich IN CNAME traefik-cl01tl
jellyfin IN CNAME traefik-cl01tl jellyfin IN CNAME traefik-cl01tl
jellystat IN CNAME traefik-cl01tl jellystat IN CNAME traefik-cl01tl

View File

@@ -1,7 +1,7 @@
--- ---
services: services:
traefik: traefik:
image: ghcr.io/traefik/traefik:v3.6.8 image: ghcr.io/traefik/traefik:v3.6.9
container_name: traefik container_name: traefik
command: command:
- "--global.checkNewVersion=false" - "--global.checkNewVersion=false"

View File

@@ -122,7 +122,6 @@ customDNS:
home-assistant IN CNAME traefik-cl01tl home-assistant IN CNAME traefik-cl01tl
home-assistant-code-server IN CNAME traefik-cl01tl home-assistant-code-server IN CNAME traefik-cl01tl
hubble IN CNAME traefik-cl01tl hubble IN CNAME traefik-cl01tl
huntarr IN CNAME traefik-cl01tl
immich IN CNAME traefik-cl01tl immich IN CNAME traefik-cl01tl
jellyfin IN CNAME traefik-cl01tl jellyfin IN CNAME traefik-cl01tl
jellystat IN CNAME traefik-cl01tl jellystat IN CNAME traefik-cl01tl

View File

@@ -1,7 +1,7 @@
--- ---
services: services:
traefik: traefik:
image: ghcr.io/traefik/traefik:v3.6.8 image: ghcr.io/traefik/traefik:v3.6.9
container_name: traefik container_name: traefik
command: command:
- "--global.checkNewVersion=false" - "--global.checkNewVersion=false"

View File

@@ -20,7 +20,7 @@ services:
- /dev/net/tun:/dev/net/tun - /dev/net/tun:/dev/net/tun
traefik: traefik:
image: ghcr.io/traefik/traefik:v3.6.8 image: ghcr.io/traefik/traefik:v3.6.9
container_name: traefik container_name: traefik
command: command:
- "--global.checkNewVersion=false" - "--global.checkNewVersion=false"