From 3db311da1368b443663379f56061399c297c9948 Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Sun, 27 Sep 2026 18:49:25 +1000 Subject: [PATCH] iPhone app: declare photo saving so Save Image appears; record what was tested The share sheet only offers Save Image when the app declares NSPhotoLibraryAddUsageDescription; without it screenshots couldn't be saved to Photos. docs/iphone.md now lists what was verified against the Frame (Bonjour discovery, waiting and reconnecting, upload, share sheet, install links, opening Steam Link) and the two permission prompts iOS shows. Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/iphone.md | 14 ++++++++++++++ ios/FrameControl/Info.plist | 2 ++ ios/project.yml | 1 + 3 files changed, 17 insertions(+) diff --git a/docs/iphone.md b/docs/iphone.md index 371955c..b09920d 100644 --- a/docs/iphone.md +++ b/docs/iphone.md @@ -87,6 +87,20 @@ check (a wrong or missing password refused; the right one reaches `systemctl`), a changed host key refused with "Pair with the Frame again", and a wrong pairing password reported the same way. +Also verified in the Simulator against the Frame (2026-09-27): the setup screen +found the Frame by itself over Bonjour (`frame · 192.168.1.237`); a paired app +waiting for a sleeping Frame connected 4 s after it answered; an upload from the +app's web view landed in `~/Downloads`; the share sheet offers Save Image +(needs `NSPhotoLibraryAddUsageDescription`, now declared); an install link opens +the confirm dialog and downloads nothing until Install; Steam Link without the +app installed opens its App Store page. + +Things iOS asks the first time: **Local Network** (tap Allow, or the app can't +see the Frame), and **Paste** when you send the iPhone's clipboard (tap Allow +Paste, or set Settings → Apps → Frame Control → Paste from Other Apps → Allow). +Sending text to the Frame's clipboard needs the desktop panel open in the +headset, as on the desktop app. + Not yet exercised: Android display changes through podman (no Android app was running), a real sleep/restart/shut down on the Frame, and a physical iPhone. diff --git a/ios/FrameControl/Info.plist b/ios/FrameControl/Info.plist index 40018d4..03d98c6 100644 --- a/ios/FrameControl/Info.plist +++ b/ios/FrameControl/Info.plist @@ -49,6 +49,8 @@ NSLocalNetworkUsageDescription Frame Control finds your Steam Frame on your network and connects to it. + NSPhotoLibraryAddUsageDescription + Frame Control saves headset captures and screenshots to your photo library when you ask it to. UILaunchScreen UIColorName diff --git a/ios/project.yml b/ios/project.yml index 4a25bb1..2b9743b 100644 --- a/ios/project.yml +++ b/ios/project.yml @@ -41,6 +41,7 @@ targets: UIUserInterfaceStyle: Dark NSLocalNetworkUsageDescription: Frame Control finds your Steam Frame on your network and connects to it. NSBonjourServices: [_steamos-devkit._tcp] + NSPhotoLibraryAddUsageDescription: Frame Control saves headset captures and screenshots to your photo library when you ask it to. NSAppTransportSecurity: NSAllowsLocalNetworking: true LSApplicationQueriesSchemes: [ssh, sftp, steamlink, rdp]