I’m curious — it looks like you’re storing the full text string along with the timestamp. At first I thought you were capturing keystrokes, but it makes more sense to capture the full text, so you can allow people to edit with mouse/arrow keys, etc.
It will fall over at some point though, right? If you work on this more, is the next logical step to store a diff with each timestamp, rather than the full string?