Companion: three-finger menu gesture, native wallet QR scanner, scan/upload chooser #104

Merged
lfg2025 merged 4 commits from feat/companion-3finger-native-scan into main 2026-07-23 20:01:09 +00:00
Owner
  • Menu gesture is now a three-finger hold (two-finger hold collided with two-finger scroll); one-time teaching overlay ~2 min after login
  • Native CameraX wallet scanner behind window.ArchipelagoQr bridge + WebView file-chooser support
  • Pairing-scanner preview lag + open-flash fixed (frame-gated zxing, TextureView)
  • Web scan modal: scan/upload/paste chooser interstitial on every open

🤖 Generated with Claude Code

- Menu gesture is now a three-finger hold (two-finger hold collided with two-finger scroll); one-time teaching overlay ~2 min after login - Native CameraX wallet scanner behind window.ArchipelagoQr bridge + WebView file-chooser support - Pairing-scanner preview lag + open-flash fixed (frame-gated zxing, TextureView) - Web scan modal: scan/upload/paste chooser interstitial on every open 🤖 Generated with [Claude Code](https://claude.com/claude-code)
lfg2025 added 4 commits 2026-07-23 19:53:05 +00:00
Two-finger hold collided with two-finger scrolling — any scroll longer
than 500ms popped the NESMenu. Three fingers hold for the menu; two
fingers scroll, on the trackpad, both controllers and the gamepad.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ZXing TRY_HARDER (plus the inverted retry) ran on every camera frame,
pegging a core — that CPU contention is what made the preview stutter.
Decode attempts are now gated to ~7/s; KEEP_ONLY_LATEST drops the rest.
PreviewView switches to TextureView (COMPATIBLE): the SurfaceView
default punches a window hole that black-flashes inside Compose fades
and ignores rounded-corner clipping. CameraQrPreview is now shared with
the wallet scan modal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- WalletQrScannerModal: native CameraX+zxing scanner styled like the web
  wallet modal, with an upload-image decode path; opened by the web UI
  through the new window.ArchipelagoQr JS bridge. Decodes stream back via
  window.__archyQrResult; the page mirrors status lines out and closes
  the modal when it accepts a code. Detection/spend logic stays in the
  web modal.
- onShowFileChooser: <input type=file> was silently ignored by the
  WebView — file pickers (incl. the wallet's upload option) now work.
- GestureHintOverlay: one-time animation teaching the three-finger hold,
  armed ~2 minutes after login (gesture_hint_seen flag).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The scan modal now always lands on a chooser pane — Scan with camera /
Upload image / paste — instead of auto-starting the camera. When the
Android companion's ArchipelagoQr bridge is present, live scanning is
delegated to the native camera modal (WebView getUserMedia lags);
animated-QR progress and errors mirror onto it via setStatus.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
lfg2025 force-pushed feat/companion-3finger-native-scan from ff4013bd3b to fbed32f95d 2026-07-23 20:00:30 +00:00 Compare
lfg2025 merged commit 5d2c28da7b into main 2026-07-23 20:01:09 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lfg2025/archy#104
No description provided.