diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..775672b --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,296 @@ +# CLAUDE.md - PetBot Development Guide + +This file documents the development patterns, conventions, and best practices established for the PetBot project during AI-assisted development. + +## Project Overview + +PetBot is a Discord/IRC Pokemon-style pet collecting bot with web interface. The project consists of: +- IRC bot with modular command system +- Web server with unified navigation and interactive interfaces +- SQLite database with comprehensive pet, player, and game state management +- Team builder with drag-and-drop functionality and PIN verification + +## Development Workflow + +### 1. Planning and Task Management +- Use TodoWrite tool for complex multi-step tasks (3+ steps) +- Break down large features into specific, actionable items +- Mark todos as `in_progress` before starting work +- Complete todos immediately after finishing tasks +- Don't batch completions - update status in real-time + +### 2. Code Analysis and Search +- Use Task tool for keyword searches and file discovery +- Use Grep tool for specific code patterns and function definitions +- Use Read tool for examining specific file content +- Use Glob tool for finding files by name patterns + +### 3. Testing and Validation +- Always run `python3 -c "import webserver; print('✅ syntax check')"` after webserver changes +- Test database operations with simple validation scripts +- Check IRC bot functionality with `python3 run_bot_debug.py` +- Verify web interface functionality through browser testing + +## Project Structure + +``` +/home/megaproxy/petbot/ +├── src/ # Core system components +│ ├── database.py # Database operations and schema +│ ├── game_engine.py # Game mechanics and weather system +│ └── bot.py # IRC bot core functionality +├── modules/ # Command modules (modular architecture) +│ ├── base_module.py # Abstract base class for all modules +│ ├── core_commands.py # Basic bot commands (!start, !help, !stats) +│ ├── exploration.py # !explore, !travel, !weather commands +│ ├── battle_system.py # !battle, !attack, !moves, !flee commands +│ ├── pet_management.py # !pets, !activate, !deactivate commands +│ ├── inventory.py # !inventory, !use commands (redirects to web) +│ ├── gym_battles.py # !gym commands and gym mechanics +│ ├── achievements.py # Achievement tracking and validation +│ ├── admin.py # Administrative commands +│ └── team_builder.py # Team builder module (web-only) +├── webserver.py # Web server with unified templates +├── run_bot_debug.py # Bot startup and debug mode +├── help.html # Static help documentation +├── CHANGELOG.md # Version history and feature tracking +└── README.md # Project documentation +``` + +## Coding Conventions + +### 1. Module Architecture +- All command modules inherit from `BaseModule` +- Implement `get_commands()` and `handle_command()` methods +- Use `self.normalize_input()` for case-insensitive command processing +- Use `self.send_message()` for IRC responses +- Use `await self.require_player()` for player validation + +### 2. Database Operations +- All database methods are async +- Use proper error handling with try/catch blocks +- Always use parameterized queries to prevent SQL injection +- Implement proper transaction handling for complex operations +- Use `team_order` column for numbered team slots (1-6) + +### 3. Web Interface Development +- Use unified template system with `get_page_template()` +- Implement CSS variables for consistent theming +- Add proper navigation bar to all pages +- Use center alignment: `max-width: 1200px; margin: 0 auto` +- Implement drag-and-drop with proper event handlers +- Add double-click backup methods for accessibility + +### 4. Security Practices +- Use PIN verification for sensitive operations (team changes) +- Send PINs via IRC private messages +- Implement proper session validation +- Never log or expose sensitive data +- Use parameterized database queries + +## Key Development Patterns + +### 1. Command Redirection Pattern +```python +async def cmd_inventory(self, channel, nickname): + """Redirect player to their web profile for inventory management""" + player = await self.require_player(channel, nickname) + if not player: + return + + # Redirect to web interface for better experience + self.send_message(channel, f"🎒 {nickname}: View your complete inventory at: http://petz.rdx4.com/player/{nickname}#inventory") +``` + +### 2. State Management Pattern +```python +async def cmd_explore(self, channel, nickname): + # Check if player has an active encounter that must be resolved first + if player["id"] in self.bot.active_encounters: + current_encounter = self.bot.active_encounters[player["id"]] + self.send_message(channel, f"{nickname}: You must resolve your active encounter first!") + return +``` + +### 3. Drag-and-Drop Implementation Pattern +```javascript +// Initialize when DOM is ready +document.addEventListener('DOMContentLoaded', function() { + initializeTeamBuilder(); +}); + +function initializeTeamBuilder() { + // Initialize drag and drop + initializeDragAndDrop(); + + // Initialize double-click backup + initializeDoubleClick(); + + // Update save button state + updateSaveButton(); +} +``` + +### 4. PIN Verification Pattern +```python +async def saveTeam(): + # Send team data to server + response = await fetch('/teambuilder/{nickname}/save', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(teamData) + }); + + # PIN sent via IRC, show verification interface + if (result.success) { + document.getElementById('pin-section').style.display = 'block'; + } +``` + +## Database Schema Conventions + +### 1. Player Management +- `players` table with basic player information +- `pets` table with `team_order` column for numbered slots (1-6) +- `player_items` table for inventory management +- `pending_team_changes` table for PIN verification + +### 2. Game State Management +- Use `is_active` boolean for team membership +- Use `team_order` (1-6) for slot positioning +- Store encounter state in bot memory, not database +- Use timestamps for PIN expiration + +## Web Interface Conventions + +### 1. Unified Template System +```python +def get_page_template(self, title, content, active_page): + return f""" + + + + {title} + + + + {self.get_navigation_bar(active_page)} +
+ {content} +
+ + + """ +``` + +### 2. Navigation Integration +- All pages include unified navigation bar +- Use hover dropdowns for sub-navigation +- Highlight active page in navigation +- Include jump points for direct section linking (#inventory, #pets) + +### 3. Interactive Elements +- Implement proper drag-and-drop with visual feedback +- Add loading states and error handling +- Use consistent button styling and interactions +- Provide alternative interaction methods (double-click) + +## Testing and Debugging + +### 1. Component Testing +```bash +# Test webserver syntax +python3 -c "import webserver; print('✅ webserver.py syntax is correct')" + +# Test database operations +python3 -c "from src.database import Database; db = Database(); print('✅ database imports')" + +# Test bot startup +python3 run_bot_debug.py +``` + +### 2. Web Interface Testing +- Test drag-and-drop functionality in browser +- Verify PIN delivery via IRC +- Check responsive design and center alignment +- Validate form submissions and error handling + +### 3. Git Workflow +- Create descriptive commit messages explaining changes +- Group related changes into logical commits +- Include "🤖 Generated with [Claude Code]" attribution +- Push changes with `git push` after testing + +## Common Issues and Solutions + +### 1. CSS in JavaScript Templates +**Problem**: F-string braces conflict with CSS braces +**Solution**: Use string concatenation instead of f-strings for CSS content + +### 2. Drag-and-Drop Not Working +**Problem**: JavaScript initialization timing issues +**Solution**: Use `DOMContentLoaded` event and proper DOM element checking + +### 3. IRC PIN Not Sent +**Problem**: Bot instance not accessible from webserver +**Solution**: Pass bot instance to webserver constructor and add proper IRC message methods + +### 4. Database Schema Changes +**Problem**: Adding new columns to existing tables +**Solution**: Use proper migration pattern with ALTER TABLE statements + +## Performance Considerations + +### 1. Database Operations +- Use connection pooling for high-traffic scenarios +- Implement proper indexing for frequently queried columns +- Use transactions for multi-step operations +- Cache frequently accessed data when appropriate + +### 2. Web Interface +- Minimize CSS and JavaScript for faster loading +- Use efficient DOM manipulation techniques +- Implement proper error handling and loading states +- Optimize images and static assets + +## Future Development Guidelines + +### 1. Adding New Commands +1. Create method in appropriate module +2. Add command to `get_commands()` list +3. Implement proper error handling +4. Update help documentation +5. Test thoroughly before committing + +### 2. Web Interface Enhancements +1. Follow unified template system +2. Implement proper responsive design +3. Add accessibility features +4. Test across different browsers +5. Update navigation if adding new pages + +### 3. Database Schema Updates +1. Plan migrations carefully +2. Test with existing data +3. Document schema changes +4. Update related code components +5. Consider backward compatibility + +## Resources and References + +- **IRC Bot Framework**: Custom implementation based on socket programming +- **Web Server**: Python's built-in HTTPServer with custom request handling +- **Database**: SQLite with aiosqlite for async operations +- **Frontend**: Vanilla JavaScript with modern ES6+ features +- **CSS Framework**: Custom CSS with CSS variables for theming + +## Notes for Future Development + +- Maintain modular architecture for easy feature additions +- Keep web interface and IRC commands in sync +- Document all major changes in CHANGELOG.md +- Use consistent error messages and user feedback +- Test thoroughly before pushing to production +- Consider security implications for all user interactions + +This documentation should be updated as the project evolves to maintain accuracy and usefulness for future development efforts. \ No newline at end of file diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..1928626 --- /dev/null +++ b/TODO.md @@ -0,0 +1,207 @@ +# TODO.md - PetBot Development Tasks + +This file tracks completed work, pending bugs, enhancements, and feature ideas for the PetBot project. + +## 📊 Summary +- **✅ Completed**: 14 items +- **🐛 Bugs**: 1 item +- **🔧 Enhancements**: 5 items +- **💡 Ideas**: 10 items +- **📋 Total**: 30 items tracked + +--- + +## ✅ COMPLETED ITEMS + +### High Priority Completed ✅ +- [x] **Create unified theme and navigation bar for all webserver pages** + - Implemented comprehensive navigation system with hover dropdowns + - Added unified CSS variables and consistent styling across all pages + - Enhanced user experience with active page highlighting + +- [x] **Fix petdex repetition of pets issue** + - Added DISTINCT to SQL queries to prevent database-level duplicates + - Resolved display issues showing multiple entries for same pets + +- [x] **Fix exploration bug: prevent multiple !explore when encounter is active** + - Added state management to prevent multiple explores + - Users must resolve active encounters before exploring again + +- [x] **Fix battle bug: prevent starting multiple battles from exploration encounters** + - Implemented proper encounter workflow enforcement + - Prevents race conditions in battle system + +- [x] **Enforce exploration encounter workflow: must choose fight/capture/flee before exploring again** + - Added clear error messages for active encounters + - Improved game flow and state consistency + +- [x] **Fix team builder drag-and-drop functionality and center alignment** + - Complete rewrite of team builder interface + - Working drag-and-drop between storage and numbered team slots (1-6) + - Proper center alignment with `max-width: 1200px; margin: 0 auto` + - Added double-click backup method for accessibility + +- [x] **Implement IRC PIN delivery for team builder security** + - Added secure PIN verification system for team changes + - PINs sent via IRC private messages with 10-minute expiration + - Integrated bot instance with webserver for IRC messaging + +### Medium Priority Completed ✅ +- [x] **Redirect !items command to player profile URL instead of IRC response** + - Updated inventory commands to redirect to web interface + - Added #inventory jump points for direct section navigation + - Improved user experience with detailed web-based inventory management + +- [x] **Add jump points to player page (/#inventory) for direct linking to sections** + - Implemented anchor links for direct navigation to specific sections + - Enhanced accessibility and user workflow + +- [x] **Remove !swap command - team management moved to website** + - Streamlined pet management through unified web interface + - Removed redundant IRC command in favor of superior web experience + +- [x] **Implement player team pet order persistence in database** + - Added team_order column with numbered slots (1-6) + - Database migration for existing players + - Persistent team ordering across sessions + +- [x] **Fix !gym challenge to use player's current location instead of requiring location parameter** + - Simplified gym challenge workflow + - Uses player's current location automatically + +- [x] **Update all project documentation (CHANGELOG.md, README.md, help.html)** + - Comprehensive documentation updates reflecting new features + - Updated help system with web interface integration + - Enhanced project documentation for contributors + +### Low Priority Completed ✅ +- [x] **Create CLAUDE.md file documenting development patterns and conventions** + - Comprehensive development guide for AI-assisted development + - Documents coding conventions, patterns, and project structure + - Useful reference for future development sessions + +--- + +## 🐛 KNOWN BUGS + +### Medium Priority Bugs 🔴 +- [ ] **IRC connection monitoring and auto-reconnect functionality** + - Bot may lose connection without proper recovery + - Need robust reconnection logic with exponential backoff + - Monitor connection health and implement graceful reconnection + +--- + +## 🔧 ENHANCEMENTS NEEDED + +### High Priority Enhancements 🟠 +- [ ] **Implement automated database backup system** + - Regular automated backups of SQLite database + - Backup rotation and retention policies + - Recovery procedures and testing + +- [ ] **Conduct security audit of web interface and IRC bot** + - Review all user input validation + - Audit authentication and authorization mechanisms + - Test for common web vulnerabilities (XSS, CSRF, injection attacks) + - Review IRC bot security practices + +### Medium Priority Enhancements 🟡 +- [ ] **Add rate limiting to prevent command spam and abuse** + - Implement per-user rate limiting on IRC commands + - Web interface request throttling + - Graceful handling of rate limit violations + +- [ ] **Implement comprehensive error logging and monitoring system** + - Structured logging with appropriate log levels + - Error tracking and alerting system + - Performance monitoring and metrics collection + +- [ ] **Optimize database queries and web interface loading times** + - Database query performance analysis + - Add proper indexing for frequently accessed data + - Optimize web interface assets and loading times + - Implement caching where appropriate + +--- + +## 💡 FEATURE IDEAS + +### Medium Priority Ideas 🔵 +- [ ] **Add mobile-responsive design to web interface for better mobile experience** + - Responsive CSS for mobile devices + - Touch-friendly drag-and-drop alternatives + - Mobile-optimized navigation and layouts + +- [ ] **Enhance leaderboard with more categories (gym badges, rare pets, achievements)** + - Multiple leaderboard categories + - Filtering and sorting options + - Achievement-based rankings + +- [ ] **Add auto-save draft functionality to team builder to prevent data loss** + - Local storage for unsaved team changes + - Recovery from browser crashes or accidental navigation + - Draft management and persistence + +- [ ] **Add search and filter functionality to pet collection page** + - Search pets by name, type, level, or stats + - Advanced filtering options + - Sorting by various criteria + +### Low Priority Ideas 🟢 +- [ ] **Implement pet evolution system with evolution stones and level requirements** + - Evolution trees for existing pet species + - Evolution stones as rare items + - Level and friendship requirements for evolution + +- [ ] **Add player-to-player pet trading system with web interface** + - Secure trading mechanism + - Trade history and verification + - Web-based trading interface + +- [ ] **Add visual battle animations to web interface** + - Animated battle sequences + - Visual effects for different move types + - Enhanced battle experience + +- [ ] **Add bulk actions for pet management (release multiple pets, mass healing)** + - Multi-select functionality for pet collections + - Bulk operations with confirmation dialogs + - Batch processing for efficiency + +- [ ] **Add real-time achievement unlock notifications to web interface** + - WebSocket or SSE for real-time updates + - Toast notifications for achievements + - Achievement celebration animations + +- [ ] **Add preset team configurations for different battle strategies** + - Pre-configured teams for different scenarios + - Team templates and sharing + - Strategic team building assistance + +--- + +## 📝 Notes for Future Development + +### Priorities for Next Development Session +1. **High Priority**: Address database backup system and security audit +2. **Medium Priority**: Implement rate limiting and error logging +3. **Feature Focus**: Mobile responsiveness and enhanced leaderboards + +### Development Guidelines +- Follow patterns established in CLAUDE.md +- Test thoroughly before committing changes +- Update documentation with any new features +- Maintain modular architecture for easy feature additions + +### Testing Checklist +- [ ] IRC bot functionality and command processing +- [ ] Web interface responsiveness and interaction +- [ ] Database operations and data integrity +- [ ] PIN verification and security features +- [ ] Cross-browser compatibility + +--- + +*Last Updated: Current development session* +*Next Review: Before major feature additions* \ No newline at end of file