# Changelog All notable changes to Darkwatch are documented here. Format: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html) --- ## [Unreleased] ## [0.3.0] - 2026-04-11 ### Added - **Snow atmosphere effect** — tsParticles snowfall with size variation for depth, gentle drift, and adjustable intensity (60–300 flakes). Appears in the atmosphere panel between Rain and Embers. ## [0.2.0] - 2026-04-11 ### Added - Public brochure site (`site/`) — static marketing page with feature screenshots, feature rows, publisher section, and Discord/GitHub links; Playwright script generates screenshots automatically ### Changed - **Fire effect** — reworked colour ramp (dark red tips → rich orange → amber → warm yellow core); per-column height variation gives the flame a ragged, realistic silhouette; ember glow at the base; overall taller at all intensity levels - **Rain** — more translucent drops (opacity 0.15–0.40); speed range halved so high intensity feels heavy, not frantic; direction tilts from vertical at low intensity to 70° at high intensity (wind-driven effect) - **Embers** — smaller particles (0.8–2.2 px) and more numerous (50–150 at full intensity) ### Fixed - Fog overlay no longer jumps at ~3 seconds — a CSS keyframe animation was overriding the inline intensity-based opacity value when it ended; replaced with a CSS transition driven by a React mount state ## [0.1.0] - 2026-04-11 ### Added **Auth & Access** - Email/password authentication with JWT httpOnly cookies - Register, login, and logout flows - Campaign membership — DM and player roles - Invite link system for joining campaigns - Per-campaign role enforcement — API middleware, socket auth, and frontend gating **Campaign Management** - Campaign CRUD with real-time sync via Socket.IO - DM and player roles with distinct permissions per campaign **Characters** - Full character CRUD — stats (STR, DEX, CON, INT, WIS, CHA), gear, talents, HP, XP, currency - Auto-calculated AC and derived attacks - Talent effects — stat bonuses, AC, attack/damage, gear slots, HP scaling - Click-to-edit stats with view/edit mode split - Per-character color picker - DiceBear avatars with style picker - Character title auto-derived from class + alignment + level - Character creation wizard — 4-step modal: name/class/ancestry → 3d6 stat rolling → background/alignment/deity → review (HP, gold, gear slots, title all auto-derived) **Spellcasting** - 34 Tier 1–2 spells (Wizard and Priest) - 1d20 cast checks with exhaustion on failure - Wizard mishap table (d12, auto-applied with undo) - Priest penance mechanic - Rest to recover spells - Spell focus indicator on DM character cards — shows which characters have active spell exhaustion **Dice Rolling** - 3D animated dice with predetermined outcomes - Character-colored dice - Delayed roll log - Advantage/disadvantage support - Long-press for advantage/disadvantage on mobile **Torch Timer & Luck Tokens** - 60-minute torch countdown, synced across all clients - Luck token toggle per character **Atmosphere Effects** - Fog overlay with intensity slider — DM-only, synced via socket - Fire effect (Three.js particles) - Rain and embers (tsParticles) **Initiative Tracker** - Team-based Shadowdark initiative: party rolls d20 individually (system takes highest) vs DM's single d20 for enemies - Rolling phase: each player rolls for their character, DM rolls for enemies - Active phase: turn order display, round counter, side highlighting - Enemy HP tracking — visible to DM only, hidden from players - Add/remove enemies mid-combat - Real-time sync via Socket.IO - Combat state persisted to database (survives server restarts) **DM Tools** - Compact DM character cards — 3-up grid showing HP, AC, luck, torch, and stat modifiers - Atmosphere control panel (DM-only) **UI & Platform** - Medieval visual theme — Cinzel + Alegreya fonts, parchment texture, gold filigree, dark color scheme - Mobile layout — full-screen character sheet, roll log drawer - Custom SelectDropdown — consistent cross-platform styling