06d4a7bfd47f56602226ed92719f31f968969c2d
All checks were successful
Release / Test backend (push) Successful in 43s
Release / Check ui (push) Successful in 46s
Release / Docker / caddy (push) Successful in 52s
Release / Docker / backend (push) Successful in 2m32s
Release / Docker / ui (push) Successful in 2m15s
Release / Docker / runner (push) Successful in 2m50s
Release / Gitea Release (push) Successful in 22s
**Profile stats tab** - New Stats tab on /profile page (Profile / Stats switcher) - Reading overview: chapters read, completed, reading, plan-to-read counts - Activity cards: day streak + avg rating given - Favourite genres (top 3 by frequency across library/progress) - getUserStats() in pocketbase.ts — computes streak, shelf counts, genre freq **Discover history tab** - New History tab on /discover with full voted-book list - Per-entry: cover thumbnail, title link, author, action label (Liked/Skipped/etc.) - Undo button: optimistic update + DELETE /api/discover/vote?slug=... - Clear all history button; tab shows vote count badge - getVotedBooks(), undoDiscoveryVote() in pocketbase.ts **Rating-ranked discovery deck** - getBooksForDiscovery now sorts by community avg rating before returning - Tier-based shuffle: books within the same ±0.5 star bucket are still randomised - Higher-rated books surface earlier without making the deck fully deterministic **End-of-chapter sleep timer** - New cycle option: Off → End of Chapter → 15m → 30m → 45m → 60m → Off - sleepAfterChapter flag in AudioStore; layout handles it in onended (skips auto-next) - Button shows "End Ch." label when active in this mode Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
LibNovel
Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.
Requirements
- Docker + Docker Compose
- just
- Doppler CLI
Setup
doppler login
doppler setup # project=libnovel, config=prd
Usage
just up # start everything
just down # stop
just logs # tail all logs
just log backend # tail one service
just build # rebuild images
just restart # down + up
just secrets # view/edit secrets
Secrets
Managed via Doppler (project=libnovel, config=prd). No .env files.
To add or update a secret:
doppler secrets set MY_SECRET=value
Description