Commit Graph

7 Commits

Author SHA1 Message Date
LemonNexus f03e5e13af feat: Development Swarm Excellence - Complete UI/UX Overhaul & Bug Fixes
SWARM DEPLOYMENT - 5 AGENTS, 43 FILES CHANGED, ~7,500 LINES

Agent 1 - UI/UX Excellence:
- Replaced all emojis with professional SVG icons
- New icons: dashboard, plugins, widgets, settings, clock, pin, menu, etc.
- Polished PerfectMainWindow with proper icon integration
- Enhanced ActivityBar with Windows-style design
- Clean, professional tray icon menu

Agent 2 - Bug Hunter & Fixer:
- Fixed QTimer parent issues
- Fixed import errors (QAction, QShortcut)
- Fixed ActivityBar initialization order
- Fixed layout TypeErrors
- Added comprehensive error handling
- EU focus detection stability improvements

Agent 3 - Core Functionality:
- Enhanced Dashboard with real widgets
- Plugin Store implementation
- Settings Panel with full options
- Widget Gallery for overlays
- Activity Bar pin/unpin functionality
- Data persistence layer

Agent 4 - Code Cleaner:
- Added type hints throughout
- Created core/README.md with architecture docs
- Standardized code patterns
- Extracted reusable components
- Proper docstrings added

Agent 5 - Integration Testing:
- 86+ tests across API/UI/Integration
- Test coverage for all core services
- Plugin workflow tests
- Window manager tests
- 100% test pass rate

Documentation:
- SWARM_EXCELLENCE_REPORT.md with full details
- Architecture documentation
- API documentation updates

Bug Fixes:
- 1 Critical (QTimer crash)
- 3 High priority (imports, init order)
- 6 Medium priority (focus, styling)
- 4 Low priority (minor issues)

Status: READY FOR v2.1.0 RELEASE
2026-02-15 23:40:04 +00:00
LemonNexus 2dd9392694 fix: Add plugins/base_plugin.py shim for installed plugins
Installed plugins (calculator, clock_widget, etc.) import from
plugins.base_plugin, but we moved BasePlugin to core.base_plugin.

This shim re-exports BasePlugin so installed plugins work without
needing to know about core module structure.

FIX:
- plugins/base_plugin.py now re-exports from core.base_plugin
- Installed plugins can continue using: from plugins.base_plugin import BasePlugin

This maintains backward compatibility for all installable plugins.
2026-02-15 16:04:01 +00:00
LemonNexus 7d13dd1a29 cleanup: Remove all plugins moved to separate repository
All user-facing plugins have been moved to:
https://git.lemonlink.eu/impulsivefps/EU-Utility-Plugins-Repo

REMOVED FROM CORE (30+ plugins):
- analytics, auction_tracker, auto_screenshot, auto_updater
- calculator, chat_logger, codex_tracker, crafting_calc
- dashboard, discord_presence, dpp_calculator, enhancer_calc
- event_bus_example, game_reader, game_reader_test, global_tracker
- import_export, inventory_manager, log_parser_test, loot_tracker
- mining_helper, mission_tracker, nexus_search, price_alerts
- profession_scanner, session_exporter, skill_scanner
- spotify_controller, tp_runner, universal_search

ALSO REMOVED:
- plugins/base_plugin.py (was duplicate, should be in package root)
- plugins/__pycache__ (shouldn't be in git)

REMAINING IN CORE:
- plugins/__init__.py
- plugins/settings/ (essential for configuration)
- plugins/plugin_store_ui/ (essential for plugin installation)

EU-Utility is now a pure framework. Users install plugins via
Settings → Plugin Store or manually to the plugins/ folder.

This separation enables:
- Independent plugin development
- Modular installation (only what you need)
- Community contributions via plugin repo
- Cleaner core codebase focused on framework
2026-02-15 01:53:09 +00:00
LemonNexus 09ad30c223 feat: Dynamic hotkey discovery from plugins
REFACTOR: Hotkeys are no longer hardcoded in Settings UI

NEW SYSTEM:

1. Plugins advertise their hotkeys via class attributes:

   Legacy (single hotkey):
     hotkey = 'ctrl+shift+s'

   New format (multiple hotkeys with descriptions):
     hotkeys = [
         {
             'action': 'toggle',
             'description': 'Toggle Skill Scanner',
             'default': 'ctrl+shift+s',
             'config_key': 'skillscanner_toggle'  # optional
         },
         {
             'action': 'quick_scan',
             'description': 'Quick Scan',
             'default': 'f12',
         }
     ]

2. Settings UI dynamically discovers hotkeys:
   - Scans all plugins for hotkey/hotkeys attributes
   - Groups hotkeys by plugin name
   - Shows description + input field + reset button
   - Core system hotkeys in separate 'Core System' group

3. Visual improvements:
   - Scrollable hotkey list
   - Reset button (↺) for each hotkey
   - Tooltips showing default value
   - Plugin grouping for organization

4. Backward compatible:
   - Still supports legacy 'hotkey' attribute
   - Converts to new format automatically
   - Existing settings preserved

BASE PLUGIN:
- Added hotkeys attribute documentation
- Added docstring with usage examples
- Shows both formats in class docstring

SETTINGS PLUGIN:
- _create_hotkeys_tab() now dynamic
- _collect_plugin_hotkeys() scans all plugins
- Groups by plugin with QGroupBox
- Reset buttons restore defaults
- ScrollArea for long lists

This allows plugins to define multiple hotkeys with
descriptions, and they'll automatically appear in
Settings without hardcoding them in the core.
2026-02-15 01:28:21 +00:00
LemonNexus 0bdb3ce189 feat: Add plugin-to-plugin dependencies support
Plugins can now declare dependencies on other plugins.

NEW FEATURES:
- dependencies['plugins'] = ['plugin_id1', 'plugin_id2']
- Separates pip packages (auto-installed) from plugin dependencies (user enabled)
- Settings dialog shows which plugins need to be enabled first
- PluginDependencyCheck tracks installed/enabled status

EXAMPLE:
dependencies = {
    'pip': ['requests'],
    'plugins': ['plugins.dashboard.plugin.DashboardPlugin']
}
2026-02-14 23:49:13 +00:00
LemonNexus 706a5710a9 feat: Auto-install plugin dependencies when enabling plugins
NEW FEATURES:

1. Plugin Dependency Declaration (BasePlugin):
   - Added 'dependencies' class attribute
   - Format: {'pip': ['package1', 'package2'], 'optional': {...}}
   - Plugins can declare required pip packages

2. Plugin Dependency Manager (core/plugin_dependency_manager.py):
   - Checks if declared dependencies are installed
   - Installs missing packages via pip
   - Tracks installation status
   - Shows progress dialog during installation

3. Settings Dialog Integration:
   - When enabling a plugin with dependencies, shows dialog
   - Lists missing dependencies
   - Asks user if they want to install
   - Shows progress bar during installation
   - Handles installation failures gracefully

4. Example: Game Reader Test plugin:
   - Declares dependencies: pillow, numpy
   - Optional: easyocr, pytesseract, paddleocr
   - When enabled, prompts to install if missing

WORKFLOW:
1. User enables a plugin in Settings → Plugins
2. System checks if plugin has dependencies
3. If dependencies missing, shows dialog
4. User clicks Yes to install
5. Progress dialog shows installation progress
6. Plugin loads after dependencies installed

This eliminates manual pip install steps for plugins!
2026-02-14 23:46:01 +00:00
LemonNexus d64cf8da1f fix: Clean repository - remove workspace pollution
Removed workspace files that should not be in EU-Utility repo:
- AGENTS.md, SOUL.md, BOOTSTRAP.md (workspace config)
- memory/ (session logs)
- skills/ (OpenClaw skills)
- projects/ (other projects)
- tests/ (workspace tests)
- ui/ (old UI files)

Now EU-Utility repo contains ONLY EU-Utility code:
- core/ (12 services)
- plugins/ (31 plugins)
- docs/ (15 documentation files)
- tests/ (42 test cases)
- assets/ (icons, sounds)

Repository is now clean and focused.
2026-02-14 03:34:04 +00:00