Foundry v12 ESM module that pushes the world's PC actor manifest to a companion Frappe app via webhook. Structure: - scripts/main.js: registers settings on init, exposes API on ready, wires createActor/deleteActor/periodic hooks. All push operations gated to game.users.activeGM to avoid duplicate pushes from co-GMs. - scripts/settings.js: Frappe URL, shared secret, world ID, periodic interval. Secret uses `secret: true` for masked input but is still readable by all connected clients (documented in setting hint). - scripts/api.js: bridgeFetch helper with X-Bridge-Secret/-World headers, pushManifest, testConnection. - scripts/constants.js: MODULE_ID. Public API exposed at globalThis.seitimeBridge: seitimeBridge.testConnection() // round-trip empty manifest seitimeBridge.pushManifest() // push current world manifest dnd5e is declared as a related system in module.json. Snapshot push and End Session macro come in subsequent commits. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
25 lines
711 B
JSON
25 lines
711 B
JSON
{
|
|
"id": "seitime-bridge",
|
|
"title": "Seitime Bridge",
|
|
"description": "Pushes dnd5e character data from Foundry VTT to a Seitime Frappe site at session end. Companion to the st Frappe app.",
|
|
"version": "0.1.0",
|
|
"compatibility": {
|
|
"minimum": "12",
|
|
"verified": "12",
|
|
"maximum": "13"
|
|
},
|
|
"authors": [
|
|
{ "name": "Vassili" }
|
|
],
|
|
"esmodules": [
|
|
"scripts/main.js"
|
|
],
|
|
"url": "https://git.vassi.li/vassili/seitime-bridge",
|
|
"manifest": "https://git.vassi.li/vassili/seitime-bridge/raw/branch/main/module.json",
|
|
"download": "https://git.vassi.li/vassili/seitime-bridge/archive/main.zip",
|
|
"relationships": {
|
|
"systems": [
|
|
{ "id": "dnd5e", "type": "system" }
|
|
]
|
|
}
|
|
}
|