EXCELLENT. I tend not to like these kinds of games for some reason, shows how well you did on this one, something about this specific game I just really liked.
Some minor improvement suggestions could be:
When upgrading, I took it for now as part of the challenge to just continue playing while the upgrade options were shown and while selecting the upgrade even while it wasn't possible to see the game, but my guess is that's not how you intended it. Probably the main part of the game should pause or stop while the upgrade is being selected, then resume when you are done selecting it.
Multiple upgrades are possible all at once especially if I use the one shot weapon to destroy lots of enemies at once. If you implement the above idea, keep in mind that it's possible for multiple upgrades to happen at once. By the way, I notice it's working pretty well already. After selecting one, the ones that also showed up at same time are then possible to pick as well. I was doing this while also continuing the game since the game does continue in the background currently, so I must still play even without being able to see what's going on (and, well....I did).
There's probably more, but these would be more detailed kinds of things, and I think this is enough for now.
Just overall, really nice job on this game!