# Launcher 3.2.0
LAUNCHER - NOTES DE MISE À JOUR
Formulaires des demandes modifiables - Mise à jour du 10 novembre 2026
==================================================================

Les formulaires du bouton « Aide » se gèrent désormais depuis le menu d'administration : de 1 à 8 types de demande (ajout, suppression, ordre d'affichage, icône, captures d'écran autorisées ou non) et leurs champs, avec un aperçu identique à la fenêtre des joueurs.

Les formulaires sont communs à tous les jeux, signés et vérifiés par le launcher, et ne peuvent contenir aucun lien. Le serveur est à redéployer, avec deux blocs nginx à ajouter ; le trousseau est à re-signer une fois cette version diffusée.


------------------------------------------------------------------
EN BREF
------------------------------------------------------------------
- NOUVEAU : page « Formulaires des demandes » dans le menu :
  types de demande, champs, aperçu, contrôle en direct, publication
  signée.
- NOUVEAU : 1 à 8 types de demande : ajout, suppression, ordre
  d'affichage, type masqué.
- NOUVEAU : icône d'un type : l'une des quatre d'origine, ou un
  fichier .ico importé (image 64 × 64 obligatoire).
- NOUVEAU : captures d'écran autorisées ou non par type de demande.
- NOUVEAU : champs texte court, cases à cocher, case oui/non, notes
  de 3, 5 ou 10 étoiles.
- AMÉLIORÉ : fenêtre « Aide » : formulaires publiés, saisie gardée
  si les formulaires changent pendant la saisie.
- AMÉLIORÉ : chaque demande garde le formulaire de son envoi (nom,
  icône, libellés).
- SÉCURITÉ : formulaires signés et revérifiés par le launcher ;
  aucun lien accepté dans les textes.
- SERVEUR : à redéployer, avec deux blocs nginx ; trousseau à
  re-signer après la diffusion de la 3.2.0.
- QUALITÉ : 13 nouveaux tests automatisés (355 au total).


------------------------------------------------------------------
PAGE « FORMULAIRES DES DEMANDES » (ADMINISTRATION)
------------------------------------------------------------------
- Permission « Formulaires des demandes » (feedback.forms).
- Types de demande : ajouter (8 au plus), monter, descendre,
  supprimer (avec confirmation ; les demandes reçues restent
  consultables), masquer.
- Réglages d'un type : nom, description, exemple de titre,
  informations techniques cochées par défaut, captures d'écran
  autorisées (3 au plus), icône.
- Champs : ajouter, monter, descendre, retirer ; libellé, aide,
  obligatoire, aperçu dans la liste, longueur, nombre d'étoiles,
  choix (2 à 20).
- Types de champs : zone de texte, texte court, liste déroulante,
  cases à cocher, case oui/non, étoiles (3, 5 ou 10).
- Aperçu identique à la fenêtre « Aide » ; contrôle en direct, la
  publication reste bloquée tant qu'il reste une erreur.
- Avertissement si un libellé semble demander une donnée
  personnelle (e-mail, mot de passe, téléphone…).
- « Publier », « Annuler les modifications », « Revenir à
  l'origine », « Recharger » ; une publication d'un autre
  administrateur n'est jamais écrasée.


------------------------------------------------------------------
ICÔNES IMPORTÉES
------------------------------------------------------------------
- Fichier .ico seulement (1 Mo au plus), contenant une image de
  64 × 64 pixels ; les autres tailles du fichier sont ignorées.
- PNG intégré ou bitmap 24/32 bits ; 256 couleurs et moins refusés.
- Image réécrite en PNG neuf, sans métadonnées, intégrée aux
  formulaires et couverte par leur signature.
- Un fichier refusé affiche un message qui explique pourquoi.


------------------------------------------------------------------
FENÊTRE « AIDE » ET DEMANDES DES JOUEURS
------------------------------------------------------------------
- Formulaires publiés lus à l'ouverture de la fenêtre, puis
  vérifiés (règles, signature, révision).
- Types dans l'ordre choisi, avec leur icône ; types masqués
  absents ; section « Captures d'écran » masquée si le type ne les
  autorise pas.
- Formulaires republiés pendant la saisie : formulaire reconstruit,
  saisie des champs inchangés gardée.
- Hors ligne ou formulaires refusés : formulaires d'origine.
- Menu : chaque demande s'affiche avec le formulaire de son envoi ;
  filtre par type publié, « (masqué) » ou « (supprimé) ».
- Journal d'audit : « Formulaires des demandes publiés », avec le
  détail des changements par type.


------------------------------------------------------------------
SÉCURITÉ
------------------------------------------------------------------
- Formulaires signés par une clé autorisée « formulaires » dans le
  trousseau ; vérifiés par chaque launcher, comme le catalogue.
- Aucun lien dans les noms, descriptions, libellés, aides et choix :
  refusé par le menu, le serveur et le launcher.
- Ancienne révision refusée par le launcher.
- Publication par requête signée, avec la permission
  feedback.forms ; révision attendue (rien n'est écrasé).
- Taille limitée : 256 Ko de formulaires, icônes comprises.
- Le serveur refuse une demande avec captures pour un type qui ne
  les autorise pas, et une demande pour un type masqué ou supprimé.
- Une autorisation inconnue du trousseau est désormais acceptée sans
  effet.


------------------------------------------------------------------
SERVEUR
------------------------------------------------------------------
- À redéployer : server/deploy/LISEZMOI.md, étape 8, puis
  étape 3 nonies.
- nginx : ajouter « location = /catalog/feedback-forms.json »
  (nginx-catalog.conf) et « location = /api/v1/feedback/forms »
  (nginx-api.conf, 300 Ko).
- Publier ensuite le launcher 3.2.0, puis donner la permission
  feedback.forms et re-signer le trousseau.
- Les launchers 3.0 / 3.1 envoient toujours leurs demandes avec les
  formulaires d'origine, acceptées sauf type masqué ou supprimé.


------------------------------------------------------------------
DÉVELOPPEMENT
------------------------------------------------------------------
- Contrats : FeedbackFormsDocument (document signé et règles),
  FeedbackIcons (lecture des .ico, sans bibliothèque).
- Signature : type de contenu feedback-forms, autorisation « forms »
  du trousseau.
- Serveur : FeedbackFormsStore (référence privée, historique de 20
  publications, copie publique) ; route v1/feedback/forms.
- Launcher : FeedbackFormsService (lecture et vérification),
  Themes/FeedbackForms.xaml (modèles partagés avec l'aperçu).
- Menu : FeedbackFormsPanelViewModel, FeedbackFormEditors.
- Outil ui-snapshot : scènes admin-page-feedback-forms-edit,
  admin-page-feedback-forms-new-type, feedback-custom-kinds et
  feedback-custom.
- Tests : FeedbackFormsTests.cs, FeedbackFormsModuleTests.cs,
  FeedbackFormsPanelTests.cs (nouveaux), ContentSigningTests.cs,
  FeedbackPanelTests.cs.
- Documentation : README.md, docs/ADMIN-ARCHITECTURE.md
  (§ 11 sexies) et server/deploy/LISEZMOI.md mis à jour.


La sécurité des mises à jour du launcher ne change pas : la signature numérique et l'empreinte SHA-256 de chaque nouvelle version sont vérifiées avant toute installation.
