Vest: the relayed login binds itself to an unset Vest firm

A Vest firm's credential is the wallet of the login it trades. It no longer
has to be typed or clicked in: when the extension relays a Vest tab's
session and a Vest firm here has no credential, that wallet is saved as the
credential (lib/vest-wallet.ts), the client starts, and the backup is
pushed.

- A saved wallet is never replaced. When the tab is signed in to another
  login, the firm now says which one and how to switch: sign in as the
  saved wallet, or remove the credential.
- With two logins relayed at once nothing binds itself; the one-click form
  decides.
- Extension 0.17.1 re-posts the session every minute even when it hasn't
  changed. The dashboard holds it in memory only, so a restart there was
  unauthenticated until the tab's next renewal (up to ~15 min); now it is
  back within a minute, and a firm created later binds within a minute too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-10-26 14:42:01 -05:00
co-authored by Claude Opus 5.5
parent 96fdd9ca23
commit 769d96883f
8 changed files with 79 additions and 15 deletions
+6 -2
View File
@@ -223,8 +223,12 @@ instance cannot log in by itself. Instead:
2. The extension relays the tab's short-lived access token to this dashboard
(`POST /api/vest/session`, held in memory only) every time the Vest app
renews it. If no Vest tab is open, the extension opens one in the background.
3. On the dashboard, the Vest firm's credential is the **wallet address** of
that login. The credential form offers the relayed wallet with one click.
3. The Vest firm's credential on this dashboard is the **wallet address** of
that login, and it binds itself: the first relayed session fills it in when
the firm has none. A saved wallet is never replaced. If the tab is signed in
to a different login, the firm says so; remove its credential to switch.
With two logins relayed at once, nothing binds by itself, and the credential
form offers each relayed wallet with one click.
With no live session for the wallet, the client sits unauthenticated and says
so; it never tries to log in.