v0.3.1
What's new
iOS: Fix crash — missing NSMicrophoneUsageDescription
Apps using audioStart() crashed on launch because Info.plist lacked privacy usage descriptions. Now included by default, and customizable via perry.toml:
[ios.info_plist]
NSMicrophoneUsageDescription = "Measures ambient sound levels"Custom Info.plist entries
Any Info.plist key can now be set via [ios.info_plist] in perry.toml — privacy descriptions, URL schemes, background modes, etc.
Android: Automatic permission requests at startup
PerryActivity requests all manifest-declared dangerous permissions before native code runs. No manual permission handling needed.
Android: Canvas rendering fixes
- Thread-local → global Mutex for cross-thread canvas state
- Fixed drawLine JNI signature typo
- Explicit LayoutParams for visible canvas dimensions
- Transparent clear instead of opaque white
Android: Text "undefined" fix
Fixed null Typeface in set_font_weight() corrupting text content.
Audio capture API (all platforms)
Real-time A-weighted dB(A) via perry/system: macOS/iOS (AVAudioEngine), Android (AudioRecord/JNI), Linux (PulseAudio), Windows (WASAPI), Web (getUserMedia).