TESTING: - Comprehensive test suite (tests/test_comprehensive.py) - 17 test cases covering all major components - EventBus, NexusAPI, DataStore, PluginAPI tests - Security tests (path traversal, input sanitization) - Plugin loading and lifecycle tests - Integration tests UI/UX: - Theme system (core/theme_manager.py) - 3 built-in themes: Dark, Light, EU Classic - Dynamic QSS stylesheet generation - Theme persistence ARCHITECTURE: - Service registry pattern - Better separation of concerns - Security utilities Estimated test coverage: 75%+ Total: ~2,000 lines of code |
||
|---|---|---|
| .clawhub | ||
| core | ||
| data | ||
| docs | ||
| memory | ||
| plugins | ||
| projects | ||
| skills | ||
| tests | ||
| ui | ||
| AGENTS.md | ||
| BOOTSTRAP.md | ||
| CLINE_SETUP.md | ||
| CONTINUE_FIX.md | ||
| FEATURES.md | ||
| FEATURES_SUMMARY.md | ||
| HEARTBEAT.md | ||
| IDENTITY.md | ||
| PROJECT_INDEX.md | ||
| README.md | ||
| SOUL.md | ||
| TOOLS.md | ||
| USER.md | ||
| loadout_redesign.md | ||
| main.py | ||
| requirements.txt | ||
README.md
EU-Utility
A modular utility application with a powerful plugin system.
Features
- Plugin System: Extensible architecture for custom functionality
- Auto-Updater: Automatic update checking and installation
- Plugin Marketplace: Browse and install community plugins
- Cloud Sync: Synchronize settings across devices
- Statistics Dashboard: Usage analytics and system monitoring
- Import/Export: Backup and restore your data
- Clipboard Manager: Copy/paste with history tracking
Quick Start
# Run the application
python main.py
# Or with clipboard monitoring
python main.py --monitor-clipboard
New Features (v1.1.0)
1. Auto-Updater System
Automatically check for and install updates with rollback support.
from plugins.auto_updater import AutoUpdaterPlugin
updater = plugin_api.get_plugin("auto_updater")
updater.set_config({"auto_check": True, "channel": "stable"})
updater.check_for_updates()
2. Plugin Marketplace
Browse, install, and manage community plugins.
from plugins.plugin_marketplace import PluginMarketplacePlugin
marketplace = plugin_api.get_plugin("plugin_marketplace")
plugins = marketplace.fetch_plugins()
marketplace.install_plugin("plugin_id")
3. Cloud Sync
Synchronize your settings across multiple devices.
from plugins.cloud_sync import CloudSyncPlugin, CloudProvider
sync = plugin_api.get_plugin("cloud_sync")
sync.set_provider_config(CloudProvider.CUSTOM, {
"upload_url": "https://your-server.com/upload",
"download_url": "https://your-server.com/download",
})
sync.sync_bidirectional()
4. Statistics Dashboard
Track usage metrics and system health.
from plugins.stats_dashboard import StatsDashboardPlugin
stats = plugin_api.get_plugin("stats_dashboard")
stats.record_counter("my_event", 1)
health = stats.get_system_health()
report = stats.generate_report()
5. Import/Export System
Backup and restore your data in multiple formats.
from plugins.import_export import ImportExportPlugin, ExportFormat
ie = plugin_api.get_plugin("import_export")
ie.export_data(profile="full", format=ExportFormat.ZIP)
ie.create_backup("my_backup")
ie.restore_backup("backup_file.zip")
Documentation
- Features Documentation - Detailed feature documentation
- Plugin Development - Create your own plugins
- API Reference - Complete API documentation
Project Structure
.
├── core/ # Core services
│ ├── base_plugin.py # Base plugin class
│ └── plugin_api.py # Plugin management API
├── plugins/ # Plugin directory
│ ├── auto_updater.py
│ ├── plugin_marketplace.py
│ ├── cloud_sync.py
│ ├── stats_dashboard.py
│ ├── import_export.py
│ └── test_plugin.py
├── data/ # Data storage
├── tests/ # Test suite
└── main.py # Entry point
Requirements
- Python 3.8+
- (Optional)
pyperclipfor clipboard functionality - (Optional)
psutilfor system metrics - (Optional)
pyyamlfor YAML export/import
pip install -r requirements.txt
Creating a Plugin
from core.base_plugin import BasePlugin
class MyPlugin(BasePlugin):
name = "my_plugin"
description = "My custom plugin"
version = "1.0.0"
author = "Your Name"
def on_start(self):
print(f"[{self.name}] Plugin started!")
def on_stop(self):
print(f"[{self.name}] Plugin stopped!")
Save to plugins/my_plugin.py and it will be automatically loaded.
License
MIT License