This is beautiful!
Another one of the posts back in may also implemented a mandelbrot viewer - Mandelbrot viewer - it looks like the main difference is that yours renders as a response to user inputs, whereas the other one was rendering each frame - I’d suspect that your version might run a little more quickly on hardware.