Ok, so this explains the missing last digit or text character typed. It also implies that you’re saving after every “key stoke”, right? So for text or number entry, why not wait until the user is done, then save. This way the last edit won’t (or at least is much less likely to) conflict with an in-process save.
Perhaps with logic like this:
Save when the text/number bubble looses focus
Save after some time-out period (e.g. 5 or 10s) if the bubble still has focus but no additional change has been made
Save if the bubble still has focus (and hasn’t been saved due to rule #2), but project is played
Or, you could attemp to save every key stroke and follow the above logic only when/if a save was missed due to a conflicting in-process save.
Note: It’s very appreciated that you have significantly reduced the editor lag for larger projects. That used to be very frustrating.