Admin bdbe48ce1a
All checks were successful
Release / Test backend (push) Successful in 37s
Release / Check ui (push) Successful in 56s
Release / Docker / caddy (push) Successful in 41s
Release / Docker / backend (push) Successful in 2m53s
Release / Docker / runner (push) Successful in 3m13s
Release / Docker / ui (push) Successful in 2m25s
Release / Gitea Release (push) Successful in 50s
fix: register MediaSession action handlers for iOS lock screen resume
Without explicit setActionHandler('play'/'pause'/...) the browser uses
default handling which on iOS Safari stops working after ~1 min of
pause in background/locked state (AudioSession gets suspended and the
lock screen button can't resume it without a direct user gesture).

Registering handlers in the layout (where audioEl lives) ensures:
- play/pause call audioEl directly — iOS treats this as a trusted
  gesture and allows .play() even from the lock screen
- seekbackward/seekforward map to ±15s / ±30s
- playbackState stays in sync so the lock screen shows the right icon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 18:22:09 +05:00

LibNovel

Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.

Requirements

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
No description provided
Readme 88 MiB
v4.5.5 Latest
2026-04-27 11:46:23 +05:00
Languages
Go 99.4%
Dockerfile 0.6%