Declare the Video Effects Info.plist opt-ins — the panel was empty by policy#78
Merged
Conversation
Root cause of the blank Control Center Video Effects panel, after two rounds of chasing capture configuration: iOS only auto-populates that panel for VoIP/conferencing apps. A plain camera app must declare each effect in its Info.plist (NSCameraPortraitEffectEnabled, NSCameraStudioLightEnabled, NSCameraReactionEffectGesturesEnabled) or the panel stays empty regardless of what the active format's capability flags advertise. LensLink never declared any of them, which explains every observation at once: effect-capable formats provably chosen and active with a blank panel; blank on every camera and setting; and the frame-duration experiment (v1.8.1-beta.1) changing nothing -- the lock was never reachable as a cause behind the missing declarations. Apple's other documented gate corroborates the diagnostics table from the reproducing iPhone 15 Pro: formats above 1920x1440 are excluded from effects, and every flagless row on the front camera is exactly the ones above that line. The "Allow system video effects" toggle stays: with the panel now populated, effects that cap the capture rate can grey out at 60 fps, and the toggle is what lets iOS vary the rate to run them. README's troubleshooting entry rewritten around the real mechanism. Release-Beta: true Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015dWUcqAkNNuNELnMPS4RdT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Root cause of the blank Control Center Video Effects panel, found after beta.1's frame-lock experiment came back negative: iOS only auto-populates that panel for VoIP/conferencing apps. A plain camera app must declare each effect in its Info.plist —
NSCameraPortraitEffectEnabled,NSCameraStudioLightEnabled,NSCameraReactionEffectGesturesEnabled— or the panel stays empty regardless of what the active format's capability flags advertise. LensLink never declared any of them.This explains every observation at once:
Apple's other documented gate corroborates the 15 Pro diagnostics table: formats above 1920×1440 are excluded from effects, and the flagless front-camera rows are exactly the ones above that line.
The "Allow system video effects" toggle stays: with the panel now populated, effects that cap the capture rate can grey out at 60 fps, and the toggle is what lets iOS vary the rate to run them. README troubleshooting rewritten around the real mechanism.
How it was tested
project.ymlparses; the keys ride the app target'sinfo.propertiesinto the generated Info.plist. Honest caveat: the mechanism is confirmed by Apple's developer documentation/forums, but the end-to-end proof is the device — front camera, 1080p/30, Control Center: the panel should now show Portrait/Studio Light/Reactions toggles. If it populates, this was the whole story; if toggles appear but grey at 60 fps, flip Allow system video effects — that's the case the beta.1 toggle exists for.Merging publishes v1.8.1-beta.2, internal TestFlight only.
Sources for the mechanism: Apple Developer Forums — enabling the Portrait effect in a third-party camera app, 9to5Mac — iOS 15 portrait video effects in third-party apps.
🤖 Generated with Claude Code
https://claude.ai/code/session_015dWUcqAkNNuNELnMPS4RdT
Generated by Claude Code