···1313- [x] API : Handling Profile Syncing
1414- [x] API : State Update Events
1515- [x] API : Game Replay Screen
1616-- [ ] Frontend : Scaffolding
1616+- [x] Frontend : Scaffolding
1717- [x] Meta : CI Setup
1818- [x] Meta : README Instructions
1919- [x] Meta : Recipes for type binding generation
2020- [x] Signaling: All of it
2121+- [x] Backend : Better transport error handling
2222+- [ ] Backend : Abstract lobby? Separate crate?
2323+- [x] Backend : Add checks for when the `powerup_locations` field is an empty array in settings
2124- [ ] Backend : More tests
···2222 DroppedPlayer(Id),
2323 /// The underlying transport has disconnected
2424 TransportDisconnect,
2525+ /// The underlying transport encountered an error
2626+ TransportError(String),
2527}
···302302 /**
303303 * The underlying transport has disconnected
304304 */
305305- | "TransportDisconnect";
305305+ | "TransportDisconnect"
306306+ /**
307307+ * The underlying transport encountered an error
308308+ */
309309+ | { TransportError: string };
306310export type GameHistory = {
307311 my_id: string;
308312 game_started: string;
···385389 * The last time all hiders were pinged **in UTC**
386390 */
387391 last_global_ping: string | null;
392392+ /**
393393+ * The last time a powerup was spawned **in UTC**
394394+ */
395395+ last_powerup_spawn: string | null;
388396 /**
389397 * The [PowerUpType] the local player is holding
390398 */