+11
−0
+69
−15
Loading
Écriture joueur fermée hors période de jeu. Le PlayerGuard bloquait déjà après la clôture ; il applique maintenant une liste BLANCHE de statuts jouables (RUNNING, PAUSED). Une liste blanche plutôt qu'une liste noire : un statut ajouté plus tard sera bloqué par défaut, ce qui est le sens prudent. Les messages diffèrent selon « pas encore commencé » et « c'est fini » — les deux appellent des réactions opposées de la part du joueur. PAUSED reste ouvert : une pause sert à régler un point d'animation, pas à geler la cellule au milieu d'une phrase. Deux exemptions, chacune pour une raison précise : le questionnaire de RETEX se remplit APRÈS la clôture, et la vérification des accès se confirme AVANT le démarrage. Sans la seconde, ce lot aurait cassé le comcheck — la liste blanche a rendu le conflit visible. Côté joueur, la saisie fermée réutilise le chemin `readOnly` construit pour « voir comme » : il masquait déjà chaque affordance d'écriture, il suffisait de l'élargir. Bandeau d'attente distinct du bandeau d'observation. Notifications. Signal sonore et pastille de compteur à l'arrivée d'un mail ou d'un message de chat, dans la navigation joueur. Le son se coupe depuis le header, à côté du sélecteur de thème, côté joueur comme côté console ; la préférence est retenue par navigateur. `ping()` lit la préférence directement plutôt que de la recevoir en contexte : les émetteurs sont dispersés et n'ont pas tous accès à un fournisseur. Destinataire de réponse. Répondre à un mail reçu EN DIRECT visait « Animation », y compris entre deux joueurs : le gestionnaire temps réel forçait `fromCharacterId` à null, et l'événement diffusé ne portait pas cette information. Le champ est ajouté à `MailNewEvent` et renseigné aux trois émissions (composition joueur, réponse de l'animation, inject e-mail). Après rechargement le bug disparaissait, ce qui explique qu'il ait pu passer inaperçu. Chat en pleine hauteur : il avait un simple `min-height`, donc occupait le haut de la page et laissait la moitié basse vide. La réponse de l'animation aux messages joueurs était déjà livrée en bdef3c32, avec son signal sonore. Non compilé ni exécuté (pas de toolchain Node dans l'environnement utilisé). Co-Authored-By: Claude (RCA)