- 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.
Refactor keyword detection with dual-template matching and coordinate correction
- Overhauled `find_keyword_in_region` in `DetectionModule` to act as a wrapper for a new dual-method detection system.
- Introduced `find_keyword_dual_method`, now the default detection method (enabled via `use_dual_method=True`):
- Performs template matching (`cv2.matchTemplate`) on both grayscale and CLAHE-enhanced versions of screenshots and templates.
- Handles inverted images (`cv2.bitwise_not`) for robustness under dark/light themes.
- Coordinates returned by matching are corrected from relative region space to absolute screen coordinates to match `pyautogui`.
- Combines matching results using a tiered fallback system:
1. Prefer overlapping results from both methods within a pixel threshold.
2. Fallback to high-confidence single-method results.
- Maintains `_find_keyword_legacy` for backward compatibility using `pyautogui.locateAllOnScreen`.
- Simplified keyword template set to focus on three core types: `keyword_wolf_lower`, `keyword_Wolf_upper`, and `keyword_wolf_reply`.
- Integrated runtime performance tracking via counters and `print_detection_stats()` for debugging and optimization.
- Adds debug visualization at `DEBUG_LEVEL >= 3` to save processed images and detected points for analysis.
- Improves detection robustness across varying lighting, contrast, and UI themes while maintaining precise click alignment.
This upgrade significantly strengthens keyword recognition reliability and unifies coordinate handling across all detection phases.
- Introduced a new bubble detection method based on color-based connected components ("island detection").
- Operates in a predefined region (150, 330, 600, 880) using HSV color masks.
- Mask settings and area thresholds per bubble type (user, bot, etc.) are configurable via `bubble_colors.json`.
- Supports optional image downscaling for performance; thresholds scale accordingly.
- Default setting remains off (`self.use_color_detection = False`), can be enabled manually in `DetectionModule`.
- Added keyword image matching for "wolf"/"Wolf" within detected bubbles.
- Improved precision in reply content extraction and sender identification by relocating based on snapshot offsets.
- Removed redundant portions of the system prompt to reduce token usage and improve response clarity.
- Modularized and simplified configuration for bubble type addition and detection tuning.