Add <cast-tray>: renders scenario.cast (name + one-line note) with each
NPC secret behind a tap-to-reveal so spoilers stay off-screen at the
table. Wired into the shell as the 'cast' tool with a 👥 rail chip;
reveal state is ephemeral component state. Now the 57 ported NPCs are
visible in a running session.
tests/components/cast-tray.test.js + gm-shell-cast.test.js. 141 tests pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>