{device.label}
+{truncateId(device.channel_id)}
+{relativeTime(device.last_seen_at)}
++ {device.label} will no longer be able to connect. + This cannot be undone. +
++ Pair iOS phones with this OpenHuman to use them as a remote client. +
+ +No paired devices
++ Scan a QR code on your iPhone to connect it to this OpenHuman session. +
+ +Generating pairing code…
++ Open the OpenHuman app on your iPhone and scan this code. +
+ + {/* QR code */} ++ Code expires in ~{minutesLeft} minute{minutesLeft !== 1 ? 's' : ''} +
+ + {/* Details toggle */} + + + {showDetails && ( +Channel ID
++ {session.channel_id} +
+Pairing URL
++ {qrUrl} +
+ +QR code expired
+Generate a new code to continue pairing.
+ +Paired with iPhone
+{label}
++ {channelId.slice(0, 8)}…{channelId.slice(-6)} +
+Closing automatically…
+Something went wrong
+{message}
+ ++ Open OpenHuman on your desktop, go to Settings > Devices, and tap “Pair + phone” to show the QR code. +
+Scanner opening...
+ )} + + {state.kind === 'connecting' && ( ++ Connecting to desktop... +
+ )} + + {state.kind === 'success' && ( +Connected! Loading...
+ )} + + {state.kind === 'expired' && ( ++ QR code expired. Ask the desktop to regenerate the code. +
+ +{state.message}
+ + +| Identifier | +Description | +
|---|---|
| + +`ptt:allow-cancel-speech` + + | ++ +Enables the cancel_speech command without any pre-configured scope. + + | +
| + +`ptt:deny-cancel-speech` + + | ++ +Denies the cancel_speech command without any pre-configured scope. + + | +
| + +`ptt:allow-list-voices` + + | ++ +Enables the list_voices command without any pre-configured scope. + + | +
| + +`ptt:deny-list-voices` + + | ++ +Denies the list_voices command without any pre-configured scope. + + | +
| + +`ptt:allow-speak` + + | ++ +Enables the speak command without any pre-configured scope. + + | +
| + +`ptt:deny-speak` + + | ++ +Denies the speak command without any pre-configured scope. + + | +
| + +`ptt:allow-start-listening` + + | ++ +Enables the start_listening command without any pre-configured scope. + + | +
| + +`ptt:deny-start-listening` + + | ++ +Denies the start_listening command without any pre-configured scope. + + | +
| + +`ptt:allow-stop-listening` + + | ++ +Enables the stop_listening command without any pre-configured scope. + + | +
| + +`ptt:deny-stop-listening` + + | ++ +Denies the stop_listening command without any pre-configured scope. + + | +