feat(#350): pairing login flow with QR scan + manual entry (#421)

* feat(#350): pairing login flow with QR scan + manual entry

Adds PairingCodeEntryScreen with CameraX + ML Kit QR scanning
and manual code entry. The screen parses hermes://connect URIs,
Base64-encoded JSON, and raw token formats, validates via
/api/status, and saves credentials on success.

- New PairingCodeEntryScreen + PairingCodeEntryViewModel
- CameraX 1.4.1 + ML Kit barcode-scanning 17.3.0
- CAMERA permission + proguard rules
- Landing screen Pairing Login button wired correctly

* fix(#350): resolve smart-cast on delegated property for errorMessage

Co-authored-by: Hy4ri <hy4ri@users.noreply.github.com>

* refactor(#421): remove QR scanner from pairing login

- Remove CameraX + ML Kit barcode dependencies
- Drop CAMERA permission and camera feature from manifest
- Strip QrScannerTab, QrCodeScannerView, processFrame composables
- Remove camera permission state/methods from ViewModel
- Purge all QR/camera strings from strings.xml
- Delete ML Kit proguard rules

The pairing login now shows only the manual code entry UI.

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-06-30 10:08:01 +03:00
1 parent 58bd78bd79
commit 7811a35d29
6 files changed
+346 -3

No files matched your search

+5
View File
@@ -445,6 +445,11 @@
<string name="landing_action_auth_login">Auth Login</string>
<string name="landing_action_pairing_login">Pairing Login</string>
<!-- Pairing Code Entry Screen -->
<string name="pairing_code_entry_title">Pairing Login</string>
<string name="pairing_code_entry_manual_desc">Paste the pairing string from your Hermes dashboard below.</string>
<string name="pairing_code_entry_code_label">Pairing Code</string>
<!-- Loading State -->
<string name="loading_state_subtitle_default">Loading…</string>
<string name="loading_state_subtitle_models">Fetching model providers…</string>