slaguru666andClaude Opus 5 1ca0a64295 Stage the delve's own theme; show the foes that exist, not the plan
Two bugs, both of them the adapter drifting from what the core says.

PACK was a module global set once at boot to barrow. load() never
switched it and enter() read PACK.forgeStageType, so a port delve
authored at the desk staged barrow geometry — the fiction said quayside
and the map was a burial chamber. Fifteen of the sixteen themes, silently
wrong, on the path the module documents as its intended entry point. It
now resolves per call from d.params.theme, which is written from pack.id
at generation and so is always present and always right. Per call rather
than once at load, because a page reload resets the global while the
staged delve in world state survives; and before the folder is created,
so a bad theme fails without leaving anything behind.

The pack roster describes the encounter DELVE planned. The Forge takes no
cast — it rolls its own monsters from the heat — so the roster and the
actors in the world were never the same list, and both surfaces printed
the roster's stats as though they were. In several themes the roster also
carries "blessed, silvered or magical weapons ONLY", naming a Wraith that
was never created; the journal told the GM to say so before initiative.
Both surfaces now run off the actors that exist, read from the documents
themselves, and the plan is kept but labelled as the plan. The chat card
drops the immunity line entirely — it is the live surface and a false
immunity is worst there; the journal keeps it captioned, since a GM at
the desk may choose to cast the fight by hand.

Adds one core test for the contract the fix rests on: every delve records
the pack it came from, across all sixteen. The adapter itself has no test
harness — see the note in the commit for the release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:41:31 +01:00
2026-08-05 12:55:33 +01:00

DELVE

An authoring system and Foundry VTT module for the VANITY tabletop RPG. Press one button and it generates a whole dungeon — fiction, areas, maps, encounters, hoards and a journal you can read cold — then drops it into your world.

Install (Foundry)

Add-on Modules → Install Module → Manifest URL:

https://github.com/slaguru666/vanity-delve/releases/latest/download/module.json

Requires the VANITY system, 0.10.4 or later — that is the release the Forge seams landed in, and without them a delve emits nine stray chat cards and three stray folders.

  • ⛏ raise a dungeon
  • 🗑 remove one you don't want — it deletes exactly what it made and nothing else
  • ⏩ stage a delve you finished at the desk

Also a CLI

core/ is pure JavaScript with no Foundry dependencies, so a delve can be generated, rerolled and finished outside the VTT:

node core/cli.mjs --new --seed=my-delve --file=my.json
node core/cli.mjs --file=my.json --worksheet    # everything, with prompts for what only you can write
node core/cli.mjs --file=my.json --reroll=3:situation
node core/cli.mjs --file=my.json --play         # the tight, table-facing sheet

What it does and does not do

It generates the fiction, the order and the pressure. It does not write your read-aloud text or your climax, and it says so — those are prompts, not output. It gets you to a strong first draft in a minute instead of an evening, then gets out of the way.

DESIGN.md has the whole design history, including four rounds of adversarial review and two paper playtests that failed before anything worked.

Layout

core/ the generator — pure JS, 39 tests
foundry-module/ the Foundry module, with core/ vendored
paper/ a hand-written delve and both playtest logs
spike/ the harness that measured VANITY's Forge outside Foundry
samples/ generated output

Licence

MIT — see LICENSE.

S
Description
No description provided
Readme MIT
456 KiB
Languages
JavaScript 98.2%
Handlebars 1.3%
CSS 0.5%