- Added track_05.mp3 through track_08.mp3 with corresponding metadata to tracks.json
- Implemented consistent loading progress text (960,540 center, white on black stroke) in MainMenuScene, NewPuzzleScene, and PuzzleScene
- Added per-scene load progress listeners to show real-time loading percentage
- Ensured proper cleanup of progress text and event listeners on load completion
- Add clean texture variants (`piece_clean_N`) for merged pieces to remove outlines after grouping
- Improve piece renderer progress tracking to distinguish main vs. clean textures
- Support 140-piece puzzles (14×10 grid) across generator, menu, and selection scenes
- Auto-open join dialog when `?room=` URL parameter present in main menu
- Add shareable room link with copy-to-clipboard button in puzzle scene UI
- Introduce `_updatePieceEffects()` to manage visual states: clean textures for merged groups, drop shadows for singletons/groups
- Enhance music playback with fallback completion detection and robust event handling
- Introduce StorageManager API for tracking current room (`saveCurrent`, `loadCurrent`, `clearCurrent`)
- Persist active puzzle state when joining/creating; restore on main menu load if incomplete
- Add Continue Puzzle button that only activates when a valid saved puzzle exists
- Implement Enter Fullscreen button with dynamic state handling and event listeners
- Adjust logo/sub-logo animation positions for cleaner visual flow
- Clear saved puzzle data on new puzzles or completion to avoid stale state
- Replace static graphics-based UI with DOM-based buttons for better accessibility and styling control
- Add animated intro sequence (logo drop-in, sub-logo rise, button fade-in) with idle breathing pulse effect
- Implement persistent menu music using global sound manager with mute state persistence via localStorage
- Redesign color scheme to use deeper blues (#1565c0, #1e88e5) and accent gold (#ffbb4d) throughout menus
- Standardize DOM element sizes to fixed pixels instead of relative units (vmin)
- Refactor NewPuzzleScene to load background image only when needed and improve visual hierarchy
- Update button styling with consistent hover states, transitions, and disabled states
- Add puzzle piece preview cards with improved selection feedback (orange highlight)
- Stop menu music on entering PuzzleScene to avoid overlap between scenes
- 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