I think this is actually ideal. To me, it doesn’t make a ton of sense for it to keep everything you’ve done for the entire life of the project, as it would grow enormous and unwieldy, and probably take up a gang of memory after a while. So basically you have two options:
it could be as it is now. Where you have unlimited undo steps, but only as long as the project remains open; or
Your undo history survives closing/reopening of the project, but the number of undo steps are limited, and probably definable.
Myself, I’ll option 1 any day of the week, but that’s just me. It seems more reasonable to me to assume that you might have made an error 50 steps ago and want to revert, than to assume you want to revert to something you did before you saved and closed the project.
On a slightly tangential note, I like the way this is implemented. It’s pretty intelligent. For instance, if you adjust a plugin parameter a new step will appear in the mixer history… but if you adjust the same parameter back to where it was before touching anything else, instead of adding a new step it just erases the last added step. Good way to avoid clutter and keep things streamlined.