@mentra/engine 3.2.0-dev.137 → 3.2.0-dev.154
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/build/engine.d.ts.map +1 -1
- package/build/engine.js +15 -9
- package/build/engine.js.map +1 -1
- package/build/facades/ota.d.ts +1 -0
- package/build/facades/ota.d.ts.map +1 -1
- package/build/facades/ota.js +1 -0
- package/build/facades/ota.js.map +1 -1
- package/build/facades/reports.d.ts.map +1 -1
- package/build/facades/reports.js +3 -0
- package/build/facades/reports.js.map +1 -1
- package/build/generated/releaseMetadata.js +5 -5
- package/build/generated/releaseMetadata.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.d.ts.map +1 -1
- package/build/react/MentraLiveOtaFlow.js +12 -0
- package/build/react/MentraLiveOtaFlow.js.map +1 -1
- package/build/react/useMentraLiveOta.d.ts +3 -1
- package/build/react/useMentraLiveOta.d.ts.map +1 -1
- package/build/react/useMentraLiveOta.js +19 -1
- package/build/react/useMentraLiveOta.js.map +1 -1
- package/build/runtime/bootstrap.d.ts +46 -3
- package/build/runtime/bootstrap.d.ts.map +1 -1
- package/build/runtime/bootstrap.js +60 -1
- package/build/runtime/bootstrap.js.map +1 -1
- package/build/runtime/config.d.ts +4 -0
- package/build/runtime/config.d.ts.map +1 -1
- package/build/runtime/config.js.map +1 -1
- package/build/runtime/streamConfig.d.ts.map +1 -1
- package/build/runtime/streamConfig.js +6 -0
- package/build/runtime/streamConfig.js.map +1 -1
- package/build/services/AppRegistry.d.ts +15 -1
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +48 -12
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/CloudClientService.d.ts +3 -1
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +75 -18
- package/build/services/CloudClientService.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +54 -12
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/MiniappLauncher.d.ts.map +1 -1
- package/build/services/MiniappLauncher.js +9 -1
- package/build/services/MiniappLauncher.js.map +1 -1
- package/build/services/NavigationHandlers.d.ts.map +1 -1
- package/build/services/NavigationHandlers.js +8 -0
- package/build/services/NavigationHandlers.js.map +1 -1
- package/build/services/OtaUpdateCheckService.d.ts +10 -1
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
- package/build/services/OtaUpdateCheckService.js +24 -5
- package/build/services/OtaUpdateCheckService.js.map +1 -1
- package/build/services/miniappInstallIdentity.d.ts +10 -0
- package/build/services/miniappInstallIdentity.d.ts.map +1 -0
- package/build/services/miniappInstallIdentity.js +10 -0
- package/build/services/miniappInstallIdentity.js.map +1 -0
- package/build/services/otaManifestPolicy.d.ts +3 -0
- package/build/services/otaManifestPolicy.d.ts.map +1 -1
- package/build/services/otaManifestPolicy.js +8 -0
- package/build/services/otaManifestPolicy.js.map +1 -1
- package/build/services/otaManifestUrl.d.ts.map +1 -1
- package/build/services/otaManifestUrl.js +10 -2
- package/build/services/otaManifestUrl.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +6 -0
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +20 -3
- package/build/stores/settings.js.map +1 -1
- package/package.json +7 -7
- package/src/engine.ts +22 -12
- package/src/facades/ota.ts +1 -0
- package/src/facades/reports.ts +4 -6
- package/src/generated/releaseMetadata.ts +5 -5
- package/src/index.ts +2 -0
- package/src/react/MentraLiveOtaFlow.tsx +21 -0
- package/src/react/useMentraLiveOta.ts +23 -2
- package/src/runtime/bootstrap.ts +117 -4
- package/src/runtime/config.ts +4 -0
- package/src/runtime/streamConfig.ts +4 -0
- package/src/services/AppRegistry.ts +94 -25
- package/src/services/CloudClientService.ts +70 -24
- package/src/services/LocalMiniappRuntime.ts +85 -26
- package/src/services/MiniappLauncher.ts +15 -1
- package/src/services/NavigationHandlers.ts +8 -0
- package/src/services/OtaUpdateCheckService.ts +32 -6
- package/src/services/miniappInstallIdentity.ts +18 -0
- package/src/services/otaManifestPolicy.ts +11 -0
- package/src/services/otaManifestUrl.ts +10 -2
- package/src/stores/glasses.ts +6 -0
- package/src/stores/settings.ts +20 -3
package/src/stores/glasses.ts
CHANGED
|
@@ -132,6 +132,7 @@ const initialState: GlassesStore = {
|
|
|
132
132
|
systemTimeMs: 0,
|
|
133
133
|
otaVersionUrl: "",
|
|
134
134
|
appVersion: "",
|
|
135
|
+
packageName: "",
|
|
135
136
|
bluetoothName: "",
|
|
136
137
|
serialNumber: "",
|
|
137
138
|
style: "",
|
|
@@ -203,6 +204,11 @@ export const useGlassesStore = create<GlassesState>()(
|
|
|
203
204
|
if (!isGlassesConnected(next.connection)) {
|
|
204
205
|
next.wifiStatusKnown = false
|
|
205
206
|
next.hotspotOtaVersion = 0
|
|
207
|
+
// packageName is deliberately NOT cleared here. It is only ever safe to clear together
|
|
208
|
+
// with buildNumber, which the native session boundary does atomically (both arrive in
|
|
209
|
+
// version_info_1). Clearing identity alone would leave a stale sideloaded buildNumber
|
|
210
|
+
// paired with a blank package, and the OTA guard reads a blank package as stock — the
|
|
211
|
+
// exact update loop this guard exists to prevent. Stale-together is fail-closed.
|
|
206
212
|
}
|
|
207
213
|
return next
|
|
208
214
|
}),
|
package/src/stores/settings.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {getTimeZone} from "react-native-localize"
|
|
2
|
+
import {useCallback} from "react"
|
|
2
3
|
import {AsyncResult, result as Res, Result} from "typesafe-ts"
|
|
3
4
|
import {create} from "zustand"
|
|
4
5
|
import {subscribeWithSelector} from "zustand/middleware"
|
|
@@ -410,10 +411,10 @@ export const SETTINGS: Record<string, Setting> = {
|
|
|
410
411
|
saveOnServer: true,
|
|
411
412
|
persist: true,
|
|
412
413
|
},
|
|
413
|
-
// Mentra Live center-mic loudness / "Barrier" gate (cs_swit type 10).
|
|
414
|
+
// Mentra Live center-mic loudness / "Barrier" gate (cs_swit type 10). Opt-in.
|
|
414
415
|
loudness_gate_enabled: {
|
|
415
416
|
key: "loudness_gate_enabled",
|
|
416
|
-
defaultValue: () =>
|
|
417
|
+
defaultValue: () => false,
|
|
417
418
|
writable: true,
|
|
418
419
|
saveOnServer: true,
|
|
419
420
|
persist: true,
|
|
@@ -1048,6 +1049,21 @@ export const useSettingsStore = create<SettingsState>()(
|
|
|
1048
1049
|
}
|
|
1049
1050
|
}
|
|
1050
1051
|
|
|
1052
|
+
// Reset existing installs once; later user/app opt-ins remain available.
|
|
1053
|
+
const LOUDNESS_GATE_MIGRATION_KEY = "migration:loudness_gate_default_off_v1"
|
|
1054
|
+
const loudnessGateMigrationDone = storage.load<boolean>(LOUDNESS_GATE_MIGRATION_KEY)
|
|
1055
|
+
if (loudnessGateMigrationDone.is_error() || !loudnessGateMigrationDone.value) {
|
|
1056
|
+
// updateServer: true, matching the android_blur / camera_fov migrations. The flag is
|
|
1057
|
+
// inert until the Cloud V2 settings sync lands, but this setting is saveOnServer, so
|
|
1058
|
+
// the intent recorded here is the one that should carry over.
|
|
1059
|
+
const result = await get().setSetting(SETTINGS.loudness_gate_enabled.key, false, true)
|
|
1060
|
+
if (result.is_error()) {
|
|
1061
|
+
console.log("SETTINGS: loudness gate migration failed:", result.error)
|
|
1062
|
+
} else {
|
|
1063
|
+
storage.save(LOUDNESS_GATE_MIGRATION_KEY, true)
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1051
1067
|
const NOTIFICATION_LISTENER_MIGRATION_KEY = "migration:android_notification_listener_default_on_v1"
|
|
1052
1068
|
const notificationListenerMigrationDone = storage.load<boolean>(NOTIFICATION_LISTENER_MIGRATION_KEY)
|
|
1053
1069
|
if (notificationListenerMigrationDone.is_error() || !notificationListenerMigrationDone.value) {
|
|
@@ -1150,5 +1166,6 @@ export const useSettingsStore = create<SettingsState>()(
|
|
|
1150
1166
|
export const useSetting = <T = any>(key: string): [T, (value: T) => AsyncResult<void, Error>] => {
|
|
1151
1167
|
const value = useSettingsStore((state) => state.getSetting(key))
|
|
1152
1168
|
const setSetting = useSettingsStore((state) => state.setSetting)
|
|
1153
|
-
|
|
1169
|
+
const setValue = useCallback((newValue: T) => setSetting(key, newValue), [key, setSetting])
|
|
1170
|
+
return [value, setValue]
|
|
1154
1171
|
}
|