Phase 4, part 2: the setup wizard. Stacked on #126, so merge that first.
The wizard's logic moves to wizard.ts with tests: which fields sit on which page, what's still missing, jumping to the first missing field, matching a server refusal to its field, reading the result and the sign-in details shown at the end. The component is rewritten around it. No change in behavior.
After this PR: 83.3%, 12,517 upstream lines left in 48 files, 36 dual headers. Tests: 756 → 766.
Visual check: see #126. It covered all six phase 4 PRs and found no change in the UI.
Typecheck, lint, i18n:check, tests, build and notice check pass locally. No new strings.
Phase 4, part 2: the setup wizard. Stacked on #126, so merge that first.
The wizard's logic moves to `wizard.ts` with tests: which fields sit on which page, what's still missing, jumping to the first missing field, matching a server refusal to its field, reading the result and the sign-in details shown at the end. The component is rewritten around it. No change in behavior.
After this PR: 83.3%, 12,517 upstream lines left in 48 files, 36 dual headers. Tests: 756 → 766.
**Visual check:** see #126. It covered all six phase 4 PRs and found no change in the UI.
Typecheck, lint, i18n:check, tests, build and notice check pass locally. No new strings.
The trace's logic is now plain, tested code: trace.ts pairs each step's
start with its outcome, groups steps by delivery attempt, names and
describes them, and holds the trace's states as a reducer; stream.ts runs
the token and the event stream. The page only draws them, unchanged.
Two fixes on the way: "Started Ns ago" counts from the trace's own start
(it carried on from the previous trace before), and cancelling while the
token is still on its way no longer opens the stream afterwards.
Its rules are now plain, tested code in wizard.ts: which fields each step
shows, which are required, where the server's refusal lands, and what the
finish screen lists. The wizard itself is rewritten on top of them, with
the same steps, look and update.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase 4, part 2: the setup wizard. Stacked on #126, so merge that first.
The wizard's logic moves to
wizard.tswith tests: which fields sit on which page, what's still missing, jumping to the first missing field, matching a server refusal to its field, reading the result and the sign-in details shown at the end. The component is rewritten around it. No change in behavior.After this PR: 83.3%, 12,517 upstream lines left in 48 files, 36 dual headers. Tests: 756 → 766.
Visual check: see #126. It covered all six phase 4 PRs and found no change in the UI.
Typecheck, lint, i18n:check, tests, build and notice check pass locally. No new strings.
Landed in main with #128, which was stacked on this one.
Pull request closed