@glassly/engine 0.3.8-dev.1006 → 0.3.8-dev.1008

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.
@@ -12,9 +12,9 @@ export interface EngineReleaseMetadata {
12
12
  export const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({
13
13
  "schemaVersion": 1,
14
14
  "familyBaseVersion": "0.3.8",
15
- "releaseIdentity": "0.3.8-dev.1006",
16
- "releaseSetId": "glassly-0.3.8-dev.1006",
17
- "sourceCommit": "659d87701629ff1aa6865e2325c3181a7d19fe6a",
15
+ "releaseIdentity": "0.3.8-dev.1008",
16
+ "releaseSetId": "glassly-0.3.8-dev.1008",
17
+ "sourceCommit": "486f740a9e8432ecaa76787a763eb35aedd020ac",
18
18
  "otaManifestUrl": null,
19
19
  "otaManifestSha256": null
20
20
  })
@@ -56,6 +56,7 @@ const INPUT_SURFACES: Readonly<Record<string, readonly InputSurface[]>> = {
56
56
  [ControllerTypes.GAMEBRICK]: [GAMEBRICK_SURFACE],
57
57
  [ControllerTypes.IINE_ANANKE]: [GAMEBRICK_SURFACE],
58
58
  [ControllerTypes.ZERO2]: [GAMEBRICK_SURFACE],
59
+ [ControllerTypes.MICRO]: [GAMEBRICK_SURFACE],
59
60
  [ControllerTypes.R1]: [],
60
61
  }
61
62
 
@@ -77,12 +77,12 @@ const IDLE_HANDWRITING: NeuralBandHandwritingStatus = {phase: "idle", message: "
77
77
  const IDLE_FIRMWARE: NeuralBandFirmwareStatus = {
78
78
  known: false,
79
79
  connected: false,
80
- busy: false,
81
- cancellable: true,
82
80
  hasMetaSession: false,
83
- hasSerial: false,
84
- log: [],
85
- items: [],
81
+ checked: false,
82
+ updateAvailable: false,
83
+ phase: "idle",
84
+ progress: 0,
85
+ message: "",
86
86
  }
87
87
 
88
88
  export class NeuralBandInput {
@@ -32,6 +32,13 @@ function pushHand(id: string): void {
32
32
  )
33
33
  }
34
34
 
35
+ function pushVibration(id: string): void {
36
+ const enabled = useSettingsStore.getState().getSetting(SETTINGS.neural_band_vibration.key) !== false
37
+ void BluetoothSdk.neuralBandSetGestureHaptics(id, enabled).catch((err) =>
38
+ console.warn("NeuralBandSettingsSync: vibration push failed:", err),
39
+ )
40
+ }
41
+
35
42
  export function startNeuralBandSettingsSync(): void {
36
43
  if (unsubscribers.length > 0) return
37
44
  let connected = new Set(connectedBandIds())
@@ -44,6 +51,7 @@ export function startNeuralBandSettingsSync(): void {
44
51
  if (connected.has(id)) continue
45
52
  pushAirMouse(id)
46
53
  pushHand(id)
54
+ pushVibration(id)
47
55
  }
48
56
  connected = next
49
57
  },
@@ -56,6 +64,10 @@ export function startNeuralBandSettingsSync(): void {
56
64
  (s) => s.getSetting(SETTINGS.neural_band_hand.key),
57
65
  () => connectedBandIds().forEach(pushHand),
58
66
  ),
67
+ useSettingsStore.subscribe(
68
+ (s) => s.getSetting(SETTINGS.neural_band_vibration.key),
69
+ () => connectedBandIds().forEach(pushVibration),
70
+ ),
59
71
  ]
60
72
  }
61
73
 
@@ -848,6 +848,14 @@ export const SETTINGS: Record<string, Setting> = {
848
848
  saveOnServer: false,
849
849
  persist: true,
850
850
  },
851
+ // The band's own buzz on each gesture (its haptics pattern 1; pattern 2 is silent).
852
+ neural_band_vibration: {
853
+ key: "neural_band_vibration",
854
+ defaultValue: () => true,
855
+ writable: true,
856
+ saveOnServer: false,
857
+ persist: true,
858
+ },
851
859
  // Watch (Apple Watch, Wear OS): draw the glasses' current frame behind the watch
852
860
  // trackpad. Frames cross the watch link while the watch app is up, so it stays off
853
861
  // unless asked for.
@@ -24,4 +24,5 @@ export enum ControllerTypes {
24
24
  GAMEBRICK = "IINE Gamebrick",
25
25
  IINE_ANANKE = "IINE Ananke Gen 2",
26
26
  ZERO2 = "8BitDo Zero 2",
27
+ MICRO = "8BitDo Micro",
27
28
  }