Finalize macOS camera stability and App Store polish - #1
Conversation
james8464
left a comment
There was a problem hiding this comment.
Independent code review
Initial review found two blocking lifecycle races and one settings consistency warning:
- concurrent recording startup could begin before ownership was recorded
- session restart could overlap movie-file finalization
- device switching did not reapply selected resolution and frame rate
All were fixed in 04d825e and independently re-reviewed. No Critical or Important findings remain. Verdict: READY WITH WARNINGS.
Platform note: AVCaptureMovieFileOutput.availableVideoCodecTypes is unavailable on macOS, so unsupported-codec failures are handled through the recording delegate with actionable H.264 guidance.
Remaining physical-camera, microphone, permission, disconnect, and App Store archive validation is tracked in #2.
james8464
left a comment
There was a problem hiding this comment.
Copy review: user-facing text is now direct and specific. Format descriptions no longer sound promotional, error messages say what happened and what to do next, VoiceOver hints use macOS language instead of “double tap,” and the camera and microphone prompts explain exactly what is saved or sent.
Code comments and existing commit subjects were already concise, so they were left alone. No behaviour changed.
Release build and Analyze pass. LGTM.
james8464
left a comment
There was a problem hiding this comment.
Settings review: unsupported resolutions and frame rates are now disabled from the active camera’s live AVFoundation capabilities. The picker also repairs saved settings that became invalid after switching cameras. Runtime validation remains in place for device changes while recording.
Release build and Analyze pass.
james8464
left a comment
There was a problem hiding this comment.
Copy review: tightened visible app text, settings labels, and permission prompts so they read like native macOS UI rather than generated product copy. Release build and Analyze both pass after the copy pass.
james8464
left a comment
There was a problem hiding this comment.
Camera-effects review: replaced the app-drawn Edge Light overlay with AVFoundation system-effect adoption. The app now follows Portrait, Studio Light, Center Stage, and macOS 26.2 Edge Light where supported, and constrains frame-rate choices while those effects are active. Release build and Analyze pass.
james8464
left a comment
There was a problem hiding this comment.
Crash fix: Edge Light exposed an unsafe KVO callback check. The observer now uses a private context pointer and removes observations with the same context, so AVFoundation effect updates never reach NSObject's exception-throwing fallback. Release build and Analyze pass.
james8464
left a comment
There was a problem hiding this comment.
Crash-hardening review: audited capture, permissions, storage, device switching, effects, settings, and teardown paths. Added guards for invalid timer ranges and effect-incompatible frame durations before they reach AVFoundation. No force unwraps, try!, fatal traps, or uncontexted KVO registrations remain. Release build and Analyze pass.
james8464
left a comment
There was a problem hiding this comment.
Feature removal review: removed all app-side Portrait, Studio Light, Edge Light, Center Stage, reaction, and background-effect support, including effect UI and AVFoundation KVO observers. Release build and Analyze pass.
Summary
Root causes
The build was compiling duplicate synchronized Swift sources. Runtime risk was concentrated in overlapping capture/record operations, session reconfiguration during recording finalization, unsupported device settings, and unbalanced security-scoped URL ownership.
Commit groups
e35b84c— Harden camera capture and storage298f0c0— Polish camera interface and accessibility65f77c3— Add complete macOS app icon set04d825e— Serialize recording lifecycleReview
An independent findings-first review identified two blocking recording lifecycle races. Commit
04d825eresolves both. Re-review found no remaining Critical or Important issues and rated the branch ready with warnings.AVCaptureMovieFileOutput.availableVideoCodecTypesis unavailable on macOS, so codec failures remain delegate-handled with actionable H.264 guidance.Validation
generic/platform=macOS: passed (x86_64 arm64)git diff --check: passed/Users/james/Picturestarget: passedResidual manual checks before App Store submission