Adds: Carcolh, Doppelgänger, Hag Grove, Nymph, Unicorn
Bestiary total: 262 creatures
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New creatures: Crawling Wall, Dungeonheart, Flying Spellbook, Flying Sword,
Joust Guardian, Golem Flesh, Homunculus, Living Statue Crystal, Necrophidius,
Potead (Small/Medium/Large), Ripworm.
Fixed ID collisions for Living Statue variants.
Bestiary now contains 240 creatures total.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Beasts category now complete with 71 creatures added.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add gitignore patterns for compendium LevelDB files (*.ldb, MANIFEST-*, LOG, CURRENT, LOCK)
- Add gitignore for packs/*/lost/ recovery directories
- Add gitignore for temp working files
- Remove all tracked LevelDB files (generated from _source/ JSON on build)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create npc-body.hbs as combined body template with all sections
- Simplify PARTS to header + body instead of individual sections
- Add flex layout and custom scrollbar CSS for sheet-body
- Preload npc-body.hbs template in vagabond.mjs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Removed HTML tags (<p>, etc.) from action/ability descriptions
- Fixed mid-sentence line breaks caused by PDF column formatting
- Descriptions now display cleanly in NPC sheet textareas
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed _key from !items! to !actors! in all 92 bestiary JSON files.
Actor compendiums require the !actors! prefix to be recognized by Foundry.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Attack skills now have trained/untrained status like regular skills:
- Untrained: difficulty = 20 - stat
- Trained: difficulty = 20 - (stat × 2)
Includes UI toggle button, data model fields, and matching styling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The character sheet was incorrectly using Dexterity for ranged attacks.
Config and weapon model already had the correct Awareness stat.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Quick reference for attribute keys, types, and patterns when creating
Active Effects for characters and NPCs. Includes flag-based favor/hinder
system and example patterns for common class features.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Spell damage is now rolled separately via button click instead of
automatically, matching the attack roll behavior. Includes spell chat
card styling fixes for proper header layout and damage display.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add always-visible crit threshold display with +/- adjustment buttons
- Store modifier relative to base threshold, clamped between 1 and 20
- Reset modifier when changing weapon/spell selection
- Use Math.clamp (not deprecated Math.clamped) for Foundry v13 compatibility
- Pass effective crit threshold to attackCheck() and skillCheck()
- Add SCSS styling for stepper control with hover states
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove duplicate event listeners from SpellCastDialog._onRender()
(favor/hinder and modifier presets are handled by parent class)
- Add scrollbar support to all roll dialogs via .window-content styling
(overflow-y: auto, max-height: 80vh, custom scrollbar)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Status System:
- Add StatusData model with mechanical modifiers (damageDealt, healingReceived)
- Add status item sheet with modifier configuration
- Add status-bar.hbs for displaying status chips on actor sheets
- Status chips show tooltip on hover, can be removed via click
- Add 17 status items to compendium (Blinded, Burning, Charmed, etc.)
- Frightened applies -2 damage dealt, Sickened applies -2 healing received
Attack Roll Changes:
- Separate attack and damage into two discrete rolls
- Attack hit now shows "Roll Damage" button instead of auto-rolling
- Button click rolls damage and updates the chat message in-place
- Store weapon/attack data in message flags for later damage rolling
- Fix favor/hinder and modifier preset buttons in attack dialog
- Show individual damage dice results in chat card breakdown
Mechanical Integration:
- Add _applyStatusModifiers() to VagabondActor for aggregating status effects
- Update getRollData() to include statusModifiers for roll formulas
- Update damageRoll() to automatically apply damageDealt modifier
- Update applyHealing() to respect healingReceived modifier
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 6.4: 58 spells with full metadata
- 6.5: 103 perks with structured prerequisites
- 6.6: 43 weapons with properties
- 6.7: 5 armor items (including barding)
- 6.8: 368 equipment items with Silver Standard values
Also added system.json pack definitions and build scripts for
weapons, armor, and equipment compendiums.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add getTotalSlots() method to base-item.mjs as unified interface
- Add slotsWhenEquipped field to weapon, armor, and equipment schemas
- Implement getTotalSlots() in each item type respecting equipped state
- Update actor slot calculation to use getTotalSlots() uniformly
- Add _onUpdate hook to sync equipment effects with equipped state
- Update backpack with slotsWhenEquipped: 0 and +2 slot bonus effect
Backpack now correctly:
- Costs 1 slot when unequipped, 0 when equipped
- Grants +2 max item slots via Active Effect when equipped
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Schema & Documentation:
- Extended EFFECT_KEYS with 24 new mappings: senses (6), movement
capabilities (5), skill training (12), focus tracking
- Created docs/ACTIVE_EFFECTS_REFERENCE.md with comprehensive guide
for effect keys, modes, JSON format, and formula support
Ancestry Automation:
- Goblin: Darksight (darkvision), Nimble (+5 speed)
- Orc: Darksight (darkvision), Hulking (+2 item slots)
- Halfling: Nimble (+5 speed)
- Draken: Scale (+1 armor)
- Dwarf already had automation from earlier work
Class Automation:
- Wizard: Manifold Mind I/II (+1 focus.maxConcurrent each)
- Fighter Valor already automated (proof of concept)
- Gunslinger Deadeye deferred (dynamic, not static bonus)
Added Phase 11 to PROJECT_ROADMAP.json with 18 tasks (10 complete,
8 deferred for conditional flags/UI/state tracking).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Perks corrected:
- Sharpshooter: Fixed prereq DEX 4 → AWR 7, effect now correctly
reduces crit roll by 1 when skipping Move (was +1 damage)
- Situational Awareness: Added missing Detect training prereq,
fixed effect to Favor on surprise checks + flanking doesn't Hinder
- Tough: Fixed prereq MIT 4 → MIT 7, effect now +Level HP scaling
(was flat +5 HP)
Deleted:
- Weapon Mastery: Completely fabricated perk not in source material
Also marked all 7 ancestries as reviewed (were already correct except
Dwarf's Tough trait which was fixed in previous session).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add skillTraining schema: supports fixed grants and player choices
e.g., [{ type: "fixed", skills: ["arcana"], count: 1 },
{ type: "choice", skills: ["detect", "influence"], count: 3 }]
- Add weaponTraining schema: ["melee", "ranged"] or []
- Correct all class features, progressions, and descriptions from source
- Fix mana progressions (accumulating values, not flat)
- Replace fabricated D&D-style features with actual Vagabond features
- Add official flavor text from rulebook
- Mark all classes as reviewed: true
- Add reviewed: false to ancestry and perk JSONs for upcoming review
- Add castingMax formula TODO to PROJECT_ROADMAP.json (task 2.15)
Classes corrected: Alchemist, Barbarian, Bard, Dancer, Druid, Fighter,
Gunslinger, Hunter, Luminary, Magus, Merchant, Pugilist, Revelator,
Rogue, Sorcerer, Vanguard, Witch, Wizard
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CLAUDE.md: Added mandatory human review process for all packs/_source/ changes
- REVIEW_CHECKLIST.md: Detailed validation checklist for classes, ancestries, perks, spells
Prevents hallucinated flavor text and incorrect game mechanics from being committed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements P1-P5 prototype tasks:
- P1: Class level-up with Active Effects
- P2: Perk Active Effects on drop/delete
- P3: Feature choices (Fighting Style perk selection)
- P4: Ancestry traits as Active Effects
- P5: Caster class progression (mana accumulation)
Key patterns established:
- Features/perks/traits with changes[] arrays become ActiveEffects
- Manual UUID construction for compendium items
- ignorePrereqs flag for special choice scenarios
- Mode 5 (OVERRIDE) for boolean senses
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Class and perk item sheets use {{join arr ", "}} to display array fields
but the helper was never registered.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- P2: Perks with changes[] arrays create Active Effects on drop/delete
- P3: Feature choice UI for Fighting Style (auto-grants Situational
Awareness + selected training perk, ignoring prerequisites)
- P4: Ancestry traits apply Active Effects (Dwarf Darksight/Tough working)
- P5: Caster progression accumulates mana from class progression table
Key patterns:
- Manual UUID construction: Compendium.${pack.collection}.Item.${entry._id}
- ignorePrereqs flag for specific choices bypassing all prerequisites
- Mode 5 (OVERRIDE) for boolean senses like darkvision
- Form data merging with direct DOM reading for reliable selection capture
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add level-up dialog (ApplicationV2) showing features gained per level
- Class features with `changes` arrays auto-create Active Effects
- Valor I/II/III on Fighter reduces crit threshold cumulatively (-1/-2/-3)
- Perk selection UI in dialog (awaits perk compendium content)
- Fix duplicate item creation bug (was double drop handling)
- Configure proper dragDrop in ActorSheetV2 DEFAULT_OPTIONS
- Add ancestries and classes compendium packs with LevelDB format
- Docker compose PUID/PGID for proper file permissions
Key patterns established:
- Class progression stored in item.system.progression[]
- Features with changes[] become ActiveEffects on level-up
- applyClassFeatures() is idempotent (checks existing effects)
- updateClassFeatures() handles level changes incrementally
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Theme System:
- Add _theme-variables.scss with light (parchment) and dark color palettes
- Register theme options in system.json for Foundry v13 color scheme support
- Convert all SCSS color variables to CSS custom properties
- Update base, mixins, components, and sheet styles for theme support
- Add _applyThemeClass() to actor and item sheet classes
ProseMirror Editor Fix (v13 ApplicationV2):
- Replace {{editor}} helper with <prose-mirror> custom element
- Add TextEditor.enrichHTML() for rich text content preparation
- Update all 8 item templates (spell, weapon, armor, equipment, etc.)
- Fix toolbar hiding content by renaming wrapper to .editor-wrapper
- Style prose-mirror with sticky toolbar and proper flex layout
Roll Dialog & Chat Card Styling:
- Complete roll dialog styling with favor/hinder toggles, info panels
- Complete chat card styling with roll results, damage display, animations
- Mark tasks 5.7 and 5.8 complete in roadmap
- Add task 5.11 for deferred resizable editor feature
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 4 (Item Sheets) complete:
- Created VagabondItemSheet base class using ApplicationV2 + HandlebarsApplicationMixin
- Implemented templates for all 8 item types: weapon, armor, equipment, ancestry, class, spell, perk, feature
- Added Details and Effects tabs to all item sheets
- Effects tab provides full CRUD for Active Effects (create, edit, toggle, delete)
- Added ~150 localization strings for item fields and UI elements
- Comprehensive SCSS styling matching parchment theme
Key features:
- Type-specific templates with appropriate fields for each item type
- Array field management for traits, progression tables, features
- Wider dropdowns for ancestry Being Type and Size fields
- Effect controls remain clickable when effect is disabled
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Movement types (Climb, Cling, Fly, Phase, Swim) now use boolean
toggles instead of separate speed values, matching RAW where all
special movement uses base speed.
Changes:
- Update NPC and Character data models with movement schema
- Add movement section to NPC stats template (grid layout)
- Add movement section to character biography template
- Add localization strings with tooltip hints for each type
- Style movement grid to match senses section pattern
- Add rollable # Appearing label for NPC sheets
- Fix NPC sheet scrollbar visibility
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Magic tab:
- Mana display matching inventory header format
- Focus status panel with active spell tracking
- Spell list with damage/effect badges and cast buttons
- Spellcasting reference guide with delivery/duration costs
Biography tab:
- Character details section with Size and Being Type dropdowns
- Senses as 3-column grid of boolean checkboxes
- Biography and Notes textareas with proper styling
- Languages section hidden (not yet implemented)
Senses system overhaul:
- Changed from mixed boolean/number to all boolean toggles
- Renamed darksight to darkvision
- Added: allsight, echolocation, seismicsense, telepathy
- Removed: tremorsense (not in system)
- Updated both character and NPC data models
- Updated NPC sheet template and hasSenses logic
Also updated PROJECT_ROADMAP.json with styling progress notes.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add ancestry block with header (image, name, type, size) and traits list
- Style features and perks lists with grid layout for image/info/description
- Add active effects display for temporary and passive effects
- Fix perk prerequisites display using getPrerequisiteString() method
- Add responsive layout for narrow containers
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add inline header with item slots and currency inputs (gold/silver/copper)
- Style item sections (weapons, armor, equipment) with proper list layout
- Constrain item thumbnails to 32x32px
- Add colored stat badges for damage (red) and armor (blue)
- Style equip toggle and delete buttons with hover states
- Add responsive layout for narrow containers
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add actor sheet implementation using Foundry VTT v13 ApplicationV2 API:
- Base actor sheet class with tab navigation, drag-drop, scroll preservation
- Character sheet with header, main tab (stats, saves, skills, attacks)
- NPC sheet structure (templates only, styling pending)
- Resource bars with fill effect and backdrop pills for legibility
- Responsive layout using CSS Container Queries
- Fix for ApplicationV2 tab switching (cleanup stale parts)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add morale roll system for NPCs with group support and automatic triggers:
- rollMorale() method for individual NPC morale checks (2d6 vs morale score)
- rollGroupMorale() static method uses lowest morale in selected tokens
- promptMoraleCheck() posts GM-whispered chat with clickable roll button
- Auto-prompt when NPC HP drops to half or below
- Chat button click handler for morale prompts
- Morale Check macro for quick group rolls
- Comprehensive test suite for morale functionality
Morale fails when 2d6 > morale score, setting moraleStatus.broken = true.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>