Le champ Description était dans un wrapper form-group (flex-direction: row)
qui le réduisait à la largeur de son contenu (~90px) au lieu de toute la
fiche (592px). Retrait de la classe form-group : le fieldset s'étire à
nouveau sur toute la largeur, comme sur les autres feuilles.
Valide par TC-06 (acteur commerce, 14/14) lors de la passe de
non-régression.
Ajoute aussi les permissions d'exécution manquantes sur les scripts
TC-02 et TC-07 (l'orchestrateur les sautait silencieusement).
Nouveau mode de repos (nouveau-mode-repos) :
- Insomnie (Queue de Dragon) : bannière d'avertissement dans le dialogue,
rafraîchissement du drapeau à l'ouverture, vérification en direct dans la
boucle de sommeil (coupe la récupération fatigue/rêve si elle surgit en
cours de nuit), drapeau bidirectionnel (setInfoSommeilInsomnie) et mention
dans le dialogue Château Dormant.
- Château Dormant : déclenchement automatique quand l'heure absolue de fin
de nuit (11) est atteinte, au lieu de seulement après 12 h de sommeil.
- Rêve de Dragon : reprise de nuit possible — system.sommeil.heures
initialisé à la durée, heures restantes conservées au réveil, dialogue
pré-rempli avec bannière 'Reprise de nuit' et remise à zéro après une
nuit complète.
- Don 'double rêve' : second jet de récupération de rêve par heure.
- Garde anti-boucle infinie si l'insomnie apparaît pendant le sommeil.
- Info-bulle sur le réveil forcé.
Perte de rêve des enchantements au Château Dormant :
- Suppression du message en double (whisper dédié) : texte intégré au
résumé du CD ; la gemme renvoie désormais nouveaupr.
- retire les <form> dans les templates DialogV2 (absorbe par V2)
- ajoute window: {frame, positioned} et enleve height:fit-content (bloquait deplacement vertical)
- ajoute buttons: [Fermer] sur tous les DialogV2 qui en manquaient
- style des dialogs chronologie, calendar-editor, stress
- corrige duplication des boutons calendrier a chaque re-render
- HandlebarsApplicationMixin sur FenetreRechercheTirage
- corrige selecteurs :input→input,select,textarea (jQuery→natif)
- ajoute banniere ASCII console au demarrage
- Migration des fiches acteur V2 : racine <form> → <section>
(DocumentSheetV2 encapsule déjà dans <form>, élimine les formulaires imbriqués)
- Ajout de submitOnChange: true sur la feuille de base acteur
(nécessaire pour que les événements change des éditeurs déclenchent la mise à jour)
- Ajout de toggled=true + wrapper <fieldset><div><label> sur tous les formInput
(comportement identique aux fiches d'objet)
- CSS : .window-content > section ajouté à côté de > form
(évite la perte du flex layout et des scrollbar en passant de form à section)
- Modèles acteur : passage de StringField à HTMLField pour les champs
description/notes/biographie/notesmj (permet le rendu ProseMirror)
- Ajout de systemFields dans le contexte _prepareContext()
Plus aucun FormApplication V1 dans module/settings/.
- Tous les settings menus migrés vers HandlebarsApplicationMixin(ApplicationV2)
- Templates sans wrapper <form>
- Scrollbar via LESS pour #status-effects et #system-compendiums
- Listeners jQuery -> DOM natif dans _onRender
Les rules flex+overflow pour les forms AppV2 sont dans
foundryvtt-reve-de-dragon.less. Plus aucun style inline
dans _onRender ni <style> dans les templates.
Le id de DEFAULT_OPTIONS est l'id d'application ui.windows,
PAS l'id DOM (#application-N). Les classes ({classes}) sont
appliquées sur .window-app. CSS ciblé via la classe fonctionne.
Le CSS via template ne fonctionnait pas car l'id V2 n'est pas
un sélecteur DOM fiable. On apply les styles flex/overflow
directement sur this.element et son premier enfant dans _onRender.
Le formulaire ne scrollait pas car le form V2 (tag:'form')
n'avait pas de hauteur contrainte + overflow. Fix via CSS
ciblant #regles-optionnelles .window-content form > div.
- Nouveau setting 'tables-encaissement-revisees' dans Options alternatives
- Paliers fins (01-20+), pertes statiques, '@end0' vide endurance à 0
- Dialog de consultation avec les 2 tables (mortel/non-mortel)
- Lien 'Voir les tables d'encaissement' dans le menu Règles optionnelles (MJ)
- Boutons +Ration et +Eau dans l'onglet Équipement
- Incrémente la quantité si l'item existe déjà, sinon le crée
- Nouveau template post-item-compact.hbs pour l'aperçu chat
- _MONTRER utilise désormais le cartouche compact
- postItemToChatCompact() awaitable, champs filtrés par type d'inventaire
- Les conteneurs n'ajoutent plus leur propre encombrement au total
(seuls les objets qu'ils contiennent sont comptés)
- Ajout indicateur visuel quand une compétence atteint son niveau d'archétype
(bordure dorée + icône ✓)
- Remplace le tri 'Manuel' par un tri 'Quantité' dans l'inventaire
- Supprime _onDrop / _onSortItem (obsolètes sans tri manuel)
- Nouveau dialogue 'Gérer ses deniers' (ApplicationV2)
- Nouveau dialogue 'Gérer ses potions' (ApplicationV2)
- Boutons herbes/ingrédients/potions/deniers déplacés dans l'onglet Équipement
- Dialogues herbes/ingrédients harmonisés (alterne-list, contrôles +/-)
- Ajout titre 'Livres lus' et en-têtes alignés
- Ajout estCopieLue au schéma livre (template.json)
- creerCopieLue() extrait dans base-actor.js
- Filtre estCopieLue dans prepareInventaire/buildContenuConteneur
La fenêtre de jet pour les attaques à distance prenait
trop de hauteur sur petit écran.
La difficulté était mal visualisée par les joueurs (et confondue
avec les conditions)
Le d100 de la zone "tricher" était un peu trop gros
Les ajustements sont organisés plus logiquement: difficulté,
conditions, ajustements à cocher
- ajout de min et max quand utile
- ordre et regroupement des attributs:
- préférence pour name en premier
- regroupement de class/type/data-dtype
- regroupement value/min/max