Branch management UX is a nightmare
Compare how deleting branches works on GitLab vs. GitHub:
Problems:
- Branches disappear, causing other items in the list to move around. This is really bad UX, because I could carelessly delete a branch I didn't mean to. It also makes mass-deletion of branches much more difficult because I have to be very careful not to click the wrong delete button.
- Branches don't actually appear to do anything for a few seconds before just disappearing. This is slow, confusing, and frustrating.
- I can't restore branches once I've deleted them. Even with the confirmation dialog, I don't like this possibility. Are we deleting them asynchronously? If so, we should offer a Restore/Undo option temporarily.
- There's too much visual noise. Do we really need to show the full description of the latest commit to the branch? I'd much rather be able to quickly find the age of the branch (right now it varies in location and is hard to find).
- Confirmation dialogs mean that mass deletion is even more tedious.
- The "New Merge Request" button is displayed regardless of whether the branch has already been merged or if there's an MR already open.
Solutions:
- Introduce a "Undo"/"Restore" button instead of a confirmation dialog, if that's possible with our current setup.
- At the very least make the item in the branch list visually respond immediately so the user isn't confused on whether or not the action was successful (preferably replace the delete button with Restore, but add a loading symbol would also work).
- Make sure branch order is consistent after deleting branches. Either by adding the Restore flow I mentioned above or by replacing the buttons with "Deleted", but otherwise keeping the list item there.
- Remove visual noise. The commit description is entirely unnecessary and information that isn't the branch name or a link should be de-emphasized (namely the age of the branch)
- Ensure the locations of information remains consistent. I shouldn't have to search to find the location of the branch age for every single list item. The SHA hash and the age being the only items in the second row should help a lot with this.
- Add Filtering. Sorting is already available, but I can't sort, e.g. by "Merged" or "Protected" branches. (gitlab-foss#17857 (closed))
Related: gitlab-foss#15674 (moved), gitlab-foss#17857 (closed) (I don't like the checkboxes idea as much because I feel like it's a bandaid rather than a solution, and the only purpose it would have is deleting branches when there isn't really any other action one would wish to take on dozens of branches at once)