Book reader — speed as a 5-option dropdown with multiplier labels

Replace the 3-way segmented speed control with a dropdown menu offering
0.5× / 0.75× / 1× / 1.25× / 1.5×, with evened-out underlying AVSpeech
rates anchored at 1× = 0.50. Align the default saved rate to 0.50 so 1×
is selected on a fresh install (was 0.45, which matched no option).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-06-04 23:20:58 -05:00
parent b97da5e85e
commit 32395bac5d
2 changed files with 7 additions and 5 deletions
@@ -32,7 +32,7 @@ struct BookReaderView: View {
}
@AppStorage("bookReaderVoiceId") private var storedVoiceId: String = ""
@AppStorage("bookReaderRate") private var storedRate: Double = 0.45
@AppStorage("bookReaderRate") private var storedRate: Double = 0.50
init(chapter: BookChapter) {
self.chapter = chapter
@@ -42,11 +42,13 @@ struct BookVoicePickerSheet: View {
Form {
Section("Speed") {
Picker("Speed", selection: $rate) {
Text("Slow").tag(Float(0.40))
Text("Normal").tag(Float(0.50))
Text("Fast").tag(Float(0.55))
Text("0.5×").tag(Float(0.30))
Text("0.75×").tag(Float(0.40))
Text("1×").tag(Float(0.50))
Text("1.25×").tag(Float(0.575))
Text("1.5×").tag(Float(0.65))
}
.pickerStyle(.segmented)
.pickerStyle(.menu)
}
if groups.isEmpty {