Skip to content

Latest commit

 

History

History
269 lines (225 loc) · 15.9 KB

File metadata and controls

269 lines (225 loc) · 15.9 KB

Changelog

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.

[1.0.5] - 2026-01-11

🏗️ Architecture Refactoring

  • Backend Service Splitting: Split monolithic ssh_docker.go into 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 monitoring
    • ssh_compose.go — Docker Compose project management
    • ssh_install.go — Docker installation and container logs
    • ssh_common.go — Shared types (ContainerWithNetwork, NetworkDetails) and utilities
  • Route Extraction: Extracted all API route definitions from main.go into internal/routes/routes.go with a clean Dependencies struct for dependency injection
  • Frontend Component Splitting: Split oversized page components into reusable sub-components:
    • Containers.tsxContainerRow + ContainerTable
    • Images.tsxImageRow + ImageTable

🐛 Fixed

  • ContainerWithNetwork Redeclaration: Resolved duplicate struct definitions across docker.go and ssh_common.go by consolidating all shared network types into ssh_common.go
  • Route Type Mismatch: Fixed VolumeHandler type conflict between main.go (CachedVolumeHandler) and routes.go (VolumeHandler)
  • Unused Variable: Removed unused matched variable in ssh_container.go
  • Nested Function Call: Fixed incorrectly nested session.CombinedOutput() call in ssh_system.go
  • Unused Error Value: Fixed unreferenced err in ssh_install.go Docker 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

✨ Added

  • SSH Container Stats: Implemented GetContainerStats() method for SSH hosts using docker 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 .env template with all 50+ configuration variables including database, auth, user accounts, SSH, AI, and plugin settings

🔧 Improvements

  • Clean Entry Point: main.go now serves purely as application bootstrap — all routing logic extracted
  • JSON Tag Consistency: Unified JSON serialization tags across ContainerWithNetwork and related structs (NetworkSettings, omitempty)
  • Code Quality: Eliminated dead code, unused imports, and lint warnings across SSH service files

[1.0.4] - 2025-12-24

🐛 Fixed

  • 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 --format parameter from network prune command that was causing command failures

✨ Added

  • Notification System Database Persistence: Completely migrated alert and notification system from memory storage to database persistence
    • Alert rules now stored in alert_rules table with full CRUD operations
    • Notification history stored in notifications table with metadata support
    • Database migrations for MySQL, PostgreSQL, and MongoDB
  • 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 isFetching state from React Query for accurate loading indication

🔧 Improvements

  • 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 PruneNetworks method 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_id field in notifications table across all database types

🌍 Internationalization

  • Notification Deletion: Added delete notification translations for all 10 supported

📋 Technical Details

  • Database Migrations: Updated SQL initialization scripts for all three database types
  • API Endpoints: Added DELETE /api/v1/notifications/:id endpoint 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

🔄 Migration Notes

  • Alert Data: Existing in-memory alert data will be migrated to database on first startup
  • Database Schema: New tables alert_rules and notifications will be created automatically
  • Backward Compatibility: Maintained full backward compatibility with existing notification configurations

[1.0.3] - 2025-12-19

🐛 Fixed

  • RBAC Internationalization: Fixed hardcoded English error messages in RoleManager component that were not being translated
  • Missing Translation Keys: Added missing deleteRoleTitle translation 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

✨ Added

  • 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)

🔧 Improvements

  • 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

🌍 Internationalization

  • 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 для управления ролями и разрешениями

📋 Technical Details

  • Files Modified: 11 files (1 component + 10 language files)
  • New Translation Entries: 90 entries (9 translation keys × 10 languages)
  • Translation Test Component: RBACTranslationTest.tsx available for verification
  • Backward Compatibility: Maintained full backward compatibility with existing translations

[1.0.2] - 2025-12-10

🐛 Fixed

  • 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 deleteTitle translation 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" to gorm:"serializer:json"

✨ Added

  • SSH Docker Service: Added DeleteVolume, CreateVolume, and PruneVolumes methods 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

🔧 Improvements

  • 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-words CSS classes

🌍 Internationalization

  • Volume Dialogs: Added deleteTitle translations 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 deleteTitle translations 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 (Удалить сеть)

[1.0.1] - 2025-11-25

🐛 Fixed

  • Database Connection: Fixed an issue where the backend service failed to load environment variables from the .env file (godotenv support added).
  • Configuration: Corrected mismatched environment variable names for MySQL (MYSQL_DB -> MYSQL_DATABASE) and MongoDB (MONGODB_* -> MONGO_*) to align with the generated .env file.
  • MySQL 8.4 Support: Updated installation scripts and Docker configuration to support MySQL 8.4 by using the modern caching_sha2_password authentication plugin and removing deprecated mysql_native_password configurations.
  • Installation Script: Fixed a bug in install-database.sh that could corrupt the .env file during execution, and added support for configuring remote root access.
  • Scripts: Updated generate-passwords scripts to use localhost instead of hardcoded IP addresses for better compatibility.
  • Documentation: Updated build instructions in README (both English and Chinese) to include correct frontend startup commands.

[1.0.0] - 2025-11-12

✨ Added

  • 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

🐛 Fixed

  • 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

🔧 Improvements

  • Enhanced generate-passwords.ps1 and generate-passwords.sh to auto-generate encryption keys
  • Improved host management with better error handling
  • Added protection against deleting local Docker host

[0.0.9] - 2025-10-16

🧹 Architecture Cleanup

  • 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

🔧 Improvements

  • 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)

[0.0.8] - 2025-10-05

🎉 Major Release

✨ Added

  • 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

🏗️ Architecture

  • 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

🐳 Docker Features

  • 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

🔐 Security

  • 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

📱 User Interface

  • 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

🚀 Deployment

  • Server deployment mode (Linux/macOS)
  • Desktop application mode (Windows)
  • Docker Compose deployment
  • Systemd service configuration
  • Nginx reverse proxy support

[0.0.1] - Initial Development

Initial development and testing phase.