Repository navigation
next: password import conflict count and Firefox consent text - #18229
Conversation
Red: PasswordImportStringsTests needs PasswordImportReport.conflicts, notImportedOtherThanConflicts, OnboardingStrings.passwordsSummary and passwordsConsent, which don't exist yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Onboarding's finished line now counts a conflict (a sign-in cmux already has with another password; the saved one is kept) on its own line, "Already saved with a different password: N. cmux kept the saved password.", and "Passwords skipped" uses notImportedOtherThanConflicts so a conflict is not counted twice. The consent screen shows onboarding.passwords.firefoxOnly when no Keychain item is involved (only Firefox profiles), and appends onboarding.passwords.firefoxPrimary to the Keychain text when the choice mixes Chromium browsers and Firefox. PasswordImportReport.conflicts and notImportedOtherThanConflicts match the password-import lane's wip/nx-passwords-firefox lines exactly. All three strings are in 21 locales; en and ja are translated, the rest needs_review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e99eb1c. Configure here.
| } | ||
| keychain.stringValue = OnboardingStrings.passwordsKeychain(Self.quotedList(model.passwordKeychainItems)) | ||
| keychain.stringValue = OnboardingStrings.passwordsConsent( | ||
| keychainItems: model.passwordKeychainItems, includesFirefox: model.passwordsIncludeFirefox, quote: { Self.quotedList($0) }) |
There was a problem hiding this comment.
Mixed consent text exceeds label
Low Severity
passwordsConsent appends passwordsFirefoxPrimary to the full Keychain paragraph for a mixed Chromium and Firefox choice, then assigns that to the consent label, which is still capped at four lines. That cap was already sized for the Keychain paragraph alone, so the new Firefox primary-password sentence is clipped and mixed imports never show the warning in full.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit e99eb1c. Configure here.
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/37587042315 at 6a753c9 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/37587935376 at a53b04b failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/37588003146 at b472aa1 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/37587147561 at 9ec0d03 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/37588244794 at 8eee20c failed: cmux-next checks (god files, concurrency, crash safety, l10n). |


Summary
Onboarding strings requested by the password-import lane, which doesn't edit our onboarding files:
PasswordImportReport.conflicts > 0. "Passwords skipped: N" now usesnotImportedOtherThanConflicts, so a conflict isn't counted twice.onboarding.passwords.firefoxOnlyinstead ofonboarding.passwords.keychain2.onboarding.passwords.firefoxPrimaryfollows the Keychain text.PasswordImportReport.conflictsandnotImportedOtherThanConflictsare copied byte for byte from the password lane'swip/nx-passwords-firefox, so the two branches merge cleanly. The text logic lives inOnboardingStrings.passwordsSummaryandpasswordsConsent, which both views call and the tests cover.Testing
PasswordImportStringsTests: the conflict count, each summary sentence shown only when its count is above zero, and the consent-text choice for Chromium only, mixed, and Firefox only). Fix in e2eb176. CI runs the Swift tests.check-l10n.shpasses (all three strings in 21 locales; en and the supplied ja are translated, the rest needs_review), and package conventions, concurrency and crash-safety checks pass.Changelog
Changed: Password import says how many saved passwords it kept when the imported one differed, and explains Firefox's confirmation without a Keychain prompt.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Improves password import reporting and clarifies the onboarding consent text for Firefox.
The finished import line now says how many saved passwords cmux kept when the imported one differed, and "Passwords skipped" no longer double-counts those conflicts. On the consent screen, Firefox-only imports no longer mention a Keychain item, and mixed Chromium/Firefox imports append a sentence explaining Firefox's primary password prompt.
Bug Fixes
conflictsandnotImportedOtherThanConflictstoPasswordImportReportso the summary counts are accurate.Written for commit e99eb1c. Summary will update on new commits.
Note
Low Risk
User-facing copy and reporting only; import logic unchanged aside from exposing existing conflict counts for summaries.
Overview
Password import onboarding now reports password conflicts separately from other skips, and adjusts consent copy when Firefox is involved.
The finished import line uses
passwordsSummaryinstead of lumping all non-imports into “Passwords skipped.” When cmux already has a sign-in for the same site/username with a different password, it keeps the saved one and shows “Already saved with a different password: N. cmux kept the saved password.”PasswordImportReportaddsconflictsandnotImportedOtherThanConflictsso conflicts are not double-counted in the skipped total.On the password consent screen, copy is chosen by browser mix: Firefox-only uses text that explains no Keychain item (key lives in the profile) and optional primary password; Chromium + Firefox keeps the Keychain paragraph and appends the Firefox primary-password note.
ImportStepModel.passwordsIncludeFirefoxdrives that viaOnboardingStrings.passwordsConsent.New localized strings and
PasswordImportStringsTestscover summary sentences and consent variants.Reviewed by Cursor Bugbot for commit e99eb1c. Bugbot is set up for automated code reviews on this repo. Configure here.