- Add main menu UI image and background music (with updated track metadata)
- Rename puzzle assets to include `.png` extensions for consistency
- Introduce `thumbnails.json` manifest to decouple thumbnail paths from puzzle data
- Update `NewPuzzleScene.js` to load thumbnails explicitly via manifest instead of inferring paths
- Update `PuzzleScene.js` to ensure full puzzle images are loaded fresh on initial entry (not during network joins or restores)
- Add _playerName field to NetworkManager and pass it in createRoom/joinRoom calls
- Update MainMenuScene to prompt for player name before joining a room, persisting it to localStorage
- Update NewPuzzleScene to include a player name input field when creating local/multiplayer puzzles
- Enhance PuzzleScene with floating player name labels above claimed piece groups, using color-coded backgrounds
- Extend server-side room state to store per-player names and broadcast them on join/claim/release events
- Added 12 new puzzle images with corresponding 576×324 thumbnails
- Extended `puzzles.json` to include all new puzzles
- Implemented background selection in `NewPuzzleScene.js` (Dark Wood / Green Felt)
- Updated thumbnail display logic to use `thumb_` prefixed versions
- Added background key/path state propagation to `PuzzleState`, network join, and room creation
- Tiled background texture across the playfield in `PuzzleScene.js`
- Enhanced room code UI styling for better visibility