- Fog of war now uses single hard edge instead of multi-layer gradient
- Monster attack animations now play before damage is applied (500ms sync)
- Update CLAUDE.md and README.md to document MapLibre (not Leaflet)
- Fix service-worker.js to cache MapLibre instead of Leaflet
- Add documentation for fog of war, virtual movement, winch system
- Add karen_base monster sprites
- Various animation and admin panel improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add global map theme stored in game_settings (admin-only to set)
- Add map theme editor with visibility toggles for map elements
- Replace player GPS marker and combat icon with runner.png
- Restructure player combat UI to mirror monster entry layout
- Increase player and home base marker sizes (80px vs 70px monsters)
- Move navigation control to top-left, remove zoom buttons
- Add skill icons and cache icons
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements three-tier icon fallback: class/monster override → base skill → emoji.
Adds multer-based file uploads in admin panel for base skills, class skills,
and monster skills. Icons stored in /mapgameimgs/skills/ directory.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fog of war: map dimmed in nav mode, homebase reveals 800m radius
- Geocaches only visible within revealed area
- Added reveal_radius to player stats for future leveling
- Added monster_spawn.mp3 sound effect on monster spawn
- Fixed spin_grow animation (smoother, counter-clockwise)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- New admin page for OSM tags: manage prefixes, visibility, spawn radius
- Global settings: base prefix chance (25%), double prefix chance (10%)
- Tags auto-enabled when prefixes are added
- Dynamic prefix spawning: monsters can get 0, 1, or 2 prefixes
- Font size reduction for prefixed monster names
- Kill tracking database for future quests/bestiary
- Homebase discovery: auto-discover nearby POIs via Overpass API
Database:
- osm_tags table: tag config with multiple prefixes per tag
- osm_tag_settings: global prefix settings
- player_monster_kills: tracks all monster kills with full names
API Endpoints:
- /api/admin/osm-tags - CRUD for OSM tags
- /api/admin/osm-tag-settings - global prefix settings
- /api/osm-tags - public API for enabled tags
- /api/user/monster-kill - record kills
- /api/geocaches/discover-nearby - Overpass API integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add spawn_location column to monster_types table (database.js)
- Add tags array to geocaches for location tagging (geocaches.json)
- Add spawn location dropdown in admin panel monster editor (admin.html)
- Update spawn logic to filter monsters by location restriction (index.html)
- Update name prefix logic to use tags instead of icons
- Add grocery tag to Walmart and H-E-B geocaches
Monsters can now be configured to only spawn near specific location types
(grocery, bank, park, restaurant). The "George the Moop" monster can be
set to spawn_location="grocery" to only appear near grocery stores.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement stats sync engine with debouncing/rate limiting to fix save spam
- Add Walmart and H-E-B grocery store geocaches
- Add "Cart Wranglin'" prefix for monsters spawning near grocery stores
- Fix monster spawn levels to never exceed player level
- Show WASD controls for all users when GPS is off
- Add George the Moop monster assets
- Add animations.js for monster animation definitions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix class skill names: Game now reads from class_skills table (what admin edits) instead of legacy class_skill_names table
- Add per-hit targeting mode for multi-hit skills (configurable in admin)
- Music now attempts autostart on page load
- WASD keyboard controls auto-enable test mode (like on-screen buttons)
- Update CLAUDE.md with Docker restart vs rebuild documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Generate unique server session ID on startup
- Client detects session ID mismatch on reconnect and forces re-login
- Add "Kickems" as Trail Runner's custom name for basic_attack skill
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Forces all users to log in again when the server restarts.
Useful for applying auth changes or clearing stale sessions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Utility Skills section with dedicated table showing effect type, value, duration, cooldown
- Add "Add Utility Skill" button with pre-configured defaults
- Filter utility skills out of main combat skills table
- Fix updateSkill() to handle both snake_case and camelCase field names
- Add getUtilitySkillConfig() for database lookup of utility skill settings
- Replace hardcoded BUFF_CONFIGS in server.js with dynamic database lookup
- Support effect types: HP/MP regen multipliers, ATK/DEF boosts, XP multiplier
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add toast notification system with CSS animations for user feedback
- Add WebSocket broadcast for admin panel changes (monsters, skills, settings)
- Client auto-refreshes when admin makes changes
- Add HP/MP regen settings to admin panel (intervals, percentages, home multipliers)
- Fix SQL parameter mismatch in saveRpgStats (data_version = excluded.data_version)
- Implement optimistic updates in admin panel for immediate feedback
- Add broadcastAdminChange helper with client count logging
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add on-screen WASD control pad for movement testing
- Implement hold-to-move for continuous movement on direction buttons
- Add music system with 5 tracks: overworld, battle, victory, death, homebase
- Music pauses/resumes instead of restarting when switching tracks
- Add home base reset button in admin panel
- Implement double-tap for home base placement on mobile
- Fix WASD controls visible when dead (z-index above death overlay)
- Add MP regeneration while walking
- Clear monsters when entering home base area
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added new base skills:
- quick_strike: Fast attack with 98% accuracy
- focus: Accuracy buff for 3 turns
- second_wind: MP restore skill
- heavy_blow: High damage (250%), low accuracy (60%)
- quick_heal: Efficient small heal
- triple_strike: 3-hit combo attack
- full_restore: Full HP restore at high MP cost
Trail Runner skill tree (2 choices per level):
- Lv1: Trail Kick (auto)
- Lv2: Brand New Hokas OR Gel Pack
- Lv3: Downhill Sprint OR Pace Yourself
- Lv4: Trail Blaze OR Quick Feet
- Lv5: Second Wind OR Trail Mix
- Lv6: Finish Line Sprint OR Zone In
- Lv7: Ultra Marathon OR The Bonk
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Modified executePlayerSkill() to loop through all living monsters when
skill.target === 'all_enemies'
- Each target gets individual hit chance roll
- Added Whirlwind skill (75% ATK to all enemies, 12 MP) to database seeds
- Added whirlwind to Trail Runner class skills for testing
- Fixed skill seeding to check for existence before inserting
- Added try-catch for class skill names to prevent duplicate errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add classes table (base stats, stat growth per level)
- Add class_skills table (skill assignments with unlock levels, choice groups)
- Seed 4 classes: Trail Runner (enabled), Gym Bro, Yoga Master, CrossFit Crusader
- Seed Trail Runner skills with level-up choices at levels 2 and 3
- Add API endpoints for class and class skill CRUD
- Add Classes section to admin panel with full editor UI
- Skills grouped by unlock level with choice group indicators
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix death system: add clearMonsterEntourage(), set HP to 0 on death
- Add movement-based monster spawning (configurable distance)
- Add admin-editable spawn settings (interval, chance, distance)
- Add home base HP/MP regeneration when player is nearby
- Update character sheet to show damage range, accuracy, MP cost
- Change WASD test step from 11m to 1m
- Fix monster spawning after respawn
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add visual status/buff overlays on combat sprites (100x100px full overlay)
- Monster skills can now have custom names per monster
- Skills admin page for full skill CRUD
- Fix monster buff skills (defend) to properly buff instead of damage
- Fix custom skill names appearing in combat log
- Auto-copy default images when creating new monsters
- Add monster toggle endpoint fix
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add admin.html with monster/user/settings management UI
- Add admin API endpoints with adminOnly middleware
- Add game_settings table for configurable settings
- Replace emoji monster icons with PNG images (50px map, 100px battle)
- Add mapgameimgs/ directory with default fallback images
- Fix mobile geocache tap by checking for markers before preventDefault
- Increase geocache marker touch target to 64x64px
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Skill Selection System:
- Added 3 new alternative skills (quick_step, second_wind, finish_line_sprint)
- Created SKILL_POOLS for level 2, 3, 5 skill choices
- Added skill choice modal on level up
- Players now choose 1 of 2 skills at milestone levels
- Combat UI shows only unlocked skills
- Character sheet displays learned skills
Monster Database Migration:
- Renamed "Discarded GU" to "Moop" (Matter Out Of Place)
- Created monster_types table for storing monster definitions
- Added CRUD methods for monster types
- Added /api/monster-types endpoint
- Frontend now loads monster types from API
- Auto-seeds Moop monster on first run
- Ready for admin UI and multiple monster types
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Phase 3: Character sheet modal (click class name in HUD)
- Display all stats (HP, MP, ATK, DEF)
- Show XP progress bar with level milestones
- Show unlocked/locked skills based on level
- Fix mobile double-tap inconsistency (50/50 bug)
- Add monster check to native touchend handler
- Block press-and-hold navigation when monsters present
- Both touch handlers now consistently prioritize combat
- Increase monster touch targets to 70x70 with visible tap area
- Add pointer-events:none to trails in nav mode
- Add interactive:false to accuracy circles
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- Trail Runner class with 4 skills (Attack, Brand New Hokas, Runner's High, Shin Kick)
- Skill level requirements (unlock at levels 1, 2, 3, 5)
- Discarded GU monster type with dialogue escalation phases
- Multi-monster combat: all entourage monsters join fight simultaneously
- Target selection system (click to select enemy)
- Sequential monster turns after player action
- XP bar in HUD showing progress to next level
- Server-side RPG stats persistence (survives cache clear)
Technical:
- Added rpg_stats table to database
- Added GET/PUT /api/user/rpg-stats endpoints
- Fixed auth token name mismatch (accessToken vs authToken)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>