Cas reporté : un client firefighter recevait DEUX entries v1.5.3 (default + firefighter) parce que la sémantique additive est correcte pour la visibilité, mais ne dédupe pas. Le launcher faisait alors un ToDictionary(v => v.Version) qui collisionne sur "1.5.3" et garde silencieusement le premier (la default), donc le mauvais ZIP s'affichait dans la UI. Fix : Manifest.php groupe par version après le filtre, et pour chaque groupe à plusieurs entries pick l'entry la plus spécifique au client : 1. priorité à celle taggée avec le channel propre du client (firefighter) 2. sinon l'entry default sert de fallback Sémantique pour un user firefighter : - v1.5.3 (default) + v1.5.3 (firefighter) → renvoie uniquement firefighter - v1.4.0 (default uniquement) → renvoie default (visible) - v1.5.3 (firefighter uniquement) → renvoie firefighter Fix purement server-side, pas de modif client requise. Le launcher recevra naturellement un seul ZIP par version, le bon. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.7 KiB
5.7 KiB