# Lemontropia Suite - Comprehensive Codebase Audit Report **Date:** 2026-02-11 **Auditor:** Sub-agent Analysis **Project Path:** `/home/impulsivefps/.openclaw/workspace/projects/Lemontropia-Suite` --- ## πŸ“Š EXECUTIVE SUMMARY | Category | Count | Status | |----------|-------|--------| | **Total Features Implemented** | 28 | βœ… | | **Wired to Main UI** | 14 | βœ… Connected | | **Partially Wired** | 3 | ⚠️ Needs Work | | **Orphaned (Not Wired)** | 11 | πŸ”Œ Not Connected | --- ## πŸ” COMPLETE FEATURE INVENTORY ### 1. CORE MODULES (`core/`) | Module | Description | Status | Wiring | |--------|-------------|--------|--------| | `database.py` | SQLite database management | βœ… Implemented | βœ… Auto-initialized on startup | | `project_manager.py` | Project CRUD operations | βœ… Implemented | βœ… Full UI integration | | `log_watcher.py` | Chat.log parsing & events | βœ… Implemented | βœ… Active during sessions | | `hunting_session.py` | Session state management | βœ… Implemented | βœ… Via project_manager | | `session_cost_tracker.py` | Cost tracking calculations | βœ… Implemented | ⚠️ Partial (HUD uses simplified) | | `armor_system.py` | Armor protection calculations | βœ… Implemented | βœ… Via Armor selectors | | `armor_decay.py` | Armor decay formulas | βœ… Implemented | βœ… Integrated | | `entropia_nexus.py` | Nexus API client | βœ… Implemented | βœ… Used by gear selectors | | `nexus_api.py` | Extended Nexus API | βœ… Implemented | βœ… Used by gear selectors | | `nexus_full_api.py` | Full Nexus API with models | βœ… Implemented | βœ… Used by loadout manager | | `healing_tools.py` | Healing/FAP calculations | βœ… Implemented | βœ… Via healing selector | | `attachments.py` | Weapon attachment stats | βœ… Implemented | βœ… Via attachment selector | | `loadout_db.py` | Loadout database storage | βœ… Implemented | βœ… Used by loadout manager | ### 2. UI COMPONENTS (`ui/`) | Component | Description | Status | Wiring | |-----------|-------------|--------|--------| | `main_window.py` | Primary application window | βœ… Implemented | βœ… Root component | | `hud_overlay_clean.py` | In-game HUD overlay | βœ… Implemented | βœ… Menu + auto-show on session | | `hud_overlay.py` | Legacy HUD (superseded) | βœ… Implemented | ❌ Not used (clean version preferred) | | `loadout_manager_simple.py` | Simplified loadout editor | βœ… Implemented | βœ… Tools menu | | `loadout_manager.py` | Full loadout manager (legacy) | βœ… Implemented | ❌ Superseded by simple version | | `loadout_selection_dialog_simple.py` | Pre-session loadout picker | βœ… Implemented | βœ… Auto-shows on Start Session | | `loadout_selection_dialog.py` | Legacy selection dialog | βœ… Implemented | ❌ Not used | | `gear_selector.py` | Generic gear selector | βœ… Implemented | βœ… Tools > Select Gear | | `weapon_selector.py` | Weapon picker | βœ… Implemented | βœ… Via gear selector | | `armor_selector.py` | Armor picker | βœ… Implemented | βœ… Via gear selector | | `armor_set_selector.py` | Full armor set picker | βœ… Implemented | ❌ Not directly wired | | `armor_selection_dialog.py` | Armor selection dialog | βœ… Implemented | ❌ Not directly wired | | `healing_selector.py` | FAP/Healing picker | βœ… Implemented | βœ… Via gear selector | | `attachment_selector.py` | Weapon attachments | βœ… Implemented | βœ… Via weapon selector | | `enhancer_selector.py` | Weapon enhancers | βœ… Implemented | βœ… Via weapon selector | | `plate_selector.py` | Armor plate picker | βœ… Implemented | βœ… Via armor selector | | `mindforce_selector.py` | Mindforce chips | βœ… Implemented | ⚠️ Exists but rarely used | | `accessories_selector.py` | Hunting accessories | βœ… Implemented | ❌ Not wired to main UI | | `icon_price_dialogs.py` | Icon browser + Price tracker | βœ… Implemented | ❌ **ORPHANED** | ### 3. FEATURE MODULES (`modules/`) | Module | Description | Status | Wiring | |--------|-------------|--------|--------| | `icon_manager.py` | Download/cache item icons | βœ… Implemented | ❌ **ORPHANED** | | `market_prices.py` | Price tracking & profit calc | βœ… Implemented | ❌ **ORPHANED** | | `loot_analyzer.py` | Loot breakdown analysis | βœ… Implemented | ❌ **ORPHANED** | | `crafting_tracker.py` | Crafting session tracker | βœ… Implemented | ❌ **ORPHANED** | | `game_vision.py` | Screen capture & OCR | βœ… Implemented | ❌ **ORPHANED** | | `notifications.py` | Discord/Telegram alerts | βœ… Implemented | ❌ **ORPHANED** | | `auto_screenshot.py` | Auto-capture on events | βœ… Implemented | ❌ **ORPHANED** | --- ## πŸ”Œ WIRING DIAGRAM ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ LEMONTROPIA SUITE MAIN UI β”‚ β”‚ (main_window.py) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ FILE MENU SESSION MENU VIEW MENU β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ New Project β”œβ”€β”€ Start β”œβ”€β”€ Show/Hide HUD β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Open Project β”œβ”€β”€ Stop └── Settings β”‚ β”‚ β”‚ β”‚ └── Exit └── Pause β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ TOOLS MENU β”‚ β”‚ β”‚ β”‚ └── Select Gear ───────────────────────────┐ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Weapon ───────► weapon_selector.py β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Armor ────────► armor_selector.py β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Finder ───────► gear_selector.py β”‚ β”‚ β”‚ β”‚ β”‚ └── Medical Tool ─► healing_selector.pyβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── Loadout Manager ──► loadout_manager_simple.py ◄────┐ β”‚ β”‚ β”‚ β”‚ (Opens for editing/saving loadouts) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [ORPHANED - NO MENU ENTRY]: β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Icon Browser ─────► icon_price_dialogs.py β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Price Tracker ────► icon_price_dialogs.py β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Loot Analyzer ────► loot_analyzer.py β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Crafting Tracker ─► crafting_tracker.py β”‚ β”‚ β”‚ β”‚ β”‚ └── Notification Configβ–Ί notifications.py β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ PROJECT PANEL β”‚ β”‚ SESSION PANEL β”‚ β”‚ LOG PANEL β”‚ β”‚ β”‚ β”‚ ───────────── β”‚ β”‚ ───────────── β”‚ β”‚ ───────── β”‚ β”‚ β”‚ β”‚ List of projects β”‚ β”‚ Start/Stop/Pause β”‚ β”‚ Event log β”‚ β”‚ β”‚ β”‚ Create/View Stats β”‚ β”‚ Status display β”‚ β”‚ Real-time β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ project_manager.py β”‚ β”‚ Start Session Button Pressed β”‚ β”‚ β”‚ β”‚ database.py β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ (CRUD operations) β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ loadout_selection_dialog_simple.py β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β”‚ User selects loadout ───┐ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β”‚ Session starts β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ HUD OVERLAY SYSTEM β”‚ β”‚ β”‚ β”‚ β”‚ (hud_overlay_clean.py) β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”‚ β€’ Live profit/loss β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Return % β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Cost tracking β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Loot tracking β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Gear info β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ log_watcher.py β”‚ β”‚ β”‚ β”‚ β”‚ (parses chat.log) β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ORPHANED FEATURES (Not Wired) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ ICON MANAGER β”‚ β”‚ MARKET PRICES β”‚ β”‚ LOOT ANALYZER β”‚ β”‚ β”‚ β”‚ ──────────── β”‚ β”‚ ──────────── β”‚ β”‚ ──────────── β”‚ β”‚ β”‚ β”‚ β€’ Download β”‚ β”‚ β€’ Track prices β”‚ β”‚ β€’ Mob stats β”‚ β”‚ β”‚ β”‚ from Wiki β”‚ β”‚ β€’ Calculate β”‚ β”‚ β€’ Category β”‚ β”‚ β”‚ β”‚ β€’ Local cache β”‚ β”‚ profit β”‚ β”‚ breakdown β”‚ β”‚ β”‚ β”‚ β€’ Export icons β”‚ β”‚ β€’ Markup % β”‚ β”‚ β€’ Top loot β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β€’ CSV export β”‚ β”‚ β”‚ β”‚ Status: FULLY β”‚ β”‚ Status: FULLY β”‚ β”‚ Status: FULLY β”‚ β”‚ β”‚ β”‚ IMPLEMENTED β”‚ β”‚ IMPLEMENTED β”‚ β”‚ IMPLEMENTED β”‚ β”‚ β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ CRAFTING TRACKERβ”‚ β”‚ GAME VISION β”‚ β”‚ NOTIFICATIONS β”‚ β”‚ β”‚ β”‚ ─────────────── β”‚ β”‚ ──────────── β”‚ β”‚ ──────────── β”‚ β”‚ β”‚ β”‚ β€’ Blueprint QR β”‚ β”‚ β€’ Screen captureβ”‚ β”‚ β€’ Discord β”‚ β”‚ β”‚ β”‚ β€’ Success rates β”‚ β”‚ β€’ OCR (Paddle) β”‚ β”‚ β€’ Telegram β”‚ β”‚ β”‚ β”‚ β€’ Material inv β”‚ β”‚ β€’ Template matchβ”‚ β”‚ β€’ Sound alerts β”‚ β”‚ β”‚ β”‚ β€’ Profit calc β”‚ β”‚ β€’ Gear detectionβ”‚ β”‚ β€’ Custom msgs β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Status: FULLY β”‚ β”‚ Status: MOSTLY β”‚ β”‚ Status: FULLY β”‚ β”‚ β”‚ β”‚ IMPLEMENTED β”‚ β”‚ IMPLEMENTED β”‚ β”‚ IMPLEMENTED β”‚ β”‚ β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ AUTO SCREENSHOT β”‚ β”‚ β”‚ β”‚ ───────────── β”‚ β”‚ β”‚ β”‚ β€’ Capture on globals/HoFs β”‚ β”‚ β”‚ β”‚ β€’ Region capture β”‚ β”‚ β”‚ β”‚ β€’ Screenshot viewer β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Status: FULLY IMPLEMENTED β”‚ β”‚ β”‚ β”‚ NOT ACCESSIBLE β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ”΄ IDENTIFIED ORPHANED FEATURES ### Critical Priority (High Value, Ready to Wire) | # | Feature | Module | UI Dialog | Integration Point | Effort | |---|---------|--------|-----------|-------------------|--------| | 1 | **Icon Browser** | `icon_manager.py` | `icon_price_dialogs.py` | Tools menu | Low | | 2 | **Price Tracker** | `market_prices.py` | `icon_price_dialogs.py` | Tools menu | Low | | 3 | **Loot Analyzer** | `loot_analyzer.py` | Built-in | Session end / Tools menu | Medium | | 4 | **Auto Screenshot** | `auto_screenshot.py` | Built-in | Settings dialog + events | Medium | ### Medium Priority (Good Value, May Need Work) | # | Feature | Module | UI Dialog | Integration Point | Effort | |---|---------|--------|-----------|-------------------|--------| | 5 | **Notifications** | `notifications.py` | Settings dialog | Settings dialog + event hooks | Medium | | 6 | **Crafting Tracker** | `crafting_tracker.py` | New dialog needed | Separate crafting mode | High | ### Lower Priority (Niche Use Cases) | # | Feature | Module | UI Dialog | Integration Point | Effort | |---|---------|--------|-----------|-------------------|--------| | 7 | **Game Vision** | `game_vision.py` | Template capture tool | Settings or calibration wizard | High | | 8 | **Armor Set Selector** | `armor_set_selector.py` | Built-in | Replace armor_selector | Low | | 9 | **Mindforce Selector** | `mindforce_selector.py` | Built-in | Tools > Select Gear menu | Low | | 10 | **Accessories Selector** | `accessories_selector.py` | Built-in | Tools > Select Gear menu | Low | --- ## πŸ“‹ SPECIFIC WIRING RECOMMENDATIONS ### 1. Icon Browser & Price Tracker (Quick Win) **Location:** Add to `main_window.py` `create_menu_bar()` Tools menu ```python # In create_menu_bar() under tools_menu: tools_menu.addSeparator() icon_browser_action = QAction("&Icon Browser", self) icon_browser_action.triggered.connect(self.on_icon_browser) tools_menu.addAction(icon_browser_action) price_tracker_action = QAction("&Price Tracker", self) price_tracker_action.triggered.connect(self.on_price_tracker) tools_menu.addAction(price_tracker_action) ``` **Add handlers:** ```python def on_icon_browser(self): from ui.icon_price_dialogs import IconBrowserDialog dialog = IconBrowserDialog(self) dialog.exec() def on_price_tracker(self): from ui.icon_price_dialogs import PriceTrackerDialog dialog = PriceTrackerDialog(self) dialog.exec() ``` **Effort:** 5 minutes **Value:** High - Complete UI already exists --- ### 2. Loot Analyzer Integration **Option A - Session End Report:** ```python # In on_stop_session() after ending session: def on_stop_session(self): # ... existing code ... # Generate loot analysis from modules.loot_analyzer import LootAnalyzer analyzer = LootAnalyzer() # Load loot from database for this session loot_data = self.db.get_session_loot(self._current_db_session_id) for item in loot_data: analyzer.record_loot(item['name'], item['quantity'], Decimal(str(item['value']))) # Show report or save to file report = analyzer.generate_report() self.log_info("LootAnalysis", "\n" + report) analyzer.export_to_csv(Path.home() / ".lemontropia" / "loot_report.csv") ``` **Option B - Tools Menu:** ```python loot_analyzer_action = QAction("&Loot Analyzer", self) loot_analyzer_action.triggered.connect(self.on_loot_analyzer) tools_menu.addAction(loot_analyzer_action) ``` **Effort:** 15-30 minutes **Value:** High - Session analysis capability --- ### 3. Auto Screenshot Integration **Add to SettingsDialog:** ```python # In SettingsDialog setup_ui(): screenshot_group = QGroupBox("Auto Screenshot") screenshot_layout = QFormLayout(screenshot_group) self.screenshot_global_cb = QCheckBox("Capture on Global") self.screenshot_hof_cb = QCheckBox("Capture on HoF") screenshot_layout.addRow(self.screenshot_global_cb) screenshot_layout.addRow(self.screenshot_hof_cb) ``` **Wire to events in main_window.py:** ```python # In _setup_log_watcher_callbacks(), enhance existing handlers: def on_personal_global(event): value_ped = event.data.get('value_ped', Decimal('0')) # ... existing code ... # Trigger auto-screenshot if self.auto_screenshot and self.auto_screenshot.on_global: self.auto_screenshot.on_global("Global", float(value_ped)) ``` **Effort:** 20 minutes **Value:** Medium - Documentation capability --- ### 4. Notifications Integration **Add to SettingsDialog:** ```python notifications_group = QGroupBox("Notifications") notifications_layout = QFormLayout(notifications_group) self.discord_webhook_edit = QLineEdit() self.discord_webhook_edit.setPlaceholderText("Discord webhook URL...") notifications_layout.addRow("Discord:", self.discord_webhook_edit) self.notify_global_cb = QCheckBox("Notify on Global") self.notify_hof_cb = QCheckBox("Notify on HoF") notifications_layout.addRow(self.notify_global_cb) notifications_layout.addRow(self.notify_hof_cb) ``` **Initialize in MainWindow:** ```python def __init__(self): # ... after settings load ... from modules.notifications import NotificationManager, NotificationConfig notif_config = NotificationConfig( discord_webhook=settings.value("notifications/discord", ""), notify_on_global=settings.value("notifications/on_global", True), notify_on_hof=settings.value("notifications/on_hof", True) ) self.notification_manager = NotificationManager(notif_config) ``` **Wire to events:** ```python def on_personal_global(self, value_ped): # ... existing code ... self.notification_manager.on_global("Global", value_ped) def on_hof(self, value_ped): # ... existing code ... self.notification_manager.on_hof("HoF", value_ped) ``` **Effort:** 30 minutes **Value:** High - External alerts --- ### 5. Crafting Tracker (Separate Mode) **Recommendation:** Create a "Mode Switcher" in main UI ```python # Add to main_window.py setup_ui(): mode_layout = QHBoxLayout() mode_layout.addWidget(QLabel("Mode:")) self.mode_combo = QComboBox() self.mode_combo.addItems(["Hunting", "Crafting", "Mining"]) self.mode_combo.currentTextChanged.connect(self.on_mode_changed) mode_layout.addWidget(self.mode_combo) main_layout.addLayout(mode_layout) def on_mode_changed(self, mode): if mode == "Crafting": from modules.crafting_tracker import CraftingTracker self.crafting_tracker = CraftingTracker() # Show crafting-specific UI ``` **Effort:** 2-4 hours **Value:** Medium - For crafters --- ## πŸ› οΈ IMPLEMENTATION PRIORITY MATRIX | Feature | User Value | Dev Effort | Priority | Quick Win? | |---------|-----------|------------|----------|------------| | Icon Browser | High | Low | **P1** | βœ… Yes | | Price Tracker | High | Low | **P1** | βœ… Yes | | Loot Analyzer | High | Medium | **P2** | ⚠️ Medium | | Auto Screenshot | Medium | Medium | **P2** | ⚠️ Medium | | Notifications | High | Medium | **P2** | ⚠️ Medium | | Crafting Tracker | Medium | High | **P3** | ❌ No | | Game Vision | Medium | High | **P3** | ❌ No | --- ## πŸ“ FILE STRUCTURE REFERENCE ``` projects/Lemontropia-Suite/ β”œβ”€β”€ main.py # CLI entry point β”œβ”€β”€ gui_main.py # GUI launcher stub β”œβ”€β”€ ui/ β”‚ β”œβ”€β”€ main_window.py βœ… WIRED - Main UI β”‚ β”œβ”€β”€ hud_overlay_clean.py βœ… WIRED - Active HUD β”‚ β”œβ”€β”€ hud_overlay.py ❌ Legacy (unused) β”‚ β”œβ”€β”€ loadout_manager_simple.py βœ… WIRED - Tools menu β”‚ β”œβ”€β”€ loadout_manager.py ❌ Legacy (unused) β”‚ β”œβ”€β”€ icon_price_dialogs.py ❌ ORPHANED - Ready to wire β”‚ β”œβ”€β”€ gear_selector.py βœ… WIRED β”‚ β”œβ”€β”€ weapon_selector.py βœ… WIRED β”‚ β”œβ”€β”€ armor_selector.py βœ… WIRED β”‚ β”œβ”€β”€ healing_selector.py βœ… WIRED β”‚ β”œβ”€β”€ armor_set_selector.py ⚠️ Partially wired β”‚ β”œβ”€β”€ armor_selection_dialog.py ❌ Unused β”‚ β”œβ”€β”€ attachment_selector.py βœ… WIRED β”‚ β”œβ”€β”€ enhancer_selector.py βœ… WIRED β”‚ β”œβ”€β”€ plate_selector.py βœ… WIRED β”‚ β”œβ”€β”€ mindforce_selector.py ❌ ORPHANED β”‚ β”œβ”€β”€ accessories_selector.py ❌ ORPHANED β”‚ └── ... β”œβ”€β”€ core/ β”‚ β”œβ”€β”€ database.py βœ… WIRED β”‚ β”œβ”€β”€ project_manager.py βœ… WIRED β”‚ β”œβ”€β”€ log_watcher.py βœ… WIRED β”‚ β”œβ”€β”€ session_cost_tracker.py ⚠️ Partially used β”‚ └── ... └── modules/ β”œβ”€β”€ icon_manager.py ❌ ORPHANED β”œβ”€β”€ market_prices.py ❌ ORPHANED β”œβ”€β”€ loot_analyzer.py ❌ ORPHANED β”œβ”€β”€ crafting_tracker.py ❌ ORPHANED β”œβ”€β”€ game_vision.py ❌ ORPHANED β”œβ”€β”€ notifications.py ❌ ORPHANED └── auto_screenshot.py ❌ ORPHANED ``` --- ## βœ… CONCLUSION ### What's Working Well - **Core hunting loop** is fully functional (Projects β†’ Sessions β†’ HUD) - **Loadout system** is well-integrated with cost tracking - **Log parsing** is robust with event detection - **HUD overlay** provides real-time session metrics ### Quick Wins (Do These First) 1. **Wire Icon Browser** - 5 minutes, complete UI exists 2. **Wire Price Tracker** - 5 minutes, same dialog file 3. **Add Loot Analyzer report** on session end 4. **Add Notifications settings** with Discord/Telegram ### Technical Debt - Two versions of HUD exist (clean version preferred) - Two versions of loadout manager exist (simple version preferred) - Some selectors exist but aren't in the Select Gear menu ### Estimated Time to Full Integration - **Minimum viable:** 1 hour (Icon Browser + Price Tracker) - **Recommended:** 2-3 hours (+ Loot Analyzer + Auto Screenshot) - **Complete:** 1-2 days (+ Notifications + Crafting + Vision) --- *Report generated by Sub-agent on 2026-02-11*