I would absolutely love a merge feature, even if it’s very basic.
Importing data from multiple sources will introduce duplicates, obviously, but there’s another way it happens!
Many services these days have multiple URIs/website addresses. The app will have one URI, the webpage will have a different URI, and you might even find other URIs as you open desktop apps or different portions of the service.
MOBILE SCENARIO:
- no login found
- search for similar logins, or Bitwarden offers close matches.
- select one, and Bitwarden asks if you want to auto-fill this one time, or auto-fill and “update”.
- If you select “auto-fill and update”, Bitwarden adds the URI to the saved login entry to enable quicker auto-fill next time. Now, your entry has an additional URI, and will be recognized in multiple scenarios.
DESKTOP SCENARIO
- no login found
- search for one. (I don’t think Bitwarden tries to search for similar ones on desktop, actually… at least not for me in Firefox? I could be wrong however.)
- Select it, and it auto-fills.
- Bitwarden asks if you’d like to save the information.
- Clicking “save” creates a new entry.
- Now you have two entries with the same information, with the only difference being a single URI that is slightly different.
So, first part of my request is to get Mobile & Desktop to harmonize with that feature. If it’s there, then I suppose I just need to learn how to use it on Desktop, but that also means it’s not very obvious if it is there.
So, a suggestion either way.
Now, when you go about making a merge screen, here’s just some quick thoughts on what that process could look like, to start:
- It would be lovely to have a simple way to select multiple entries, perhaps just in the search box that already exists. (Maybe the user clicks “…” at edge of window, then enables multi-select mode).
- Then, once the specific items to merge are selected, perhaps a user can click a “…” button to see a “Merge Entries” item.
- (NOTE: this idea assumes a user only selects one group of entries at a time. Ideally there will be a merge/duplicate wizard later, but at least adding this little tool will assist with individual one-off moments.)
- Ideally, upon selecting the “merge items” button: a screen is shown that compares the two entries, such as a pretty diff screen. It can say “this will be merged into that” and show green lines (perhaps highlighted) to say “this line is what will be added”.
- A nice check would be to confirm that most of the entry is the same. It could also highlight mismatches, and if there’s a lot of mismatches, an error message can pop up saying “yo dude, you sure?” for user to confirm before committing, or perhaps not even allow the merge if it’s too radically different. “Bruh, this is too different. Seems like you clicked the wrong ones, man!”
- User selects a big red “merge” button. Bitwarden commits. Merge new info into the chosen-original entry, and delete duplicate.
- Bonus points/stretch goal: Perhaps some quick checks can be made to auto-suggest which one should be the “original” and which one should be absorbed into it (one example is to go by age? older = original to keep, newer = one to merge and delete). User can still confirm and select which one they’d prefer to keep before committing, but Bitwarden can try to guess and suggest with quick logic.
Ideally this would be great on both mobile and desktop, but I could see a case to make it desktop-only at first. Just be kind and show a merge button that says “open desktop to merge entries” so people at least know it exists and how to get to it if they are primarily mobile users.
Okay, hope that made sense, and hope it helps!
Regarding if a user selected multiple entries, the first screen could be an organizer that (if possible) tries to guess groups of entries, such as by similar entry names/usernames/URIs. Regardless of if it has this auto-guess feature, show a screen for users to organize things into groups, or at least say “select first group of duplicates to be merged”. The point is, just have some way to communicate to the user that we can only merge one group at a time. But, if we can create an ordered list of groups (group A = 1, 2, 3, group B = 4, 5, group C = 6, 7, 8, 9, 10), then it can execute them one after the other as user reviews and commits each change. (group A, then B, then C)