authorclover caruso <git@paperclover.net> 2026-10-15 23:29:16-07:00
committerclover caruso <git@paperclover.net> 2026-10-15 23:54:24-07:00
log486eeeb292a5b37fb9af763e9ee014c61bcbdd9c
tree5d1b8d7edf2db124a0762d460fd5734a7112c8aa
parent8bafe305be064627aa2527be1b4c4b45efb185b0
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU (~clover)

feat(ios): offer the Reading View on every page that reflows

The Reading View button no longer waits behind a launch argument: it shows beside the page menu wherever the page can reflow into the screen's width, and the page menu always lists it. Refs #128 Assisted-by: claude-opus-5.5

2 files changed, 5 insertions(+), 8 deletions(-)

apps/ios/Snowbound/PageViewController.swift+2-2
......@@ -115,7 +115,7 @@ final class PageViewController: UIViewController, PHPickerViewControllerDelegate
115115 if revealed || titleFocus && canvas.focusTitle() {
116116 _ = canvas.becomeFirstResponder()
117117 }
118 if Prototype.reading, canvas.reading?.offered == true {
118 if canvas.reading?.offered == true {
119119 reader = UIBarButtonItem(
120120 title: "Reading View", image: UIImage(systemName: "text.justify.left"),
121121 primaryAction: UIAction { [weak self] _ in self?.toggleReading() })
......@@ -201,7 +201,7 @@ final class PageViewController: UIViewController, PHPickerViewControllerDelegate
201201 ) { [weak self] _ in self?.record(video: true) },
202202 ]),
203203 ])
204 return (Prototype.reading ? [readingAction()] : []) + [
204 return [readingAction()] + [
205205 insert,
206206 UIAction(title: "Page Background", image: UIImage(systemName: "paintpalette"), attributes: editable) {
207207 [weak self] _ in self?.showPaper()
apps/ios/Snowbound/Prototypes.swift+3-6
......@@ -1,12 +1,9 @@
11import UIKit
22
33/// Design prototypes, off unless a launch argument turns one on, as
4/// `-SnowboundReading YES`, `-SnowboundWelcome YES`, `-SnowboundSectionStrip YES` or
5/// `-SnowboundQuickNote YES` (Xcode's scheme, `simctl launch`, or `devicectl … --arguments`).
6enum Prototype {
7 /// Page menu: Reading View, the page reflowed into the screen's width.
8 static var reading: Bool { UserDefaults.standard.bool(forKey: "SnowboundReading") }
9}
4/// `-SnowboundWelcome YES`, `-SnowboundSectionStrip YES` or `-SnowboundQuickNote YES`
5/// (Xcode's scheme, `simctl launch`, or `devicectl … --arguments`).
6enum Prototype {}
107
118extension Prototype {
129 /// First launch: a welcome where the list would be empty, the first notebook found opened