Implemented comprehensive tool update system with 4 options:
1. Check versions only (show installed vs latest)
2. Update all ProjectDiscovery tools (pdtm -ua) - FAST
3. Update all Go tools (go install @latest for each)
4. Select individual tools to update (gum multi-select)
Features:
- New main menu option "5) Check for Tool Updates"
- Hybrid approach: pdtm for PD tools, go install for all tools
- Auto-installs pdtm if not present
- Interactive gum multi-select for selective updates
- Progress indicators with success/fail counts
- Confirmation prompts before bulk updates
- Comprehensive logging of update operations
Implementation:
- Added update_tools_menu() with 4-option submenu
- check_tool_versions() - displays installed tool versions
- update_pd_tools_bulk() - fast PDTM update for PD tools
- update_all_go_tools() - comprehensive update for all Go tools
- update_selected_tools() - gum multi-select for individual updates
- Updated README with update strategies and usage examples
- Marked feature as complete in TODO.md
This gives users maximum flexibility:
- Power users: Quick pdtm update for all PD tools
- Comprehensive: Update everything including non-PD tools
- Selective: Cherry-pick specific tools to update
- Check-only: See what's outdated without updating
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed AttributeError when selecting Python tools individually.
Problem:
- config.PYTHON_TOOLS is defined as a list, not a dict
- Code was calling .keys() on a list object
- Error: AttributeError: 'list' object has no attribute 'keys'
Solution:
- Removed .keys() call for Python tools since it's already a list
- Python tools now work correctly in multi-select menu
Note: Scripts category intentionally only allows "Install All"
since scripts are downloaded as a collection set.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implemented comprehensive gum-based interactive tool selection for Level 3 menu.
Features:
- Added gum_multi_select() function to utils.py with proper type hints
- Implemented install_category_selected() in toolbelt.py
- Interactive multi-select for APT, Go, /opt, Python, and Docker categories
- Graceful fallback when gum is not installed
- Confirmation prompt before installation
- Updated README with gum usage examples
- Added PYTHON_STANDARDS.md for type hint requirements
- Created TODO.md with v2.1+ enhancement roadmap
- Added project branding images
User can now:
1. Browse categories and see tool counts
2. Use SPACE to toggle tools, ENTER when done
3. Review selected tools before installing
4. Get helpful prompts if gum is missing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>