El fix anterior arreglo los permisos —el crash se movio de start a beginSession, y de TCC a AVAudioNodeTap::CheckEmitBuffer— pero el tap seguia petando. Mi error: quitar el acceso a self del closure no elimina la inferencia de aislamiento. La inferencia viene de DONDE se escribe el closure, no de lo que captura. Escrito dentro de un metodo @MainActor, seguia siendo main-actor isolated, y el tap se dispara desde el hilo de audio en tiempo real. Ahora el handler se construye en makeTapHandler, que es nonisolated, y se pasa a installTap. La estructura se auto-verifica: quitarle nonisolated a makeTapHandler no compila, porque installTap es nonisolated y no puede llamar a un metodo aislado. El bug pasa de crash en produccion a error de compilacion. Tests: testTapHandlerRunsOffTheMainThread invoca el handler desde una cola de fondo, que es exactamente la condicion que trapeaba. No hace falta microfono; el intento anterior con AVAudioEngine se saltaba siempre porque el simulador no tiene entrada de audio utilizable. Barrido del mismo patron en el resto de servicios @MainActor: CalendarService y NotificationService usan las variantes async/await, que estan anotadas y no tienen closures. SpeechDictationService era el unico sitio. Lanes feedback y crashlog para leer los reportes de TestFlight desde la API: spaceship apunta a v1/betaFeedbacks, que Apple ya retiro; el endpoint vivo es v1/apps/<id>/betaFeedbackCrashSubmissions y el log viene inline en logText. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
1.7 KiB
fastlane documentation
Installation
Make sure you have the latest version of the Xcode command line tools installed:
xcode-select --install
For fastlane installation instructions, see Installing fastlane
Available Actions
iOS
ios beta
[bundle exec] fastlane ios beta
Push a new beta build to TestFlight
ios feedback
[bundle exec] fastlane ios feedback
Show the latest TestFlight beta feedback (tester reports and crashes)
ios crashlog
[bundle exec] fastlane ios crashlog
Download the crash log of a TestFlight feedback submission (id from feedback)
ios status
[bundle exec] fastlane ios status
Show the App Store state of each version (review status, release type)
ios submit
[bundle exec] fastlane ios submit
Submit an already-uploaded build for App Store review (automatic release)
ios refresh_dsyms
[bundle exec] fastlane ios refresh_dsyms
Download processed dSYMs from App Store Connect and send them to Crashlytics
ios publish
[bundle exec] fastlane ios publish
Upload metadata + localized screenshots for an existing TestFlight build (no rebuild, no submit)
ios release
[bundle exec] fastlane ios release
Push a new release build to the App Store
This README.md is auto-generated and will be re-generated every time fastlane is run.
More information about fastlane can be found on fastlane.tools.
The documentation of fastlane can be found on docs.fastlane.tools.