Still unreleased, but module.json is at 0.6.5 now. initiativeWarning checked the field before the prose, so a hand-edited file carrying both printed the warning twice — the exact fault the migration was meant to end. Prose is checked first now and always wins. The play sheet was the only surface that did not render `avoid`, so three legacy rosters whose warning lived there — church, forest and temple at nightmare — lost it entirely: the helper suppressed its fallback on finding prose the play sheet never showed. It renders `avoid` now, which it should have anyway; it is how the table gets past a fight without having one, which is table-facing by definition. All five surfaces now render both prose fields, so "the prose already says it" means the same thing everywhere. Replayed all 64 rosters in their pre-field form through every surface: 26 need a warning, 130 of 130 checks say it exactly once. The current packs give the same result. commit() no longer mutates st before the write — it passes an incremented copy, so a failed write really does leave the state as it was, which is what the retry warning promises. The single-flight guard moved into stage.mjs as singleFlight() and has four tests: overlapping calls never run together, the second is refused rather than queued, the guard clears afterwards, and a throw does not wedge it. It closes the window within one client only; two GM browsers still race, and that needs a world-level lock rather than a module variable. 41 core tests, 60 adapter tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
DELVE — Foundry module
Install by copying this directory to Data/modules/vanity-delve/, then copying the generator
into it:
cp -R ../core foundry-module/module/core
module/core/ is a verbatim copy of core/. It is not vendored in git because the standalone
generator is the source of truth — if the copy ever needs editing to run inside Foundry, the
portability claim in DESIGN.md §4 is false.
Using it
The ⛏ button in the token controls opens the Forge. Set the parameters, press Raise the dungeon, and it builds — in one folder per document type:
- one scene per area, walls and lighting placed, via the VANITY Forge
- encounter actors, foldered rather than scattered
- a JournalEntry: GM truth, one page per area, the ending — this is the adventure
Every document is stamped with a dungeonId, so the 🗑 button removes a whole dungeon and
nothing else.
Requires the VANITY system 0.10.4+ for quiet output; on older versions the Forge posts its own cards over DELVE's and the module says so on startup.