Commit graph

42 commits

Author SHA1 Message Date
Aaron Wood
77be024ec6 feat: add InitiativeTracker sidebar component 2026-04-11 15:44:22 -04:00
Aaron Wood
3c3a92ce99 feat: add CombatState and CombatEnemy types 2026-04-11 15:39:52 -04:00
Aaron Wood
80eb50d359 Move SpellList above CharacterSheet so it's visible without scrolling
Also delete stale compiled .js files that were shadowing the .tsx source
and causing Vite to serve the old pre-spells versions of all components.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 13:07:17 -04:00
Aaron Wood
2e1fff4c2d feat: replace inline create form with CharacterWizard multi-step modal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 11:55:43 -04:00
Aaron Wood
a6218c72d4 feat: add CharacterWizard multi-step character creation modal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 11:54:53 -04:00
Aaron Wood
3e6749de5f feat: extend createCharacter API to accept full character fields 2026-04-11 11:51:39 -04:00
Aaron Wood
6ecdda51f6 feat: add character creation utility functions 2026-04-11 11:51:37 -04:00
Aaron Wood
34583c8eff feat: add Shadowdark backgrounds data file 2026-04-11 11:51:35 -04:00
Aaron Wood
9399fc2186 feat: spellcasting UI — SpellList, cast result modal, undo button, rest button, focus indicator
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 11:49:29 -04:00
Aaron Wood
b3218ee9cd feat: add Spell, CharacterSpell, Condition types and API functions 2026-04-11 11:36:40 -04:00
Aaron Wood
768c55c6b9 fix: dice overlay no longer blocks clicks, fog alpha wired to intensity, title auto-updates from class/alignment/level
- DiceTray: remove pointer-events:auto from .active so UI remains clickable during dice animation
- FogOverlay: accept intensity prop, map 0-100 to 0.15-1.0 opacity
- CampaignView: pass fog intensity to FogOverlay
- InfoPanel: auto-derive Shadowdark title when class/alignment/level changes
- Add shadowdark-titles.ts utility with full title lookup table from Player Quickstart
- Add CLAUDE.md with project instructions and pre-approved permissions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 03:53:00 -04:00
Aaron Wood
f62e0077d7 feat: rename app title to Darkwatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:47:06 -04:00
Aaron Wood
47215b48f1 feat: add DM/player role separation — atmosphere, invite, and edit controls gated by role
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:44:27 -04:00
Aaron Wood
e2548ad660 feat: add Login, Register, and Join campaign pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:38:45 -04:00
Aaron Wood
075a9c5505 feat: add AuthContext, RequireAuth guard, and Darkwatch app routing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:36:38 -04:00
Aaron Wood
11714ecbe4 feat: add credentials:include to all API calls and withCredentials to socket
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:35:01 -04:00
Aaron Wood
e2ce57527f feat: replace particle fire with Three.js FBM shader overlay
Switch fire effect from tsParticles to a full-screen Three.js WebGL
shader using layered FBM noise for volumetric-style flames rising from
the bottom of the screen. Also fix rain/embers canvas banding by
switching them to tsParticles fullScreen mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 22:17:36 -04:00
Aaron Wood
bcf118093b fix: tune particle configs — smaller fire, fast circles for rain, better embers
- Fire: 1-5px (was 4-12, balloons), count 60-200, speed 4-10
- Rain: drop line shape (invisible in slim), use fast circles 200-600 at 15-30
  speed so motion reads as streaks
- Embers: 1.5-4px, count 20-80, speed 0.5-2 — clearly slower/dimmer than fire

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 20:01:40 -04:00
Aaron Wood
ecbc696918 fix: rework particle configs for visibility and distinct looks
- Fire: remove broken emitter (not in slim bundle), bigger particles (4-12px),
  more count (80-300), outModes "out" so particles respawn continuously
- Rain: switch to line shape (in slim), size 10-20px for visible streaks,
  higher opacity and speed
- Embers: bump min size to 2-5px, increase count (30-120) for visibility

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 19:55:48 -04:00
Aaron Wood
0b626601ac fix: use named handler for atmosphere:update socket.off
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 19:47:46 -04:00
Aaron Wood
c953b8c79c fix: move socket interfaces to module scope, fix CSSProperties import 2026-04-10 19:38:34 -04:00
Aaron Wood
10ba151b6e feat: wire AtmospherePanel and ParticleOverlay into CampaignView 2026-04-10 19:30:51 -04:00
Aaron Wood
55e9019fa9 feat: add AtmospherePanel component with toggles and intensity sliders 2026-04-10 19:29:00 -04:00
Aaron Wood
8da9ac2cf6 feat: add AtmospherePanel CSS module 2026-04-10 19:27:07 -04:00
Aaron Wood
e947e8e127 feat: add ParticleOverlay component for tsParticles effects 2026-04-10 19:25:03 -04:00
Aaron Wood
a6e3ca6066 feat: add tsParticles configs for fire, rain, embers 2026-04-10 19:22:08 -04:00
Aaron Wood
be14a14708 feat: install tsParticles and add atmosphere types 2026-04-10 19:13:39 -04:00
Aaron Wood
33032bcd07 Add torch timer, fog atmosphere, DM card redesign, and avatars
- Torch timer: 60min countdown per character, visual warnings at 10m/5m/1m
- Fog overlay: CSS radial gradient layers with seamless infinite drift
- Fog synced across all clients via socket, adapts to light/dark themes
- DM card redesign: compact layout with HP/AC/luck/torch + modifier row
- Grid changed to 3-up (from 4) with larger fonts
- DiceBear avatars on cards and character sheets with style picker
- Campaign name shown in header
- Server: JSON.stringify fix for object fields in PATCH handler

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 14:41:22 -04:00
Aaron Wood
9b12482921 Replace native select elements with custom themed SelectDropdown
- New SelectDropdown component with themed styling matching item/talent pickers
- Replaced all 6 native <select> elements (InfoPanel, CampaignView, GearList)
- Consistent appearance across Linux, Mac, and all browsers
- Alegreya font, gold hover highlights, proper theme colors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:32:12 -04:00
Aaron Wood
fbdd9c49ee Fix d100 multi-roll, Linux select styling, and color-scheme support
- d100 rolls now show correct number of percentile + d10 pairs (e.g. 3d100 = 6 dice)
- Add color-scheme: dark/light per theme for native browser controls
- Style select option elements explicitly for Linux Chrome compatibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:23:25 -04:00
Aaron Wood
98a3054b93 Mobile layout, campaign name, dropdown theme fix, and z-index fixes
- Mobile: full-screen character sheet, stacked banner, compact header
- Mobile: roll log with 3 states (hidden/peek/half-screen), cycle button
- Mobile: long-press dice buttons for advantage/disadvantage popup
- Show actual campaign name instead of hardcoded "Campaign"
- Fix item/talent picker dropdowns using hardcoded dark backgrounds
- Fix z-index: dice tray (10001) > character sheet (10000) > header (9999)
- Compact app header on mobile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:32:21 -04:00
Aaron Wood
b88fa0cb3e Add luck token toggle, color picker, and click-to-edit ability scores
- Luck token: star toggle (filled/empty) in header, always clickable
- Color picker: input[type=color] next to name in edit mode
- Ability scores: InlineNumber click-to-edit replaces +/- buttons
- Server: added color and luck_token to allowed update fields
- DB: luck_token column migration (default 1)
- Fix dice color for hex color values (was only handling HSL)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:35:49 -04:00
Aaron Wood
51ffb0033a Add 3D dice rolling with predetermined outcomes and character colors
- dice-box-threejs for physics-based 3D dice with @ notation for forced values
- Server rolls dice, all clients animate 3D dice landing on exact values
- Dice color matches rolling character's color (darkened HSL as die body)
- Roll log entry delayed until dice animation completes for suspense
- Red pulsing crit glow on damage buttons (visible on all themes)
- Nat 20 roll entries use proper theme background
- Themed scrollbar on main content area
- Stone texture + metal material with white numbers/outlines

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:01:05 -04:00
Aaron Wood
ff9203f754 Medieval visual theme with 4 switchable color schemes
- Cinzel + Alegreya fonts for old-tome D&D book feel
- Dark parchment (default), light parchment, white, and abyss themes
- CSS custom properties system for all colors, borders, shadows
- Generated PNG textures for parchment grain, speckle, and wood grain
- Ornamental gold gradient separators and decorative header lines
- Deep dramatic shadows and gold-tinted borders on all panels
- ThemeToggle component with localStorage persistence
- Embossed gold buttons with gradient and inner shadow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 17:06:50 -04:00
Aaron Wood
f552a475c1 Wire up talent HP bonus with per-level scaling (e.g. Grit +2 HP and +1/level)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:19:18 -04:00
Aaron Wood
0bd83e5f92 Wire up talent effects: stat bonuses, AC bonus, attack/damage bonuses, gear slot bonuses 2026-04-09 13:53:06 -04:00
Aaron Wood
859ac64868 Fix crit glow: only the weapon that scored nat 20 shows crit indicator, not all weapons 2026-04-09 13:46:41 -04:00
Aaron Wood
b0fa709767 Color bars on roll entries, auto-crit damage on nat 20, pulsing crit indicator on damage button 2026-04-09 12:52:54 -04:00
Aaron Wood
3e2e43ca95 Split attack/damage dice buttons, nat 20 highlighting, crit damage, character colors 2026-04-09 12:27:25 -04:00
Aaron Wood
9b1a0df8a5 Fix mobile layout, roll log visibility with character sheet, ngrok host allowlist, misc UI polish 2026-04-09 01:49:23 -04:00
Aaron Wood
20a1778cbd Add dice rolling: server-side engine, roll log panel, DiceButton on stats/attacks, advantage/disadvantage, real-time sync 2026-04-09 01:25:29 -04:00
Aaron Wood
2c73dd9ec4 Initial commit: Shadowdark character sheet manager with item/talent databases, view/edit modes, real-time sync 2026-04-09 01:03:40 -04:00