feat: in-reader settings, more like this, reading history, audio filter, feed page
Some checks failed
Release / Test backend (push) Successful in 38s
Release / Check ui (push) Failing after 33s
Release / Docker / ui (push) Has been skipped
Release / Docker / caddy (push) Successful in 51s
Release / Docker / backend (push) Successful in 2m20s
Release / Docker / runner (push) Successful in 2m28s
Release / Gitea Release (push) Has been skipped

- Add floating gear button + theme/font/size drawer in chapter reader
- Add 'More like this' horizontal scroll row on book detail page
- Add reading history tab on profile page (chronological progress timeline)
- Add audio-available badge + filter toggle on catalogue (GET /api/audio/slugs)
- Fix discover card entry animation pop (split entry vs snap-back cubic-bezier)
- Add dedicated /feed page showing books followed users are reading
- Add Feed nav link (desktop + mobile) in all 5 locales
This commit is contained in:
Admin
2026-04-03 22:32:37 +05:00
parent 28fee7aee3
commit 8588475d03
27 changed files with 900 additions and 104 deletions

View File

@@ -1034,6 +1034,15 @@ export async function listAudioJobs(): Promise<AudioJob[]> {
return listAll<AudioJob>('audio_jobs', '', '-started');
}
/**
* Returns the set of book slugs that have at least one completed audio job.
* Used by the catalogue page to show audio-available badges.
*/
export async function getSlugsWithAudio(): Promise<Set<string>> {
const jobs = await listAll<AudioJob>('audio_jobs', 'status="done"', 'slug');
return new Set(jobs.map((j) => j.slug));
}
// ─── Translation jobs ─────────────────────────────────────────────────────────
export interface TranslationJob {