Summary
This major release (v7.0.0) represents a significant architectural refactoring of FluxOS's application management system. The PR modularizes the previously monolithic appsService into specialized, domain-focused
service modules while introducing new capabilities for dynamic configuration, enhanced application naming, and improved Syncthing integration.
Changes: 126 files changed (+22,760 additions, −9,626 deletions)Test Coverage: Improved from 44.52% to 51.26% (+6.73%)
Architectural Refactoring
Service Modularization
The monolithic appsService.js has been decomposed into specialized modules organized by domain:
Application Lifecycle Services:
- appInstaller.js - Handles application installation workflows
- appSpawner.js - Manages application spawning logic
- appUninstaller.js - Controls application removal processes
- advancedWorkflows.js - Orchestrates complex multi-step workflows
Monitoring & Health Services:
- syncthingMonitor.js - Refactored syncthing synchronization monitoring
- syncthingFolderStateMachine.js - NEW: State machine for folder lifecycle management
- syncthingMonitorHelpers.js - NEW: Helper utilities for monitoring operations
- syncthingMonitorConstants.js - NEW: Centralized configuration constants
- nodeStatusMonitor.js - Node health and availability tracking
- monitoringOrchestrator.js - Coordinates monitoring activities across services
- availabilityChecker.js - Validates service availability and readiness
Application Management:
- appInspector.js - Application inspection and diagnostics
- dockerOperations.js - Abstracted Docker daemon interactions
- portManager.js - Port allocation and conflict resolution
- imageManager.js - Container image lifecycle management
- registryManager.js - Application registry database operations
Query Services:
- appQueryService.js - Application data retrieval APIs
- deploymentInfoService.js - Deployment state information
- fileQueryService.js - Filesystem query operations
- resourceQueryService.js - Resource usage metrics
Messaging & Synchronization:
- peerNotification.js - Inter-node communication for app events
- appHashSyncService.js - Application state hash synchronization
This modular approach improves maintainability, testability, and separation of concerns across the codebase.
New Features
- Extended Application Naming
- Application name regex expanded to support up to 63 characters
- Improved validation for application naming conventions
- Better error messaging for invalid names
- Syncthing 2.0.10 Upgrade
- Upgraded Syncthing integration to version 2.0.10
- Implemented comprehensive folder state machine for tracking sync lifecycle
- Enhanced monitoring with dedicated helper functions and constants
- Improved handling of soft vs. hard redeployment scenarios
- DockerHub API Caching
- Implemented TTL-based caching for DockerHub API calls
- Reduces external API requests and improves performance
- Better error handling for rate limiting scenarios
Improvements & Bug Fixes
Application Management
- Fixed syncthing synchronization issues during soft application redeployments
- Improved version update handling for running applications
- Enhanced masterSlaveApps and syncthingApps implementations
- Better validation for repository and port conflicts during registration
Performance Optimizations
- Disabled API endpoint caching for the Manage Flux page to ensure fresh data
- Optimized Docker container operations with improved error checking
- Better cache initialization and setup procedures
Code Quality
- Eliminated code duplication through shared utility functions
- Consistent error handling patterns across service modules
- Improved logging and debugging capabilities
- Enhanced code documentation and comments
Testing
Comprehensive Test Suite Expansion
Added 40+ new unit test files covering:
- All newly modularized service modules
- Workflow and lifecycle function testing
- Syncthing state machine and monitoring logic
- Docker operations and system interactions
- Security validation and authentication functions
- Edge cases and error scenarios
Test Infrastructure:
- All existing tests passing
- Improved test coverage across backend services
- Enhanced mocking for external dependencies
Breaking Changes
None - This release maintains backward compatibility with existing configurations and deployments. No migration steps required.
Migration Notes
No action required for existing FluxOS installations. The refactored architecture is fully compatible with existing application deployments and configuration files.