OK, reinstalling NoFrills allowed it to work again. I compared files and the only difference was the state.xml file. Here's the two versions:
Bad one:
<MJSState Version="1.0">
<Playlist Visible="Show" Position="2176,21">
<Item Type="1" Name="Tracklist" State="1" Rect="0,0,350,399"/>
<Item Type="2" Name="TracklistPosition" State="1" Rect="361,0,366,400"/>
</Playlist>
<Player Visible="Show" Position="2176,5">
<Item Type="0" Name="Playlist" State="1" Rect="429,3,446,15"/>
<Item Type="0" Name="Next" State="1" Rect="411,3,428,15"/>
<Item Type="0" Name="Previous" State="1" Rect="392,3,409,15"/>
<Item Type="0" Name="Stop" State="1" Rect="374,3,391,15"/>
<Item Type="0" Name="Play" State="1" Rect="357,3,373,15"/>
<Item Type="3" Name="TrackInfo" State="1" Rect="3,4,354,15"/>
</Player>
<Values/>
</MJSState>
Good one:
<MJSState Version="1.0">
<Playlist Visible="Hide" Position="2422,22">
<Item Type="1" Name="Tracklist" State="1" Rect="0,0,350,399"/>
<Item Type="2" Name="TracklistPosition" State="1" Rect="351,0,356,400"/>
</Playlist>
<Player Visible="Show" Position="2422,6">
<Item Type="0" Name="Playlist" State="1" Rect="339,3,356,15"/>
<Item Type="0" Name="Next" State="1" Rect="321,3,338,15"/>
<Item Type="0" Name="Previous" State="1" Rect="302,3,319,15"/>
<Item Type="0" Name="Stop" State="1" Rect="284,3,301,15"/>
<Item Type="0" Name="Play" State="1" Rect="267,3,283,15"/>
<Item Type="3" Name="TrackInfo" State="1" Rect="3,4,264,15"/>
</Player>
<Values/>
</MJSState>
Even changing the Playlist from Visible to Show didn't make it work so something is changing the button locations every so often in a new build.
Thanks marko for acknowledging it was working for you so I knew I had to go find the problem.