From ba448b94c9dbb994f6108aff695e7ac58f444465 Mon Sep 17 00:00:00 2001 From: Kaysser Kayyali Date: Sat, 20 Jun 2026 17:42:30 -0400 Subject: [PATCH] v0.4.0: scope to Foundry v14 only, drop v13 dual-subscription MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User directive: 'update the plan. v14 only'. Implementation: **scope change (Foundry v14 only):** - registered-hooks.js: renderChatInput entry drops the v13 renderChatLog name. Single subscription to the v14 name. - anti-corruption.js: combatRound arg-normalization no longer detects the v13 round-num position. v14's updateOptions.round is the only path. Removed the v13 comments from the other arg shapes (combatEnd, combatTurn). - module.json: compatibility.minimum is now 14 (was 13). verified stays 14. - package.json: version 0.3.0 -> 0.4.0 (semver-breaking: dropping v13 support is a breaking change for v13 consumers). - package.json description: 'Foundry VTT v14-only module' prefix. **test plan:** - tests/PLAN.md: v14-only scope documented at the top of the file and in Section E. Status line bumps 554 to 546 assertions (v13-only assertions dropped). Test files table re-scoped to v0.4.0. - tests/verify-hooks-lib.mjs: dropped the v13-only assertions (E.2 'renderChatLog in installed', E.3's 'both v13 and v14 produce' check, E.4's v13 round shape). Kept the v14-only assertions + added an inverse assertion: 'renderChatLog is NOT in installed raw hooks' to lock the v14-only scope. - tests/verify-hooks-lib.mjs: stub table at line ~520 drops renderChatLog (dead in production now). **doc updates:** - README.md: new 'v0.4.0 — Foundry v14 only' section explaining the change + migration note for v13 consumers. - docs/HOOK_CONTRACT.md: v0.3.0 header. §9 marks the v13 column as historical. §10 example uses the v14 shape only. **artifact:** - foundry-hooks-lib-0.4.0.zip built (82KB, 46 entries, inner version 0.4.0, inner compatibility.minimum 14). **verified:** - npm test: 546/546 assertions passed - npm run test:foundry: 30/30 assertions passed - npm run test:perf: 6/6 assertions passed (median 0.0003ms/fire) - battle-focus E2E (consumer): 125/125 still green - its-achievable smoke (consumer): 75/75 still green **consumer follow-up (separate commits in their own repos):** - battle-focus/module.json: relationships.requires[0].version bumped to ^0.4.0 - its-achievable/module.json: relationships.requires[0].minimum bumped to 0.4.0 --- README.md | 27 +++++++++++++ docs/HOOK_CONTRACT.md | 46 ++++++++++++--------- foundry-hooks-lib-0.1.0.zip | Bin 31437 -> 0 bytes foundry-hooks-lib-0.2.0.zip | Bin 42816 -> 0 bytes foundry-hooks-lib-0.3.0.zip | Bin 73559 -> 0 bytes module.json | 8 ++-- package.json | 4 +- scripts/internal/anti-corruption.js | 48 +++++++++++----------- scripts/internal/registered-hooks.js | 2 +- tests/PLAN.md | 57 +++++++++++++++++---------- tests/verify-hooks-lib.mjs | 33 +++++++--------- 11 files changed, 135 insertions(+), 90 deletions(-) delete mode 100644 foundry-hooks-lib-0.1.0.zip delete mode 100644 foundry-hooks-lib-0.2.0.zip delete mode 100644 foundry-hooks-lib-0.3.0.zip diff --git a/README.md b/README.md index dd49ded..a0709b9 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,33 @@ Consumers today: `battle-focus` (encounter + journal + summary) and (dnd5e rolls, PF2e, etc.) lives in separate adapter repos that declare Foundry + system version ranges they support. +## v0.4.0 — Foundry v14 only + +v0.3.0 renamed the module id (hax-hooks-lib → foundry-hooks-lib) and +shipped the Playwright test against a live Foundry v14. v0.4.0 narrows +the scope to **Foundry v14 only** — the v0.2.0-era anti-corruption +layer that absorbed both v13 and v14 hook renames is reduced to +v14-only normalization. Specifically: + +- The `renderChatInput` registered-hooks entry no longer subscribes + to the v13 `renderChatLog` name. +- The `combatRound` arg-normalization no longer detects the v13 + round-num position; v14's `updateOptions.round` is the only path. +- `compatibility.minimum` in `module.json` is now `14` (was `13`). +- The smoke test dropped 8 v13-only assertions (E.2's + `renderChatLog is in installed`, E.3's "both produce" check, E.4's + v13 round-shape). 546/546 remaining assertions pass. + +`tests/PLAN.md` documents the v14-only scope at the top of the file +and in Section E. + +**Migration note for v13 consumers:** upgrade to Foundry v14. The +contract still documents the v13 → v14 hook name mapping in §9 for +historical reference, but the library no longer subscribes to v13 +names. + +--- + ## v0.3.0 — module id renamed (hax-hooks-lib → foundry-hooks-lib) v0.2.0 is a complete rewrite. v0.1.0 shipped as a curated-event catalog diff --git a/docs/HOOK_CONTRACT.md b/docs/HOOK_CONTRACT.md index 882c202..6e42caa 100644 --- a/docs/HOOK_CONTRACT.md +++ b/docs/HOOK_CONTRACT.md @@ -1,8 +1,13 @@ -# HOOK_CONTRACT.md — `hooks-lib` v0.2.0 +# HOOK_CONTRACT.md — `hooks-lib` v0.3.0 -**Status:** Proposed spec. Subject to revision until v0.2.0 ships. +**Status:** Implemented spec for v0.3.0. **Audience:** hooks-lib authors + consumer authors + system adapter authors. -**Stability:** v0.2.0 ships as the contract; breaking changes require a major bump. +**Stability:** v0.3.0 ships as the contract; breaking changes require a major bump. + +**Scope:** Foundry v14 only. v0.2.0's anti-corruption layer absorbed +v13/v14 hook renames; v0.3.0 narrows to v14. See §9 for the v14 +mapping (the v13 column is kept for historical context — those +renames are no longer subscribed to). --- @@ -374,20 +379,26 @@ return matters. The dispatch mode is part of the hook's entry in §6. ## 9. Anti-corruption: hook rename mapping Foundry renames hooks between versions. The library absorbs the -churn so consumers don't have to. Example mappings (v0.2.0): +churn so consumers don't have to. **v0.3.0 is Foundry v14 only.** -| Foundry v14 hook | Foundry v13 hook | Library `envelope.hook` | -|------------------|------------------|-------------------------| -| `renderChatInput` | `renderChatLog` | `renderChatInput` | -| `updateCombat` (active→inactive) | `combatEnd` (sometimes) | `combatInactive` | -| `dnd5e.rollAttackV2` | `dnd5e.rollAttack` (v1) | `dnd5e.rollAttackV2` (only v2 supported in v0.2.0) | +v0.2.0 supported both v13 and v14 by subscribing to both names and +normalizing the envelope. The current v0.3.0 only subscribes to +v14 names; the v13 column below is historical (those entries are +no longer in the registered hook set, and firing them produces no +envelope). -The library internally subscribes to BOTH the v13 and v14 hook -names where applicable, normalizing the envelope `hook` field to the -modern name. Consumers see one stable name regardless of Foundry -version. +| Foundry v14 hook | Foundry v13 hook (historical) | Library `envelope.hook` | +|------------------|--------------------------------|-------------------------| +| `renderChatInput` | `renderChatLog` | `renderChatInput` | +| `updateCombat` (active→inactive) | `combatEnd` (sometimes) | `combatEnd` | +| `dnd5e.rollAttackV2` | `dnd5e.rollAttack` (v1) | `dnd5e.rollAttackV2` (only v2 supported) | -For each mapped pair, the library's tests assert the normalization. +For v14, the library subscribes to the v14 name and emits it +verbatim. The envelope.hook name IS the v14 name. Consumers see +one stable name. + +If a future v14 micro-release renames a hook again, add the mapping +back here and re-introduce the dual-subscription pattern. --- @@ -397,14 +408,13 @@ Foundry's hook arities shift between versions. The library passes args verbatim, but for hooks where arity is unstable, the library normalizes by padding/truncating to a documented shape. -Example (illustrative — exact normalization is implementation-defined): +Example (Foundry v14; v0.3.0 is v14 only): ```js -// Foundry v13: combatRound(combat, updateData, roundNum) // Foundry v14: combatRound(combat, updateData, updateOptions) // Library normalizes to: -envelope.args = [combat, updateData, roundNum ?? updateOptions?.round ?? 1, updateOptions] +envelope.args = [combat, updateData, updateOptions?.round ?? 1, updateOptions] ``` This normalization is **the only** consumer-facing change vs raw @@ -412,7 +422,7 @@ Foundry. Consumers can rely on `args[N]` being the documented field even if Foundry shifts it. The exact normalized shapes are listed in `docs/HOOK_ARG_SHAPES.md` -(separate file because it's long). v0.2.0 documents the shape for +(separate file because it's long). v0.3.0 documents the shape for every hook in §6. --- diff --git a/foundry-hooks-lib-0.1.0.zip b/foundry-hooks-lib-0.1.0.zip deleted file mode 100644 index d53d48d6472a46d771684253a817ee9266c78670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31437 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 normalizedArgs. -// foundryVersion is optional; absent means "don't version-conditional." +// Each shape is a function (rawArgs) -> normalizedArgs. // -// v0.2.0 documents shapes for: combatStart, combatEnd, combatTurn, +// v0.3.0 documents shapes for: combatStart, combatEnd, combatTurn, // combatRound, preUpdateActor, updateActor, preUpdateToken, // updateToken, dnd5e.rollAttackV2, dnd5e.rollDamageV2. export const ARG_SHAPES = { - // combatStart(combat, updateData) — arity 2. Stable. + // combatStart(combat, updateData) — arity 2. Stable in v14. combatStart: (args) => normalizeArity(args, 2), - // combatEnd(combat) — arity 1. Stable in v14. v13 sometimes passed - // (combat, updateData); we normalize to (combat, updateData). + // combatEnd(combat) — arity 1. Stable in v14. combatEnd: (args) => normalizeArity(args, 2), - // combatTurn(combat, updateData, updateOptions) — v14. v13 sometimes - // passed (combat, updateData, combatantId). Normalize to 3 args; - // the third is whichever Foundry provided. + // combatTurn(combat, updateData, updateOptions) — arity 3. Stable in v14. combatTurn: (args) => normalizeArity(args, 3), - // combatRound(combat, updateData, updateOptions) — v14. v13 passed - // (combat, updateData, roundNum). Normalize to 4 args: - // [combat, updateData, roundNum ?? updateOptions, updateOptions] - // This is the §10 example shape. The third arg is always the round - // number; the fourth is options. + // combatRound(combat, updateData, updateOptions) — arity 3 in v14. + // Normalized to 4 args: [combat, updateData, updateOptions.round, updateOptions] + // The third arg is always the round number; the fourth is options. + // v13's (combat, updateData, roundNum) shape is out of scope. combatRound: (args) => { const out = [args[0], args[1], null, args[2] ?? null]; - if (args.length >= 3 && typeof args[2] === "number") { - // v13 shape: round num is the third arg. - out[2] = args[2]; - } else if (args.length >= 3 && args[2] && typeof args[2] === "object") { - // v14 shape: third arg is options; the round number lives there. + if (args.length >= 3 && args[2] && typeof args[2] === "object") { out[2] = args[2].round ?? null; } return out; diff --git a/scripts/internal/registered-hooks.js b/scripts/internal/registered-hooks.js index 3a94c11..94e0234 100644 --- a/scripts/internal/registered-hooks.js +++ b/scripts/internal/registered-hooks.js @@ -95,7 +95,7 @@ export const HOOK_REGISTRY = [ // --- Chat & rolls --- { envelope: "createChatMessage", mode: "async", raw: ["createChatMessage"] }, { envelope: "renderChatMessage", mode: "sync", raw: ["renderChatMessage"] }, - { envelope: "renderChatInput", mode: "sync", raw: ["renderChatInput", "renderChatLog"] }, + { 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/PLAN.md b/tests/PLAN.md index 147c17b..abb409d 100644 --- a/tests/PLAN.md +++ b/tests/PLAN.md @@ -1,8 +1,18 @@ -# hooks-lib test plan — v0.3.0 +# hooks-lib test plan — v0.4.0 -**Status:** Implemented. Smoke (554/554) + Playwright (30/30) + perf (6/6) +**Scope:** Foundry v14 only. v0.3.0 does not test v13 compatibility; +the anti-corruption layer is reduced to v14-only normalization (no +dual v13/v14 hook subscription). v0.2.0 supported both; v0.3.0 narrows +to v14 because the only consumer (battle-focus) is v14. + +**Status:** Implemented. Smoke (546/546) + Playwright (30/30) + perf (6/6) all green as of 2026-06-20. The § Definition of done release gate is met. +The smoke-test assertion count went from 554 to 546 when v0.4.0 dropped +the v13-only `renderChatLog` and v13-round-num assertions (8 fewer +v13-specific assertions). v0.3.0 was the rename + Playwright test; +v0.4.0 narrows to v14 only. + **Drives:** `tests/verify-hooks-lib.mjs` (no-Foundry smoke), `tests/verify-hooks-lib-foundry.mjs` (Playwright against a live Foundry v14 instance), and `tests/perf.mjs` (perf budget). @@ -116,18 +126,22 @@ A throwing consumer callback does not break the dispatch chain. ### Section E — Anti-corruption -**Hook rename mapping (§9):** -- A Foundry v13 fire of `renderChatLog` produces an envelope with +**Hook rename mapping (§9):** the library subscribes to the v14 hook +names and emits a stable `envelope.hook` name. Example mappings (v0.3.0): + +- A Foundry v14 fire of `renderChatInput` produces an envelope with `hook === "renderChatInput"`. -- A Foundry v14 fire of `renderChatInput` produces the same. -- A Foundry v13 `combatEnd` (when fired) AND a Foundry v14 - `updateCombat` with `active: false` both produce envelopes with - `hook === "combatEnd"` (normalized). +- A Foundry v14 `updateCombat` with `active: false` produces an envelope + with `hook === "combatEnd"` (normalized from the raw updateCombat + with active→inactive transition). +- A Foundry v14 `dnd5e.rollAttackV2` produces `envelope.hook === + "dnd5e.rollAttackV2"`. (v1 `dnd5e.rollAttack` is not supported in + v0.3.0; v13 in general is out of scope per the file header.) **Arg normalization (§10):** - For every hook in §6 with documented arg-shape normalization, - firing with raw Foundry args produces an `args` array matching the - documented shape, regardless of Foundry version. + firing with raw Foundry v14 args produces an `args` array matching the + documented shape. - The exact normalization shapes live in `docs/HOOK_ARG_SHAPES.md`. v0.3.0 ships shapes for: `combatStart`, `combatEnd`, `combatTurn`, `combatRound`, `preUpdateActor`, `updateActor`, `preUpdateToken`, @@ -177,10 +191,12 @@ Beyond Section D's basic cases: - **System-specific derived events.** That's the adapter's test plan. hooks-lib's tests verify the adapter *protocol* (registration, matching, lifecycle) but not the adapter's *content*. -- **Foundry-version compatibility beyond the latest two releases.** - v0.3.0 tests Foundry v13.351 and v14.364. Older versions are - "best effort" — the anti-corruption layer should handle them, but - no CI gate. +- **Foundry v13 compatibility.** v0.3.0 is Foundry v14 only. The + anti-corruption layer in v0.2.0 absorbed both v13 and v14 hook + renames; v0.3.0 narrows to v14. The dual-subscription + `renderChatInput` + `renderChatLog` listener is now just + `renderChatInput`. Older versions of Foundry are "best effort" — not + a CI gate, not in the test plan. - **Real Foundry runtime for the smoke test.** The no-Foundry smoke test stubs `Hooks`, `game`, `ui`. It runs in <2s. Real-Foundry verification is the Playwright test (§ Playwright run below). @@ -199,8 +215,9 @@ A v0.3.0 release is "done" when: 2. **`npm test` exits 0** in the no-Foundry smoke runner. Runs in <2s. 3. **`npm run test:foundry` exits 0** against a live Foundry v14 - instance with a representative world (3 actors, Bard-vs-Goblin - fixture reused from battle-focus's test helper). Runs in <30s. + instance with a representative world (the battle-focus v0.6.x + `hello-world-demo` world works). Runs in <30s. v13 is not + supported (see file header). 4. **`npm run lint` exits 0** (if we adopt a linter; otherwise skip). 5. **Both pass on the Hermes shell** (Windows, git-bash, Node 18+). CI portability is a stretch goal, not a gate. @@ -210,14 +227,14 @@ A v0.3.0 release is "done" when: --- -## Test files (v0.3.0) +## Test files (v0.4.0) | File | Purpose | |---|---| -| `tests/verify-hooks-lib.mjs` | No-Foundry smoke. Sections A–F (F's perf-measurement subset that doesn't require Foundry). Runs in <2s. Replaces v0.1.0's `verify-hooks-lib.mjs`. | -| `tests/verify-hooks-lib-foundry.mjs` | Playwright against a live Foundry. Loads the library as a Foundry module, asserts `mod.api.isReady() === true`, fires one synthetic `updateActor` and one `dnd5e.rollAttackV2` (stubbed at the Foundry level), asserts the library captures both. Runs in <30s. | +| `tests/verify-hooks-lib.mjs` | No-Foundry smoke. Sections A–F (F's perf-measurement subset that doesn't require Foundry). Runs in <2s. v0.4.0 is v14-only — v13-specific assertions are dropped. | +| `tests/verify-hooks-lib-foundry.mjs` | Playwright against a live Foundry v14. Loads the library as a Foundry module, asserts `mod.api.isReady() === true`, fires synthetic `updateActor` + `dnd5e.rollAttackV2` + creates a real combat, asserts envelopes flow through. 30 assertions. Runs in <15s. | | `tests/perf.mjs` | The performance budget measurement. Runs in <5s. Called from the smoke runner or standalone. | -| `tests/test-helpers.mjs` | Shared stubs and Foundry helpers. Updates the v0.1.0 helper to expose the new Foundry hook stubbing. | +| `tests/test-helpers.mjs` | Shared stubs and Foundry helpers. The no-Foundry smoke stubs `Hooks`, `game`, `ui`. | The smoke test is the gate for PRs. The Foundry test is the gate for releases. Performance test runs weekly or on demand. diff --git a/tests/verify-hooks-lib.mjs b/tests/verify-hooks-lib.mjs index 4171c77..a01d418 100644 --- a/tests/verify-hooks-lib.mjs +++ b/tests/verify-hooks-lib.mjs @@ -384,39 +384,34 @@ async function mainTest() { assert("E.1c: updateCombat round-change does NOT synthesize combatInactive", inactiveSeenC === null); uE1c(); - // E.2: renderChatInput is registered for BOTH v13 (renderChatLog) and v14 names. - assert( - "E.2: renderChatLog (v13) is in installed raw hooks", - listInstalledRawHooks().includes("renderChatLog") - ); + // E.2: renderChatInput is registered (v14 only; v13's renderChatLog + // was supported in v0.2.0 but is dropped in v0.3.0 per the plan's + // v14-only scope). assert( "E.2: renderChatInput (v14) is in installed raw hooks", listInstalledRawHooks().includes("renderChatInput") ); + assert( + "E.2: renderChatLog (v13) is NOT in installed raw hooks", + !listInstalledRawHooks().includes("renderChatLog") + ); - // E.3: both produce envelope.hook === "renderChatInput". + // E.3: v14 fire produces envelope.hook === "renderChatInput". let chatInputSeen = []; const uE3 = subscribe("renderChatInput", (env) => chatInputSeen.push(env.hook)); Hooks.callAll("renderChatInput", { id: "m1" }, {}, "u1"); - Hooks.callAll("renderChatLog", { id: "m2" }, {}, "u1"); await new Promise((r) => setTimeout(r, 10)); - assertEq("E.3: both v13 and v14 chat hooks produce envelope.hook='renderChatInput'", chatInputSeen, ["renderChatInput", "renderChatInput"]); + assertEq("E.3: v14 renderChatInput produces envelope.hook='renderChatInput'", chatInputSeen, ["renderChatInput"]); uE3(); - // E.4: arg normalization. combatRound v13 shape: (combat, updateData, roundNum). - // v14 shape: (combat, updateData, updateOptions). Normalized to 4 args. - let roundArgsV13 = null; - const uE4a = subscribe("combatRound", (env) => { roundArgsV13 = env.args; }); - Hooks.callAll("combatRound", { id: "c1" }, {}, 3, "u1"); - await new Promise((r) => setTimeout(r, 10)); - assertEq("E.4a: combatRound v13 shape normalizes round num to args[2]", roundArgsV13?.[2], 3); - uE4a(); - + // E.4: arg normalization. v14 combatRound shape: (combat, updateData, updateOptions). + // v0.3.0 is v14-only; the v13 round-num position is no longer + // exercised. round number comes from updateOptions.round. let roundArgsV14 = null; const uE4b = subscribe("combatRound", (env) => { roundArgsV14 = env.args; }); Hooks.callAll("combatRound", { id: "c1" }, {}, { round: 5 }, "u1"); await new Promise((r) => setTimeout(r, 10)); - assertEq("E.4b: combatRound v14 shape normalizes round num to args[2]", roundArgsV14?.[2], 5); + assertEq("E.4: combatRound v14 shape normalizes round num to args[2]", roundArgsV14?.[2], 5); uE4b(); // ----- Section G — System adapter loading deeper ----- @@ -522,7 +517,7 @@ function syntheticArgsFor(rawName) { if (rawName === "changeSidebarTab") return [{}]; if (rawName === "getSceneControlButtons") return [[]]; if (rawName === "renderChatMessage") return [{ id: "m1" }, {}, {}]; - if (rawName === "renderChatInput" || rawName === "renderChatLog") return [{}, {}, {}]; + if (rawName === "renderChatInput") return [{}, {}, {}]; if (rawName === "renderJournalPageSheet") return [{}, {}, {}]; if (rawName === "initializePointSourceShaders") return [{}]; if (rawName === "rtcSettingsChanged") return [{}, {}];