Conversation
There was a problem hiding this comment.
Builder reviewed your changes and found 2 potential issues 🟡
Review Details
Code Review Summary
PR #5348 simplifies first-run onboarding by replacing the intro/manual-key sequence with role selection followed by a consolidated setup-choice screen, while preserving Builder connection, optional tools, extension completion, and signup coverage. The state-transition refactor and focused test updates are directionally sound, and the existing tests/guards reported by reviewers pass. This is a standard-risk change because it modifies shared onboarding behavior and user-facing localization.
Key Findings
- 🟡 MEDIUM — New setup choice copy is hard-coded in English: the redesigned screen adds headings, descriptions, credit text, capability headings/statuses, and manual setup CTA as literals, so supported non-English locales render a mixed-language onboarding flow.
- 🟡 MEDIUM — Localized Builder capabilities are duplicated: the duplicate filter compares translated capability labels with English-only service names, causing overlapping capabilities such as Voice input and Embeddings to appear twice for non-English users, with the duplicate in English.
The role-screen and consent-copy catalog updates are a good pattern; the same approach needs to cover the newly added choice-screen copy.
🧪 Browser testing: Will run after this review (PR touches UI code); the initial planner run was blocked because Chrome/browser automation tools were unavailable, despite the dev server being healthy.
| <h1 className="text-[28px] font-bold leading-tight tracking-[-0.02em] text-foreground"> | ||
| Choose your setup |
There was a problem hiding this comment.
🟡 Localize the new setup-screen copy
The redesigned first-run choice screen introduces visible English literals for the title/subtitle, card headings and descriptions, credit text, capability headings/statuses, and the manual-setup CTA. Because these are not passed through useT() or added to locale catalogs, users with non-English locales see a mixed-language onboarding flow. Move the new copy, including Required/Recommended/Optional labels, into the onboarding message catalogs.
Additional Info
Reported by 3/3 parallel reviewers.
| {BUILDER_MORE_SERVICES.filter( | ||
| (service) => | ||
| !builderCapabilities.some( | ||
| (capability) => | ||
| getCapabilityCopy( | ||
| t, | ||
| capability, | ||
| ).label.toLowerCase() === service.toLowerCase(), |
There was a problem hiding this comment.
🟡 Compare Builder services by stable capability identity
The duplicate filter compares translated capability labels with English-only BUILDER_MORE_SERVICES values. In non-English locales, built-in capabilities such as Voice input and Embeddings do not match and are rendered a second time as raw English entries. Compare stable capability IDs, or localize the extra-service data, instead of comparing rendered labels.
Additional Info
Reported by 3/3 parallel reviewers.
|
Here's a visual recap of what changed: Open the full interactive recap |

The onboarding flow now starts with a short role question, then goes straight to a single "Choose your setup" screen. The old separate "intro" screen and "manual keys" screen are gone, so setup takes fewer steps.
First Screen:

Second Screen: