- Fix duplicate message processing during unattended operation
- Replace MessageDeduplication with persistent RobustMessageDeduplication
- Add automatic cleanup of expired records (every 5 minutes)
- Store deduplication state in JSON file to survive system restarts
- Improve similarity detection (95% threshold) for near-duplicate messages
- Implemented `MessageDeduplication` class to suppress duplicate bot replies:
- Normalizes sender and message content for reliable comparison.
- Tracks processed messages with timestamp-based expiry (default 1 hour).
- Integrated into `run_ui_monitoring_loop()` with support for F7/F8-based history resets.
- Periodic cleanup thread purges expired entries every 10 minutes.
- Added new UI fallback handling logic to address post-update game state changes:
- Detects `chat_option.png` overlay before bubble detection and presses ESC to dismiss.
- Detects `update_confirm.png` when chat room state is unavailable and clicks it to proceed.
- Both behaviors improve UI stability following game version changes.
- Updated `essential_templates` dictionary and constants with the two new template paths:
- `chat_option.png`
- `update_confirm.png`
These improvements reduce redundant bot responses and enhance UI resilience against inconsistent or obstructed states in the latest game versions.
- Replaced legacy `game_monitor.py` with a new modular `game_manager.py`.
- Introduced `GameMonitor` class to encapsulate:
- Game window detection, focus enforcement, and resize enforcement.
- Timed game restarts based on configuration interval.
- Callback system to notify Setup.py on restart completion.
- Cross-platform game launching (Windows/Unix).
- Process termination using `psutil` if available.
- `Setup.py` now acts as the control hub:
- Instantiates and manages `GameMonitor`.
- Provides live configuration updates (e.g., window title, restart timing).
- Coordinates bot lifecycle with game restarts.
- Maintains standalone execution mode for `game_manager.py` (for testing or CLI use).
- Replaces older “always-on-top” logic with foreground window activation.
- Dramatically improves control, flexibility, and automation reliability for game-based workflows.
- Migrated to ChromaDB v1.0.6+ with PersistentClient for memory backend.
- Added chroma_client.py for collection access and memory/query utilities.
- Integrated configurable memory preload system with Setup.py support.
- Refactored keyword detection with dual-template (grayscale + CLAHE + invert) and absolute coordinate correction.
- Added island-based color detection for chat bubbles using HSV masks and connected components.
- Reordered LLM structured JSON output to prioritize 'commands', improving tool use parsing and consistency.
- Enhanced canned reply handling for empty LLM outputs and personalized user name input in debug mode.
- Updated Wolf to consistently speak in British English.
- Improved reply-type detection and removed redundant logic.
- Augmented Setup.py with persistent window behavior and script control buttons (run/stop).
- Introduced Game Monitor to track game window visibility and trigger restarts.
- Injected ESC fallback logic to close unresponsive homepage ads.
- Switched MCP server to stdio_client context with AsyncExitStack for safe shutdown on Windows.
- Retained CTRL event handler to support graceful exits via console close or interruptions.