Skip to content

Conversation

@aisraelov
Copy link
Member

No description provided.

isaiahb and others added 30 commits December 1, 2025 11:44
- Make all components fully responsive with proper mobile-first approach
- Remove fixed widths (w-96) and use w-full with max-w-md
- Improve EmptyState layout with better positioned gradients
- Simplify grid pattern generation
- Better text sizing with sm: breakpoints
- Center content properly on all screen sizes
- Improve spacing and overflow handling
- Apply primary color #6DAEA6 to CSS variables
- Update header background to use primary color
- Update BottomNav active state to use primary color
- Maintain white text for proper contrast
- Add svg.d.ts for TypeScript SVG module declarations
- Fix Header imports to use @/ path alias
- Remove eslint disable comment (no longer needed)
- Add CameraConstants.java with all resolution/quality constants
- SDK photos now use optimized resolutions:
  - small: 640x480 @ 70 quality (~30-50KB)
  - medium: 1280x720 @ 75 quality (~80-150KB) - default
  - large: 1920x1080 @ 80 quality (~200-400KB)
  - full: 3264x2448 @ 85 quality (~1-2MB) - native sensor
- Button photos unchanged (high quality for local gallery sync)
- Add isFromSdk flag to distinguish SDK vs button photo requests
- Add 'full' size tier for apps needing max resolution
- Update BLE compression mapping to include 'full' size

This reduces default SDK photo transfer time from 2-3 seconds
to under 1 second by using 720p instead of 1440x1088.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add updateConnectionState(DISCONNECTED) call when BLE disconnects to
  properly notify frontend and backend of disconnection state
- Enable reconnection logic that was commented out - now schedules
  startScan() with exponential backoff when glasses disconnect
- Add isKilled check at start of handleReconnection() to prevent
  reconnection attempts after forget()/destroy()
- Clear saved device name in forget() to prevent reconnection to
  forgotten device
- Add proper state cleanup (glassesReady, audioConnected, etc) in
  GATT error handler

The iOS implementation was already working correctly. This fix brings
Android to parity with iOS behavior where disconnection is reported
to the frontend and automatic reconnection is attempted.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Decouple gallery sync from UI lifecycle so users can leave the gallery
screen, switch apps, or lock the phone while sync continues.

- Add gallerySyncStore (Zustand) for sync state management
- Add gallerySyncService singleton for sync orchestration
- Add gallerySyncNotifications using expo-notifications
- Add GallerySyncEffect for early service initialization
- Add queue persistence to localStorageService for resume capability
- Refactor GalleryScreen to subscribe to store instead of managing sync

Key behavior changes:
- Hotspot only closes when sync completes/fails, not on screen unmount
- Progress notification shows in notification shade during sync
- Sync queue persisted to MMKV for resume after app kill

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Move size/SDK flag comparison BEFORE updating pendingRequestedSize
and pendingIsFromSdk. Previously, the comparison happened after
the update, so it was always comparing the new value to itself
(always equal), meaning size changes were never detected when
the camera was kept alive between shots.

Also detect SDK flag changes, since a switch between button and
SDK photos requires different resolutions even for the same size tier.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
PingCommandHandler now resets heartbeat timeout when ping is received,
which marks the glasses as connected. This fixes the issue where
isConnected() returned false even when actively communicating with
the phone, causing button presses to trigger local capture instead
of being forwarded to apps.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Fix infinite loop in GalleryScreen by using useShallow for object selector
- Reset sync state to idle when new photos are taken after sync complete
- Move notification permission request before WiFi connection prompt
- Improve notification: visual progress bar, remove filenames, cleaner text
- Fix resume sync not having abort controller (couldn't be cancelled)
- Persist queue index after each file for proper resume on app crash
- Add hotspot request timeout (30s) to prevent hanging in requesting state
- Handle glasses disconnect during sync - cancel and show error
- Clear stale sync queues (>2min) since hotspot auto-disables after 40s

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Remove unused imports (CoreModule, GlobalEventEmitter, shareFile - all commented out in usage)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@cloudflare-workers-and-pages
Copy link

Deploying mentra-store-dev with  Cloudflare Pages  Cloudflare Pages

Latest commit: eb1a990
Status: ✅  Deploy successful!
Preview URL: https://908643db.augmentos-appstore-2.pages.dev
Branch Preview URL: https://staging.augmentos-appstore-2.pages.dev

View logs

@cloudflare-workers-and-pages
Copy link

Deploying dev-augmentos-console with  Cloudflare Pages  Cloudflare Pages

Latest commit: eb1a990
Status: ✅  Deploy successful!
Preview URL: https://1f73eade.dev-augmentos-console.pages.dev
Branch Preview URL: https://staging.dev-augmentos-console.pages.dev

View logs

@cloudflare-workers-and-pages
Copy link

Deploying prod-augmentos-account with  Cloudflare Pages  Cloudflare Pages

Latest commit: eb1a990
Status: ✅  Deploy successful!
Preview URL: https://63362082.augmentos-e84.pages.dev
Branch Preview URL: https://staging.augmentos-e84.pages.dev

View logs

@cloudflare-workers-and-pages
Copy link

Deploying mentra-store-beta with  Cloudflare Pages  Cloudflare Pages

Latest commit: eb1a990
Status: ✅  Deploy successful!
Preview URL: https://b443e1a3.mentra-store-beta.pages.dev

View logs

aisraelov and others added 10 commits December 22, 2025 21:22
Dev -> staging (resend connection_ack on audio gap detected)
- Replace LiveKit data channel with WebSocket binary transport
- Add ring buffer (50 packets / ~1 sec) for drop-oldest behavior
- Prevents TCP backpressure from building stale audio queue
- Cloud already handles binary messages as audio - no server changes needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add AudioWebSocket for UDP-like audio streaming over WebSocket
This reverts commit 6c0dff0.

The ring buffer approach doesn't work as intended - it assumes success
on every transmission since there's no way to reference TCP ACKs in the
WebSocket API. The connection state check was already in place.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants