Els dos playMusic compartien el dispatch crossfade-vs-stop+play i l'actualització de music_.state/loop. S'extreu playMusicInternal privat que rep el Ja::Music* ja resolt i fa el camí comú. Cada overload es queda només amb el seu gating propi: la variant per nom fa early-return si ja sona la mateixa pista i posa music_.name; la variant per punter buida el nom (PATCH-02 recuperarà el filename del propi Ja::Music). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>