When I click on "update", the repo item moves to a separate section. This has two inconvenients:
To fix both, I instead suggest that each element is changed somehow, instead of moved around. For example, changing "Update" by "Done" or simply nothing. Colours or other styling could be added to make the difference stand out more.
I agree it feels not great. I'll just share some notes.
I tend to try to update packages from bottom, going up. That way things don't move around.
GPS Updates tab is heavily inspired by Apple's App Store on macOS. Its design suffers from the same issue, however, it's less noticeable for a few reasons. There are generally fewer updates for macOS apps than there are for Go packages. They tend to be slower and you can update many packages before the first one completes. And finally, there's an extra delay between an update completing and it moving to the bottom.
I kinda like the general idea of moving completed updates out of the way rather than having them intertwined with the rest of available updates... But yeah. So I'm not sure what to do here.
One really interesting idea in this space IMO is how Chrome tackles this problem.
See the following 15 second video:
Basically, they try to avoid moving things unexpectedly as long as your mouse cursor is hoving over the tabs. As soon as you move mouse elsewhere, that's when it tries to shuffle things around.
It would require tracking the mouse on the frontend and doing some experimentation, but if done well, this might be a good idea. There's also a high chance it won't be a good idea. It's definitely going to be complicated to implement.
Ok, I can't believe I didn't notice it until now, but the logic for moving a completed update down was wrong (not what I had in mind):
Instead of taking the updated item and moving it down, it swapped that item with the bottom-most available update. So the update you'd expect to be next was preceded by some update from the bottom.
Fixing that is going to help this issue very little, but nonetheless, it's something.