-
v2.6.74
Stablereleased this
2026-04-11 17:20:14 +05:00 | -497 commits to main since this releaseDownloads
-
v2.6.73
Stablereleased this
2026-04-11 16:00:53 +05:00 | -496 commits to main since this releaseFloat mode was broken because AudioPlayer was unmounted the moment
audioStore.active became true — exactly when the float overlay needs
to render. Fix: keep AudioPlayer mounted in float and minimal modes
regardless of audioStore.active; only standard mode shows the
'Controls below' message.Adds a third 'minimal' style: a compact single-row bar (skip ±,
play/pause, seek, time) with no voice picker or chapter browser.
Voice picker and chapter button are hidden in the idle pill too.Settings UI updated to show all three options with a live
description of what each style does.Downloads
-
v2.6.72
Stablereleased this
2026-04-11 15:52:20 +05:00 | -495 commits to main since this releaseUp/down chevron buttons fixed to the bottom-right of the viewport.
At the top of the chapter the up button becomes a Prev chapter link;
at the bottom the down button becomes an amber Next chapter link.
Hidden in focus mode (uses its own pill). Lifts above the audio
mini-player when it is active.Downloads
-
v2.6.71
Stablereleased this
2026-04-11 15:47:05 +05:00 | -494 commits to main since this release- Replace bell dropdown with full-screen NotificationsModal (mirrors SearchModal pattern)
- Notifications visible to all logged-in users (not just admin)
- Admin users excluded from new-chapter fan-out (dedup vs Scrape Complete notification)
- Users with notify_new_chapters=false opted out of new-chapter in-app notifications
- Toggle in profile page to enable/disable in-app new-chapter notifications
- PATCH /api/profile endpoint to save notification preferences
- User-facing /notifications page (admin redirects to /admin/notifications)
Downloads
-
v3-cleanup-20260411b
Stablereleased this
2026-04-11 15:31:49 +05:00 | -494 commits to main since this release- Replace bell dropdown with full-screen NotificationsModal (mirrors SearchModal pattern)
- Notifications visible to all logged-in users (not just admin)
- Admin users excluded from new-chapter fan-out (dedup vs Scrape Complete notification)
- Users with notify_new_chapters=false opted out of new-chapter in-app notifications
- Toggle in profile page to enable/disable in-app new-chapter notifications
- PATCH /api/profile endpoint to save notification preferences
- User-facing /notifications page (admin redirects to /admin/notifications)
Downloads
-
v2.6.70
Stablereleased this
2026-04-11 15:13:40 +05:00 | -493 commits to main since this releaseDownloads
-
v3-cleanup-20260411
Stablereleased this
2026-04-11 14:59:28 +05:00 | -492 commits to main since this release- Service worker (src/service-worker.ts) handles push events and
notification clicks, navigating to the book page on tap - Web app manifest (manifest.webmanifest) linked in app.html
- Profile page: push notification toggle (subscribe/unsubscribe)
using the browser Notification + PushManager API with VAPID - API route POST/DELETE /api/push-subscription proxies to backend
- Go backend: push_subscriptions PocketBase collection storage
methods (SavePushSubscription, DeletePushSubscription,
ListPushSubscriptionsByBook) in storage/store.go - handlers_push.go: GET vapid-public-key, POST/DELETE subscription
- webpush package: VAPID-signed sends via webpush-go, SendToBook
fans out to all users who have the book in their library - Runner fires push to subscribers whenever ChaptersScraped > 0
after a successful book scrape - Config: VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT env vars
- domain.ScrapeResult gets a Slug field; orchestrator populates it
Downloads
- Service worker (src/service-worker.ts) handles push events and
-
v2.6.69
Stablereleased this
2026-04-11 12:41:04 +05:00 | -491 commits to main since this releaseDemote per-book and per-chapter-list-page Info logs to Debug — these
fire hundreds of times per catalogue run and drown out meaningful signals:- orchestrator: RunBook starting (per book)
- metadata saved (per book)
- chapter list fetched (per book)
- scraping chapter list page N (per pagination page per book)
The 'book scrape finished' summary log (with scraped/skipped/errors
counters) remains at Info — it is the useful signal per book.Downloads
-
v2.6.68
Stablereleased this
2026-04-11 12:33:35 +05:00 | -490 commits to main since this releaseTwo bugs fixed in runScrapeTask / runCatalogueTask:
-
FinishScrapeTask was called with the task's own context, which is
already cancelled when the task is stopped. The PATCH to PocketBase
failed silently, leaving all counters at their initial zero values.
Fix: use a fresh context.WithTimeout(Background, 15s) for the write. -
BooksFound was double-counted: RunBook already sets BooksFound=1 on
success, but the accumulation loop added an extra +1 unconditionally,
reporting 2 books per successful scrape.
Fix: result.BooksFound += bookResult.BooksFound (drop the + 1).
Downloads
-
-
v2.6.67
Stablereleased this
2026-04-11 10:41:43 +05:00 | -489 commits to main since this releaseRemove the TTS voice section from the profile page — it fetched
/api/voices on every mount, blocking paint for the full round-trip.
Voice selection lives on the chapter page where voices are already loaded.Rewrite the server load to run avatar, sessions+stats, and reading history
all concurrently via Promise.allSettled instead of sequentially, cutting
SSR latency by ~2-3x on the profile route.Downloads