ac7b686fba2e717e217ea3d1df65ebb4441eb4c9
All checks were successful
Release / Test backend (push) Successful in 41s
Release / Check ui (push) Successful in 45s
Release / Docker / caddy (push) Successful in 45s
Release / Docker / backend (push) Successful in 2m53s
Release / Docker / runner (push) Successful in 2m34s
Release / Docker / ui (push) Successful in 1m56s
Release / Gitea Release (push) Successful in 20s
The save-settings $effect was firing on the initial data load because settingsApplied was set to true synchronously in the apply effect, then currentTheme/fontFamily/fontSize were written in the same tick — causing the save effect to immediately fire with uninitialized default values (theme: "", fontFamily: "", fontSize: 0), producing a 400 error. - Add settingsDirty flag, set via setTimeout(0) after initial apply so the save effect is blocked for the first load and only runs on real user-driven changes - Also accept empty string / 0 as 'not provided' in PUT /api/settings validation as a defensive backstop
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