When navigating away from SongPage and back to the same song, the container
div is a new DOM element but the URL is unchanged. The previous early-return
(currentUrl === url) would skip initialization entirely, leaving WaveSurfer
pointing at the detached old container — nothing rendered.
Fix: track currentContainer alongside currentUrl. When URL matches but container
has changed, call wavesurfer.setOptions({ container }) which moves the existing
canvas into the new container without reloading audio or interrupting playback.
WaveSurfer v7 renderer.setOptions() supports this: it calls
newParent.appendChild(this.container) to relocate the canvas div.
Three paths in initialize():
1. Same URL + same container → no-op
2. Same URL + new container → setOptions re-attach (no reload)
3. Different URL → full teardown and reload
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>