All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Backend Service Splitting: Split monolithic
ssh_docker.gointo granular resource-specific files:ssh_container.go— Container lifecycle management (list, start, stop, restart, remove, create, stats)ssh_image.go— Image management (list, pull, delete)ssh_network.go— Network management (list, create, delete, prune)ssh_volume.go— Volume management (list, create, delete, prune)ssh_system.go— System info, disk usage, full system stats monitoringssh_compose.go— Docker Compose project managementssh_install.go— Docker installation and container logsssh_common.go— Shared types (ContainerWithNetwork, NetworkDetails) and utilities
- Route Extraction: Extracted all API route definitions from
main.gointointernal/routes/routes.gowith a cleanDependenciesstruct for dependency injection - Frontend Component Splitting: Split oversized page components into reusable sub-components:
Containers.tsx→ContainerRow+ContainerTableImages.tsx→ImageRow+ImageTable
- ContainerWithNetwork Redeclaration: Resolved duplicate struct definitions across
docker.goandssh_common.goby consolidating all shared network types intossh_common.go - Route Type Mismatch: Fixed
VolumeHandlertype conflict betweenmain.go(CachedVolumeHandler) androutes.go(VolumeHandler) - Unused Variable: Removed unused
matchedvariable inssh_container.go - Nested Function Call: Fixed incorrectly nested
session.CombinedOutput()call inssh_system.go - Unused Error Value: Fixed unreferenced
errinssh_install.goDocker version check with proper nil-guard - System Metrics Discarded: Fixed system CPU/memory metrics being fetched via SSH but never parsed — now properly populates
FullSystemStats
- SSH Container Stats: Implemented
GetContainerStats()method for SSH hosts usingdocker stats --no-stream - SSH Container Create: Implemented
CreateContainer()method for SSH hosts with full support for ports, env, volumes, network mode, and restart policy - Environment File: Reconstructed complete
.envtemplate with all 50+ configuration variables including database, auth, user accounts, SSH, AI, and plugin settings
- Clean Entry Point:
main.gonow serves purely as application bootstrap — all routing logic extracted - JSON Tag Consistency: Unified JSON serialization tags across
ContainerWithNetworkand related structs (NetworkSettings,omitempty) - Code Quality: Eliminated dead code, unused imports, and lint warnings across SSH service files
- Refresh Button Loading State: Fixed missing visual feedback for refresh buttons across all pages (Images, Containers, Volumes, Dashboard, Networks)
- Container Creation Loading: Fixed create container button not showing loading state during container creation process
- Network Pruning SSH Support: Fixed 500 error when pruning networks on SSH hosts by implementing proper SSH Docker service support
- SSH Authentication: Fixed SSH connection authentication issues by using correct password field (
hostConfig.Password) - Network Prune Parameters: Removed invalid
--formatparameter from network prune command that was causing command failures
- Notification System Database Persistence: Completely migrated alert and notification system from memory storage to database persistence
- Alert rules now stored in
alert_rulestable with full CRUD operations - Notification history stored in
notificationstable with metadata support - Database migrations for MySQL, PostgreSQL, and MongoDB
- Alert rules now stored in
- Notification History Management: Added delete functionality for notification records
- Delete button with trash icon for each notification record
- Confirmation dialog before deletion
- Proper error handling and success feedback
- Loading State Indicators: Enhanced user experience with proper loading states
- Refresh buttons now show spinning animation during data fetching
- Create container button shows "创建中..." (Creating...) state
- All buttons use
isFetchingstate from React Query for accurate loading indication
- Alert System Architecture: Redesigned alert system with proper database models and services
- GORM models for AlertRule and Notification entities
- NotificationService with comprehensive CRUD operations
- Fixed GORM boolean zero-value update issues using selective updates
- Enhanced error handling for database operations
- SSH Docker Service: Added
PruneNetworksmethod to SSH Docker service for remote network cleanup - React Query Integration: Improved data fetching with
refetch({ cancelRefetch: true })for forced refresh - Database Schema: Fixed missing
alert_idfield in notifications table across all database types
- Notification Deletion: Added delete notification translations for all 10 supported
- Database Migrations: Updated SQL initialization scripts for all three database types
- API Endpoints: Added DELETE
/api/v1/notifications/:idendpoint for notification deletion - Backend Models: Enhanced notification models with proper JSON serialization and GORM tags
- Frontend Components: Updated NotificationManager component with delete functionality
- Error Handling: Improved error handling for database operations and SSH connections
- Monitoring System: Notification monitoring system now ready and operational with database persistence
- Alert Data: Existing in-memory alert data will be migrated to database on first startup
- Database Schema: New tables
alert_rulesandnotificationswill be created automatically - Backward Compatibility: Maintained full backward compatibility with existing notification configurations
- RBAC Internationalization: Fixed hardcoded English error messages in RoleManager component that were not being translated
- Missing Translation Keys: Added missing
deleteRoleTitletranslation key for role deletion confirmation dialogs - Error Message Localization: Replaced 8 hardcoded English error messages with proper translation keys for all RBAC operations
- User Interface Language: Resolved issue where RBAC interface was displaying English text instead of selected language
- RBAC Error Translations: Added comprehensive error message translations for all RBAC operations across 10 languages:
- Role loading failures (
failedToLoadRoles) - Permission loading failures (
failedToLoadPermissions) - User permission loading failures (
failedToLoadUserPermissions) - Role creation failures (
failedToCreateRole) - Role update failures (
failedToUpdateRole) - Role deletion failures (
failedToDeleteRole) - Role assignment failures (
failedToAssignRole) - Role removal failures (
failedToRemoveRole)
- Role loading failures (
- Translation Coverage: Enhanced RBAC translation coverage to include all error scenarios and UI elements
- Smart Fallback: Maintained intelligent fallback mechanism - displays translation when available, original text when not
- Component Integration: Verified proper integration of translation helper functions in RoleManager component
- Complete RBAC Localization: All 10 supported languages now have complete RBAC internationalization:
- Chinese (zh): 完整的RBAC权限控制翻译,包括所有错误消息
- English (en): Complete RBAC role and permissions management translations
- German (de): Vollständige RBAC-Übersetzungen für Rollen- und Berechtigungsverwaltung
- French (fr): Traductions complètes RBAC pour la gestion des rôles et permissions
- Spanish (es): Traducciones completas RBAC para gestión de roles y permisos
- Japanese (ja): RBAC役割と権限管理の完全な翻訳
- Italian (it): Traduzioni complete RBAC per gestione ruoli e permessi
- Korean (ko): RBAC 역할 및 권한 관리 완전 번역
- Portuguese (pt): Traduções completas RBAC para gerenciamento de funções e permissões
- Russian (ru): Полные переводы RBAC для управления ролями и разрешениями
- Files Modified: 11 files (1 component + 10 language files)
- New Translation Entries: 90 entries (9 translation keys × 10 languages)
- Translation Test Component:
RBACTranslationTest.tsxavailable for verification - Backward Compatibility: Maintained full backward compatibility with existing translations
- Volume Operations: Fixed SSH fallback support for volume deletion, creation, and pruning operations when direct Docker client connection fails
- Network Operations: Enhanced SSH fallback support for network operations to handle connection failures gracefully
- UI Text Overflow: Fixed text overflow issues in volume and network deletion confirmation dialogs for long names (>50 characters)
- Internationalization: Added missing
deleteTitletranslation keys for volume and network deletion dialogs across all 10 supported languages - Plugin System: Implemented complete plugin system with loader, example plugin, and registry support
- Plugin Installation: Enhanced plugin installation to support GitHub projects without SteerDock manifests by auto-generating manifest files
- Database Serialization: Fixed plugin Config field serialization error by updating GORM tag from
gorm:"type:json"togorm:"serializer:json"
- SSH Docker Service: Added
DeleteVolume,CreateVolume, andPruneVolumesmethods to SSH Docker service for remote volume management - Plugin Documentation: Added comprehensive plugin development guide (
docs/PLUGIN_DEVELOPMENT.md) - Plugin Registry: Created plugin registry system with example plugin (
plugins/example-plugin/) - Enhanced Error Handling: Improved error messages and logging for SSH operations and plugin management
- Production Scripts: Added complete production mode startup/stop scripts for both Windows and Linux
- Volume Management: Enhanced volume handler with comprehensive SSH fallback logic and detailed error logging
- Plugin Store: Updated plugin store to clearly identify different plugin sources (GitHub, npm, Docker Hub)
- API Error Handling: Improved API parameter handling to prevent duplicate host parameters in requests
- Dialog Components: Enhanced dialog components with better text wrapping and overflow handling using
break-wordsCSS classes
- Volume Dialogs: Added
deleteTitletranslations in Chinese (删除卷), English (Delete Volume), German (Volume löschen), Spanish (Eliminar volumen), French (Supprimer le volume), Italian (Elimina volume), Japanese (Volumeを削除), Korean (Volume 삭제), Portuguese (Excluir volume), and Russian (Удалить том) - Network Dialogs: Added
deleteTitletranslations in Chinese (删除网络), English (Delete Network), German (Netzwerk löschen), Spanish (Eliminar red), French (Supprimer le réseau), Italian (Elimina rete), Japanese (ネットワークを削除), Korean (네트워크 삭제), Portuguese (Excluir rede), and Russian (Удалить сеть)
- Database Connection: Fixed an issue where the backend service failed to load environment variables from the
.envfile (godotenvsupport added). - Configuration: Corrected mismatched environment variable names for MySQL (
MYSQL_DB->MYSQL_DATABASE) and MongoDB (MONGODB_*->MONGO_*) to align with the generated.envfile. - MySQL 8.4 Support: Updated installation scripts and Docker configuration to support MySQL 8.4 by using the modern
caching_sha2_passwordauthentication plugin and removing deprecatedmysql_native_passwordconfigurations. - Installation Script: Fixed a bug in
install-database.shthat could corrupt the.envfile during execution, and added support for configuring remote root access. - Scripts: Updated
generate-passwordsscripts to uselocalhostinstead of hardcoded IP addresses for better compatibility. - Documentation: Updated build instructions in README (both English and Chinese) to include correct frontend startup commands.
- Host deletion feature in HostSelector component
- Delete button for non-local Docker hosts with confirmation dialog
- Internationalization support for host deletion (10 languages)
- Fix data volume size display error
- Fix plugin store processing logic errors
- Critical: Fixed encryption key generation to use environment variable instead of container hostname
- Resolved password decryption failures after container restarts
- Updated password generation scripts to include
ENCRYPTION_KEY
- Enhanced
generate-passwords.ps1andgenerate-passwords.shto auto-generate encryption keys - Improved host management with better error handling
- Added protection against deleting local Docker host
- Removed incomplete microservices implementation
- Simplified to monolithic architecture only
- Updated all documentation to reflect monolithic design
- Cleaned up unused Docker Compose files and scripts
- Updated startup scripts (
start-dev.sh/.ps1,start-prod.sh/.ps1) - Streamlined Makefile commands
- Added comprehensive build instructions to README
- Enhanced README with manual build section
- Updated CORS configuration for external access
- Fixed API gateway route conflicts
- Improved stop scripts to only monitor active ports (8383, 5151)
- Enterprise-grade Docker management platform
- JWT authentication with RBAC (Admin/User/ReadOnly roles)
- Multi-database support (PostgreSQL/MySQL/MongoDB)
- Multi-host Docker management via SSH/TCP
- Real-time container monitoring and statistics
- Container terminal with WebSocket support
- SSH terminal for remote host management
- Multi-language support (10+ languages)
- Dark/light theme support
- Comprehensive audit logging
- Security features: AES-GCM encryption, rate limiting, CORS protection
- Go 1.24+ backend with Gin framework
- React 18+ frontend with TypeScript
- GORM for database abstraction
- WebSocket for real-time updates
- Repository pattern for clean architecture
- Container management (start/stop/restart/remove)
- Image management (pull/push/remove)
- Network management (create/remove/connect)
- Volume management (create/remove/prune)
- Docker Compose support
- System information and statistics
- JWT token authentication (24h expiration)
- Role-based access control (RBAC)
- Password encryption with AES-GCM
- Input validation and sanitization
- Rate limiting (100 req/sec)
- Security headers (CORS, CSP, XSS protection)
- Audit logging for all operations
- Modern React UI with Tailwind CSS
- Responsive design for desktop and mobile
- Dark/light theme toggle
- Keyboard shortcuts (Ctrl+D/C/I/N/V/T/R)
- Real-time updates every 2-5 seconds
- Multi-language support
- Server deployment mode (Linux/macOS)
- Desktop application mode (Windows)
- Docker Compose deployment
- Systemd service configuration
- Nginx reverse proxy support
Initial development and testing phase.