This history aspect is correct - the future is more complicated.
For a completely liner model this would be quite easy - you’d just need to get the model and query it for the user tasks that have no yet showed up in the history call for the given instance. When a model is even a little more complex just with some XOR gateways it becomes harder to predict and then even more complicated when you take into account parallel task and event based sub processes.
For that reason it might be a good idea to think about exactly what you need the user to know - if it’s a status you’re looking for you could consider a series of milestones that update a status variable. If it’s more concrete phases then perhaps a the instance could store a list containing the phases yet to be completed.
You could always just query the process model itself and try to workout what the “next steps” might be but i’ve found this ends up being very complex.