@glassly/engine 0.1.0-dev.1 → 0.1.0-dev.27
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 +53 -19
- 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/ota-transport.d.ts +2 -0
- package/build/bluetooth-sdk/ota-transport.d.ts.map +1 -0
- package/build/bluetooth-sdk/ota-transport.js +2 -0
- package/build/bluetooth-sdk/ota-transport.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 +23 -16
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +9 -3
- package/build/engine.js.map +1 -1
- package/build/facades/dev.d.ts +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/glasses.d.ts +5 -13
- package/build/facades/glasses.d.ts.map +1 -1
- package/build/facades/glasses.js +5 -3
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/ota.d.ts +19 -21
- package/build/facades/ota.d.ts.map +1 -1
- package/build/facades/ota.js +23 -9
- package/build/facades/ota.js.map +1 -1
- package/build/facades/pairing.d.ts +11 -5
- package/build/facades/pairing.d.ts.map +1 -1
- package/build/facades/pairing.js +93 -17
- package/build/facades/pairing.js.map +1 -1
- package/build/facades/speakers.d.ts +1 -1
- package/build/facades/speakers.d.ts.map +1 -1
- package/build/facades/speakers.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 +7 -4
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -3
- package/build/index.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.d.ts +39 -0
- package/build/react/MentraLiveOtaFlow.d.ts.map +1 -0
- package/build/react/MentraLiveOtaFlow.js +200 -0
- package/build/react/MentraLiveOtaFlow.js.map +1 -0
- package/build/react/index.d.ts +3 -0
- package/build/react/index.d.ts.map +1 -0
- package/build/react/index.js +3 -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/react/useMentraLiveOta.d.ts +80 -0
- package/build/react/useMentraLiveOta.d.ts.map +1 -0
- package/build/react/useMentraLiveOta.js +550 -0
- package/build/react/useMentraLiveOta.js.map +1 -0
- package/build/services/AppRegistry.d.ts +8 -0
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +15 -0
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/BlobStore.d.ts +2 -0
- package/build/services/BlobStore.d.ts.map +1 -1
- package/build/services/BlobStore.js +63 -10
- package/build/services/BlobStore.js.map +1 -1
- package/build/services/CustomDashboardModel.d.ts +48 -0
- package/build/services/CustomDashboardModel.d.ts.map +1 -0
- package/build/services/CustomDashboardModel.js +73 -0
- package/build/services/CustomDashboardModel.js.map +1 -0
- package/build/services/CustomDashboardService.d.ts +61 -0
- package/build/services/CustomDashboardService.d.ts.map +1 -0
- package/build/services/CustomDashboardService.js +552 -0
- package/build/services/CustomDashboardService.js.map +1 -0
- package/build/services/DeviceEventRouter.d.ts.map +1 -1
- package/build/services/DeviceEventRouter.js +44 -3
- package/build/services/DeviceEventRouter.js.map +1 -1
- package/build/services/GestureDotsService.d.ts +35 -0
- package/build/services/GestureDotsService.d.ts.map +1 -0
- package/build/services/GestureDotsService.js +149 -0
- package/build/services/GestureDotsService.js.map +1 -0
- package/build/services/GlassesStatusProjection.d.ts +15 -1
- package/build/services/GlassesStatusProjection.d.ts.map +1 -1
- package/build/services/GlassesStatusProjection.js +18 -11
- package/build/services/GlassesStatusProjection.js.map +1 -1
- package/build/services/HotspotOtaTransport.d.ts.map +1 -1
- package/build/services/HotspotOtaTransport.js +8 -7
- package/build/services/HotspotOtaTransport.js.map +1 -1
- package/build/services/LocalDisplayManager.d.ts +43 -1
- package/build/services/LocalDisplayManager.d.ts.map +1 -1
- package/build/services/LocalDisplayManager.js +128 -2
- package/build/services/LocalDisplayManager.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +13 -0
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +32 -0
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/MiniappExitGesture.d.ts +33 -0
- package/build/services/MiniappExitGesture.d.ts.map +1 -0
- package/build/services/MiniappExitGesture.js +54 -0
- package/build/services/MiniappExitGesture.js.map +1 -0
- package/build/services/OtaAutoChain.d.ts +41 -0
- package/build/services/OtaAutoChain.d.ts.map +1 -0
- package/build/services/OtaAutoChain.js +91 -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 +24 -3
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
- package/build/services/OtaInstallCoordinator.js +17 -12
- package/build/services/OtaInstallCoordinator.js.map +1 -1
- package/build/services/OtaService.d.ts.map +1 -1
- package/build/services/OtaService.js +1 -1
- package/build/services/OtaService.js.map +1 -1
- package/build/services/OtaUpdateCheckService.d.ts +4 -1
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
- package/build/services/OtaUpdateCheckService.js +28 -16
- package/build/services/OtaUpdateCheckService.js.map +1 -1
- package/build/services/asg/localNetworkTransport.d.ts.map +1 -1
- package/build/services/asg/localNetworkTransport.js +13 -12
- package/build/services/asg/localNetworkTransport.js.map +1 -1
- package/build/services/gestureClaims.d.ts +18 -0
- package/build/services/gestureClaims.d.ts.map +1 -0
- package/build/services/gestureClaims.js +24 -0
- package/build/services/gestureClaims.js.map +1 -0
- package/build/services/gestureDotGlyphs.d.ts +8 -0
- package/build/services/gestureDotGlyphs.d.ts.map +1 -0
- package/build/services/gestureDotGlyphs.js +12 -0
- package/build/services/gestureDotGlyphs.js.map +1 -0
- package/build/services/glassesClockSync.d.ts.map +1 -1
- package/build/services/glassesClockSync.js +5 -1
- package/build/services/glassesClockSync.js.map +1 -1
- package/build/services/otaDisplayState.d.ts +1 -1
- package/build/services/otaDisplayState.d.ts.map +1 -1
- package/build/services/otaDisplayState.js.map +1 -1
- package/build/services/otaInstallPolicy.d.ts +1 -1
- package/build/services/otaInstallPolicy.d.ts.map +1 -1
- 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 +20 -0
- package/build/services/otaManifestPolicy.js.map +1 -0
- package/build/services/otaManifestUrl.d.ts +2 -1
- package/build/services/otaManifestUrl.d.ts.map +1 -1
- package/build/services/otaManifestUrl.js +24 -32
- package/build/services/otaManifestUrl.js.map +1 -1
- package/build/services/otaReleaseVersion.d.ts +10 -0
- package/build/services/otaReleaseVersion.d.ts.map +1 -0
- package/build/services/otaReleaseVersion.js +14 -0
- package/build/services/otaReleaseVersion.js.map +1 -0
- package/build/stores/appVisibility.d.ts +3 -0
- package/build/stores/appVisibility.d.ts.map +1 -0
- package/build/stores/appVisibility.js +3 -0
- package/build/stores/appVisibility.js.map +1 -0
- package/build/stores/apps.d.ts.map +1 -1
- package/build/stores/apps.js +7 -1
- package/build/stores/apps.js.map +1 -1
- package/build/stores/core.d.ts +3 -3
- package/build/stores/core.d.ts.map +1 -1
- package/build/stores/core.js.map +1 -1
- package/build/stores/glasses.d.ts +10 -4
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +87 -3
- 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 +0 -3
- package/build/types/applet.js.map +1 -1
- package/build/types/enums.d.ts +1 -5
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +1 -8
- package/build/types/enums.js.map +1 -1
- package/build/types/hardware.d.ts +1 -1
- package/build/types/hardware.d.ts.map +1 -1
- 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/display/scene/process.d.ts.map +1 -1
- package/build/utils/display/scene/process.js +4 -3
- package/build/utils/display/scene/process.js.map +1 -1
- package/build/utils/display/scene/types.d.ts +6 -2
- package/build/utils/display/scene/types.d.ts.map +1 -1
- package/build/utils/display/scene/types.js.map +1 -1
- package/package.json +65 -33
- package/src/bluetooth-sdk/debug.ts +1 -0
- package/src/bluetooth-sdk/index.ts +2 -0
- package/src/bluetooth-sdk/ota-transport.ts +1 -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 -3
- package/src/facades/display.ts +1 -1
- package/src/facades/glasses.ts +6 -4
- package/src/facades/ota.ts +33 -10
- package/src/facades/pairing.ts +103 -23
- package/src/facades/speakers.ts +1 -1
- package/src/facades/speech.ts +21 -7
- package/src/generated/releaseMetadata.ts +20 -0
- package/src/index.ts +29 -4
- package/src/react/MentraLiveOtaFlow.tsx +569 -0
- package/src/react/index.ts +21 -0
- package/src/react/useEngineSnapshot.ts +16 -0
- package/src/react/useMentraLiveOta.ts +707 -0
- package/src/services/AppRegistry.ts +16 -0
- package/src/services/BlobStore.ts +57 -10
- package/src/services/CustomDashboardModel.ts +83 -0
- package/src/services/CustomDashboardService.ts +575 -0
- package/src/services/DeviceEventRouter.ts +47 -5
- package/src/services/GestureDotsService.ts +147 -0
- package/src/services/GlassesStatusProjection.ts +20 -11
- package/src/services/HotspotOtaTransport.ts +8 -7
- package/src/services/LocalDisplayManager.ts +130 -2
- package/src/services/LocalMiniappRuntime.ts +37 -0
- package/src/services/MiniappExitGesture.ts +76 -0
- package/src/services/OtaAutoChain.ts +130 -0
- package/src/services/OtaErrorMapping.ts +80 -0
- package/src/services/OtaInstallCoordinator.ts +19 -13
- package/src/services/OtaService.ts +1 -2
- package/src/services/OtaUpdateCheckService.ts +33 -19
- package/src/services/asg/localNetworkTransport.ts +20 -19
- package/src/services/gestureClaims.ts +28 -0
- package/src/services/gestureDotGlyphs.ts +14 -0
- package/src/services/glassesClockSync.ts +5 -1
- package/src/services/otaDisplayState.ts +1 -1
- package/src/services/otaInstallPolicy.ts +1 -1
- package/src/services/otaLegacyMapping.ts +1 -1
- package/src/services/otaManifestPolicy.ts +43 -0
- package/src/services/otaManifestUrl.ts +27 -36
- package/src/services/otaReleaseVersion.ts +22 -0
- package/src/stores/appVisibility.ts +3 -0
- package/src/stores/apps.ts +7 -1
- package/src/stores/core.ts +4 -4
- package/src/stores/glasses.ts +13 -6
- package/src/stores/settings.ts +87 -3
- package/src/types/applet.ts +2 -0
- package/src/types/enums.ts +1 -9
- package/src/types/hardware.ts +1 -1
- package/src/types/index.ts +2 -6
- package/src/utils/display/scene/process.ts +4 -3
- package/src/utils/display/scene/types.ts +0 -0
- 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 -67
- package/build/internal.d.ts.map +0 -1
- package/build/internal.js +0 -90
- package/build/internal.js.map +0 -1
- package/src/devtools.ts +0 -13
- package/src/internal.ts +0 -155
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Legacy production manifest — pre-39 glasses install from this (they ignore ota_start's URL).
|
|
2
|
+
const OTA_VERSION_URL_LEGACY_PROD = "https://ota.glassly.ai/prod_live_version.json"
|
|
3
|
+
|
|
4
|
+
function trimmed(value?: string | null): string | null {
|
|
5
|
+
const result = value?.trim()
|
|
6
|
+
return result || null
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function isLegacyAsgOtaStartBuild(glassesBuildNumber?: string | null): boolean {
|
|
10
|
+
const buildNumber = Number.parseInt(glassesBuildNumber ?? "", 10)
|
|
11
|
+
return Number.isFinite(buildNumber) && buildNumber < 39
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function selectModernOtaManifestPin({
|
|
15
|
+
developerOverride,
|
|
16
|
+
hostReleasePin,
|
|
17
|
+
engineReleasePin,
|
|
18
|
+
}: {
|
|
19
|
+
developerOverride?: string | null
|
|
20
|
+
hostReleasePin?: string | null
|
|
21
|
+
engineReleasePin?: string | null
|
|
22
|
+
}): string | null {
|
|
23
|
+
return trimmed(developerOverride) || trimmed(hostReleasePin) || trimmed(engineReleasePin)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function resolveOtaManifestPolicy({
|
|
27
|
+
glassesUrl,
|
|
28
|
+
glassesBuildNumber,
|
|
29
|
+
developerOverride,
|
|
30
|
+
hostReleasePin,
|
|
31
|
+
engineReleasePin,
|
|
32
|
+
}: {
|
|
33
|
+
glassesUrl?: string | null
|
|
34
|
+
glassesBuildNumber?: string | null
|
|
35
|
+
developerOverride?: string | null
|
|
36
|
+
hostReleasePin?: string | null
|
|
37
|
+
engineReleasePin?: string | null
|
|
38
|
+
}): string | null {
|
|
39
|
+
if (isLegacyAsgOtaStartBuild(glassesBuildNumber)) {
|
|
40
|
+
return trimmed(glassesUrl) || OTA_VERSION_URL_LEGACY_PROD
|
|
41
|
+
}
|
|
42
|
+
return selectModernOtaManifestPin({developerOverride, hostReleasePin, engineReleasePin})
|
|
43
|
+
}
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {ENGINE_RELEASE_METADATA} from "../generated/releaseMetadata"
|
|
3
2
|
import {SETTINGS, useSettingsStore} from "../stores/settings"
|
|
4
|
-
|
|
5
|
-
// Legacy production manifest — pre-39 glasses install from this (they ignore ota_start's URL).
|
|
6
|
-
const OTA_VERSION_URL_LEGACY_PROD = "https://ota.glassly.ai/prod_live_version.json"
|
|
7
|
-
// Modern production fleet manifest (v2). Only a last-resort fallback when the SDK-derived pin
|
|
8
|
-
// URL is somehow unavailable; modern glasses honor ota_start's URL, so this must be the v2
|
|
9
|
-
// artifact, not the legacy v1 rescue manifest.
|
|
10
|
-
const OTA_VERSION_URL_PROD = "https://ota.glassly.ai/prod_live_version_v2.json"
|
|
11
|
-
|
|
12
|
-
function isLegacyAsgOtaStartBuild(glassesBuildNumber?: string | null): boolean {
|
|
13
|
-
const buildNumber = Number.parseInt(glassesBuildNumber ?? "", 10)
|
|
14
|
-
// ASG builds before 39 ignore ota_start.ota_version_url, so compare against
|
|
15
|
-
// the URL they will actually use.
|
|
16
|
-
return Number.isFinite(buildNumber) && buildNumber < 39
|
|
17
|
-
}
|
|
3
|
+
import {resolveOtaManifestPolicy, selectModernOtaManifestPin} from "./otaManifestPolicy"
|
|
18
4
|
|
|
19
5
|
function getOtaVersionUrlDevOverride(): string | null {
|
|
20
6
|
// Super mode only: a wrong OTA manifest can brick glasses, so a saved
|
|
@@ -27,27 +13,32 @@ function getOtaVersionUrlDevOverride(): string | null {
|
|
|
27
13
|
return trimmed || null
|
|
28
14
|
}
|
|
29
15
|
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// compiled default, so the developer override does not apply to them either.
|
|
35
|
-
return deviceUrl || OTA_VERSION_URL_LEGACY_PROD
|
|
36
|
-
}
|
|
16
|
+
function getHostReleasePin(): string | null {
|
|
17
|
+
const value = process.env.EXPO_PUBLIC_ASG_OTA_VERSION_URL?.trim()
|
|
18
|
+
return value || null
|
|
19
|
+
}
|
|
37
20
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
21
|
+
function getEmbeddedEngineReleasePin(): string | null {
|
|
22
|
+
const value = ENGINE_RELEASE_METADATA.otaManifestUrl?.trim()
|
|
23
|
+
return value || null
|
|
24
|
+
}
|
|
42
25
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
26
|
+
export function hasConfiguredModernOtaManifestPin(): boolean {
|
|
27
|
+
return Boolean(
|
|
28
|
+
selectModernOtaManifestPin({
|
|
29
|
+
developerOverride: getOtaVersionUrlDevOverride(),
|
|
30
|
+
hostReleasePin: getHostReleasePin(),
|
|
31
|
+
engineReleasePin: getEmbeddedEngineReleasePin(),
|
|
32
|
+
}),
|
|
33
|
+
)
|
|
34
|
+
}
|
|
47
35
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
export function resolveOtaManifestUrl(glassesUrl?: string | null, glassesBuildNumber?: string | null): string | null {
|
|
37
|
+
return resolveOtaManifestPolicy({
|
|
38
|
+
glassesUrl,
|
|
39
|
+
glassesBuildNumber,
|
|
40
|
+
developerOverride: getOtaVersionUrlDevOverride(),
|
|
41
|
+
hostReleasePin: getHostReleasePin(),
|
|
42
|
+
engineReleasePin: getEmbeddedEngineReleasePin(),
|
|
43
|
+
})
|
|
53
44
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const COORDINATED_RELEASE_VERSION = /^\d+\.\d+\.\d+(?:-(?:dev|beta)\.[1-9]\d*)?$/
|
|
2
|
+
|
|
3
|
+
type OtaReleaseVersionInput = {
|
|
4
|
+
manifestReleaseVersion?: string | null
|
|
5
|
+
manifestUrl: string
|
|
6
|
+
packagedManifestUrl?: string | null
|
|
7
|
+
packagedReleaseIdentity?: string | null
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function validReleaseVersion(version: string | null | undefined): string | null {
|
|
11
|
+
const trimmed = version?.trim()
|
|
12
|
+
return trimmed && COORDINATED_RELEASE_VERSION.test(trimmed) ? trimmed : null
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Resolve the label for the selected OTA pin, including stable promotion of exact beta OTA bytes. */
|
|
16
|
+
export function resolveOtaReleaseVersion(input: OtaReleaseVersionInput): string | null {
|
|
17
|
+
const packagedRelease = validReleaseVersion(input.packagedReleaseIdentity)
|
|
18
|
+
if (packagedRelease && input.packagedManifestUrl?.trim() === input.manifestUrl.trim()) {
|
|
19
|
+
return packagedRelease
|
|
20
|
+
}
|
|
21
|
+
return validReleaseVersion(input.manifestReleaseVersion)
|
|
22
|
+
}
|
package/src/stores/apps.ts
CHANGED
|
@@ -25,6 +25,7 @@ import {islandNotifications} from "../services/NotificationsEmitter"
|
|
|
25
25
|
import sttModelManager from "../services/STTModelManager"
|
|
26
26
|
import {miniappLauncher} from "../services/MiniappLauncher"
|
|
27
27
|
import {miniappRunningRegistry} from "../services/MiniappRunningRegistry"
|
|
28
|
+
import {resolveHiddenStatus} from "./appVisibility"
|
|
28
29
|
import {SETTINGS, useSettingsStore} from "./settings"
|
|
29
30
|
import BluetoothSdk from "@glassly/bluetooth-sdk"
|
|
30
31
|
|
|
@@ -221,7 +222,12 @@ function projectApps(previousState: AppStatusState, localApps: ClientApp[]): Cli
|
|
|
221
222
|
...app,
|
|
222
223
|
screenshot: previousByPackage.get(app.packageName)?.screenshot ?? app.screenshot,
|
|
223
224
|
compatibility: HardwareCompatibility.checkCompatibility(app.hardwareRequirements, capabilities),
|
|
224
|
-
|
|
225
|
+
// A registry source can force an app off the primary home screen (for
|
|
226
|
+
// example, Miniapp Developer while its home-screen setting is disabled).
|
|
227
|
+
// Compose that gate with the user's persisted home-screen layout instead
|
|
228
|
+
// of replacing it, otherwise a default-false persisted value makes a
|
|
229
|
+
// source-hidden app visible again during projection.
|
|
230
|
+
hidden: resolveHiddenStatus(app.hidden, previousState.getHiddenStatus(app.packageName)),
|
|
225
231
|
// Derive the foreground flag from the store's single source of truth
|
|
226
232
|
// (`foregroundedPackage`), NOT from the previous snapshot. Carrying it over
|
|
227
233
|
// per-app meant a refresh that momentarily omitted an app (e.g. the
|
package/src/stores/core.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {create} from "zustand"
|
|
2
2
|
import {subscribeWithSelector} from "zustand/middleware"
|
|
3
|
-
import type {
|
|
3
|
+
import type {PublicBluetoothStatus} from "@glassly/bluetooth-sdk"
|
|
4
4
|
|
|
5
|
-
export interface CoreState extends
|
|
6
|
-
setCoreInfo: (info: Partial<
|
|
5
|
+
export interface CoreState extends PublicBluetoothStatus {
|
|
6
|
+
setCoreInfo: (info: Partial<PublicBluetoothStatus>) => void
|
|
7
7
|
reset: () => void
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
const initialState:
|
|
10
|
+
const initialState: PublicBluetoothStatus = {
|
|
11
11
|
// state:
|
|
12
12
|
searching: false,
|
|
13
13
|
searchingController: false,
|
package/src/stores/glasses.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
GlassesConnectionStatus,
|
|
3
|
-
GlassesStatus,
|
|
4
3
|
HotspotStatus,
|
|
5
4
|
OtaProgress,
|
|
6
5
|
OtaStatus,
|
|
7
6
|
OtaUpdateInfo,
|
|
7
|
+
PublicGlassesStatus,
|
|
8
8
|
WifiStatus,
|
|
9
|
-
} from "@glassly/bluetooth-sdk
|
|
9
|
+
} from "@glassly/bluetooth-sdk"
|
|
10
10
|
import {isGlassesConnected, isGlassesLinkLayerBusy, isGlassesReady} from "../services/GlassesReadiness"
|
|
11
11
|
import {create} from "zustand"
|
|
12
12
|
import {subscribeWithSelector} from "zustand/middleware"
|
|
@@ -20,7 +20,14 @@ export const selectGlassesConnected = (state: {connection: GlassesConnectionStat
|
|
|
20
20
|
|
|
21
21
|
export const selectGlassesReady = (state: {connection: GlassesConnectionStatus}) => isGlassesReady(state.connection)
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
type EngineGlassesStatus = PublicGlassesStatus & {
|
|
24
|
+
otaUpdateAvailable: OtaUpdateInfo | null
|
|
25
|
+
otaProgress: OtaProgress | null
|
|
26
|
+
otaInProgress: boolean
|
|
27
|
+
otaVersionUrl: string
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface GlassesState extends EngineGlassesStatus {
|
|
24
31
|
systemTimeMs: number
|
|
25
32
|
wifiStatusKnown: boolean
|
|
26
33
|
setGlassesInfo: (info: GlassesInfoUpdate) => void
|
|
@@ -53,7 +60,7 @@ type LegacyHotspotFields = {
|
|
|
53
60
|
hotspotLocalIp?: string
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
type GlassesInfoUpdate = Partial<
|
|
63
|
+
type GlassesInfoUpdate = Partial<EngineGlassesStatus> & LegacyWifiFields & LegacyHotspotFields
|
|
57
64
|
|
|
58
65
|
function wifiFromLegacyFields(info: LegacyWifiFields): WifiStatus | null {
|
|
59
66
|
if (info.wifiConnected === true) {
|
|
@@ -80,7 +87,7 @@ function hotspotFromLegacyFields(info: LegacyHotspotFields): HotspotStatus | nul
|
|
|
80
87
|
return null
|
|
81
88
|
}
|
|
82
89
|
|
|
83
|
-
export const getGlasesInfoPartial = (state:
|
|
90
|
+
export const getGlasesInfoPartial = (state: EngineGlassesStatus) => {
|
|
84
91
|
const wifi = state.wifi
|
|
85
92
|
const connected = isGlassesConnected(state.connection)
|
|
86
93
|
return {
|
|
@@ -98,7 +105,7 @@ export const getGlasesInfoPartial = (state: GlassesStatus) => {
|
|
|
98
105
|
}
|
|
99
106
|
}
|
|
100
107
|
|
|
101
|
-
interface GlassesStore extends
|
|
108
|
+
interface GlassesStore extends EngineGlassesStatus {
|
|
102
109
|
systemTimeMs: number
|
|
103
110
|
mtkUpdatedThisSession: boolean
|
|
104
111
|
wifiStatusKnown: boolean
|
package/src/stores/settings.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {AsyncResult, result as Res, Result} from "typesafe-ts"
|
|
|
3
3
|
import {create} from "zustand"
|
|
4
4
|
import {subscribeWithSelector} from "zustand/middleware"
|
|
5
5
|
|
|
6
|
+
import {normalizeDashboardWidgets} from "../services/CustomDashboardModel"
|
|
6
7
|
import {storage} from "../utils/storage"
|
|
7
8
|
import {getBluetoothSettingKeysForDevice} from "./bluetoothSettingKeys"
|
|
8
9
|
import {useGlassesStore} from "./glasses"
|
|
@@ -62,6 +63,13 @@ export const SETTINGS: Record<string, Setting> = {
|
|
|
62
63
|
persist: true,
|
|
63
64
|
},
|
|
64
65
|
super_mode: {key: "super_mode", defaultValue: () => false, writable: true, saveOnServer: true, persist: true},
|
|
66
|
+
appearance_menu_enabled: {
|
|
67
|
+
key: "appearance_menu_enabled",
|
|
68
|
+
defaultValue: () => false,
|
|
69
|
+
writable: true,
|
|
70
|
+
saveOnServer: true,
|
|
71
|
+
persist: true,
|
|
72
|
+
},
|
|
65
73
|
app_boot_extra_info: {
|
|
66
74
|
key: "app_boot_extra_info",
|
|
67
75
|
defaultValue: () => false,
|
|
@@ -640,6 +648,81 @@ export const SETTINGS: Record<string, Setting> = {
|
|
|
640
648
|
saveOnServer: true,
|
|
641
649
|
persist: true,
|
|
642
650
|
},
|
|
651
|
+
// Debug escape hatch: G2 scene rendering through the Glassly CFW
|
|
652
|
+
// direct-framebuffer path (rasterized mode-3 frames into the carrier).
|
|
653
|
+
// ON by default — the working production path on CFW glasses; OFF falls
|
|
654
|
+
// back to stock EvenHub containers for isolating renderer regressions.
|
|
655
|
+
// Synced to the Bluetooth SDK via BLUETOOTH_SETTING_KEYS; the SGC re-reads
|
|
656
|
+
// it per frame, but a glasses reconnect gives the cleanest switch.
|
|
657
|
+
// Device-local debug knob, so not saved on the server.
|
|
658
|
+
cfw_scene_renderer: {
|
|
659
|
+
key: "cfw_scene_renderer",
|
|
660
|
+
defaultValue: () => true,
|
|
661
|
+
writable: true,
|
|
662
|
+
saveOnServer: false,
|
|
663
|
+
persist: true,
|
|
664
|
+
},
|
|
665
|
+
// Master switch for the Scene API dashboard on G2 custom firmware
|
|
666
|
+
// (CustomDashboardService.isEligible). Off leaves an eligible device on the
|
|
667
|
+
// native head-up behavior. Device-local debug knob, so not saved on the
|
|
668
|
+
// server.
|
|
669
|
+
custom_dashboard_enabled: {
|
|
670
|
+
key: "custom_dashboard_enabled",
|
|
671
|
+
defaultValue: () => true,
|
|
672
|
+
writable: true,
|
|
673
|
+
saveOnServer: false,
|
|
674
|
+
persist: true,
|
|
675
|
+
},
|
|
676
|
+
// Gesture-dots debug indicator: flash a glyph on the glasses when a touch
|
|
677
|
+
// gesture is received while the display is empty. Works on any
|
|
678
|
+
// scene-capable device, not only CFW. Device-local debug knob, default off.
|
|
679
|
+
gesture_dots: {
|
|
680
|
+
key: "gesture_dots",
|
|
681
|
+
defaultValue: () => false,
|
|
682
|
+
writable: true,
|
|
683
|
+
saveOnServer: false,
|
|
684
|
+
persist: true,
|
|
685
|
+
},
|
|
686
|
+
// Device-local preferences for the Scene API dashboard available on G2
|
|
687
|
+
// custom firmware. Eligibility is firmware-reported at runtime, so there is
|
|
688
|
+
// deliberately no enable toggle: eligible devices replace the native
|
|
689
|
+
// dashboard automatically while stock firmware keeps its native dashboard.
|
|
690
|
+
custom_dashboard_clock_style: {
|
|
691
|
+
key: "custom_dashboard_clock_style",
|
|
692
|
+
defaultValue: () => "compact",
|
|
693
|
+
writable: true,
|
|
694
|
+
saveOnServer: false,
|
|
695
|
+
persist: true,
|
|
696
|
+
},
|
|
697
|
+
custom_dashboard_clock_show_date: {
|
|
698
|
+
key: "custom_dashboard_clock_show_date",
|
|
699
|
+
defaultValue: () => true,
|
|
700
|
+
writable: true,
|
|
701
|
+
saveOnServer: false,
|
|
702
|
+
persist: true,
|
|
703
|
+
},
|
|
704
|
+
// Ordered [{id, enabled}] list — the widget composition of the dashboard.
|
|
705
|
+
custom_dashboard_widgets: {
|
|
706
|
+
key: "custom_dashboard_widgets",
|
|
707
|
+
defaultValue: () => normalizeDashboardWidgets(null),
|
|
708
|
+
writable: true,
|
|
709
|
+
saveOnServer: false,
|
|
710
|
+
persist: true,
|
|
711
|
+
},
|
|
712
|
+
custom_dashboard_calendar_event_count: {
|
|
713
|
+
key: "custom_dashboard_calendar_event_count",
|
|
714
|
+
defaultValue: () => 2,
|
|
715
|
+
writable: true,
|
|
716
|
+
saveOnServer: false,
|
|
717
|
+
persist: true,
|
|
718
|
+
},
|
|
719
|
+
custom_dashboard_calendar_days_ahead: {
|
|
720
|
+
key: "custom_dashboard_calendar_days_ahead",
|
|
721
|
+
defaultValue: () => 3,
|
|
722
|
+
writable: true,
|
|
723
|
+
saveOnServer: false,
|
|
724
|
+
persist: true,
|
|
725
|
+
},
|
|
643
726
|
head_up_angle: {key: "head_up_angle", defaultValue: () => 45, writable: true, saveOnServer: true, persist: true},
|
|
644
727
|
brightness: {key: "brightness", defaultValue: () => 50, writable: true, saveOnServer: true, persist: true},
|
|
645
728
|
auto_brightness: {
|
|
@@ -869,6 +952,7 @@ export const BLUETOOTH_SETTING_KEYS: string[] = [
|
|
|
869
952
|
SETTINGS.menu_apps.key,
|
|
870
953
|
SETTINGS.calendar_events.key,
|
|
871
954
|
SETTINGS.use_native_dashboard.key,
|
|
955
|
+
SETTINGS.cfw_scene_renderer.key,
|
|
872
956
|
SETTINGS.twelve_hour_time.key,
|
|
873
957
|
SETTINGS.metric_system.key,
|
|
874
958
|
// button:
|
|
@@ -1139,9 +1223,9 @@ export const useSettingsStore = create<SettingsState>()(
|
|
|
1139
1223
|
// easy to get backwards. TestFlight and the App Store receive the SAME
|
|
1140
1224
|
// binary, so promotion does not change EXPO_PUBLIC_BUILD_ENV and this
|
|
1141
1225
|
// reset never fires on it. Promotion is safe for a different reason:
|
|
1142
|
-
// the publishing lane bakes
|
|
1143
|
-
//
|
|
1144
|
-
//
|
|
1226
|
+
// the publishing lane bakes the selected release cloud environment, and
|
|
1227
|
+
// production promotes the already-tested binary. The same holds for
|
|
1228
|
+
// Android beta-track to production.
|
|
1145
1229
|
//
|
|
1146
1230
|
// The residual gap is therefore an override pinned while already on a
|
|
1147
1231
|
// prod-labelled build, which no label comparison can see. That is a
|
package/src/types/applet.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type {ReactNode} from "react"
|
|
1
2
|
/**
|
|
2
3
|
* App/Applet types for client interfaces
|
|
3
4
|
*/
|
|
@@ -50,6 +51,7 @@ export interface AppletInterface {
|
|
|
50
51
|
name: string
|
|
51
52
|
webviewUrl: string
|
|
52
53
|
logoUrl: string
|
|
54
|
+
iconComponent?: ReactNode
|
|
53
55
|
type: AppletType
|
|
54
56
|
permissions: AppletPermission[]
|
|
55
57
|
running: boolean
|
package/src/types/enums.ts
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Shared enums for Glassly
|
|
3
|
-
* These are runtime values (not pure types)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Hardware requirement enums — canonical defs live in @glassly/miniapp
|
|
7
|
-
// (src/hardware.ts); re-exported here so engine-internal code and app code
|
|
8
|
-
// importing from @glassly/engine keep a single source of truth.
|
|
9
|
-
export {HardwareType, HardwareRequirementLevel} from "@glassly/miniapp"
|
|
1
|
+
export {HardwareType, HardwareRequirementLevel} from "@glassly/miniapp/hardware"
|
|
10
2
|
|
|
11
3
|
export enum DeviceTypes {
|
|
12
4
|
NONE = "None",
|
package/src/types/hardware.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {none} from "./capabilities/none"
|
|
|
13
13
|
import {DeviceTypes} from "./enums"
|
|
14
14
|
|
|
15
15
|
// Canonical def lives in @glassly/miniapp; re-exported for engine consumers.
|
|
16
|
-
export type {HardwareRequirement} from "@glassly/miniapp"
|
|
16
|
+
export type {HardwareRequirement} from "@glassly/miniapp/hardware"
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Camera capabilities
|
package/src/types/index.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* HardwareRequirementLevel, HardwareRequirement) are canonical in
|
|
4
|
-
* @glassly/miniapp and re-exported here; the rest (DeviceTypes, capability
|
|
5
|
-
* profiles under ./capabilities/, applet types) are engine-owned.
|
|
6
|
-
*/
|
|
1
|
+
/** Engine capability types and profiles. Miniapp manifest requirement types
|
|
2
|
+
* are re-exported from @glassly/miniapp, their canonical owner. */
|
|
7
3
|
|
|
8
4
|
// Enums (runtime values)
|
|
9
5
|
export {HardwareType, HardwareRequirementLevel, DeviceTypes, ControllerTypes} from "./enums"
|
|
@@ -177,9 +177,10 @@ export function processScene(
|
|
|
177
177
|
// Height clipping only applies with a CALIBRATED line height — otherwise
|
|
178
178
|
// the firmware clips vertically in-box (legacy behavior).
|
|
179
179
|
const style: SceneTextStyle = el.style ?? {}
|
|
180
|
-
if (style.font === "mono") {
|
|
181
|
-
// Grid text is laid out by the app (cols × rows)
|
|
182
|
-
//
|
|
180
|
+
if (style.font === "mono" || style.font === "builtin") {
|
|
181
|
+
// Grid text is laid out by the app (cols × rows) and builtin text by the
|
|
182
|
+
// glasses' own font engine; the host's proportional wrap metrics don't
|
|
183
|
+
// apply to either. Pass lines through and let the device clip.
|
|
183
184
|
const monoText = el.text ?? ""
|
|
184
185
|
out.push({
|
|
185
186
|
id: el.id,
|
|
Binary file
|
package/build/devtools.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `@glassly/engine/devtools` — the devtools-only surface.
|
|
3
|
-
*
|
|
4
|
-
* Debug/diagnostic singletons consumed by the Glassly app's internal dev
|
|
5
|
-
* screens (stress test, miniapp dev-server tooling). Never import this from
|
|
6
|
-
* product UI or host services; every `/devtools` import in mobile/src is
|
|
7
|
-
* counted (report-only) by scripts/check-mobile-runtime-boundary.sh.
|
|
8
|
-
*/
|
|
9
|
-
export { miniappRunningRegistry } from "./services/MiniappRunningRegistry";
|
|
10
|
-
export { default as devServerBridge } from "./services/DevServerBridge";
|
|
11
|
-
//# sourceMappingURL=devtools.d.ts.map
|
package/build/devtools.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../src/devtools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAA;AAExE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,4BAA4B,CAAA"}
|
package/build/devtools.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `@glassly/engine/devtools` — the devtools-only surface.
|
|
3
|
-
*
|
|
4
|
-
* Debug/diagnostic singletons consumed by the Glassly app's internal dev
|
|
5
|
-
* screens (stress test, miniapp dev-server tooling). Never import this from
|
|
6
|
-
* product UI or host services; every `/devtools` import in mobile/src is
|
|
7
|
-
* counted (report-only) by scripts/check-mobile-runtime-boundary.sh.
|
|
8
|
-
*/
|
|
9
|
-
// Which miniapps the local runtime currently has running (stress-test screen).
|
|
10
|
-
export { miniappRunningRegistry } from "./services/MiniappRunningRegistry";
|
|
11
|
-
// Dev-server connection bridge for live-reloading local miniapps.
|
|
12
|
-
export { default as devServerBridge } from "./services/DevServerBridge";
|
|
13
|
-
//# sourceMappingURL=devtools.js.map
|
package/build/devtools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../src/devtools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAA;AACxE,kEAAkE;AAClE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,4BAA4B,CAAA","sourcesContent":["/**\n * `@glassly/engine/devtools` — the devtools-only surface.\n *\n * Debug/diagnostic singletons consumed by the Glassly app's internal dev\n * screens (stress test, miniapp dev-server tooling). Never import this from\n * product UI or host services; every `/devtools` import in mobile/src is\n * counted (report-only) by scripts/check-mobile-runtime-boundary.sh.\n */\n\n// Which miniapps the local runtime currently has running (stress-test screen).\nexport {miniappRunningRegistry} from \"./services/MiniappRunningRegistry\"\n// Dev-server connection bridge for live-reloading local miniapps.\nexport {default as devServerBridge} from \"./services/DevServerBridge\"\n"]}
|
package/build/internal.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `@glassly/engine/internal` — the migration-era runtime surface.
|
|
3
|
-
*
|
|
4
|
-
* Raw zustand stores and service singletons that the Glassly app's host-side
|
|
5
|
-
* services (and the `@/stores/*` / `@/utils/*` shims) still reach into while
|
|
6
|
-
* the typed `engine` facades grow. Everything here either mutates runtime
|
|
7
|
-
* state or exposes a store/service directly, so none of it belongs on the
|
|
8
|
-
* OEM-facing `@glassly/engine` main entry: new host code should read/act
|
|
9
|
-
* through `engine.*` instead.
|
|
10
|
-
*
|
|
11
|
-
* Every `/internal` import in mobile/src is counted (report-only) by
|
|
12
|
-
* scripts/check-mobile-runtime-boundary.sh; the burn-down plan is
|
|
13
|
-
* cloud-v2/docs/issues/020-glasses-status-boundary/integration-review.md §D.
|
|
14
|
-
* Types that only describe these internal surfaces live here with them;
|
|
15
|
-
* types host UI renders with stay on the main entry.
|
|
16
|
-
*/
|
|
17
|
-
export { default as webviewBridge } from "./services/WebviewBridge";
|
|
18
|
-
export { default as appRegistry, normalizeManifestPermissions, normalizeManifestActions, buildHardwareRequirements, saveLocalAppRunningState, deriveDevPackageId, registerDevApp, unregisterDevApp, getDevAppRecords, getDevAppSourcePackage, getDevAppAttestation, DEV_APP_PACKAGE_NAME, type DevAppRecord, type MiniappReleaseIdentity, } from "./services/AppRegistry";
|
|
19
|
-
export { default as displayProcessor } from "./services/DisplayProcessor";
|
|
20
|
-
export { default as localDisplayManager, type DisplayPayload } from "./services/LocalDisplayManager";
|
|
21
|
-
export { default as localMiniappRuntime, type InstalledMiniappManifest } from "./services/LocalMiniappRuntime";
|
|
22
|
-
export { miniappLauncher, type LaunchHints, type LaunchResult, type ResolvedBundle } from "./services/MiniappLauncher";
|
|
23
|
-
export { JSRouter, type JSCrustBinding, type OutboundMessagePayload as JSOutboundMessage, type RouterLogger as JSRouterLogger, } from "./services/JSRouter";
|
|
24
|
-
export { buildUiShim, type UiShimOptions } from "./services/uiShim";
|
|
25
|
-
export { UIRouter, type UICrustBinding } from "./services/UIRouter";
|
|
26
|
-
export { JSCrashController, type CrashState, type CrashOutcome, type CrashControllerOptions, } from "./services/JSCrashController";
|
|
27
|
-
export { ensureMiniappEngine, getMiniappEngine, type MiniappEngine } from "./services/MiniappEngine";
|
|
28
|
-
export { redactSecrets, JSLogThrottle, JSLogRingBuffer, type ThrottleOptions } from "./services/JSLogPipeline";
|
|
29
|
-
export { buildMiniappGlobalsScript, getCapsuleMenuRect, type BuildMiniappGlobalsOptions, type CapsuleMenuRect, type MiniappColorScheme, type MiniappSafeArea, } from "./utils/miniappGlobals";
|
|
30
|
-
export { default as localSttFallbackCoordinator } from "./services/LocalSttFallbackCoordinator";
|
|
31
|
-
export { default as micStateCoordinator } from "./services/MicStateCoordinator";
|
|
32
|
-
export { default as audioPlaybackService } from "./services/AudioPlaybackService";
|
|
33
|
-
export { default as sttModelManager, STTModelManager, type LanguageInfo as SttLanguageInfo, type LanguageConfig as SttLanguageConfig, type DownloadProgress as SttDownloadProgress, type ExtractionProgress as SttExtractionProgress, } from "./services/STTModelManager";
|
|
34
|
-
export { default as ttsModelManager, TTSModelManager } from "./services/TTSModelManager";
|
|
35
|
-
export { default as offlineSpeechModelService, type DownloadStatus as OfflineModelDownloadStatus, type DownloadStage as OfflineModelDownloadStage, } from "./services/OfflineSpeechModelService";
|
|
36
|
-
export { default as navigationService } from "./services/NavigationService";
|
|
37
|
-
export { phoneLocationService, stopPhoneLocation } from "./services/PhoneLocationService";
|
|
38
|
-
export { fixGlassesClockIfSkewed, maybeFixGlassesClockFromVersionInfo } from "./services/glassesClockSync";
|
|
39
|
-
export { resolveOtaManifestUrl } from "./services/otaManifestUrl";
|
|
40
|
-
export { fetchVersionInfo, checkVersionUpdateAvailable, getLatestVersionInfo, findMatchingMtkPatch, checkBesUpdate, checkForOtaUpdate, checkCurrentGlassesForUpdate, } from "./services/OtaUpdateCheckService";
|
|
41
|
-
export { detectClockSkew, isSyncManifestEmpty, CLOCK_SKEW_TOLERANCE_MS } from "./services/gallerySyncClock";
|
|
42
|
-
export { gallerySyncService } from "./services/asg/gallerySyncService";
|
|
43
|
-
export { asgCameraApi } from "./services/asg/asgCameraApi";
|
|
44
|
-
export { localStorageService } from "./services/asg/localStorageService";
|
|
45
|
-
export { mediaProcessingQueue } from "./services/asg/mediaProcessingQueue";
|
|
46
|
-
export { gallerySettingsService } from "./services/asg/gallerySettingsService";
|
|
47
|
-
export { cameraRollExportCoordinator, type CameraRollExportSummary } from "./services/asg/cameraRollExportCoordinator";
|
|
48
|
-
export { INVALID_DOWNLOADED_MEDIA, validateCaptureMetadataForDownload, validateDownloadedMediaFile, } from "./services/asg/galleryMediaValidation";
|
|
49
|
-
export { emitGalleryNotice, onGalleryNotice } from "./services/asg/galleryNotices";
|
|
50
|
-
export { phonePhotoCoordinator } from "./services/PhonePhotoCoordinator";
|
|
51
|
-
export { phoneStreamCoordinator } from "./services/PhoneStreamCoordinator";
|
|
52
|
-
export { useDisplayStore, flushDisplayCoalesceForTests } from "./stores/display";
|
|
53
|
-
export { useCoreStore } from "./stores/core";
|
|
54
|
-
export { useConnectionStore } from "./stores/connection";
|
|
55
|
-
export { useCloudClientStatusStore } from "./stores/cloudClientStatus";
|
|
56
|
-
export type { RuntimeAudioTransport, RuntimeSnapshot, RuntimeStatus } from "./stores/cloudClientStatus";
|
|
57
|
-
export { SETTINGS, OFFLINE_APPLETS, useSettingsStore, useSetting } from "./stores/settings";
|
|
58
|
-
export { MENTRA_LIVE_SETTING_KEYS, getBluetoothSettingKeysForDevice } from "./stores/bluetoothSettingKeys";
|
|
59
|
-
export { useAppStatusStore, installAppStoreHooks, type AppStoreHooks } from "./stores/apps";
|
|
60
|
-
export { cloudSecureStore } from "./utils/cloudClient/cloudSecureStore";
|
|
61
|
-
export { cloudClientService } from "./services/CloudClientService";
|
|
62
|
-
export { createCloudUdpSocket } from "./utils/cloudClient/RnUdpAdapter";
|
|
63
|
-
export { logBuffer, type LogEntry } from "./utils/devLogging";
|
|
64
|
-
export { default as BluetoothSdk } from "@glassly/bluetooth-sdk/internal";
|
|
65
|
-
export { storage, printDirectory } from "./utils/storage";
|
|
66
|
-
export { default as GlobalEventEmitter } from "./utils/GlobalEventEmitter";
|
|
67
|
-
//# sourceMappingURL=internal.d.ts.map
|
package/build/internal.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|