- Add yaml-loader; import data/spells.yml at build time
- Add SpellTemplate/SpellsFile types to globals.d.ts
- Add 'Add Template Spell' button that opens a modal picker pre-filling
all spell fields from the YAML data
- Move spell data files into data/ directory
- Split spell rows into inputs row + full-width notes row (colspan=6)
- Shrink delete column to fit-content; bold spell name input
- Add class column to spell table; change MP cost to free-text input
- Auto-resize spell notes textarea on load and on input
- Add 10px padding between spells for visual separation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add html/index.html: book viewer with auto-discovering sidebar,
prev/next navigation, keyboard shortcuts, and URL hash persistence
- Add html/book-page.css: shared stylesheet for all book pages derived
from fabula-ultima-sheet.css (dark theme, CSS variables, Cinzel/
Crimson Text fonts, common class styles)
- Add book.js entry point so webpack injects the shared CSS into the
book viewer; update webpack.config.js for two entry points, split
CSS chunk, CopyWebpackPlugin for book pages, and /book dev server
rewrite rule
- Add scripts/strip_watermark.py: removes "Guest Customer (Order
#52072168)" watermark artifacts from all 210 book pages
- Add scripts/restyle_book.py: strips per-page <style> blocks and
injects <link rel="stylesheet" href="book-page.css"> into all pages
- Update Justfile deploy to scp -r dist/* for the new /book subtree
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>