iOS: "Allow system video effects" experiment; Center Stage wording#64
Open
MyNamesEMurray wants to merge 2 commits into
Open
iOS: "Allow system video effects" experiment; Center Stage wording#64MyNamesEMurray wants to merge 2 commits into
MyNamesEMurray wants to merge 2 commits into
Conversation
Field data from the iPhone 15 Pro that reproduces the empty Video Effects panel: the front camera's formats DO advertise Portrait / Studio Light / Reactions (the diagnostics table shows flags on nearly everything up to 1440p, including the first-listed formats), and the rear cameras advertise nothing at all — so format selection was never the limiting factor, and the effects stay absent even on an effect-flagged format. The remaining variable that separates us from apps where the effects work is the hard frame-duration lock (min = max = 1/fps). New Options toggle (default off): keep the min duration — the rate can never exceed the user's choice — but leave the max at the format default, giving iOS the downward flexibility the effects appear to require. Single-variable experiment: if the Control Center panel populates with the toggle on, the lock was the gate and the toggle graduates to a documented feature; if not, the next bisect is a vanilla-session probe. PERFORMANCE.md's cadence-lock divergence note records the exception. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ds2wz6ag94k59WUmtJfgxq
The selection and diagnostics logic was already purely flag-driven (isCenterStageSupported per format, any camera), but the README and a comment editorialized "iPad-only" — stale as of the iPhone 17 generation, which brings Center Stage to front and rear cameras. The docs now defer to the app's Camera diagnostics table as the per-device source of truth. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ds2wz6ag94k59WUmtJfgxq
MyNamesEMurray
force-pushed
the
claude/ios-cleanup-readme-review-ms6wi8
branch
from
July 22, 2026 02:52
e1fafee to
79a2b1d
Compare
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
Continuing the empty-Video-Effects-panel investigation with field data from the reproducing iPhone 15 Pro (iOS 27): the diagnostics table shows the front camera's formats do advertise Portrait/Studio Light/Reactions — including the first-listed formats the picker already chose — and the rear cameras advertise nothing at all. So format selection was never the limiting factor, and the panel stays empty even on an effect-flagged format. The remaining variable separating LensLink from effect-working apps is the hard frame-duration lock (
min = max = 1/fps).How it was tested
Swift parse check locally; type check in this PR's macOS CI job. The experiment is the test: on the next TestFlight build — front camera, 1080p/30 — Control Center with the toggle off (baseline: empty) vs. on (hypothesis: populated). The reproducing device's diagnostics table is captured in the PR trail.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ds2wz6ag94k59WUmtJfgxq
Generated by Claude Code