3.1 KiB
AGENTS.md — mgt2-compendium-amiral-denisov
First read
.github/copilot-instructions.md— packs, icons, module.json conventions (this file builds on it, don't repeat it)
No package manager / no build
There is no package.json, no lockfile, no bundler. JavaScript is plain ESM loaded directly by FoundryVTT. Do not run npm install or any build command.
Commands
5 chat commands registered at runtime (not declared in module.json):
| Command | Entrypoint | Dialog |
|---|---|---|
/commerce |
scripts/commerce.js |
CommerceDialog (3 tabs) |
/pnj |
scripts/npc.js |
NpcDialog (4 tabs) |
/rencontre |
scripts/npc.js |
same dialog (tab 2) |
/mission |
scripts/npc.js |
same dialog (tab 3) |
/sector |
scripts/sector.js |
SectorMapApp (IFRAME Traveller Map, clics→chat) |
/subsector |
scripts/sector.js |
SectorMapApp (IFRAME) |
Commands are registered via ChatLogV2.CHAT_COMMANDS — not Hooks.on("chatMessage") as the copilot-instructions say (that file is stale). See commerce.js:15 and npc.js:15 for the actual pattern.
Framework quirks
- ApplicationV2 +
HandlebarsApplicationMixinfor all dialogs. - Foundry v13/v14 dual code paths: some hooks must handle both jQuery (v13) and DOM (v14) APIs.
- Dice rolls:
await new Roll(formula).evaluate()— always async. - Skill FQN format for
game.i18n: e.g.pilot.spacecraft,electronics.computers,gunner.turret.
Runtime systems (run at ready hook, GM only)
-
Migration (
mgt2eMigration.js): converts legacy item types to mgt2e (armor→armour, equipment→item/augment, computer→hardware, etc.). Tracked viagame.settingsversion flag. Forced re-run requires deleting the setting. -
NPC RollTable sync (
npcRollTableSync.js): writes D66 tables fromscripts/data/npcTables.jsinto thetables-pnjcompendium pack. Checksums to avoid redundant writes.
Testing
# standalone, no npm needed — install jest globally or use npx
npx jest scripts/tests/travellerNpcGenerator.test.js
- Single file, 1096 lines, hand-rolled FoundryVTT mocks.
- Covers: utilities, lookups, validation, characteristic/skill generation, skill conversion, full NPC gen, ModuleCache, errors, config validation.
- No CI test step — you must run manually.
- No Jest config file — relies on defaults.
Versioning
module.json→"version"is the single source of truth.- Git tag format:
v1.3.0(CI stripsv). - No changelog file.
CI/CD (Gitea)
- Only triggers on
release: [published]— not on push/PR. - Builds a zip archive of
module.json + assets/ + packs/ + scripts/ + styles/ + templates/and uploads to the release. - No test step in CI.
Deprecated packs (still on disk, NOT in module.json)
packs/arme/→ superseded byarmespacks/carriere/→ superseded bycarrierespacks/talent-psy/→ superseded bytalents-psioniques
Do not re-add them to module.json. They remain for historical data recovery only.
All content is in French
Labels, comments, commit messages, UI strings, icon file names, rule references — everything. Check French naming before searching/grepping.