Skip to content

feat(web): a wizard for pairing, joining, re-admission and sync (D253) - #182

Merged
allisson merged 1 commit into
mainfrom
feat/device-wizard
Nov 12, 2026
Merged

allisson merged 1 commit into
mainfrom
feat/device-wizard

Conversation

@allisson

Copy link
Copy Markdown
Owner

The second part of the v0.7.1 work (D253): the pairing and sync screens become a wizard, after the v0.7.0 hands-on test found them unclear about where the user stands and what the other device expects.

What changes

  • Wizard (ui/Wizard.tsx): "Step N of M · name" with a bar, the step's content, a fixed "On the other device" box saying what to do there, and Cancel while there is something to cancel. No Back between steps: a failure says why and "Start again" returns to step 1. Preparing, connecting, sending and merging are waiting states within their step, not steps.
  • Pair (the device holding the vault): Confirm it is you → Exchange the codes → Compare the numbers → Done.
  • Join (the device that gets it): Create the local password → Read the other device's code → Show the answer → Compare the numbers → Done. Its Back becomes Cancel and returns to the start's menu.
  • Re-admission: Choose who shows first → Exchange the codes → Compare the numbers → Done.
  • Sync: Choose who shows first → Exchange the codes → Syncing → Done.
  • The choice of who shows first stays manual, and the step says that the other device chooses the other option.
  • Advanced options: "Same network only" and the STUN list move there. They are closed on step 1, but open at once when the stored STUN list cannot be read, since that forces the option (D209).
  • No step, check, warning or confirmation is removed or reordered. Leaving the page still ends the flow, except a live sync (D225).

Tests

  • e2e helpers openAdvanced and checkSameNetwork in e2e/create.ts, used by the 31 places that checked "Same network only".
  • pairing.spec.ts checks the steps on both devices, the "On the other device" box and the closed advanced options. onboarding.spec.ts checks the join's step 1.
  • pnpm run ci green. Playwright on Chromium, Firefox and WebKit: 534 passed, 23 skipped, 1 failed (erase.spec.ts on WebKit, where the start screen took more than 5 s under the full run's load). That spec then passed 9 of 9 alone.

Docs

  • docs/overview.md: D253, which also sets the steps of the seven other flows that come next (create, restore, reset the password, regenerate the phrase, re-found, merge, import). It amends D203, D207, D216 and D234.
  • docs/roadmap.md: the device wizard task ticked.

🤖 Generated with Claude Code

One step at a time under "Step N of M · name" and a bar, what to do on the
other device in a fixed box, and Cancel while there is something to cancel.
No Back between steps: a failure says why and starts again from step 1.
Preparing, connecting, sending and merging wait within their step. "Same
network only" and the STUN list move into "Advanced options", closed on
step 1 unless the stored list cannot be read.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@allisson
allisson merged commit b439708 into main Nov 12, 2026
7 checks passed
@allisson
allisson deleted the feat/device-wizard branch November 12, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant