feat: guided bridge login wizard in TUI via bridgev2 provisioning API

Bootstrap now enables each bridge's provisioning API (persisted shared
secret, matrix-token auth) and publishes /shared/bridges.json. The TUI
bridge screen shows per-bridge login state and launches a step-driven
wizard: flow picker, sequential input prompts (phone/cookies/password),
in-terminal QR rendering with long-poll wait, cancel support. Discord
(legacy bridge, no v3 API) keeps the bot-DM path via 'm'. verify.sh
gains a provisioning API smoke check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Prad Nukala
2026-07-08 12:36:26 -04:00
co-authored by Claude Fable 5
parent d57086cd00
commit 760d9db800
5 changed files with 355 additions and 33 deletions
+24 -14
View File
@@ -43,22 +43,32 @@ a no-op. No YAML editing, no token copying.
## Logging into bridges
Open the TUI, press `b` for the bridge screen, pick a network — it opens a DM
with that bridge's bot. Send `help` to list commands and `login` to start the
login flow. QR codes sent by bots render in-terminal.
Press `b` in the TUI for the bridge screen. It shows each bridge's login state
(via the bridge provisioning API). **Enter starts a guided login wizard**:
| network | bot | login flow |
|---|---|---|
| WhatsApp | `@whatsappbot` | `login qr` (scan with phone) or `login pairing-code` |
| Google Messages | `@gmessagesbot` | `login` → QR scan from the Messages app |
| Telegram | `@telegrambot` | `login` → phone number + code. **Requires `TELEGRAM_API_ID`/`TELEGRAM_API_HASH` in `.env`** (get them at [my.telegram.org](https://my.telegram.org)). Without them the bridge is skipped with a log line. |
| X/Twitter | `@twitterbot` | `login cookies` — paste browser cookies |
| LinkedIn | `@linkedinbot` | `login cookies` |
| Discord | `@discordbot` | `login qr` (scan with Discord app) or `login token` |
| Instagram | `@metabot` | `login cookies` (bridge runs in `instagram` mode) |
1. Pick a login method (the bridge advertises its flows: QR, pairing code,
phone number, browser cookies, ...).
2. The wizard walks each step — QR codes render right in the terminal,
text fields become prompts, and the wizard waits while you scan/confirm.
3. On success the bridge starts syncing your chats into the room list.
Cookie flows: the bot explains exactly which cookies to paste. Double puppeting
is pre-configured for all bridges — your own messages sent from other devices
The wizard talks to each bridge's `/_matrix/provision/v3` API, authenticated
with your own Matrix access token — no extra secrets to configure.
| network | typical flows |
|---|---|
| WhatsApp | QR scan or phone pairing code |
| Google Messages | Google account / QR from the Messages app |
| Telegram | phone number + code. **Requires `TELEGRAM_API_ID`/`TELEGRAM_API_HASH` in `.env`** ([my.telegram.org](https://my.telegram.org)); without them the bridge is skipped. |
| X/Twitter | browser cookies (wizard prompts for each value) |
| LinkedIn | browser cookies |
| Discord | manual only — legacy bridge without the v3 provisioning API. Press `m` to open the bot DM and use `login qr` or `login token`. |
| Instagram | browser cookies (bridge runs in `instagram` mode) |
`m` on any bridge opens the bot DM for manual commands (`help`, `logout`,
relay settings, ...). Passkey/WebAuthn flows aren't supported in a terminal —
use the corresponding cookie or QR flow instead. Double puppeting is
pre-configured for all bridges — your own messages sent from other devices
appear as you.
## The TUI