diff --git a/README.md b/README.md index a0709b9..7ffc99f 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ Lifecycle, document CRUD (Actor/Token/Item/Scene/JournalEntry/ ActiveEffect/Combat/Combatant), combat lifecycle, chat & rolls (incl. dnd5e v2 roll hooks), canvas/scene/UI (canvasInit/Ready/Pan, controlToken, hoverToken, targetToken, lighting/sightRefresh, collapseSidebar, -changeSidebarTab, getSceneControlButtons, renderChatMessage, +changeSidebarTab, getSceneControlButtons, renderChatMessageHTML, renderChatInput, renderJournalPageSheet, rtcSettingsChanged), and more. Full list: `scripts/internal/registered-hooks.js`. diff --git a/docs/HOOK_CONTRACT.md b/docs/HOOK_CONTRACT.md index 6e42caa..74b80f6 100644 --- a/docs/HOOK_CONTRACT.md +++ b/docs/HOOK_CONTRACT.md @@ -299,7 +299,7 @@ hooks. Each registration uses the wrapper from ยง2 to produce envelopes. - `lightingRefresh`, `sightRefresh` - `collapseSidebar`, `changeSidebarTab`, `getSceneControlButtons` - `collapseSceneNavigation` -- `renderChatMessage`, `renderChatInput`, `renderJournalPageSheet` +- `renderChatMessageHTML`, `renderChatInput`, `renderJournalPageSheet` - `initializePointSourceShaders` - `rtcSettingsChanged` diff --git a/scripts/internal/registered-hooks.js b/scripts/internal/registered-hooks.js index 94e0234..c2014fa 100644 --- a/scripts/internal/registered-hooks.js +++ b/scripts/internal/registered-hooks.js @@ -93,8 +93,15 @@ export const HOOK_REGISTRY = [ { envelope: "combatInactive", mode: "sync", raw: ["updateCombat"], synthesized: true }, // --- Chat & rolls --- + // Note: renderChatMessage (the v13 jQuery-wrapper hook) is + // intentionally NOT registered. Foundry v13 deprecated it in favor + // of renderChatMessageHTML (HTMLElement). Consumers wanting chat + // message rendering events should subscribe to renderChatMessageHTML + // (or renderJournalPageSheet for journal pages). Subscribing to the + // deprecated hook here would re-emit Foundry's compatibility warning + // on every chat render in worlds still running v13.351. { envelope: "createChatMessage", mode: "async", raw: ["createChatMessage"] }, - { envelope: "renderChatMessage", mode: "sync", raw: ["renderChatMessage"] }, + { envelope: "renderChatMessageHTML", mode: "sync", raw: ["renderChatMessageHTML"] }, { envelope: "renderChatInput", mode: "sync", raw: ["renderChatInput"] }, { envelope: "dnd5e.rollAttackV2", mode: "async", raw: ["dnd5e.rollAttackV2"] }, { envelope: "dnd5e.rollDamageV2", mode: "async", raw: ["dnd5e.rollDamageV2"] }, diff --git a/tests/verify-hooks-lib.mjs b/tests/verify-hooks-lib.mjs index a01d418..cb79455 100644 --- a/tests/verify-hooks-lib.mjs +++ b/tests/verify-hooks-lib.mjs @@ -516,7 +516,7 @@ function syntheticArgsFor(rawName) { if (rawName === "collapseSidebar" || rawName === "collapseSceneNavigation") return [{}, true]; if (rawName === "changeSidebarTab") return [{}]; if (rawName === "getSceneControlButtons") return [[]]; - if (rawName === "renderChatMessage") return [{ id: "m1" }, {}, {}]; + if (rawName === "renderChatMessageHTML") return [{ id: "m1" }, {}]; if (rawName === "renderChatInput") return [{}, {}, {}]; if (rawName === "renderJournalPageSheet") return [{}, {}, {}]; if (rawName === "initializePointSourceShaders") return [{}];