@mentra/engine 0.1.0-dev.0 → 3.1.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -18
- package/build/bluetooth-sdk/debug.d.ts +2 -0
- package/build/bluetooth-sdk/debug.d.ts.map +1 -0
- package/build/bluetooth-sdk/debug.js +2 -0
- package/build/bluetooth-sdk/debug.js.map +1 -0
- package/build/bluetooth-sdk/index.d.ts +3 -0
- package/build/bluetooth-sdk/index.d.ts.map +1 -0
- package/build/bluetooth-sdk/index.js +3 -0
- package/build/bluetooth-sdk/index.js.map +1 -0
- package/build/bluetooth-sdk/photo-receiver.d.ts +3 -0
- package/build/bluetooth-sdk/photo-receiver.d.ts.map +1 -0
- package/build/bluetooth-sdk/photo-receiver.js +3 -0
- package/build/bluetooth-sdk/photo-receiver.js.map +1 -0
- package/build/bluetooth-sdk/react.d.ts +2 -0
- package/build/bluetooth-sdk/react.d.ts.map +1 -0
- package/build/bluetooth-sdk/react.js +2 -0
- package/build/bluetooth-sdk/react.js.map +1 -0
- package/build/bluetooth-sdk/types.d.ts +2 -0
- package/build/bluetooth-sdk/types.d.ts.map +1 -0
- package/build/bluetooth-sdk/types.js +2 -0
- package/build/bluetooth-sdk/types.js.map +1 -0
- package/build/engine.d.ts +24 -16
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +9 -4
- package/build/engine.js.map +1 -1
- package/build/facades/dev.d.ts +3 -2
- package/build/facades/dev.d.ts.map +1 -1
- package/build/facades/dev.js +18 -12
- package/build/facades/dev.js.map +1 -1
- package/build/facades/display.d.ts +1 -1
- package/build/facades/display.d.ts.map +1 -1
- package/build/facades/display.js +1 -1
- package/build/facades/display.js.map +1 -1
- package/build/facades/gallery.js +1 -1
- package/build/facades/gallery.js.map +1 -1
- package/build/facades/glasses.d.ts +4 -13
- package/build/facades/glasses.d.ts.map +1 -1
- package/build/facades/glasses.js +21 -6
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/glassesSettings.d.ts.map +1 -1
- package/build/facades/glassesSettings.js +1 -0
- package/build/facades/glassesSettings.js.map +1 -1
- package/build/facades/miniapps.d.ts +4 -0
- package/build/facades/miniapps.d.ts.map +1 -1
- package/build/facades/miniapps.js +5 -0
- package/build/facades/miniapps.js.map +1 -1
- package/build/facades/ota.d.ts +14 -16
- package/build/facades/ota.d.ts.map +1 -1
- package/build/facades/ota.js +22 -7
- package/build/facades/ota.js.map +1 -1
- package/build/facades/pairing.d.ts +8 -5
- package/build/facades/pairing.d.ts.map +1 -1
- package/build/facades/pairing.js +12 -10
- package/build/facades/pairing.js.map +1 -1
- package/build/facades/permissions.d.ts +10 -0
- package/build/facades/permissions.d.ts.map +1 -1
- package/build/facades/permissions.js +10 -0
- package/build/facades/permissions.js.map +1 -1
- package/build/facades/phoneNotifications.d.ts +0 -4
- package/build/facades/phoneNotifications.d.ts.map +1 -1
- package/build/facades/phoneNotifications.js +4 -14
- package/build/facades/phoneNotifications.js.map +1 -1
- package/build/facades/speech.d.ts +7 -6
- package/build/facades/speech.d.ts.map +1 -1
- package/build/facades/speech.js +1 -1
- package/build/facades/speech.js.map +1 -1
- package/build/generated/releaseMetadata.d.ts +12 -0
- package/build/generated/releaseMetadata.d.ts.map +1 -0
- package/build/generated/releaseMetadata.js +10 -0
- package/build/generated/releaseMetadata.js.map +1 -0
- package/build/index.d.ts +10 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -5
- package/build/index.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.d.ts +38 -0
- package/build/react/MentraLiveOtaFlow.d.ts.map +1 -0
- package/build/react/MentraLiveOtaFlow.js +528 -0
- package/build/react/MentraLiveOtaFlow.js.map +1 -0
- package/build/react/index.d.ts +2 -0
- package/build/react/index.d.ts.map +1 -0
- package/build/react/index.js +2 -0
- package/build/react/index.js.map +1 -0
- package/build/react/useEngineSnapshot.d.ts +2 -0
- package/build/react/useEngineSnapshot.d.ts.map +1 -0
- package/build/react/useEngineSnapshot.js +14 -0
- package/build/react/useEngineSnapshot.js.map +1 -0
- package/build/runtime/bootstrap.d.ts +24 -1
- package/build/runtime/bootstrap.d.ts.map +1 -1
- package/build/runtime/bootstrap.js +17 -0
- package/build/runtime/bootstrap.js.map +1 -1
- package/build/runtime/scanQrSeam.d.ts +7 -0
- package/build/runtime/scanQrSeam.d.ts.map +1 -0
- package/build/runtime/scanQrSeam.js +16 -0
- package/build/runtime/scanQrSeam.js.map +1 -0
- package/build/services/AppRegistry.d.ts +41 -57
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +208 -144
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/AudioCloudUplink.d.ts +12 -0
- package/build/services/AudioCloudUplink.d.ts.map +1 -1
- package/build/services/AudioCloudUplink.js +22 -1
- package/build/services/AudioCloudUplink.js.map +1 -1
- package/build/services/AudioPlaybackService.d.ts +41 -2
- package/build/services/AudioPlaybackService.d.ts.map +1 -1
- package/build/services/AudioPlaybackService.js +250 -33
- package/build/services/AudioPlaybackService.js.map +1 -1
- package/build/services/BlobStore.d.ts +2 -1
- package/build/services/BlobStore.d.ts.map +1 -1
- package/build/services/BlobStore.js +17 -9
- package/build/services/BlobStore.js.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.js +13 -1
- package/build/services/CloudAudioSubscriptionSync.js.map +1 -1
- package/build/services/CloudClientService.d.ts +15 -0
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +93 -1
- package/build/services/CloudClientService.js.map +1 -1
- package/build/services/DeviceEventRouter.js +5 -5
- package/build/services/DeviceEventRouter.js.map +1 -1
- package/build/services/ForegroundLocationPermission.d.ts +13 -0
- package/build/services/ForegroundLocationPermission.d.ts.map +1 -0
- package/build/services/ForegroundLocationPermission.js +12 -0
- package/build/services/ForegroundLocationPermission.js.map +1 -0
- package/build/services/GlassesSettingsSync.d.ts.map +1 -1
- package/build/services/GlassesSettingsSync.js +9 -3
- package/build/services/GlassesSettingsSync.js.map +1 -1
- package/build/services/GlassesStatusProjection.d.ts +2 -1
- package/build/services/GlassesStatusProjection.d.ts.map +1 -1
- package/build/services/GlassesStatusProjection.js +15 -8
- package/build/services/GlassesStatusProjection.js.map +1 -1
- package/build/services/HotspotOtaTransport.d.ts +29 -0
- package/build/services/HotspotOtaTransport.d.ts.map +1 -0
- package/build/services/HotspotOtaTransport.js +146 -0
- package/build/services/HotspotOtaTransport.js.map +1 -0
- package/build/services/HotspotShutdown.d.ts +17 -0
- package/build/services/HotspotShutdown.d.ts.map +1 -0
- package/build/services/HotspotShutdown.js +29 -0
- package/build/services/HotspotShutdown.js.map +1 -0
- package/build/services/LocalDisplayManager.d.ts +15 -0
- package/build/services/LocalDisplayManager.d.ts.map +1 -1
- package/build/services/LocalDisplayManager.js +106 -20
- package/build/services/LocalDisplayManager.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +74 -2
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +785 -291
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/LocalMiniappStorage.d.ts +32 -0
- package/build/services/LocalMiniappStorage.d.ts.map +1 -0
- package/build/services/LocalMiniappStorage.js +66 -0
- package/build/services/LocalMiniappStorage.js.map +1 -0
- package/build/services/LocalMiniappUserIdentity.d.ts +20 -0
- package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
- package/build/services/LocalMiniappUserIdentity.js +43 -0
- package/build/services/LocalMiniappUserIdentity.js.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts +9 -6
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.js +18 -12
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -1
- package/build/services/MicStateCoordinator.d.ts +42 -1
- package/build/services/MicStateCoordinator.d.ts.map +1 -1
- package/build/services/MicStateCoordinator.js +141 -3
- package/build/services/MicStateCoordinator.js.map +1 -1
- package/build/services/MiniappLauncher.d.ts.map +1 -1
- package/build/services/MiniappLauncher.js +23 -3
- package/build/services/MiniappLauncher.js.map +1 -1
- package/build/services/MiniappLiveness.d.ts +12 -0
- package/build/services/MiniappLiveness.d.ts.map +1 -0
- package/build/services/MiniappLiveness.js +16 -0
- package/build/services/MiniappLiveness.js.map +1 -0
- package/build/services/NativeHttpResponse.d.ts +3 -0
- package/build/services/NativeHttpResponse.d.ts.map +1 -0
- package/build/services/NativeHttpResponse.js +6 -0
- package/build/services/NativeHttpResponse.js.map +1 -0
- package/build/services/OtaArtifactDownloader.d.ts +65 -0
- package/build/services/OtaArtifactDownloader.d.ts.map +1 -0
- package/build/services/OtaArtifactDownloader.js +226 -0
- package/build/services/OtaArtifactDownloader.js.map +1 -0
- package/build/services/OtaAutoChain.d.ts +34 -0
- package/build/services/OtaAutoChain.d.ts.map +1 -0
- package/build/services/OtaAutoChain.js +83 -0
- package/build/services/OtaAutoChain.js.map +1 -0
- package/build/services/OtaErrorMapping.d.ts +18 -0
- package/build/services/OtaErrorMapping.d.ts.map +1 -0
- package/build/services/OtaErrorMapping.js +63 -0
- package/build/services/OtaErrorMapping.js.map +1 -0
- package/build/services/OtaInstallCoordinator.d.ts +95 -15
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
- package/build/services/OtaInstallCoordinator.js +577 -130
- package/build/services/OtaInstallCoordinator.js.map +1 -1
- package/build/services/OtaService.d.ts.map +1 -1
- package/build/services/OtaService.js +8 -1
- package/build/services/OtaService.js.map +1 -1
- package/build/services/OtaUpdateCheckService.d.ts +39 -4
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
- package/build/services/OtaUpdateCheckService.js +138 -22
- package/build/services/OtaUpdateCheckService.js.map +1 -1
- package/build/services/PhoneCalendarHelpers.d.ts +32 -0
- package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
- package/build/services/PhoneCalendarHelpers.js +157 -0
- package/build/services/PhoneCalendarHelpers.js.map +1 -0
- package/build/services/PhoneCalendarService.d.ts +5 -0
- package/build/services/PhoneCalendarService.d.ts.map +1 -0
- package/build/services/PhoneCalendarService.js +45 -0
- package/build/services/PhoneCalendarService.js.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts +30 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.js +194 -0
- package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
- package/build/services/PhoneNotificationsSync.js +12 -10
- package/build/services/PhoneNotificationsSync.js.map +1 -1
- package/build/services/PhonePhotoCoordinator.d.ts +26 -2
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -1
- package/build/services/PhonePhotoCoordinator.js +79 -9
- package/build/services/PhonePhotoCoordinator.js.map +1 -1
- package/build/services/PhoneStreamCoordinator.d.ts +8 -1
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
- package/build/services/PhoneStreamCoordinator.js +125 -13
- package/build/services/PhoneStreamCoordinator.js.map +1 -1
- package/build/services/PhoneVideoCoordinator.d.ts +2 -0
- package/build/services/PhoneVideoCoordinator.d.ts.map +1 -1
- package/build/services/PhoneVideoCoordinator.js +10 -0
- package/build/services/PhoneVideoCoordinator.js.map +1 -1
- package/build/services/SceneRenderer.d.ts.map +1 -1
- package/build/services/SceneRenderer.js +15 -0
- package/build/services/SceneRenderer.js.map +1 -1
- package/build/services/SentenceTtsPipeline.d.ts +31 -0
- package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
- package/build/services/SentenceTtsPipeline.js +67 -0
- package/build/services/SentenceTtsPipeline.js.map +1 -0
- package/build/services/SupportProfileSync.d.ts +22 -0
- package/build/services/SupportProfileSync.d.ts.map +1 -0
- package/build/services/SupportProfileSync.js +213 -0
- package/build/services/SupportProfileSync.js.map +1 -0
- package/build/services/TranscriptionRouting.d.ts +12 -0
- package/build/services/TranscriptionRouting.d.ts.map +1 -0
- package/build/services/TranscriptionRouting.js +24 -0
- package/build/services/TranscriptionRouting.js.map +1 -0
- package/build/services/TtsTextSanitizer.d.ts +5 -0
- package/build/services/TtsTextSanitizer.d.ts.map +1 -0
- package/build/services/TtsTextSanitizer.js +61 -0
- package/build/services/TtsTextSanitizer.js.map +1 -0
- package/build/services/WifiAdbRequest.d.ts +17 -0
- package/build/services/WifiAdbRequest.d.ts.map +1 -0
- package/build/services/WifiAdbRequest.js +35 -0
- package/build/services/WifiAdbRequest.js.map +1 -0
- package/build/services/asg/asgCameraApi.d.ts +43 -0
- package/build/services/asg/asgCameraApi.d.ts.map +1 -1
- package/build/services/asg/asgCameraApi.js +509 -26
- package/build/services/asg/asgCameraApi.js.map +1 -1
- package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
- package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportCoordinator.js +618 -0
- package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
- package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
- package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportLedger.js +78 -0
- package/build/services/asg/cameraRollExportLedger.js.map +1 -0
- package/build/services/asg/galleryNotices.d.ts +1 -1
- package/build/services/asg/galleryNotices.d.ts.map +1 -1
- package/build/services/asg/galleryNotices.js.map +1 -1
- package/build/services/asg/galleryPathMigration.d.ts +3 -0
- package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
- package/build/services/asg/galleryPathMigration.js +26 -0
- package/build/services/asg/galleryPathMigration.js.map +1 -0
- package/build/services/asg/gallerySettingsService.d.ts +1 -0
- package/build/services/asg/gallerySettingsService.d.ts.map +1 -1
- package/build/services/asg/gallerySettingsService.js +2 -0
- package/build/services/asg/gallerySettingsService.js.map +1 -1
- package/build/services/asg/gallerySyncService.d.ts.map +1 -1
- package/build/services/asg/gallerySyncService.js +162 -56
- package/build/services/asg/gallerySyncService.js.map +1 -1
- package/build/services/asg/galleryTransferLedger.d.ts +58 -0
- package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
- package/build/services/asg/galleryTransferLedger.js +225 -0
- package/build/services/asg/galleryTransferLedger.js.map +1 -0
- package/build/services/asg/localNetworkTransport.d.ts +15 -0
- package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
- package/build/services/asg/localNetworkTransport.js +144 -0
- package/build/services/asg/localNetworkTransport.js.map +1 -0
- package/build/services/asg/localStorageService.d.ts +18 -0
- package/build/services/asg/localStorageService.d.ts.map +1 -1
- package/build/services/asg/localStorageService.js +168 -19
- package/build/services/asg/localStorageService.js.map +1 -1
- package/build/services/asg/mediaProcessingQueue.d.ts +10 -0
- package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -1
- package/build/services/asg/mediaProcessingQueue.js +193 -62
- package/build/services/asg/mediaProcessingQueue.js.map +1 -1
- package/build/services/audioPlaybackAssets.d.ts +8 -0
- package/build/services/audioPlaybackAssets.d.ts.map +1 -0
- package/build/services/audioPlaybackAssets.js +7 -0
- package/build/services/audioPlaybackAssets.js.map +1 -0
- package/build/services/gallerySyncClock.js +1 -1
- package/build/services/gallerySyncClock.js.map +1 -1
- package/build/services/glassesClockSync.d.ts.map +1 -1
- package/build/services/glassesClockSync.js +6 -2
- package/build/services/glassesClockSync.js.map +1 -1
- package/build/services/manifestActions.d.ts +7 -0
- package/build/services/manifestActions.d.ts.map +1 -0
- package/build/services/manifestActions.js +25 -0
- package/build/services/manifestActions.js.map +1 -0
- package/build/services/otaDisplayState.d.ts +23 -12
- package/build/services/otaDisplayState.d.ts.map +1 -1
- package/build/services/otaDisplayState.js +36 -14
- package/build/services/otaDisplayState.js.map +1 -1
- package/build/services/otaInstallPolicy.d.ts +16 -4
- package/build/services/otaInstallPolicy.d.ts.map +1 -1
- package/build/services/otaInstallPolicy.js +24 -3
- package/build/services/otaInstallPolicy.js.map +1 -1
- package/build/services/otaLegacyMapping.d.ts +1 -1
- package/build/services/otaLegacyMapping.d.ts.map +1 -1
- package/build/services/otaLegacyMapping.js.map +1 -1
- package/build/services/otaManifestPolicy.d.ts +14 -0
- package/build/services/otaManifestPolicy.d.ts.map +1 -0
- package/build/services/otaManifestPolicy.js +19 -0
- package/build/services/otaManifestPolicy.js.map +1 -0
- package/build/services/otaManifestUrl.d.ts +3 -0
- package/build/services/otaManifestUrl.d.ts.map +1 -0
- package/build/services/otaManifestUrl.js +38 -0
- package/build/services/otaManifestUrl.js.map +1 -0
- package/build/services/slimStreamStatus.d.ts +11 -0
- package/build/services/slimStreamStatus.d.ts.map +1 -1
- package/build/services/slimStreamStatus.js +14 -4
- package/build/services/slimStreamStatus.js.map +1 -1
- package/build/stores/apps.d.ts.map +1 -1
- package/build/stores/apps.js +11 -0
- package/build/stores/apps.js.map +1 -1
- package/build/stores/bluetoothSettingKeys.d.ts.map +1 -1
- package/build/stores/bluetoothSettingKeys.js +2 -0
- package/build/stores/bluetoothSettingKeys.js.map +1 -1
- package/build/stores/gallerySync.d.ts +2 -0
- package/build/stores/gallerySync.d.ts.map +1 -1
- package/build/stores/gallerySync.js +2 -0
- package/build/stores/gallerySync.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +3 -0
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts +17 -0
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +157 -17
- package/build/stores/settings.js.map +1 -1
- package/build/types/applet.d.ts +2 -0
- package/build/types/applet.d.ts.map +1 -1
- package/build/types/applet.js.map +1 -1
- package/build/types/asg.d.ts +7 -0
- package/build/types/asg.d.ts.map +1 -1
- package/build/types/asg.js.map +1 -1
- package/build/types/enums.d.ts +2 -25
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +2 -27
- package/build/types/enums.js.map +1 -1
- package/build/types/hardware.d.ts +4 -13
- package/build/types/hardware.d.ts.map +1 -1
- package/build/types/hardware.js +15 -3
- package/build/types/hardware.js.map +1 -1
- package/build/types/index.d.ts +2 -6
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js +2 -6
- package/build/types/index.js.map +1 -1
- package/build/utils/configuredDevHost.d.ts +6 -0
- package/build/utils/configuredDevHost.d.ts.map +1 -0
- package/build/utils/configuredDevHost.js +19 -0
- package/build/utils/configuredDevHost.js.map +1 -0
- package/build/utils/devMiniappLaunch.d.ts +19 -8
- package/build/utils/devMiniappLaunch.d.ts.map +1 -1
- package/build/utils/devMiniappLaunch.js +144 -21
- package/build/utils/devMiniappLaunch.js.map +1 -1
- package/build/utils/diagnosticContext.d.ts.map +1 -1
- package/build/utils/diagnosticContext.js +15 -17
- package/build/utils/diagnosticContext.js.map +1 -1
- package/build/utils/hardware/hardware.d.ts.map +1 -1
- package/build/utils/hardware/hardware.js +7 -3
- package/build/utils/hardware/hardware.js.map +1 -1
- package/build/utils/miniappDiagnostics.d.ts +64 -0
- package/build/utils/miniappDiagnostics.d.ts.map +1 -0
- package/build/utils/miniappDiagnostics.js +173 -0
- package/build/utils/miniappDiagnostics.js.map +1 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts +11 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -1
- package/build/utils/permissions/MediaLibraryPermissions.js +27 -4
- package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -1
- package/build/utils/timers/timers.d.ts.map +1 -1
- package/build/utils/timers/timers.js +55 -18
- package/build/utils/timers/timers.js.map +1 -1
- package/package.json +59 -31
- package/src/assets/silence.wav +0 -0
- package/src/bluetooth-sdk/debug.ts +1 -0
- package/src/bluetooth-sdk/index.ts +2 -0
- package/src/bluetooth-sdk/photo-receiver.ts +2 -0
- package/src/bluetooth-sdk/react.ts +1 -0
- package/src/bluetooth-sdk/types.ts +1 -0
- package/src/engine.ts +9 -4
- package/src/facades/dev.ts +17 -12
- package/src/facades/display.ts +1 -1
- package/src/facades/gallery.ts +1 -1
- package/src/facades/glasses.ts +20 -7
- package/src/facades/glassesSettings.ts +5 -0
- package/src/facades/miniapps.ts +7 -0
- package/src/facades/ota.ts +23 -8
- package/src/facades/pairing.ts +15 -11
- package/src/facades/permissions.ts +14 -0
- package/src/facades/phoneNotifications.ts +4 -13
- package/src/facades/speech.ts +21 -7
- package/src/generated/releaseMetadata.ts +20 -0
- package/src/index.ts +39 -13
- package/src/react/MentraLiveOtaFlow.tsx +856 -0
- package/src/react/index.ts +7 -0
- package/src/react/useEngineSnapshot.ts +16 -0
- package/src/runtime/bootstrap.ts +33 -1
- package/src/runtime/scanQrSeam.ts +20 -0
- package/src/services/AppRegistry.ts +240 -149
- package/src/services/AudioCloudUplink.ts +23 -1
- package/src/services/AudioPlaybackService.ts +287 -38
- package/src/services/BlobStore.ts +22 -9
- package/src/services/CloudAudioSubscriptionSync.ts +13 -1
- package/src/services/CloudClientService.ts +96 -1
- package/src/services/DeviceEventRouter.ts +5 -5
- package/src/services/ForegroundLocationPermission.ts +24 -0
- package/src/services/GlassesSettingsSync.ts +9 -3
- package/src/services/GlassesStatusProjection.ts +16 -8
- package/src/services/HotspotOtaTransport.ts +184 -0
- package/src/services/HotspotShutdown.ts +41 -0
- package/src/services/LocalDisplayManager.ts +112 -21
- package/src/services/LocalMiniappRuntime.ts +967 -346
- package/src/services/LocalMiniappStorage.ts +82 -0
- package/src/services/LocalMiniappUserIdentity.ts +46 -0
- package/src/services/LocalSttFallbackCoordinator.ts +19 -12
- package/src/services/MicStateCoordinator.ts +169 -4
- package/src/services/MiniappLauncher.ts +30 -3
- package/src/services/MiniappLiveness.ts +24 -0
- package/src/services/NativeHttpResponse.ts +6 -0
- package/src/services/OtaArtifactDownloader.ts +312 -0
- package/src/services/OtaAutoChain.ts +106 -0
- package/src/services/OtaErrorMapping.ts +80 -0
- package/src/services/OtaInstallCoordinator.ts +649 -144
- package/src/services/OtaService.ts +11 -5
- package/src/services/OtaUpdateCheckService.ts +181 -21
- package/src/services/PhoneCalendarHelpers.ts +212 -0
- package/src/services/PhoneCalendarService.ts +65 -0
- package/src/services/PhoneCameraFovCoordinator.ts +210 -0
- package/src/services/PhoneNotificationsSync.ts +12 -10
- package/src/services/PhonePhotoCoordinator.ts +116 -18
- package/src/services/PhoneStreamCoordinator.ts +139 -25
- package/src/services/PhoneVideoCoordinator.ts +11 -0
- package/src/services/SceneRenderer.ts +16 -0
- package/src/services/SentenceTtsPipeline.ts +106 -0
- package/src/services/SupportProfileSync.ts +218 -0
- package/src/services/TranscriptionRouting.ts +37 -0
- package/src/services/TtsTextSanitizer.ts +66 -0
- package/src/services/WifiAdbRequest.ts +53 -0
- package/src/services/asg/asgCameraApi.ts +615 -33
- package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
- package/src/services/asg/cameraRollExportLedger.ts +122 -0
- package/src/services/asg/galleryNotices.ts +1 -0
- package/src/services/asg/galleryPathMigration.ts +22 -0
- package/src/services/asg/gallerySettingsService.ts +3 -0
- package/src/services/asg/gallerySyncService.ts +184 -73
- package/src/services/asg/galleryTransferLedger.ts +312 -0
- package/src/services/asg/localNetworkTransport.ts +169 -0
- package/src/services/asg/localStorageService.ts +179 -24
- package/src/services/asg/mediaProcessingQueue.ts +209 -62
- package/src/services/audioPlaybackAssets.ts +8 -0
- package/src/services/gallerySyncClock.ts +1 -1
- package/src/services/glassesClockSync.ts +6 -2
- package/src/services/manifestActions.ts +30 -0
- package/src/services/otaDisplayState.ts +58 -17
- package/src/services/otaInstallPolicy.ts +30 -4
- package/src/services/otaLegacyMapping.ts +1 -1
- package/src/services/otaManifestPolicy.ts +42 -0
- package/src/services/otaManifestUrl.ts +44 -0
- package/src/services/slimStreamStatus.ts +16 -5
- package/src/stores/apps.ts +12 -0
- package/src/stores/bluetoothSettingKeys.ts +2 -0
- package/src/stores/gallerySync.ts +4 -0
- package/src/stores/glasses.ts +3 -0
- package/src/stores/settings.ts +179 -18
- package/src/types/applet.ts +2 -0
- package/src/types/asg.ts +7 -0
- package/src/types/enums.ts +3 -28
- package/src/types/hardware.ts +20 -13
- package/src/types/index.ts +2 -6
- package/src/utils/configuredDevHost.ts +17 -0
- package/src/utils/devMiniappLaunch.ts +151 -23
- package/src/utils/diagnosticContext.ts +17 -17
- package/src/utils/hardware/hardware.ts +7 -9
- package/src/utils/miniappDiagnostics.ts +226 -0
- package/src/utils/permissions/MediaLibraryPermissions.ts +35 -4
- package/src/utils/timers/timers.ts +57 -21
- package/build/devtools.d.ts +0 -11
- package/build/devtools.d.ts.map +0 -1
- package/build/devtools.js +0 -13
- package/build/devtools.js.map +0 -1
- package/build/internal.d.ts +0 -66
- package/build/internal.d.ts.map +0 -1
- package/build/internal.js +0 -89
- package/build/internal.js.map +0 -1
- package/build/services/asgOtaVersionUrl.d.ts +0 -2
- package/build/services/asgOtaVersionUrl.d.ts.map +0 -1
- package/build/services/asgOtaVersionUrl.js +0 -36
- package/build/services/asgOtaVersionUrl.js.map +0 -1
- package/src/devtools.ts +0 -13
- package/src/internal.ts +0 -158
- package/src/services/asgOtaVersionUrl.ts +0 -41
|
@@ -9,6 +9,23 @@ export interface Setting {
|
|
|
9
9
|
override?: () => any;
|
|
10
10
|
persist: boolean;
|
|
11
11
|
nativeAuthoritative?: true;
|
|
12
|
+
/**
|
|
13
|
+
* Clear this setting when the build's environment changes.
|
|
14
|
+
*
|
|
15
|
+
* A persisted override normally outranks both the build's env and the
|
|
16
|
+
* compiled default, which is right within one environment: a developer's
|
|
17
|
+
* METRO_AUTO pin should survive a rebuild. It is wrong across environments,
|
|
18
|
+
* where an override pinned under a dev build would silently follow the
|
|
19
|
+
* install onto a store build pointed at production.
|
|
20
|
+
*
|
|
21
|
+
* Note this keys off the build's environment label, so it does NOT fire on a
|
|
22
|
+
* TestFlight to App Store promotion: that ships the same binary with the same
|
|
23
|
+
* label. Promotion is safe because the publishing lane bakes prod URLs, not
|
|
24
|
+
* because this reset runs. See the resolution block in loadSettings.
|
|
25
|
+
*
|
|
26
|
+
* Absent means the value is never invalidated automatically.
|
|
27
|
+
*/
|
|
28
|
+
resetOnBuildEnvChange?: true;
|
|
12
29
|
}
|
|
13
30
|
export declare const SETTINGS: Record<string, Setting>;
|
|
14
31
|
export declare const OFFLINE_APPLETS: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/stores/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAwB,MAAM,aAAa,CAAA;AAQ9D,OAAO,EAAC,wBAAwB,EAAE,gCAAgC,EAAC,MAAM,wBAAwB,CAAA;AAEjG,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,GAAG,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IAGrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IAEjC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAA;IAEpB,OAAO,EAAE,OAAO,CAAA;IAQhB,mBAAmB,CAAC,EAAE,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/stores/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAwB,MAAM,aAAa,CAAA;AAQ9D,OAAO,EAAC,wBAAwB,EAAE,gCAAgC,EAAC,MAAM,wBAAwB,CAAA;AAEjG,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,GAAG,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IAGrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IAEjC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAA;IAEpB,OAAO,EAAE,OAAO,CAAA;IAQhB,mBAAmB,CAAC,EAAE,IAAI,CAAA;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,EAAE,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA2oBnC,CAAA;AAEV,eAAO,MAAM,eAAe,EAAE,MAAM,EAAqD,CAAA;AAIzF,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAiD1C,CAAA;AAeD,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAEV,CAAA;AAIhC,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE7B,aAAa,EAAE,OAAO,CAAA;IAEtB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACzF,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3E,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAA;IAEhC,eAAe,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAE/C,oBAAoB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/C,uBAAuB,EAAE,MAAM,IAAI,CAAA;CACpC;AAqBD,eAAO,MAAM,gBAAgB;;;;;;;;EA+U5B,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,GAAG,EAAE,KAAK,MAAM,KAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAI3F,CAAA"}
|
package/build/stores/settings.js
CHANGED
|
@@ -10,6 +10,15 @@ export const SETTINGS = {
|
|
|
10
10
|
// feature flags / mantle settings:
|
|
11
11
|
dev_mode: { key: "dev_mode", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true }, // deprecated
|
|
12
12
|
debug_mode: { key: "debug_mode", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true },
|
|
13
|
+
android_notification_listener_enabled: {
|
|
14
|
+
key: "android_notification_listener_enabled",
|
|
15
|
+
// Operational kill switch. The listener now runs in a guarded lightweight
|
|
16
|
+
// process, so normal installs can safely capture notifications by default.
|
|
17
|
+
defaultValue: () => true,
|
|
18
|
+
writable: true,
|
|
19
|
+
saveOnServer: true,
|
|
20
|
+
persist: true,
|
|
21
|
+
},
|
|
13
22
|
super_mode: { key: "super_mode", defaultValue: () => false, writable: true, saveOnServer: true, persist: true },
|
|
14
23
|
appearance_menu_enabled: {
|
|
15
24
|
key: "appearance_menu_enabled",
|
|
@@ -134,6 +143,7 @@ export const SETTINGS = {
|
|
|
134
143
|
writable: true,
|
|
135
144
|
saveOnServer: false,
|
|
136
145
|
persist: true,
|
|
146
|
+
resetOnBuildEnvChange: true,
|
|
137
147
|
},
|
|
138
148
|
cloud_runtime_url: {
|
|
139
149
|
key: "cloud_runtime_url",
|
|
@@ -141,6 +151,7 @@ export const SETTINGS = {
|
|
|
141
151
|
writable: true,
|
|
142
152
|
saveOnServer: false,
|
|
143
153
|
persist: true,
|
|
154
|
+
resetOnBuildEnvChange: true,
|
|
144
155
|
},
|
|
145
156
|
// Bookmarked Cloud V2 endpoint pairs. Each entry is {label, coreUrl,
|
|
146
157
|
// runtimeUrl} — core + runtime are saved together because they are always
|
|
@@ -154,7 +165,7 @@ export const SETTINGS = {
|
|
|
154
165
|
},
|
|
155
166
|
// Developer override for the ASG OTA manifest URL. null/empty = no override;
|
|
156
167
|
// the normal selection applies (legacy-glasses gate, EXPO_PUBLIC_ASG_OTA_VERSION_URL,
|
|
157
|
-
// glasses-reported URL, then production). See
|
|
168
|
+
// glasses-reported URL, then production). See resolveOtaManifestUrl.
|
|
158
169
|
ota_version_url: {
|
|
159
170
|
key: "ota_version_url",
|
|
160
171
|
defaultValue: () => null,
|
|
@@ -225,6 +236,14 @@ export const SETTINGS = {
|
|
|
225
236
|
persist: true,
|
|
226
237
|
nativeAuthoritative: true,
|
|
227
238
|
},
|
|
239
|
+
project_name: {
|
|
240
|
+
key: "project_name",
|
|
241
|
+
defaultValue: () => "",
|
|
242
|
+
writable: true,
|
|
243
|
+
saveOnServer: false,
|
|
244
|
+
persist: true,
|
|
245
|
+
nativeAuthoritative: true,
|
|
246
|
+
},
|
|
228
247
|
default_controller: {
|
|
229
248
|
key: "default_controller",
|
|
230
249
|
defaultValue: () => "",
|
|
@@ -338,12 +357,23 @@ export const SETTINGS = {
|
|
|
338
357
|
saveOnServer: true,
|
|
339
358
|
persist: true,
|
|
340
359
|
},
|
|
360
|
+
// The Mentra App intentionally preserves Mentra Live's historical VAD-on
|
|
361
|
+
// product default. Standalone public Bluetooth SDK hosts default VAD off so
|
|
362
|
+
// their microphone audio remains continuous.
|
|
341
363
|
voice_activity_detection_enabled: {
|
|
342
364
|
key: "voice_activity_detection_enabled",
|
|
343
365
|
defaultValue: () => true,
|
|
344
366
|
writable: true,
|
|
345
|
-
saveOnServer:
|
|
346
|
-
persist:
|
|
367
|
+
saveOnServer: true,
|
|
368
|
+
persist: true,
|
|
369
|
+
},
|
|
370
|
+
// Mentra Live center-mic loudness / "Barrier" gate (cs_swit type 10). Default on.
|
|
371
|
+
loudness_gate_enabled: {
|
|
372
|
+
key: "loudness_gate_enabled",
|
|
373
|
+
defaultValue: () => true,
|
|
374
|
+
writable: true,
|
|
375
|
+
saveOnServer: true,
|
|
376
|
+
persist: true,
|
|
347
377
|
},
|
|
348
378
|
always_on_status_bar: {
|
|
349
379
|
key: "always_on_status_bar",
|
|
@@ -533,7 +563,7 @@ export const SETTINGS = {
|
|
|
533
563
|
// offline applets
|
|
534
564
|
offline_mode: { key: "offline_mode", defaultValue: () => false, writable: true, saveOnServer: true, persist: true },
|
|
535
565
|
// Runtime flag: coordinator flips this on when cloud STT has failed and fallback is active.
|
|
536
|
-
// Native GlassesStore watches it to gate PCM
|
|
566
|
+
// Native GlassesStore watches it to gate PCM 鈫?Sherpa feeding. Not user-facing.
|
|
537
567
|
local_stt_fallback_active: {
|
|
538
568
|
key: "local_stt_fallback_active",
|
|
539
569
|
defaultValue: () => false,
|
|
@@ -594,13 +624,6 @@ export const SETTINGS = {
|
|
|
594
624
|
persist: true,
|
|
595
625
|
},
|
|
596
626
|
// notifications
|
|
597
|
-
notifications_enabled: {
|
|
598
|
-
key: "notifications_enabled",
|
|
599
|
-
defaultValue: () => true,
|
|
600
|
-
writable: true,
|
|
601
|
-
saveOnServer: true,
|
|
602
|
-
persist: true,
|
|
603
|
-
},
|
|
604
627
|
notifications_blocklist: {
|
|
605
628
|
key: "notifications_blocklist",
|
|
606
629
|
defaultValue: () => [],
|
|
@@ -641,6 +664,7 @@ export const BLUETOOTH_SETTING_KEYS = [
|
|
|
641
664
|
SETTINGS.sensing_enabled.key,
|
|
642
665
|
SETTINGS.power_saving_mode.key,
|
|
643
666
|
SETTINGS.voice_activity_detection_enabled.key,
|
|
667
|
+
SETTINGS.loudness_gate_enabled.key,
|
|
644
668
|
SETTINGS.lc3_frame_size.key,
|
|
645
669
|
SETTINGS.preferred_mic.key,
|
|
646
670
|
SETTINGS.screen_disabled.key,
|
|
@@ -669,6 +693,7 @@ export const BLUETOOTH_SETTING_KEYS = [
|
|
|
669
693
|
SETTINGS.default_wearable.key,
|
|
670
694
|
SETTINGS.device_name.key,
|
|
671
695
|
SETTINGS.device_address.key,
|
|
696
|
+
SETTINGS.project_name.key,
|
|
672
697
|
SETTINGS.default_controller.key,
|
|
673
698
|
SETTINGS.pending_controller.key,
|
|
674
699
|
SETTINGS.controller_device_name.key,
|
|
@@ -676,7 +701,7 @@ export const BLUETOOTH_SETTING_KEYS = [
|
|
|
676
701
|
// offline applets:
|
|
677
702
|
SETTINGS.offline_mode.key,
|
|
678
703
|
// Runtime flag flipped by LocalSttFallbackCoordinator. Native reads it from
|
|
679
|
-
// GlassesStore to gate PCM
|
|
704
|
+
// GlassesStore to gate PCM 鈫?Sherpa feeding in handlePcm and to keep the
|
|
680
705
|
// mic on while local STT is the active engine.
|
|
681
706
|
SETTINGS.local_stt_fallback_active.key,
|
|
682
707
|
SETTINGS.gallery_mode.key,
|
|
@@ -686,12 +711,12 @@ export const BLUETOOTH_SETTING_KEYS = [
|
|
|
686
711
|
];
|
|
687
712
|
// Pairing identity is NATIVE-authoritative: the native layer writes it on
|
|
688
713
|
// pairing success (handleDeviceReady) / forget and echoes it down via
|
|
689
|
-
// save_setting; JS persists those echoes. JS
|
|
714
|
+
// save_setting; JS persists those echoes. JS鈫抧ative, identity travels ONLY in
|
|
690
715
|
// the explicit full seeds (device-store hydration, pre-connect push,
|
|
691
716
|
// post-demotion re-push) — never in the change-push subscription. Relaying an
|
|
692
717
|
// echoed identity change back up would make the sync bidirectional with loop
|
|
693
718
|
// gain 1: two identity values in flight (e.g. a boot demotion crossing a
|
|
694
|
-
// native promotion) then chase each other through push
|
|
719
|
+
// native promotion) then chase each other through push鈫抋pply鈫抏cho鈫抪ush
|
|
695
720
|
// forever, flapping the UI.
|
|
696
721
|
//
|
|
697
722
|
// Derived from the `nativeAuthoritative` descriptor flag (not maintained as a
|
|
@@ -709,6 +734,9 @@ const getDefaultSettings = () => Object.keys(SETTINGS).reduce((acc, key) => {
|
|
|
709
734
|
// second caller runs a duplicate full disk load while the first is still in
|
|
710
735
|
// flight. Cleared on failure so a later call can retry.
|
|
711
736
|
let loadAllSettingsInFlight = null;
|
|
737
|
+
function printableSettingValue(key, value) {
|
|
738
|
+
return key.includes("token") || key.includes("email") ? "<redacted>" : JSON.stringify(value);
|
|
739
|
+
}
|
|
712
740
|
export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
713
741
|
settings: getDefaultSettings(),
|
|
714
742
|
isInitialized: false,
|
|
@@ -727,7 +755,7 @@ export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
|
727
755
|
throw new Error(`SETTINGS: ${originalKey} is not writable!`);
|
|
728
756
|
}
|
|
729
757
|
// Update store immediately for optimistic UI
|
|
730
|
-
console.log(`SETTINGS: SET: ${key} = ${value}`);
|
|
758
|
+
console.log(`SETTINGS: SET: ${key} = ${printableSettingValue(key, value)}`);
|
|
731
759
|
set((state) => ({
|
|
732
760
|
settings: { ...state.settings, [key]: value },
|
|
733
761
|
}));
|
|
@@ -832,7 +860,13 @@ export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
|
832
860
|
}
|
|
833
861
|
// normal key:value pair:
|
|
834
862
|
let value = res.value;
|
|
835
|
-
|
|
863
|
+
// res.value IS the stored value; logging value.value printed
|
|
864
|
+
// "undefined" for every loaded setting and disguised present
|
|
865
|
+
// values as missing. Redact token- and email-bearing keys: console
|
|
866
|
+
// logs are uploaded in bug-report artifacts (same keys
|
|
867
|
+
// diagnosticContext's SENSITIVE_SETTINGS_KEYS strips, minus an
|
|
868
|
+
// import that would cycle stores <-> utils).
|
|
869
|
+
console.log(`SETTINGS: LOAD: ${setting.key} = ${printableSettingValue(setting.key, value)}`);
|
|
836
870
|
loadedSettings[setting.key] = value;
|
|
837
871
|
}
|
|
838
872
|
// console.log("##############################################")
|
|
@@ -842,6 +876,91 @@ export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
|
842
876
|
isInitialized: true,
|
|
843
877
|
settings: { ...state.settings, ...loadedSettings },
|
|
844
878
|
}));
|
|
879
|
+
// This hidden debug switch originally shipped default-off while the
|
|
880
|
+
// notification-listener cold-start ANR was being investigated. Now
|
|
881
|
+
// that the listener runs in its own guarded process, migrate existing
|
|
882
|
+
// installs to the new default once; later explicit debug changes still
|
|
883
|
+
// persist normally.
|
|
884
|
+
// Reset the cloud backend override when the build's environment changes.
|
|
885
|
+
//
|
|
886
|
+
// cloud_core_url / cloud_runtime_url are persist:true and outrank both
|
|
887
|
+
// the build's env and the compiled default (see resolveUrl in
|
|
888
|
+
// cloudClient.ts). That is what we want inside one environment: a
|
|
889
|
+
// developer's METRO_AUTO pin should survive a rebuild. It is wrong
|
|
890
|
+
// across environments.
|
|
891
|
+
//
|
|
892
|
+
// The concrete case is an install that moves BETWEEN environments: an
|
|
893
|
+
// internal tester running a dev build with a pinned override who then
|
|
894
|
+
// installs the store build. The override outranks that build's prod
|
|
895
|
+
// URLs, so without this they keep talking to dev with nothing
|
|
896
|
+
// surfacing it.
|
|
897
|
+
//
|
|
898
|
+
// Note what this deliberately does NOT do, because the distinction is
|
|
899
|
+
// easy to get backwards. TestFlight and the App Store receive the SAME
|
|
900
|
+
// binary, so promotion does not change EXPO_PUBLIC_BUILD_ENV and this
|
|
901
|
+
// reset never fires on it. Promotion is safe for a different reason:
|
|
902
|
+
// the publishing lane bakes the selected release cloud environment, and
|
|
903
|
+
// production promotes the already-tested binary. The same holds for
|
|
904
|
+
// Android beta-track to production.
|
|
905
|
+
//
|
|
906
|
+
// The residual gap is therefore an override pinned while already on a
|
|
907
|
+
// prod-labelled build, which no label comparison can see. That is a
|
|
908
|
+
// deliberate limit: reaching it means typing a URL into a dev-only
|
|
909
|
+
// screen, VersionInfo renders the current value, and the same screen
|
|
910
|
+
// clears it.
|
|
911
|
+
//
|
|
912
|
+
// Comparing the baked EXPO_PUBLIC_BUILD_ENV against the last one seen
|
|
913
|
+
// on this device covers those environment switches and fresh installs
|
|
914
|
+
// without touching the setting write path. A reinstall needs no
|
|
915
|
+
// handling: it drops the marker and the override together
|
|
916
|
+
// (android:allowBackup="false", and iOS deletes the container).
|
|
917
|
+
const BUILD_ENV_KEY = "settings.lastBuildEnv";
|
|
918
|
+
const buildEnv = (process.env.EXPO_PUBLIC_BUILD_ENV ?? "dev").trim() || "dev";
|
|
919
|
+
const lastBuildEnv = storage.load(BUILD_ENV_KEY);
|
|
920
|
+
const previousBuildEnv = lastBuildEnv.is_error() ? undefined : lastBuildEnv.value;
|
|
921
|
+
if (previousBuildEnv !== buildEnv) {
|
|
922
|
+
// Clear when there is no marker yet, not just on a recorded change.
|
|
923
|
+
// The first build carrying this code meets every existing install
|
|
924
|
+
// with previousBuildEnv === undefined, and those are exactly the
|
|
925
|
+
// installs that may hold an override set before the pin existed --
|
|
926
|
+
// the population this is here to repair. Treating "no marker" as a
|
|
927
|
+
// fresh install would record the marker and never look again. A
|
|
928
|
+
// genuinely fresh install has nothing persisted, so the clear below
|
|
929
|
+
// writes each default over itself and costs nothing.
|
|
930
|
+
//
|
|
931
|
+
// Driven by the descriptors rather than a hardcoded key list, so a
|
|
932
|
+
// setting that needs this behaviour declares it in one place and
|
|
933
|
+
// cannot be missed here.
|
|
934
|
+
const scoped = Object.values(SETTINGS).filter((setting) => setting.resetOnBuildEnvChange);
|
|
935
|
+
console.log(`SETTINGS: build env ${previousBuildEnv ?? "(none recorded)"} -> ${buildEnv}, ` +
|
|
936
|
+
`clearing ${scoped.length} build-scoped setting(s)`);
|
|
937
|
+
let allCleared = true;
|
|
938
|
+
for (const setting of scoped) {
|
|
939
|
+
const cleared = await get().setSetting(setting.key, setting.defaultValue(), false);
|
|
940
|
+
if (cleared.is_error()) {
|
|
941
|
+
allCleared = false;
|
|
942
|
+
console.log(`SETTINGS: could not clear ${setting.key}:`, cleared.error);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
// Advance the marker only once the reset actually landed. Recording
|
|
946
|
+
// it after a failed write would retire the retry and leave the stale
|
|
947
|
+
// override for the life of the install; leaving it unset costs one
|
|
948
|
+
// repeated attempt per launch until a write succeeds.
|
|
949
|
+
if (allCleared) {
|
|
950
|
+
storage.save(BUILD_ENV_KEY, buildEnv);
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
const NOTIFICATION_LISTENER_MIGRATION_KEY = "migration:android_notification_listener_default_on_v1";
|
|
954
|
+
const notificationListenerMigrationDone = storage.load(NOTIFICATION_LISTENER_MIGRATION_KEY);
|
|
955
|
+
if (notificationListenerMigrationDone.is_error() || !notificationListenerMigrationDone.value) {
|
|
956
|
+
const result = await get().setSetting(SETTINGS.android_notification_listener_enabled.key, true, false);
|
|
957
|
+
if (result.is_error()) {
|
|
958
|
+
console.log("SETTINGS: notification listener migration failed:", result.error);
|
|
959
|
+
}
|
|
960
|
+
else {
|
|
961
|
+
storage.save(NOTIFICATION_LISTENER_MIGRATION_KEY, true);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
845
964
|
// One-time migration: force android_blur=false for existing users.
|
|
846
965
|
// The setting's default is already false; this migration covers users
|
|
847
966
|
// who explicitly opted into Android blur effects before we discovered
|
|
@@ -849,7 +968,7 @@ export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
|
849
968
|
// The dimezisBlurViewSdk31Plus blur each costs ~5-10ms/frame; with
|
|
850
969
|
// multiple blurs on home (top fade + AppSwitcherButton x2) a low-end
|
|
851
970
|
// device misses the 16ms budget consistently. Users can turn it back
|
|
852
|
-
// on under Settings
|
|
971
|
+
// on under Settings 鈫?Appearance once we've optimized further.
|
|
853
972
|
//
|
|
854
973
|
// The setSetting call also pushes to the server (saveOnServer: true)
|
|
855
974
|
// so the server-stored value flips too — otherwise the next sync
|
|
@@ -875,6 +994,27 @@ export const useSettingsStore = create()(subscribeWithSelector((set, get) => ({
|
|
|
875
994
|
// already correct.
|
|
876
995
|
storage.save(MIGRATION_KEY, true);
|
|
877
996
|
}
|
|
997
|
+
// The old camera default cropped the sensor to 102掳. Move existing
|
|
998
|
+
// default-shaped values to the full 118掳 sensor once; named miniapp
|
|
999
|
+
// requests for the 102掳 "standard" preset remain available.
|
|
1000
|
+
const CAMERA_FOV_MIGRATION_KEY = "migration:camera_fov_full_sensor_v1";
|
|
1001
|
+
const cameraFovMigrationDone = storage.load(CAMERA_FOV_MIGRATION_KEY);
|
|
1002
|
+
if (cameraFovMigrationDone.is_error() || !cameraFovMigrationDone.value) {
|
|
1003
|
+
const current = get().getSetting(SETTINGS.camera_fov.key);
|
|
1004
|
+
let migrationSucceeded = true;
|
|
1005
|
+
if (current?.fov === 102 && (current.roi_position ?? 0) === 0) {
|
|
1006
|
+
const result = await get().setSetting(SETTINGS.camera_fov.key, { fov: 118, roi_position: 0 }, true);
|
|
1007
|
+
if (result.is_error()) {
|
|
1008
|
+
console.log("SETTINGS: camera FOV migration failed:", result.error);
|
|
1009
|
+
migrationSucceeded = false;
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
// Unlike the blur migration above, a failed camera set may leave the
|
|
1013
|
+
// local value unchanged. Only mark this migration complete once the
|
|
1014
|
+
// desired value was applied so a transient failure retries on boot.
|
|
1015
|
+
if (migrationSucceeded)
|
|
1016
|
+
storage.save(CAMERA_FOV_MIGRATION_KEY, true);
|
|
1017
|
+
}
|
|
878
1018
|
});
|
|
879
1019
|
loadAllSettingsInFlight = inFlight;
|
|
880
1020
|
void Promise.resolve(inFlight).then((result) => {
|