@glassly/engine 0.3.1-beta.527 → 0.3.1-beta.551
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/generated/releaseMetadata.js +3 -3
- 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 +1 -1
- package/build/index.js.map +1 -1
- package/build/services/DisplayProcessor.d.ts.map +1 -1
- package/build/services/DisplayProcessor.js +2 -1
- package/build/services/DisplayProcessor.js.map +1 -1
- package/build/services/GlassesTouchInput.d.ts.map +1 -1
- package/build/services/GlassesTouchInput.js +6 -6
- package/build/services/GlassesTouchInput.js.map +1 -1
- package/build/services/effectiveCapabilities.d.ts.map +1 -1
- package/build/services/effectiveCapabilities.js +7 -4
- package/build/services/effectiveCapabilities.js.map +1 -1
- package/build/services/pages/pageEligibility.d.ts +6 -2
- package/build/services/pages/pageEligibility.d.ts.map +1 -1
- package/build/services/pages/pageEligibility.js +11 -4
- package/build/services/pages/pageEligibility.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +14 -0
- package/build/stores/settings.js.map +1 -1
- package/build/types/applet.d.ts +4 -2
- package/build/types/applet.d.ts.map +1 -1
- package/build/types/applet.js.map +1 -1
- package/build/types/capabilities/rayneo-io.d.ts +14 -0
- package/build/types/capabilities/rayneo-io.d.ts.map +1 -0
- package/build/types/capabilities/rayneo-io.js +84 -0
- package/build/types/capabilities/rayneo-io.js.map +1 -0
- package/build/types/enums.d.ts +2 -1
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +1 -0
- package/build/types/enums.js.map +1 -1
- package/build/types/hardware.d.ts +2 -1
- package/build/types/hardware.d.ts.map +1 -1
- package/build/types/hardware.js +3 -2
- package/build/types/hardware.js.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js +1 -1
- package/build/types/index.js.map +1 -1
- package/build/utils/display/index.d.ts +1 -0
- package/build/utils/display/index.d.ts.map +1 -1
- package/build/utils/display/index.js +2 -0
- package/build/utils/display/index.js.map +1 -1
- package/build/utils/display/profiles/index.d.ts +1 -0
- package/build/utils/display/profiles/index.d.ts.map +1 -1
- package/build/utils/display/profiles/index.js +2 -0
- package/build/utils/display/profiles/index.js.map +1 -1
- package/build/utils/display/profiles/rayneo-io.d.ts +2 -0
- package/build/utils/display/profiles/rayneo-io.d.ts.map +1 -0
- package/build/utils/display/profiles/rayneo-io.js +3 -0
- package/build/utils/display/profiles/rayneo-io.js.map +1 -0
- package/package.json +7 -7
- package/src/generated/releaseMetadata.ts +3 -3
- package/src/index.ts +1 -0
- package/src/services/DisplayProcessor.ts +2 -0
- package/src/services/GlassesTouchInput.ts +6 -9
- package/src/services/effectiveCapabilities.ts +6 -3
- package/src/services/pages/pageEligibility.ts +12 -3
- package/src/stores/settings.ts +14 -0
- package/src/types/applet.ts +4 -17
- package/src/types/capabilities/rayneo-io.ts +101 -0
- package/src/types/enums.ts +1 -0
- package/src/types/hardware.ts +3 -2
- package/src/types/index.ts +1 -0
- package/src/utils/display/index.ts +3 -0
- package/src/utils/display/profiles/index.ts +3 -0
- package/src/utils/display/profiles/rayneo-io.ts +2 -0
package/src/stores/settings.ts
CHANGED
|
@@ -742,6 +742,19 @@ export const SETTINGS: Record<string, Setting> = {
|
|
|
742
742
|
saveOnServer: false,
|
|
743
743
|
persist: true,
|
|
744
744
|
},
|
|
745
|
+
// Debug: route the R1 ring through the glasses (advStart + RING_CONNECT_INFO,
|
|
746
|
+
// events forwarded by the CFW) instead of the phone link. OFF by default:
|
|
747
|
+
// the ring sends its touch reports to the glasses whenever it holds glasses
|
|
748
|
+
// targets, so the phone link only carries telemetry until those are erased.
|
|
749
|
+
// Synced to the Bluetooth SDK, which re-routes a connected ring on change.
|
|
750
|
+
// Device-local debug knob, so not saved on the server.
|
|
751
|
+
ring_via_glasses: {
|
|
752
|
+
key: "ring_via_glasses",
|
|
753
|
+
defaultValue: () => false,
|
|
754
|
+
writable: true,
|
|
755
|
+
saveOnServer: false,
|
|
756
|
+
persist: true,
|
|
757
|
+
},
|
|
745
758
|
// Maximum rate at which display updates leave the phone for the glasses.
|
|
746
759
|
// The Bluetooth SDK paces every scene frame and legacy layout to this,
|
|
747
760
|
// coalescing faster updates last-wins; clears bypass it. No effect on G2
|
|
@@ -1094,6 +1107,7 @@ export const BLUETOOTH_SETTING_KEYS: string[] = [
|
|
|
1094
1107
|
SETTINGS.cfw_scene_renderer.key,
|
|
1095
1108
|
SETTINGS.cfw_fast_ble.key,
|
|
1096
1109
|
SETTINGS.g2_perf_logs.key,
|
|
1110
|
+
SETTINGS.ring_via_glasses.key,
|
|
1097
1111
|
SETTINGS.display_max_fps.key,
|
|
1098
1112
|
SETTINGS.twelve_hour_time.key,
|
|
1099
1113
|
SETTINGS.metric_system.key,
|
package/src/types/applet.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type {ManifestPermissionType} from "@glassly/miniapp/manifest"
|
|
1
2
|
import type {ReactNode} from "react"
|
|
2
3
|
/**
|
|
3
4
|
* App and miniapp types owned by @glassly/engine.
|
|
@@ -13,24 +14,10 @@ import type {CompatibilityResult} from "../utils/hardware/hardware"
|
|
|
13
14
|
export type AppletType = "standard" | "background" | "dashboard"
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
|
-
* Permission types that apps can request
|
|
17
|
+
* Permission types that apps can request: the manifest vocabulary from the
|
|
18
|
+
* SDK (the single source the CLI validator reads too) plus the host-only ALL.
|
|
17
19
|
*/
|
|
18
|
-
export type AppPermissionType =
|
|
19
|
-
| "ALL"
|
|
20
|
-
| "MICROPHONE"
|
|
21
|
-
| "CAMERA"
|
|
22
|
-
| "CALENDAR"
|
|
23
|
-
| "LOCATION"
|
|
24
|
-
| "BACKGROUND_LOCATION"
|
|
25
|
-
| "READ_NOTIFICATIONS"
|
|
26
|
-
| "DISPLAY_MIRROR"
|
|
27
|
-
| "POST_NOTIFICATIONS"
|
|
28
|
-
| "API_KEYS"
|
|
29
|
-
| "MEMORY"
|
|
30
|
-
| "AI"
|
|
31
|
-
| "SPEAKERS"
|
|
32
|
-
| "MANAGE_MINIAPPS"
|
|
33
|
-
| "PLATFORM_SETTINGS"
|
|
20
|
+
export type AppPermissionType = "ALL" | ManifestPermissionType
|
|
34
21
|
|
|
35
22
|
/**
|
|
36
23
|
* Permission object with type and description
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview RayNeo iO Hardware Capabilities
|
|
3
|
+
*
|
|
4
|
+
* Capability profile for the RayNeo iO smart glasses. The stock firmware
|
|
5
|
+
* exposes a single-line subtitle page over a framed BLE protocol; with the
|
|
6
|
+
* Glassly CFW installed the glasses open a 540×180 page the phone draws into
|
|
7
|
+
* through the Glassly CFW record protocol (positioned text, images, rects).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type {Capabilities} from "../hardware"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* RayNeo iO capability profile
|
|
14
|
+
*/
|
|
15
|
+
export const rayneoIO: Capabilities = {
|
|
16
|
+
modelName: "RayNeo iO",
|
|
17
|
+
|
|
18
|
+
// Camera capabilities - no camera
|
|
19
|
+
hasCamera: false,
|
|
20
|
+
camera: null,
|
|
21
|
+
|
|
22
|
+
// Display capabilities - single monochrome (1-bit) panel
|
|
23
|
+
hasDisplay: true,
|
|
24
|
+
display: {
|
|
25
|
+
count: 1,
|
|
26
|
+
isColor: false,
|
|
27
|
+
color: "green",
|
|
28
|
+
// Bitmaps and positioned elements need the Glassly CFW; stock firmware
|
|
29
|
+
// only shows text through its subtitle page.
|
|
30
|
+
canDisplayBitmap: true,
|
|
31
|
+
resolution: {width: 540, height: 180},
|
|
32
|
+
fieldOfView: {horizontal: 30},
|
|
33
|
+
maxTextLines: 5,
|
|
34
|
+
adjustBrightness: true,
|
|
35
|
+
|
|
36
|
+
// Scene display API — the Glassly CFW page canvas.
|
|
37
|
+
width: 540,
|
|
38
|
+
height: 180,
|
|
39
|
+
canPosition: true,
|
|
40
|
+
maxTextElements: 6,
|
|
41
|
+
maxImageElements: 4,
|
|
42
|
+
intensityLevels: 2,
|
|
43
|
+
partialUpdate: true,
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
// Microphone capabilities - one Opus mic stream through the voice page
|
|
47
|
+
hasMicrophone: true,
|
|
48
|
+
microphone: {
|
|
49
|
+
count: 1,
|
|
50
|
+
hasVAD: false,
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
// Speaker capabilities - no speaker channel in the protocol
|
|
54
|
+
hasSpeaker: false,
|
|
55
|
+
speaker: null,
|
|
56
|
+
|
|
57
|
+
// IMU capabilities - stock firmware exposes no IMU or head-gesture stream
|
|
58
|
+
hasIMU: false,
|
|
59
|
+
imu: null,
|
|
60
|
+
|
|
61
|
+
// Button capabilities - temple touchpad/crown plus a physical button
|
|
62
|
+
hasButton: true,
|
|
63
|
+
button: {
|
|
64
|
+
count: 1,
|
|
65
|
+
buttons: [
|
|
66
|
+
{
|
|
67
|
+
type: "swipe1d",
|
|
68
|
+
events: ["TAP", "DOUBLE_TAP", "PRESS_HOLD", "SWIPE_UP", "SWIPE_DOWN"],
|
|
69
|
+
isCapacitive: true,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
// Light capabilities - no lights
|
|
75
|
+
hasLight: false,
|
|
76
|
+
light: null,
|
|
77
|
+
|
|
78
|
+
// Power capabilities
|
|
79
|
+
power: {
|
|
80
|
+
hasExternalBattery: false,
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
// WiFi capabilities - no WiFi
|
|
84
|
+
hasWifi: false,
|
|
85
|
+
|
|
86
|
+
// OTA capabilities - RayNeo iO updates are not driven by the ASG OTA flow
|
|
87
|
+
hasOta: false,
|
|
88
|
+
|
|
89
|
+
// Glassly CFW is bundled for the RayNeo iO and flashed over BLE from the app
|
|
90
|
+
hasCustomFirmware: true,
|
|
91
|
+
|
|
92
|
+
// Dashboard - the launcher renders its own status UI; Glassly does not
|
|
93
|
+
// manage the dashboard settings for it
|
|
94
|
+
hasNativeDashboard: true,
|
|
95
|
+
|
|
96
|
+
// Navigation - no firmware nav UI
|
|
97
|
+
hasNativeNavigation: false,
|
|
98
|
+
|
|
99
|
+
// Firmware notification popups: the phone uploads notification content
|
|
100
|
+
hasNativeNotifications: true,
|
|
101
|
+
}
|
package/src/types/enums.ts
CHANGED
package/src/types/hardware.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {mentraDisplay} from "./capabilities/mentra-display"
|
|
|
8
8
|
import {mentraLive} from "./capabilities/mentra-live"
|
|
9
9
|
import {simulatedGlasses} from "./capabilities/simulated-glasses"
|
|
10
10
|
import {nimo} from "./capabilities/nimo"
|
|
11
|
+
import {rayneoIO} from "./capabilities/rayneo-io"
|
|
11
12
|
import {vuzixZ100} from "./capabilities/vuzix-z100"
|
|
12
13
|
import {none} from "./capabilities/none"
|
|
13
14
|
import {DeviceTypes} from "./enums"
|
|
@@ -230,8 +231,8 @@ export const HARDWARE_CAPABILITIES: Record<string, Capabilities> = {
|
|
|
230
231
|
[simulatedGlasses.modelName]: simulatedGlasses,
|
|
231
232
|
[vuzixZ100.modelName]: vuzixZ100,
|
|
232
233
|
[nimo.modelName]: nimo,
|
|
234
|
+
[rayneoIO.modelName]: rayneoIO,
|
|
233
235
|
[DeviceTypes.MACH1]: vuzixZ100, // Mach1 uses same Vuzix Ultralite hardware as Z100
|
|
234
|
-
[nimo.modelName]: nimo,
|
|
235
236
|
[DeviceTypes.AR99]: {
|
|
236
237
|
...evenRealitiesG1,
|
|
237
238
|
modelName: DeviceTypes.AR99,
|
|
@@ -260,4 +261,4 @@ export const getModelCapabilities = (deviceType: DeviceTypes): Capabilities => {
|
|
|
260
261
|
}
|
|
261
262
|
|
|
262
263
|
// export * from "./capabilities"
|
|
263
|
-
export {simulatedGlasses, evenRealitiesG1, evenRealitiesG2, mentraLive, vuzixZ100, mentraDisplay, nimo}
|
|
264
|
+
export {simulatedGlasses, evenRealitiesG1, evenRealitiesG2, mentraLive, vuzixZ100, mentraDisplay, nimo, rayneoIO}
|
package/src/types/index.ts
CHANGED
|
@@ -70,6 +70,9 @@ export {Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX} from "./profile
|
|
|
70
70
|
// Mentra Nex Profile (a.k.a. Mentra Display)
|
|
71
71
|
export {NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX} from "./profiles"
|
|
72
72
|
|
|
73
|
+
// RayNeo iO Profile (stock subtitle page)
|
|
74
|
+
export {RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX} from "./profiles"
|
|
75
|
+
|
|
73
76
|
// =============================================================================
|
|
74
77
|
// Measurer - Pixel-accurate text measurement
|
|
75
78
|
// =============================================================================
|
|
@@ -26,3 +26,6 @@ export {G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX} from "./g2"
|
|
|
26
26
|
|
|
27
27
|
// Mentra Nex Profile (a.k.a. Mentra Display)
|
|
28
28
|
export {NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX} from "./nex"
|
|
29
|
+
|
|
30
|
+
// RayNeo iO Profile (stock subtitle page)
|
|
31
|
+
export {RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX} from "./rayneo-io"
|