@glassly/engine 0.3.8-dev.1014 → 0.3.8-dev.1016
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/services/GlassesSensorService.js +1 -1
- package/build/services/GlassesSensorService.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 +50 -0
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/neuralBand/HandwritingGate.d.ts +38 -0
- package/build/services/neuralBand/HandwritingGate.d.ts.map +1 -0
- package/build/services/neuralBand/HandwritingGate.js +89 -0
- package/build/services/neuralBand/HandwritingGate.js.map +1 -0
- package/build/services/neuralBand/NeuralBandSettingsSync.d.ts.map +1 -1
- package/build/services/neuralBand/NeuralBandSettingsSync.js +30 -3
- package/build/services/neuralBand/NeuralBandSettingsSync.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +10 -0
- package/build/stores/settings.js.map +1 -1
- package/package.json +7 -7
- package/src/generated/releaseMetadata.ts +3 -3
- package/src/services/GlassesSensorService.ts +1 -1
- package/src/services/LocalMiniappRuntime.ts +49 -0
- package/src/services/neuralBand/HandwritingGate.ts +111 -0
- package/src/services/neuralBand/NeuralBandSettingsSync.ts +34 -3
- package/src/stores/settings.ts +10 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const ENGINE_RELEASE_METADATA = Object.freeze({
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"familyBaseVersion": "0.3.8",
|
|
4
|
-
"releaseIdentity": "0.3.8-dev.
|
|
5
|
-
"releaseSetId": "glassly-0.3.8-dev.
|
|
6
|
-
"sourceCommit": "
|
|
4
|
+
"releaseIdentity": "0.3.8-dev.1016",
|
|
5
|
+
"releaseSetId": "glassly-0.3.8-dev.1016",
|
|
6
|
+
"sourceCommit": "edfd98ccaff565b9d1f5de22d68c5f918806d75e",
|
|
7
7
|
"otaManifestUrl": null,
|
|
8
8
|
"otaManifestSha256": null
|
|
9
9
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,wBAAwB;IACxC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface EngineReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"0.3.8\",\n \"releaseIdentity\": \"0.3.8-dev.
|
|
1
|
+
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,wBAAwB;IACxC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface EngineReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"0.3.8\",\n \"releaseIdentity\": \"0.3.8-dev.1016\",\n \"releaseSetId\": \"glassly-0.3.8-dev.1016\",\n \"sourceCommit\": \"edfd98ccaff565b9d1f5de22d68c5f918806d75e\",\n \"otaManifestUrl\": null,\n \"otaManifestSha256\": null\n})\n"]}
|
|
@@ -109,7 +109,7 @@ export class GlassesSensorService {
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
commandFailed() {
|
|
112
|
-
fail(MiniappErrorCode.INTERNAL, "Sensor command failed:
|
|
112
|
+
fail(MiniappErrorCode.INTERNAL, "Sensor command failed: the glasses need Glassly custom firmware with this sensor, and on the G2 an active miniapp display");
|
|
113
113
|
}
|
|
114
114
|
/** Miniapps currently subscribed to the glasses compass stream. Replaces the previous set. */
|
|
115
115
|
setCompassSubscribers(apps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlassesSensorService.js","sourceRoot":"","sources":["../../src/services/GlassesSensorService.ts"],"names":[],"mappings":"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","sourcesContent":["import BluetoothSdk from \"@glassly/bluetooth-sdk/internal\"\nimport {MiniappErrorCode} from \"@glassly/miniapp/protocol\"\nimport {BgTimer} from \"../utils/timers\"\n\ntype Sensor = \"light\" | \"compass\"\ntype Operation = \"query\" | \"start\" | \"stop\"\ntype Options = Record<string, number>\ntype Control = (sensor: Sensor, operation: Operation, options: Options) => Promise<boolean>\ntype Owner = {app: string; options: Options}\n\nconst RANGES: Record<Sensor, Record<string, [number, number]>> = {\n light: {intervalMs: [100, 5000], minDelta: [0, 65535], heartbeatMs: [0, 65535]},\n compass: {intervalMs: [50, 2000], minChangeDegrees: [0, 359]},\n}\nconst COMPASS_DEFAULTS: Options = {intervalMs: 1000, minChangeDegrees: 5}\nconst COMPASS_RETRY_MS = [2000, 4000, 8000]\n\nfunction fail(code: MiniappErrorCode, message: string): never {\n throw Object.assign(new Error(message), {code})\n}\n\nfunction sameOptions(a: Options | null, b: Options | null): boolean {\n if (!a || !b) return a === b\n const keys = new Set([...Object.keys(a), ...Object.keys(b)])\n for (const key of keys) if (a[key] !== b[key]) return false\n return true\n}\n\n/**\n * Light: explicit, miniapp-scoped ownership. A subscriber alone never changes auto brightness.\n * Compass: demand-driven. It runs while any miniapp is subscribed; `start(options)` only\n * records that miniapp's override and everyone is served the smallest interval and\n * threshold requested. Native navigation temporarily borrows both; its stock configuration wins.\n */\nexport class GlassesSensorService {\n private lightOwner: Owner | null = null\n private compassSubscribers = new Set<string>()\n private compassOverrides = new Map<string, Options>()\n /** Options the firmware currently runs; null while stopped. */\n private compassApplied: Options | null = null\n private compassRetry: number | null = null\n private compassRetryAttempt = 0\n private pending: Promise<unknown> = Promise.resolve()\n private navigationActive = false\n private generation = 0\n\n constructor(private readonly control: Control) {}\n\n private serial<T>(work: () => Promise<T>): Promise<T> {\n const next = this.pending.then(work)\n this.pending = next.catch(() => {})\n return next\n }\n\n private validate(payload: Record<string, unknown>): {sensor: Sensor; operation: Operation; options: Options} {\n const sensor = payload.sensor\n const operation = payload.operation\n if (sensor !== \"light\" && sensor !== \"compass\") fail(MiniappErrorCode.INVALID_ARGUMENT, \"Unknown sensor\")\n if (operation !== \"start\" && operation !== \"stop\" && !(sensor === \"light\" && operation === \"query\")) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Unknown sensor operation\")\n }\n const raw = payload.options ?? {}\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw))\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Invalid sensor options\")\n const ranges = RANGES[sensor]\n const options: Options = {}\n for (const [key, value] of Object.entries(raw)) {\n const range = Object.prototype.hasOwnProperty.call(ranges, key) ? ranges[key] : undefined\n if (!range || typeof value !== \"number\" || !Number.isInteger(value) || value < range[0] || value > range[1]) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, `Invalid ${key}`)\n }\n options[key] = value\n }\n return {sensor, operation, options}\n }\n\n request(app: string, payload: Record<string, unknown>): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n const {sensor, operation, options} = this.validate(payload)\n if (sensor === \"compass\") {\n if (operation === \"start\") this.compassOverrides.set(app, options)\n else this.compassOverrides.delete(app)\n if (this.navigationActive) return\n await this.applyCompass(generation, true)\n return\n }\n const owner = this.lightOwner\n if (operation !== \"query\" && owner && owner.app !== app) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"This sensor is controlled by another miniapp\")\n }\n if (operation === \"stop\" && !owner) return\n if (this.navigationActive) {\n if (operation === \"stop\") {\n this.lightOwner = null\n return\n }\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Native navigation currently owns the glasses sensors\")\n }\n // Keep cleanup ownership even after an ambiguous transport failure: the firmware\n // may have applied the command before its ACK was lost.\n if (operation === \"start\") this.lightOwner = {app, options}\n if (!(await this.control(\"light\", operation, options))) this.commandFailed()\n if (generation !== this.generation) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n if (operation === \"stop\") this.lightOwner = null\n })\n }\n\n private commandFailed(): never {\n fail(\n MiniappErrorCode.INTERNAL,\n \"Sensor command failed: connect G2 custom firmware and keep its miniapp display active\",\n )\n }\n\n /** Miniapps currently subscribed to the glasses compass stream. Replaces the previous set. */\n setCompassSubscribers(apps: Iterable<string>): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n this.compassSubscribers = new Set(apps)\n if (generation !== this.generation || this.navigationActive) return\n await this.applyCompass(generation, false)\n })\n }\n\n private compassDemand(): Options | null {\n if (this.compassSubscribers.size === 0 && this.compassOverrides.size === 0) return null\n const requests = [...this.compassOverrides.values()].map((o) => ({...COMPASS_DEFAULTS, ...o}))\n for (const app of this.compassSubscribers) if (!this.compassOverrides.has(app)) requests.push(COMPASS_DEFAULTS)\n const demand: Options = {}\n for (const key of Object.keys(COMPASS_DEFAULTS)) demand[key] = Math.min(...requests.map((r) => r[key]))\n return demand\n }\n\n /**\n * Bring the firmware in line with current demand. Explicit requests surface failures;\n * subscription-driven applies stay silent (stock firmware, no CFW carrier yet) and retry\n * a few times so a compass subscribed before firmware classification still starts.\n */\n private async applyCompass(generation: number, explicit: boolean): Promise<void> {\n this.clearCompassRetry()\n const demand = this.compassDemand()\n if (sameOptions(demand, this.compassApplied)) return\n if (!demand) {\n const ok = await this.control(\"compass\", \"stop\", {})\n if (generation === this.generation) this.compassApplied = null\n if (!ok && explicit) this.commandFailed()\n return\n }\n const ok = await this.control(\"compass\", \"start\", demand)\n if (generation !== this.generation) {\n if (explicit) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n return\n }\n if (ok) {\n this.compassApplied = demand\n this.compassRetryAttempt = 0\n return\n }\n if (explicit) this.commandFailed()\n const delay = COMPASS_RETRY_MS[this.compassRetryAttempt]\n if (delay === undefined) return\n this.compassRetryAttempt++\n this.compassRetry = BgTimer.setTimeout(() => {\n this.compassRetry = null\n void this.resync()\n }, delay)\n }\n\n private clearCompassRetry(): void {\n if (this.compassRetry != null) BgTimer.clearTimeout(this.compassRetry)\n this.compassRetry = null\n }\n\n /** Re-apply compass demand after the glasses connect or their firmware is classified. */\n resync(): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation || this.navigationActive) return\n await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n release(app: string): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) return\n const hadSubscription = this.compassSubscribers.delete(app)\n const hadOverride = this.compassOverrides.delete(app)\n const hadCompass = hadSubscription || hadOverride\n if (this.lightOwner?.app === app) {\n if (!this.navigationActive) await this.control(\"light\", \"stop\", {}).catch(() => false)\n this.lightOwner = null\n }\n if (hadCompass && !this.navigationActive) await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n setNavigationActive(active: boolean): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) return\n if (this.navigationActive === active) return\n this.navigationActive = active\n this.clearCompassRetry()\n if (active) {\n if (this.lightOwner) await this.control(\"light\", \"stop\", {}).catch(() => false)\n if (this.compassApplied) await this.control(\"compass\", \"stop\", {}).catch(() => false)\n this.compassApplied = null\n return\n }\n if (this.lightOwner) await this.control(\"light\", \"start\", this.lightOwner.options).catch(() => false)\n this.compassRetryAttempt = 0\n await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n /** Never replay requests from an old miniapp connection onto a new pair of glasses. */\n disconnected(): void {\n this.generation++\n this.clearCompassRetry()\n this.compassRetryAttempt = 0\n this.lightOwner = null\n this.compassApplied = null\n this.navigationActive = false\n }\n}\n\nconst glassesSensorService = new GlassesSensorService((sensor, operation, options) =>\n BluetoothSdk.glassesSensorControl(sensor, operation, options),\n)\nexport default glassesSensorService\n"]}
|
|
1
|
+
{"version":3,"file":"GlassesSensorService.js","sourceRoot":"","sources":["../../src/services/GlassesSensorService.ts"],"names":[],"mappings":"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","sourcesContent":["import BluetoothSdk from \"@glassly/bluetooth-sdk/internal\"\nimport {MiniappErrorCode} from \"@glassly/miniapp/protocol\"\nimport {BgTimer} from \"../utils/timers\"\n\ntype Sensor = \"light\" | \"compass\"\ntype Operation = \"query\" | \"start\" | \"stop\"\ntype Options = Record<string, number>\ntype Control = (sensor: Sensor, operation: Operation, options: Options) => Promise<boolean>\ntype Owner = {app: string; options: Options}\n\nconst RANGES: Record<Sensor, Record<string, [number, number]>> = {\n light: {intervalMs: [100, 5000], minDelta: [0, 65535], heartbeatMs: [0, 65535]},\n compass: {intervalMs: [50, 2000], minChangeDegrees: [0, 359]},\n}\nconst COMPASS_DEFAULTS: Options = {intervalMs: 1000, minChangeDegrees: 5}\nconst COMPASS_RETRY_MS = [2000, 4000, 8000]\n\nfunction fail(code: MiniappErrorCode, message: string): never {\n throw Object.assign(new Error(message), {code})\n}\n\nfunction sameOptions(a: Options | null, b: Options | null): boolean {\n if (!a || !b) return a === b\n const keys = new Set([...Object.keys(a), ...Object.keys(b)])\n for (const key of keys) if (a[key] !== b[key]) return false\n return true\n}\n\n/**\n * Light: explicit, miniapp-scoped ownership. A subscriber alone never changes auto brightness.\n * Compass: demand-driven. It runs while any miniapp is subscribed; `start(options)` only\n * records that miniapp's override and everyone is served the smallest interval and\n * threshold requested. Native navigation temporarily borrows both; its stock configuration wins.\n */\nexport class GlassesSensorService {\n private lightOwner: Owner | null = null\n private compassSubscribers = new Set<string>()\n private compassOverrides = new Map<string, Options>()\n /** Options the firmware currently runs; null while stopped. */\n private compassApplied: Options | null = null\n private compassRetry: number | null = null\n private compassRetryAttempt = 0\n private pending: Promise<unknown> = Promise.resolve()\n private navigationActive = false\n private generation = 0\n\n constructor(private readonly control: Control) {}\n\n private serial<T>(work: () => Promise<T>): Promise<T> {\n const next = this.pending.then(work)\n this.pending = next.catch(() => {})\n return next\n }\n\n private validate(payload: Record<string, unknown>): {sensor: Sensor; operation: Operation; options: Options} {\n const sensor = payload.sensor\n const operation = payload.operation\n if (sensor !== \"light\" && sensor !== \"compass\") fail(MiniappErrorCode.INVALID_ARGUMENT, \"Unknown sensor\")\n if (operation !== \"start\" && operation !== \"stop\" && !(sensor === \"light\" && operation === \"query\")) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Unknown sensor operation\")\n }\n const raw = payload.options ?? {}\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw))\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Invalid sensor options\")\n const ranges = RANGES[sensor]\n const options: Options = {}\n for (const [key, value] of Object.entries(raw)) {\n const range = Object.prototype.hasOwnProperty.call(ranges, key) ? ranges[key] : undefined\n if (!range || typeof value !== \"number\" || !Number.isInteger(value) || value < range[0] || value > range[1]) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, `Invalid ${key}`)\n }\n options[key] = value\n }\n return {sensor, operation, options}\n }\n\n request(app: string, payload: Record<string, unknown>): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n const {sensor, operation, options} = this.validate(payload)\n if (sensor === \"compass\") {\n if (operation === \"start\") this.compassOverrides.set(app, options)\n else this.compassOverrides.delete(app)\n if (this.navigationActive) return\n await this.applyCompass(generation, true)\n return\n }\n const owner = this.lightOwner\n if (operation !== \"query\" && owner && owner.app !== app) {\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"This sensor is controlled by another miniapp\")\n }\n if (operation === \"stop\" && !owner) return\n if (this.navigationActive) {\n if (operation === \"stop\") {\n this.lightOwner = null\n return\n }\n fail(MiniappErrorCode.INVALID_ARGUMENT, \"Native navigation currently owns the glasses sensors\")\n }\n // Keep cleanup ownership even after an ambiguous transport failure: the firmware\n // may have applied the command before its ACK was lost.\n if (operation === \"start\") this.lightOwner = {app, options}\n if (!(await this.control(\"light\", operation, options))) this.commandFailed()\n if (generation !== this.generation) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n if (operation === \"stop\") this.lightOwner = null\n })\n }\n\n private commandFailed(): never {\n fail(\n MiniappErrorCode.INTERNAL,\n \"Sensor command failed: the glasses need Glassly custom firmware with this sensor, and on the G2 an active miniapp display\",\n )\n }\n\n /** Miniapps currently subscribed to the glasses compass stream. Replaces the previous set. */\n setCompassSubscribers(apps: Iterable<string>): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n this.compassSubscribers = new Set(apps)\n if (generation !== this.generation || this.navigationActive) return\n await this.applyCompass(generation, false)\n })\n }\n\n private compassDemand(): Options | null {\n if (this.compassSubscribers.size === 0 && this.compassOverrides.size === 0) return null\n const requests = [...this.compassOverrides.values()].map((o) => ({...COMPASS_DEFAULTS, ...o}))\n for (const app of this.compassSubscribers) if (!this.compassOverrides.has(app)) requests.push(COMPASS_DEFAULTS)\n const demand: Options = {}\n for (const key of Object.keys(COMPASS_DEFAULTS)) demand[key] = Math.min(...requests.map((r) => r[key]))\n return demand\n }\n\n /**\n * Bring the firmware in line with current demand. Explicit requests surface failures;\n * subscription-driven applies stay silent (stock firmware, no CFW carrier yet) and retry\n * a few times so a compass subscribed before firmware classification still starts.\n */\n private async applyCompass(generation: number, explicit: boolean): Promise<void> {\n this.clearCompassRetry()\n const demand = this.compassDemand()\n if (sameOptions(demand, this.compassApplied)) return\n if (!demand) {\n const ok = await this.control(\"compass\", \"stop\", {})\n if (generation === this.generation) this.compassApplied = null\n if (!ok && explicit) this.commandFailed()\n return\n }\n const ok = await this.control(\"compass\", \"start\", demand)\n if (generation !== this.generation) {\n if (explicit) fail(MiniappErrorCode.NOT_CONNECTED, \"Glasses disconnected\")\n return\n }\n if (ok) {\n this.compassApplied = demand\n this.compassRetryAttempt = 0\n return\n }\n if (explicit) this.commandFailed()\n const delay = COMPASS_RETRY_MS[this.compassRetryAttempt]\n if (delay === undefined) return\n this.compassRetryAttempt++\n this.compassRetry = BgTimer.setTimeout(() => {\n this.compassRetry = null\n void this.resync()\n }, delay)\n }\n\n private clearCompassRetry(): void {\n if (this.compassRetry != null) BgTimer.clearTimeout(this.compassRetry)\n this.compassRetry = null\n }\n\n /** Re-apply compass demand after the glasses connect or their firmware is classified. */\n resync(): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation || this.navigationActive) return\n await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n release(app: string): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) return\n const hadSubscription = this.compassSubscribers.delete(app)\n const hadOverride = this.compassOverrides.delete(app)\n const hadCompass = hadSubscription || hadOverride\n if (this.lightOwner?.app === app) {\n if (!this.navigationActive) await this.control(\"light\", \"stop\", {}).catch(() => false)\n this.lightOwner = null\n }\n if (hadCompass && !this.navigationActive) await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n setNavigationActive(active: boolean): Promise<void> {\n const generation = this.generation\n return this.serial(async () => {\n if (generation !== this.generation) return\n if (this.navigationActive === active) return\n this.navigationActive = active\n this.clearCompassRetry()\n if (active) {\n if (this.lightOwner) await this.control(\"light\", \"stop\", {}).catch(() => false)\n if (this.compassApplied) await this.control(\"compass\", \"stop\", {}).catch(() => false)\n this.compassApplied = null\n return\n }\n if (this.lightOwner) await this.control(\"light\", \"start\", this.lightOwner.options).catch(() => false)\n this.compassRetryAttempt = 0\n await this.applyCompass(generation, false).catch(() => {})\n })\n }\n\n /** Never replay requests from an old miniapp connection onto a new pair of glasses. */\n disconnected(): void {\n this.generation++\n this.clearCompassRetry()\n this.compassRetryAttempt = 0\n this.lightOwner = null\n this.compassApplied = null\n this.navigationActive = false\n }\n}\n\nconst glassesSensorService = new GlassesSensorService((sensor, operation, options) =>\n BluetoothSdk.glassesSensorControl(sensor, operation, options),\n)\nexport default glassesSensorService\n"]}
|
|
@@ -72,6 +72,9 @@ declare class LocalMiniappRuntime {
|
|
|
72
72
|
private connectedApps;
|
|
73
73
|
/** Claimed gestures (CLAIM_GESTURES): a stack per gesture, the most recent claimer holding it. */
|
|
74
74
|
private gestureClaims;
|
|
75
|
+
/** Apps with a text field open on the glasses (TEXT_FIELD). */
|
|
76
|
+
private textFieldApps;
|
|
77
|
+
private textFieldListeners;
|
|
75
78
|
private retainedRenders;
|
|
76
79
|
/**
|
|
77
80
|
* Packages that have completed their CONNECT handshake (sent
|
|
@@ -265,6 +268,16 @@ declare class LocalMiniappRuntime {
|
|
|
265
268
|
*/
|
|
266
269
|
private handleClaimGestures;
|
|
267
270
|
private applyGestureClaimChanges;
|
|
271
|
+
/**
|
|
272
|
+
* TEXT_FIELD (session.input.setTextFieldOpen): the app has a text field on
|
|
273
|
+
* the glasses, or no longer does. Text entry that costs power to leave on
|
|
274
|
+
* (Neural Band handwriting) runs while any app has one. Cleared on app stop.
|
|
275
|
+
*/
|
|
276
|
+
private handleTextField;
|
|
277
|
+
private setTextFieldOpen;
|
|
278
|
+
/** True while any running miniapp has a text field open on the glasses. */
|
|
279
|
+
hasOpenTextField(): boolean;
|
|
280
|
+
onTextFieldChange(cb: (open: boolean) => void): () => void;
|
|
268
281
|
/** The app holding `gesture` (the most recent claimer), or null when it is unclaimed. */
|
|
269
282
|
gestureClaimant(gesture: string): string | null;
|
|
270
283
|
/** Has this app registered the gesture, even if a later claimant currently receives it? */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -459,6 +459,9 @@ class LocalMiniappRuntime {
|
|
|
459
459
|
connectedApps = new Map();
|
|
460
460
|
/** Claimed gestures (CLAIM_GESTURES): a stack per gesture, the most recent claimer holding it. */
|
|
461
461
|
gestureClaims = emptyGestureClaims();
|
|
462
|
+
/** Apps with a text field open on the glasses (TEXT_FIELD). */
|
|
463
|
+
textFieldApps = new Set();
|
|
464
|
+
textFieldListeners = new Set();
|
|
462
465
|
// The last main-view frame each app asked to render. Widget mode refuses
|
|
463
466
|
// frames and demotion clears them, and an app that has drawn once may not
|
|
464
467
|
// draw again on its own, so promotion replays this.
|
|
@@ -1038,6 +1041,7 @@ class LocalMiniappRuntime {
|
|
|
1038
1041
|
}
|
|
1039
1042
|
// Its gesture claims go back to whoever claimed them before.
|
|
1040
1043
|
this.applyGestureClaimChanges(dropGestureClaims(this.gestureClaims, packageName));
|
|
1044
|
+
this.setTextFieldOpen(packageName, false);
|
|
1041
1045
|
this.retainedRenders.delete(packageName);
|
|
1042
1046
|
// Warm-up is a request-owned camera lease. Cancel it even if the app record was already
|
|
1043
1047
|
// removed so a close racing the camera-open promise cannot leave the sensor running.
|
|
@@ -1198,6 +1202,9 @@ class LocalMiniappRuntime {
|
|
|
1198
1202
|
case MiniappRequestType.CLAIM_GESTURES:
|
|
1199
1203
|
this.handleClaimGestures(packageName, payload, requestId);
|
|
1200
1204
|
break;
|
|
1205
|
+
case MiniappRequestType.TEXT_FIELD:
|
|
1206
|
+
this.handleTextField(packageName, payload, requestId);
|
|
1207
|
+
break;
|
|
1201
1208
|
case MiniappRequestType.DISPLAY:
|
|
1202
1209
|
this.handleDisplay(packageName, payload, requestId);
|
|
1203
1210
|
break;
|
|
@@ -1862,6 +1869,49 @@ class LocalMiniappRuntime {
|
|
|
1862
1869
|
this.forwardEvent(MiniappStreamType.GESTURE_CLAIM, { gesture: change.gesture, held: change.held }, undefined, change.packageName);
|
|
1863
1870
|
}
|
|
1864
1871
|
}
|
|
1872
|
+
/**
|
|
1873
|
+
* TEXT_FIELD (session.input.setTextFieldOpen): the app has a text field on
|
|
1874
|
+
* the glasses, or no longer does. Text entry that costs power to leave on
|
|
1875
|
+
* (Neural Band handwriting) runs while any app has one. Cleared on app stop.
|
|
1876
|
+
*/
|
|
1877
|
+
handleTextField(packageName, payload, requestId) {
|
|
1878
|
+
if (typeof payload.open !== "boolean") {
|
|
1879
|
+
this.sendResult(packageName, requestId, false, undefined, {
|
|
1880
|
+
code: MiniappErrorCode.INVALID_ARGUMENT,
|
|
1881
|
+
message: "Text field open must be a boolean",
|
|
1882
|
+
});
|
|
1883
|
+
return;
|
|
1884
|
+
}
|
|
1885
|
+
if (this.connectedApps.has(packageName))
|
|
1886
|
+
this.setTextFieldOpen(packageName, payload.open);
|
|
1887
|
+
this.sendResult(packageName, requestId, true);
|
|
1888
|
+
}
|
|
1889
|
+
setTextFieldOpen(packageName, open) {
|
|
1890
|
+
const before = this.textFieldApps.size > 0;
|
|
1891
|
+
if (open)
|
|
1892
|
+
this.textFieldApps.add(packageName);
|
|
1893
|
+
else
|
|
1894
|
+
this.textFieldApps.delete(packageName);
|
|
1895
|
+
const after = this.textFieldApps.size > 0;
|
|
1896
|
+
if (before === after)
|
|
1897
|
+
return;
|
|
1898
|
+
for (const cb of this.textFieldListeners) {
|
|
1899
|
+
try {
|
|
1900
|
+
cb(after);
|
|
1901
|
+
}
|
|
1902
|
+
catch (err) {
|
|
1903
|
+
console.warn(`${LOG_TAG}: text field listener failed:`, err);
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
/** True while any running miniapp has a text field open on the glasses. */
|
|
1908
|
+
hasOpenTextField() {
|
|
1909
|
+
return this.textFieldApps.size > 0;
|
|
1910
|
+
}
|
|
1911
|
+
onTextFieldChange(cb) {
|
|
1912
|
+
this.textFieldListeners.add(cb);
|
|
1913
|
+
return () => this.textFieldListeners.delete(cb);
|
|
1914
|
+
}
|
|
1865
1915
|
/** The app holding `gesture` (the most recent claimer), or null when it is unclaimed. */
|
|
1866
1916
|
gestureClaimant(gesture) {
|
|
1867
1917
|
const claimant = gestureClaimant(this.gestureClaims, gesture);
|