* Moved board processing to worker thread. You should experience less UI hitching when opening a board for the first time. I'm still working on a loading indicator for a board that's being parsed; sometimes they can take a second to appear the first time. I know that can be scary 😅.
* Board data is now auto-validated (and repaired, if necessary) when a board is first opened. The validator still hasn't captured all the ways a board can be corrupted, so there's still work to be done here. This is rare and easily fixable; will just take time to find these bugs.
* Unfilled board shapes are now only selectable by clicking their edges. This should make using polygons as layouts and containers much easier.
* Increased large page card width to 256 units, up from 248 units. It should align perfectly with the grid now.
* Multiplayer cursors look better and have tweened animations now.
* Reimplemented the client's application state to reduce memory and CPU usage. Moved my homegrown React-Context-powered viewmodel into zustand.
* Fixed GraphQL query fetching unnecessary data, causing image and map asset previews to be slower than necessary. They are much faster now.
* Fixed shortcuts placeholder styling.
* Fixed boards showing up as selectable links in the pin creation dialog.
* Fixed noisy, meaningless bug spamming the browser console (and my Sentry deployment).
* Improved render performance across the entire application. There's still a lot of overhead here that can be removed, but the app should feel snappier.