-
v3.0.20260413-notifications
Stablereleased this
2026-04-13 21:19:07 +05:00 | -525 commits to main since this release- Add bookstore.NotificationStore interface and wire it directly to *storage.Store
in Dependencies, bypassing the Asynq wrapper that caused Producer.(*storage.Store)
to fail with a 500 on every notification endpoint when Redis is configured - Replace s.deps.Producer.(*storage.Store) type assertion in all 5 notification
handlers with s.deps.NotificationStore (nil-safe, always works) - Fix PocketBase filter single-quote bug in ListNotifications, ClearAllNotifications,
and MarkAllNotificationsRead (PocketBase requires double quotes for string values)
Downloads
- Add bookstore.NotificationStore interface and wire it directly to *storage.Store
-
v2.6.93
Stablereleased this
2026-04-13 21:14:33 +05:00 | -524 commits to main since this releaseThe {#await ... then} + {@const} IIFE pattern for assigning to $state
variables stopped working reliably in Svelte 5.53+. Replaced with a
proper $effect that awaits both streamed promises and assigns to state,
which correctly triggers reactivity.Also: switch library page selection mode entry from long-press to a
'Select' button in the page header.Downloads
-
v2.6.92
Stablereleased this
2026-04-13 21:08:51 +05:00 | -523 commits to main since this releaseDownloads
-
v2.6.91
Stablereleased this
2026-04-13 19:57:01 +05:00 | -522 commits to main since this releaseDownloads
-
v2.6.89
Stablereleased this
2026-04-13 10:33:02 +05:00 | -520 commits to main since this releaseDownloads
-
v2.6.88
Stablereleased this
2026-04-12 22:49:26 +05:00 | -519 commits to main since this releaseDownloads
-
v3-cleanup-20260413b
Stablereleased this
2026-04-12 18:47:40 +05:00 | -515 commits to main since this releaseThe SSE (non-async) chapter-names handler streamed results to the client
but never wrote them into the PocketBase job payload — only the initial
{pattern} stub was stored. The Review button then fetched the job and
found no results, showing 'No results found in this job's payload.'Fix: accumulate allResults across batches (same as the async handler) and
write the full {pattern, slug, results:[...]} payload when marking done.Downloads
-
v3-cleanup-20260413
Stablereleased this
2026-04-12 17:56:58 +05:00 | -513 commits to main since this release- Add notify_new_chapters_push field to AppUser, PATCH /api/profile, and profile loader
- Fix bell panel to reload notifications on every open (not just once on mount)
- Replace flat in-app + push toggles with structured category table (Category | In-app | Push)
- Add browser push master subscribe/unsubscribe row above the table
- Push column toggle disabled until browser is subscribed; shows — when unsupported/denied
- Update Notifications row hint to summarise active channels (In-app · Push / Off)
Downloads
-
v3-cleanup-20260412b
Stablereleased this
2026-04-12 17:42:53 +05:00 | -511 commits to main since this releaseDownloads
-
v2.6.86
Stablereleased this
2026-04-12 11:13:36 +05:00 | -510 commits to main since this release- getReadyChaptersForSlug(slug, preferredVoice) in pocketbase.ts: per-slug done jobs map, cached 60s, prefers user's voice
- GET /api/audio/chapters?slug=&voice= endpoint
- Chapter list (/books/[slug]/chapters): amber headphones icon on ready rows, play button for instant listen, banner showing ready count
- Chapter reader: audioReady + availableVoice from server load; 'Audio ready — Listen now' banner shown when audio exists and player is not yet active; sets voice preference before expanding player
Downloads