5d996f1388
* feat(downloads): make chapter download cooldown configurable The chapter download service used a hard-coded 1s sleep between sequential chapter writes. That worked as a polite default but is either too long for users with patient sources or too short for sources that 429 on tight loops. Surface the value as a single global setting instead. - AppSettings.chapterDownloadCooldownMs (optional, ms) - getChapterDownloadCooldownMs(): synchronous fallback used by the background task runner; returns the historical 1000ms when the user has not configured an override (no regression on upgrade) - downloadChapter.ts: sleep(getChapterDownloadCooldownMs()) replaces the previous hard-coded sleep(1000) - New "Chapter download cooldown" entry in General Settings, placed directly above "Disable haptic feedback". Tapping opens a modal that takes seconds (decimal allowed) and writes back as ms - The input is sanitised on every keystroke to digits + a single decimal point so paste / hardware keyboard input cannot smuggle in non-numeric characters - Reset writes the default explicitly so the user sees feedback even when the override happened to equal the default * feat(downloads): warn about source rate limits in cooldown modal Per review feedback (#1834): the cooldown modal should make the trade-off explicit so users don't lower the value below what their sources can take. Add a single error-coloured line under the input.