From 32395bac5d0f10a42324ecf5e2c771e626b12b8d Mon Sep 17 00:00:00 2001 From: Trey T Date: Thu, 4 Jun 2026 23:20:58 -0500 Subject: [PATCH] =?UTF-8?q?Book=20reader=20=E2=80=94=20speed=20as=20a=205-?= =?UTF-8?q?option=20dropdown=20with=20multiplier=20labels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .../Conjuga/Views/Practice/Books/BookReaderView.swift | 2 +- .../Views/Practice/Books/BookVoicePickerSheet.swift | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Conjuga/Conjuga/Views/Practice/Books/BookReaderView.swift b/Conjuga/Conjuga/Views/Practice/Books/BookReaderView.swift index 6b07de2..4eba483 100644 --- a/Conjuga/Conjuga/Views/Practice/Books/BookReaderView.swift +++ b/Conjuga/Conjuga/Views/Practice/Books/BookReaderView.swift @@ -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 diff --git a/Conjuga/Conjuga/Views/Practice/Books/BookVoicePickerSheet.swift b/Conjuga/Conjuga/Views/Practice/Books/BookVoicePickerSheet.swift index 25d4e21..24da951 100644 --- a/Conjuga/Conjuga/Views/Practice/Books/BookVoicePickerSheet.swift +++ b/Conjuga/Conjuga/Views/Practice/Books/BookVoicePickerSheet.swift @@ -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 {