Fixes 56#3234
Conversation
📋 PR Review Helper📱 Mobile App Build❌ Build failed (commit 📦 Previous build: (commit 🕶️ ASG Client Build⏳ Waiting for build... 🔀 Test Locallygh pr checkout 3234 |
PR Agent Orchestrator State{
"cycle": 3,
"fixRound": 0,
"totalReviewerRuns": 3,
"consecutiveNoNewReviews": 3,
"openFindings": [],
"resolvedFindings": [],
"nitFindings": [],
"phase": "discovery",
"status": "in_progress",
"lastPair": [],
"stagnationFixRounds": 0,
"lastOpenCount": 0,
"fingerprintReopenCounts": {},
"mutedFingerprints": []
} |
🤖 PR Agent Review — cycle 3✅ No blocking findings · 0 blocking · 0 nits No model reviews ran this cycle. Updated automatically by the PR Agent Orchestrator each review cycle. Nits do not block merge. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ffdea31. Configure here.
| pageCreated = false | ||
| evenHubMicActive = false // firmware killed the mic with the page | ||
| // firmware killed the mic with the page -> STATE off (intent preserved) | ||
| DeviceStore.apply("glasses", "micEnabled", false) |
There was a problem hiding this comment.
Mic watchdog ignores user intent
High Severity
G2 now writes hardware mic state to glasses/micEnabled and clears it whenever the EvenHub page dies, while user intent lives in evenHubMicIntent. checkAndReinitGlassesMic still gates on glasses/micEnabled, so after a firmware page kill with mic intent still on, the 5s LC3 watchdog exits early and never calls setMicEnabled(true).
Reviewed by Cursor Bugbot for commit ffdea31. Configure here.


Note
Medium Risk
Mic recovery and DeviceStore semantics touch core G2 session/audio behavior on both platforms; calendar sync changes what gets persisted in JS before native push.
Overview
G2 (Android/iOS) splits mic user intent (
evenHubMicIntent) fromglasses/micEnabledhardware state inDeviceStore. Page/dashboard shutdown and firmware exits now set state off without clearing intent, sorecoverPageAndMicandrestartMiccan re-arm the mic after rebuilds instead of treating stale “on” flags as healthy. Connect auth also sends time sync to both lenses (left + right).Mobile app:
sendCalendarEventsupdates the in-memory settings store before pushing to the glasses so a later bulk Bluetooth settings read does not wipe events with an empty default; events includestartDateand the method is public. Local miniapp runtime copies nativegestureNameintokindon touch events so per-gesture streams and SDK handlers align.Reviewed by Cursor Bugbot for commit ffdea31. Bugbot is set up for automated code reviews on this repo. Configure here.