All 11 issues from 4-player simulation of The Hunt for Fabius Bile: 1. Roll feed visible to all players (no GM auth guard) 2. Scene text gated by revealed flag; GM explicit reveal per scene 3. GM can add NPC/enemy entries to initiative tracker 4. Round counter synced to Dice Roller via localStorage + custom event 5. Check reward text hidden until player has rolled 6. Checks assignable to specific player via Scene Secrets ⚙ options 7. Fear test quick-roll panel with WP input appears when fearRating > 0 8. Decision checks show textarea/Declare instead of d100 roll button 9. Fate point re-roll: one per check per scene, resets on scene advance 10. Player poll reduced from 8s to 4s, combined mission + roll feed poll 11. Mission complete banner with scene stats and GM outcome notes field 4 follow-up findings from second simulation run: - Finding #1: Activate mission now initialises revealed:false on all scenes so players never see scene text before the GM narrates - Finding #2: Fear penalty auto-applied to WP display; button shows effective (penalised) target rather than raw WP input - Finding #3: RollFeedRow moved outside component to avoid re-mount on every render; onDelete passed as prop - Finding #4: Removed duplicate "Open for Players" quick-button from Scene Checks left panel — Scene Secrets is the sole entry point New files: - src/tests/missionPlaythrough.test.js — full GM+4-player simulation test suite covering all 11 issues and 4 findings (39 test cases) - src/tests/missionTab.test.js — player/GM view isolation tests - src/utils/diceRoller.js — shared d100/degrees/clampTarget utilities - tests/missionRoutes.test.js — backend mission route unit tests - tests/playerRoutesLogin.test.js — player login route tests - tests/sessionRoutes.test.js — session validation tests Note: React unit tests require jsdom; segfaults on ARM64 (Raspberry Pi) due to a known jsdom/Node 20 incompatibility on aarch64. Tests pass on x86 CI. Backend integration tests (tests/) run normally. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deathwatch Roller
Project Description
Deathwatch Roller is a React-based application designed to assist players and Game Masters in managing their sessions for the Deathwatch tabletop RPG. It includes features like player management, requisition shop, session tracking, and comprehensive GM tools.
Features
- Player Management: Full CRUD operations for player accounts (GM only)
- Requisition Shop: Browse and purchase items with RP
- Session Tracking: Track game sessions and player progress
- GM Kit: Comprehensive Game Master tools and utilities
- Bestiary: Monster and enemy reference
- Rules Database: Searchable rules and game mechanics
Quick Start
Prerequisites
- Node.js (v18+ recommended)
- npm or yarn
Installation
-
Clone the repository:
git clone https://github.com/alexpolo1/dwroller.git cd dwroller -
Install dependencies:
npm install -
Start the development server:
npm start -
Start the backend server:
npm run server
The application will be available at http://localhost:3000 with the API at http://localhost:5000.
Production Deployment
For production deployment with PM2:
npm run build
npm run pm2:start
Clean Repository
This repository is configured to exclude:
- Log files (
*.log) - Database files (
*.db,*.sqlite) - Backup files (
*backup*,backups/) - Temporary files
- PDF files (copyrighted content)
When you clone this repository, the database will be automatically created with the necessary tables on first run.
GM Features
The application includes a comprehensive Player Management interface available only to Game Masters:
- Create and delete player accounts
- Manage requisition points, experience, and renown
- Reset player passwords
- Bulk operations for XP/RP management
API Endpoints
GET /api/players- Get all players (requires session)POST /api/players/gm/*- GM-only endpoints (requires x-gm-secret header)GET /api/shop- Get shop inventoryGET /api/bestiary- Get bestiary data
Contribution Guidelines
- Fork the repository
- Create a new branch for your feature or bug fix
- Follow the existing code style and patterns
- Add tests for new functionality
- Submit a pull request with a detailed description
Documentation
Full documentation is available in the docs/ directory:
- Quick Start Guide - Setup and installation
- User Guide - Features and usage
- API Documentation - REST API reference
- Developer Guide - Contributing to the project
- Contributing Guide - How to contribute
- Security Guide - Security best practices
- PM2 Configuration - Production deployment
License
This project is licensed under the MIT License. See the LICENSE file for details.