Files
hooks-lib/module.json
Kaysser Kayyali ba448b94c9 v0.4.0: scope to Foundry v14 only, drop v13 dual-subscription
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
2026-06-20 17:42:30 -04:00

37 lines
1.4 KiB
JSON

{
"id": "foundry-hooks-lib",
"title": "Foundry Hooks Lib",
"description": "Foundry VTT v14-only module: generic Foundry hook facade. Subscribes to every relevant Foundry hook (combat, document CRUD, canvas/UI, dnd5e v2 rolls), emits a uniform {ts, hook, args} envelope. No domain interpretation — consumers query the stream. See docs/HOOK_CONTRACT.md.",
"version": "0.4.0",
"library": true,
"manifestPlusVersion": "1.2.0",
"authors": [
{
"name": "Kaysser Taylor",
"url": "https://git.homelab.local/kaykayyali"
}
],
"compatibility": {
"minimum": 14,
"verified": 14
},
"relationships": {
"systems": [],
"modules": [],
"requires": []
},
"esmodules": ["scripts/main.js"],
"url": "https://git.homelab.local/kaykayyali/hooks-lib",
"manifest": "https://git.homelab.local/kaykayyali/hooks-lib/raw/branch/main/module.json",
"download": "https://git.homelab.local/kaykayyali/hooks-lib/raw/branch/main/foundry-hooks-lib-0.4.0.zip",
"readme": "https://git.homelab.local/kaykayyali/hooks-lib/blob/main/README.md",
"changelog": "https://git.homelab.local/kaykayyali/hooks-lib/commits/main",
"bugs": "https://git.homelab.local/kaykayyali/hooks-lib/issues",
"license": "https://git.homelab.local/kaykayyali/hooks-lib/blob/main/LICENSE",
"socket": false,
"flags": {
"allowBugReporter": true,
"hotReload": { "extensions": [], "paths": [] }
}
}