App side of docs/companion-pairing-qr.md. Scan Node QR + Enter Manually on the connect screen, QR icon button in NESMenu, archipelago:// deep link, WebView auto-login for the one-step demo flow, refreshed served APK (vc17, v1+v2+v3 verified). Label copy synced in CompanionIntroOverlay.
App side of docs/companion-pairing-qr.md. Scan Node QR + Enter Manually on the connect screen, QR icon button in NESMenu, archipelago:// deep link, WebView auto-login for the one-step demo flow, refreshed served APK (vc17, v1+v2+v3 verified). Label copy synced in CompanionIntroOverlay.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Companion side of docs/companion-pairing-qr.md (v1 contract):
- Connect screen lands on Scan Node's QR / Enter Manually; NESMenu gains
an add-server-by-QR icon button
- QrScannerOverlay: CameraX + ZXing core (pinned, on-device, no ML Kit)
- ServerQrParser: archipelago://pair?v=1&url=..[&pw=..]; unknown major v
-> 'update the app'; upsert by origin so re-scans never duplicate
- archipelago:// deep link registered (singleTask + onNewIntent) for the
modal's 'Open in companion app' button
- WebView auto-fills and submits Login.vue's password form when a stored
password exists — demo QR is one step to a logged-in session
- Web modal + handoff doc copy synced to the real label: Scan Node's QR
- v0.4.13 (versionCode 17)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
App side of docs/companion-pairing-qr.md. Scan Node QR + Enter Manually on the connect screen, QR icon button in NESMenu, archipelago:// deep link, WebView auto-login for the one-step demo flow, refreshed served APK (vc17, v1+v2+v3 verified). Label copy synced in CompanionIntroOverlay.
🤖 Generated with Claude Code