Back to Provenance

3562

.changelog/3562.md

3.3.11.5 KB
Original Source

Added

  • Feature Flag allowedPlatforms — New optional allowedPlatforms field on FeatureFlag gates features to specific OS platforms (ios, tvos, macos, visionos); nil means all platforms (backwards-compatible default).
  • tvOS: dynamicLibretroScanner on by defaultPVThinLibretroCore thin wrapper is now the default core factory on tvOS; iOS retains the old off-by-default behavior.
  • PVPlatform enumios, tvos, macos, visionos with a current compile-time property; lives in PVFeatureFlags alongside PVAppType.

Fixed

  • skinButtonReposition syntax error — Fixed missing closing parenthesis in FeatureFlag static definition.
  • Bundled config auto-loaded at startupPVFeatureFlags.init() now eagerly loads features.json so platform-gated defaults (e.g. dynamicLibretroScanner on tvOS) are active from the first flag read, before any remote config is fetched.
  • airPlayMenu missing from features.json — Added the missing entry; previously getAllFeatureFlags() returned "Feature not defined in configuration" as the description.

Changed

  • RetroArch Settings UI — The RetroArch Settings row in the app settings is now hidden when the RetroArch framework is not installed (e.g. on tvOS-Lite builds).
  • PVCoreFactory platform gate — Replaced manual UserDefaults + override-dict check with PVFeatureFlags.shared.isEnabled(.dynamicLibretroScanner) so the platform gate is applied automatically.