Skip to content

Declare the Video Effects Info.plist opt-ins — the panel was empty by policy#78

Merged
MyNamesEMurray merged 1 commit into
mainfrom
claude/init-lklchz
Jul 25, 2026
Merged

Declare the Video Effects Info.plist opt-ins — the panel was empty by policy#78
MyNamesEMurray merged 1 commit into
mainfrom
claude/init-lklchz

Conversation

@MyNamesEMurray

Copy link
Copy Markdown
Owner

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:

  • effect-capable formats provably chosen and active on the front camera, panel blank anyway;
  • blank on every camera and setting;
  • the beta.1 frame-duration experiment changing nothing — the lock was never reachable as a cause behind the missing declarations.

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.yml parses; the keys ride the app target's info.properties into 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

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
@MyNamesEMurray
MyNamesEMurray merged commit 1895e8c into main Jul 25, 2026
6 checks passed
@MyNamesEMurray
MyNamesEMurray deleted the claude/init-lklchz branch July 25, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants