Mainly an issue with "limit distance snap to current time". Reported in
https://discord.com/channels/90072389919997952/1259818301517725707/1369037235797753999.
This slightly changes behaviour of distance snap when the mouse is near
the edges of the screen (will turn off snap rather than clamp to edge as
previously), but I think that's probably fine.
- It was logging success before actually succeeding.
- It appears in practice that this code can somehow actually nullref.
Unfortunately logs provided in that instance were not enough to
pinpoint what (because of lack of line numbers). I'm hoping that by
logging as error, and therefore to sentry, we can actually retrieve
this information so that there's no need to work blind.
The original `IEnumerable` flow prioritised slight performance gains,
but a filter's implementation could actually make this detrimental to
overall performance.
I noticed in passing that there were already potentially multiple
enumerations, via `updateYPositions` and the final `ToList` call. Rather
than faffing around, let's keep things simple and require lists.
In benchmarking, the difference is (currently) negiligible. Slight
improvement if anything.
The new background now briefly fades in. The reason we didn't do this to
date is that there could be a perceived decrease in brightness as the old
and new background transition through opacity.
But a quick fade in, it doesn't seem to cause any visual artifacting.
I've also added a scale effect because it felt quite nice. Willing to
pull that if anyone has an issue with it, but it's a step in the
direction of "adding more motion to song select", which is still an area
I see lacking greatly – even compared to stable.