v2.1.3 — Roll handling · Phone turn-flow · Editorial sheet · TCC-safe autorun
Bundles v2.1.0 → v2.1.3 onto v2.0.x. Co-authored with @ethan-piper.
Highlights
2.1.0 — Reading text size · Narration length · Phone turn-flow
- Text Size stepper in Settings (
A−/A+, click % to reset) scales the reading column via font-size multiplier so narration stays legible across the room from a Chromecast. Persists per-browser (localStorage["dnd-text-scale"]), applied anti-FOUC. - Narration length slider (250–2500 words) — POSTs to
/narration-pref;check_input.pyprepends a[[Narration length…]]directive so the DM honors it as a hard per-turn budget. - Phone turn-flow redesign — plain status strip (Your move → Sending… → Sent → ✓ DM has your move → narrating), one-tap staging (auto-ready), trust-LAN default for device approval (
DND_REQUIRE_APPROVAL=1restores the gate).
2.1.1 — Enforced roll handling + move-received confirmation
- No more silent auto-rolling of PCs. Roll handling is chosen at game start (
/dm:dnd newand/dm:dnd loadask "Dice rolls?") and stored asroll_modeinstate.md. Underplayers, the DM calls each PC d20 by name and waits; underauto, rolls openly with full math. Initiative + NPC/monster rolls stay DM-rolled. - Per-player roll override — phone Settings
Rollstoggle flips a bound PC between Players / Auto. POSTs to/roll-pref; surfaced as a[[<Char> roll mode: …]]directive that overrides the campaign default. - "Move received" confirmation — phone shows
✓ The DM has your movewhen the DM actually picks up the queued action.
2.1.2 — Editorial character-sheet theming
- Character-sheet modal innards fully themed for Editorial: vermilion titles + ability modifiers, ink body text, hairline dividers, portrait drop-shadow removed, broken class-icon onerror removal. Before this, sheet innards still rendered Vellum gold inside the editorial paper canvas. Now coherent end-to-end.
2.1.3 — TCC-safe autorun wait
- Autorun mode no longer breaks under macOS TCC. The shell autorun-wait.sh redirect is silently blocked by TCC when the data root lives under `~/Documents`. Replaced with autorun_wait.py — identical output contract, python file I/O that TCC permits.
Plus
Folds in the v2.0.1 doc-fix queue: stale `/dnd` → `/dm:dnd` sweep, broken README image paths corrected. No separate v2.0.1 release needed.
Update
```
/plugin update dm
```
then `/reload-plugins` (or restart Claude Code) to pick it up.