STATE MIGRATION — move _audioFileReader, _musicProcess, _launcherMusicPath fields from MainWindow into MusicPlayerService.
Extract from MainWindow.axaml.cs:
- LauncherMusicPath property (lines 88-120)
- _audioFileReader field (line 82)
- _musicProcess field (line 84)
- PlayLauncherMusic() method
- StopLauncherMusic() method
- Volume setter (lines 113-120)
- SelectLauncherMusic_Click/ClearLauncherMusic_Click event handlers
New file: Services/MusicPlayerService.cs
- Must implement INotifyPropertyChanged for LauncherMusicPath
- Keep #if WINDOWS conditional compilation for NAudio vs afplay
Verification: dotnet build passes, music playback works on macOS.
Doable by: sonnet/cline-agent under 45 min.
STATE MIGRATION — move _audioFileReader, _musicProcess, _launcherMusicPath fields from MainWindow into MusicPlayerService.
Extract from MainWindow.axaml.cs:
New file: Services/MusicPlayerService.cs
Verification: dotnet build passes, music playback works on macOS.
Doable by: sonnet/cline-agent under 45 min.