feat: Remove deprecated test files and enhance documentation for version 3.3.0 "Nexus Infinitum"

- Deleted obsolete test files: test_mime.go, test_mime_integration.go, and xmpp_client_upload_diagnosis.ipynb.
- Updated README.md to reflect the new version 3.3.0 "Nexus Infinitum" and its features.
- Added comprehensive release notes for version 3.3.0 detailing major enhancements and installation instructions.
- Introduced cleanup script to remove development artifacts while preserving production files.
This commit is contained in:
2025-08-26 10:03:52 +00:00
parent b2b9c179c2
commit d80565f317
61 changed files with 843 additions and 4511 deletions

View File

@ -1,156 +0,0 @@
# Network Resilience Fix Report - WLAN ↔ 5G Switching Issues
## 🚨 Critical Issues Found
### 1. **CONFLICTING NETWORK MONITORING SYSTEMS**
**Problem**: Two separate network event handling systems were running simultaneously:
- **Old Legacy System**: Basic 30-second monitoring with no upload handling
- **New Network Resilience System**: Advanced 1-second detection with pause/resume
**Impact**: When switching from WLAN to 5G, both systems detected the change causing:
- Race conditions between systems
- Conflicting upload state management
- Failed uploads due to inconsistent handling
**Fix Applied**:
- ✅ Disabled old legacy system in `main.go` line 751-755
- ✅ Ensured only new network resilience system is active
### 2. **NETWORK EVENTS DISABLED BY DEFAULT**
**Problem**: `NetworkEvents` field in config defaulted to `false`
- Network resilience manager wasn't starting
- No network change detection was happening
**Fix Applied**:
- ✅ Set `NetworkEvents: true` in default configuration
- ✅ Added comprehensive NetworkResilience default config
### 3. **REGULAR UPLOADS NOT PROTECTED**
**Problem**: Main upload handler didn't register with network resilience manager
- Chunked uploads had protection (✅)
- Regular uploads had NO protection (❌)
**Impact**: If clients used regular POST uploads instead of chunked uploads, they would fail during WLAN→5G switches
**Fix Applied**:
- ✅ Added network resilience registration to main upload handler
- ✅ Created `copyWithNetworkResilience()` function for pause/resume support
- ✅ Added proper session ID generation and tracking
## 🔧 Technical Changes Made
### File: `cmd/server/main.go`
```go
// DISABLED old conflicting network monitoring
// if conf.Server.NetworkEvents {
// go monitorNetwork(ctx) // OLD: Conflicting with new system
// go handleNetworkEvents(ctx) // OLD: No upload pause/resume
// }
// ADDED network resilience to main upload handler
var uploadCtx *UploadContext
if networkManager != nil {
sessionID := generateSessionID()
uploadCtx = networkManager.RegisterUpload(sessionID)
defer networkManager.UnregisterUpload(sessionID)
}
written, err := copyWithNetworkResilience(dst, file, uploadCtx)
```
### File: `cmd/server/config_simplified.go`
```go
// ENABLED network events by default
Server: ServerConfig{
// ... other configs ...
NetworkEvents: true, // ✅ Enable network resilience by default
},
// ADDED comprehensive NetworkResilience defaults
NetworkResilience: NetworkResilienceConfig{
FastDetection: true, // 1-second detection
QualityMonitoring: true, // Monitor connection quality
PredictiveSwitching: true, // Switch before complete failure
MobileOptimizations: true, // Mobile-friendly thresholds
DetectionInterval: "1s", // Fast detection
QualityCheckInterval: "5s", // Regular quality checks
},
```
### File: `cmd/server/network_resilience.go`
```go
// ADDED network-resilient copy function
func copyWithNetworkResilience(dst io.Writer, src io.Reader, uploadCtx *UploadContext) (int64, error) {
// Supports pause/resume during network changes
// Handles WLAN→5G switching gracefully
}
```
## 🧪 Testing
Created comprehensive test script: `test-network-resilience.sh`
- Tests upload behavior during simulated network changes
- Validates configuration
- Provides real-world testing guidance
## 📱 Mobile Network Switching Support
### Now Supported Scenarios:
1. **WLAN → 5G Switching**: ✅ Uploads pause and resume automatically
2. **Ethernet → WiFi**: ✅ Seamless interface switching
3. **Multiple Interface Devices**: ✅ Automatic best interface selection
4. **Quality Degradation**: ✅ Proactive switching before failure
### Configuration for Mobile Optimization:
```toml
[uploads]
networkevents = true # REQUIRED for network resilience
[network_resilience]
enabled = true
fast_detection = true # 1-second detection for mobile
quality_monitoring = true # Monitor RTT and packet loss
predictive_switching = true # Switch before complete failure
mobile_optimizations = true # Cellular-friendly thresholds
upload_resilience = true # Resume uploads across network changes
[client_network_support]
session_based_tracking = true # Track by session, not IP
allow_ip_changes = true # Allow IP changes during uploads
```
## 🚀 Deployment Notes
### For Existing Installations:
1. **Update configuration**: Ensure `networkevents = true` in uploads section
2. **Restart server**: Required to activate new network resilience system
3. **Test switching**: Use test script to validate functionality
### For New Installations:
- ✅ Network resilience enabled by default
- ✅ No additional configuration required
- ✅ Mobile-optimized out of the box
## 🔍 Root Cause Analysis
The WLAN→5G upload failures were caused by:
1. **System Conflict**: Old and new monitoring systems competing
2. **Incomplete Coverage**: Regular uploads unprotected
3. **Default Disabled**: Network resilience not enabled by default
4. **Race Conditions**: Inconsistent state management during network changes
All issues have been resolved with minimal changes and full backward compatibility.
## ✅ Expected Behavior After Fix
**Before**: Upload fails when switching WLAN→5G
**After**: Upload automatically pauses during switch and resumes on 5G
**Timeline**:
- 0s: Upload starts on WLAN
- 5s: User moves out of WLAN range
- 5-6s: Network change detected, upload paused
- 8s: 5G connection established
- 8-10s: Upload automatically resumes on 5G
- Upload completes successfully
This fix ensures robust file uploads across all network switching scenarios while maintaining full compatibility with existing configurations.