Really nicely done! I made a frequency domain solution here a while ago, maybe the only low-level-interesting feature of which is Perfectly Matched Layers for non-reflecting boundary conditions. https://rreusser.github.io/demos/schrodinger-1d/
And I definitely sympathize with the JS numerical tool landscape. I worked some more today on hooking stdlib-js up to ESM so that it'd be a little easier to import into Observable, though it doesn't yet have FFTs. https://github.com/stdlib-js/stdlib
Thanks for your comment Ricky, really appreciate you taking the time and for letting me know about stdlib.io - it looks very promising...I hope FFTs come soon 🙏