seitime-bridge/module.json
Vassili Minaev bc3aa10ab2 Initial scaffolding: settings + manifest push
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>
2026-05-10 02:26:53 -06:00

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" }
]
}
}