Build MVP: campaigns, characters, combat, dice, compendium

- Rules abstraction (5e + pf2e) behind one interface, fully tested
- Pure combat engine: turn-order safe across add/remove/reorder/init-change
- Dexie storage with real cascade deletes + Zod validation on write
- Seedable dice engine with notation parser
- Lazy SRD compendium (code-split), bestiary -> combat
- Strict TS, 54 unit tests, Playwright e2e smoke (all green)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-08 00:09:42 +02:00
parent fe84dc365d
commit 1a9e5e2c18
93 changed files with 412052 additions and 9 deletions
+11
View File
@@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<rect width="64" height="64" rx="12" fill="#0f0f17"/>
<g transform="translate(32 33)" fill="none" stroke="#d4af37" stroke-width="2.4" stroke-linejoin="round">
<polygon points="0,-24 21,-11 21,12 0,25 -21,12 -21,-11" fill="#181826"/>
<polygon points="0,-24 13,-4 -13,-4" fill="#21212f"/>
<polygon points="13,-4 21,12 0,7 -21,12 -13,-4" />
<polygon points="0,7 0,25" />
<polygon points="13,-4 0,7 -13,-4" />
</g>
<text x="32" y="38" font-family="Georgia, serif" font-size="13" fill="#d4af37" text-anchor="middle" font-weight="bold">20</text>
</svg>

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB