update 1.2.2.2 beta

This commit is contained in:
MacRimi
2026-06-25 17:07:58 +02:00
parent cdb4522e5f
commit 484f0ce897
3 changed files with 17 additions and 17 deletions
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
24f4dac2561773ea88bd1eb866ce25e7908d54435932ea3a3f265f3e6fe1ecc0 ProxMenux-1.2.2.2-beta.AppImage 82e84f7428c85a14c0eb4f8e779699548274858f22af3ffc913892634280c8b5 ProxMenux-1.2.2.2-beta.AppImage
+16 -16
View File
@@ -1400,7 +1400,7 @@ class HealthMonitor:
category='temperature', category='temperature',
severity='WARNING', severity='WARNING',
reason=reason, reason=reason,
details={'temperature': max_temp, 'duration': actual_duration, 'dismissable': False} details={'temperature': max_temp, 'duration': actual_duration, 'dismissable': True}
) )
elif len(recovery_samples) >= 3: elif len(recovery_samples) >= 3:
# Temperature has been ≤80°C for 30 seconds - clear the error # Temperature has been ≤80°C for 30 seconds - clear the error
@@ -1618,7 +1618,7 @@ class HealthMonitor:
'mount': mount_point, 'mount': mount_point,
'used': str(round(usage.percent, 1)), 'used': str(round(usage.percent, 1)),
'available': avail_str, 'available': avail_str,
'dismissable': False, 'dismissable': True,
} }
) )
else: else:
@@ -1649,7 +1649,7 @@ class HealthMonitor:
'pool_name': real_pool, 'pool_name': real_pool,
'health': pool_info.get('health', ''), 'health': pool_info.get('health', ''),
'device': f'zpool:{real_pool}', 'device': f'zpool:{real_pool}',
'dismissable': False, 'dismissable': True,
} }
) )
except Exception: except Exception:
@@ -2760,7 +2760,7 @@ class HealthMonitor:
'device': disk, 'device': disk,
'error_count': error_count, 'error_count': error_count,
'smart_status': smart_health, 'smart_status': smart_health,
'dismissable': False, 'dismissable': True,
'error_key': error_key, 'error_key': error_key,
} }
elif smart_ok: elif smart_ok:
@@ -2779,7 +2779,7 @@ class HealthMonitor:
'device': disk, 'device': disk,
'error_count': error_count, 'error_count': error_count,
'smart_status': smart_health, 'smart_status': smart_health,
'dismissable': False, 'dismissable': True,
'error_key': error_key, 'error_key': error_key,
} }
elif smart_health == 'FAILED': elif smart_health == 'FAILED':
@@ -2799,7 +2799,7 @@ class HealthMonitor:
'serial': resolved_serial or '', 'serial': resolved_serial or '',
'error_count': error_count, 'error_count': error_count,
'smart_status': smart_health, 'smart_status': smart_health,
'sample': sample, 'dismissable': False} 'sample': sample, 'dismissable': True}
) )
disk_results[display] = { disk_results[display] = {
'status': severity, 'status': severity,
@@ -2807,7 +2807,7 @@ class HealthMonitor:
'device': disk, 'device': disk,
'error_count': error_count, 'error_count': error_count,
'smart_status': smart_health, 'smart_status': smart_health,
'dismissable': False, 'dismissable': True,
'error_key': error_key, 'error_key': error_key,
} }
else: else:
@@ -3026,13 +3026,13 @@ class HealthMonitor:
category='network', category='network',
severity='CRITICAL', severity='CRITICAL',
reason=alert_reason or 'Interface DOWN', reason=alert_reason or 'Interface DOWN',
details={'interface': interface, 'dismissable': False} details={'interface': interface, 'dismissable': True}
) )
interface_details[interface] = { interface_details[interface] = {
'status': 'CRITICAL', 'status': 'CRITICAL',
'reason': alert_reason or 'Interface DOWN', 'reason': alert_reason or 'Interface DOWN',
'dismissable': False 'dismissable': True
} }
else: else:
active_interfaces.add(interface) active_interfaces.add(interface)
@@ -4263,7 +4263,7 @@ class HealthMonitor:
'log_persistent_errors': {'active': persistent_count > 0, 'severity': 'WARNING', 'log_persistent_errors': {'active': persistent_count > 0, 'severity': 'WARNING',
'reason': f'{persistent_count} recurring pattern(s) over 15+ min:\n' + '\n'.join(f' - {s}' for s in persist_samples) if persistent_count else ''}, 'reason': f'{persistent_count} recurring pattern(s) over 15+ min:\n' + '\n'.join(f' - {s}' for s in persist_samples) if persistent_count else ''},
'log_critical_errors': {'active': unique_critical_count > 0, 'severity': 'CRITICAL', 'log_critical_errors': {'active': unique_critical_count > 0, 'severity': 'CRITICAL',
'reason': f'{unique_critical_count} critical error(s) found', 'dismissable': False}, 'reason': f'{unique_critical_count} critical error(s) found', 'dismissable': True},
} }
# Track which sub-checks were dismissed # Track which sub-checks were dismissed
@@ -4333,7 +4333,7 @@ class HealthMonitor:
'log_critical_errors': { 'log_critical_errors': {
'status': _log_check_status('log_critical_errors', unique_critical_count > 0, 'CRITICAL'), 'status': _log_check_status('log_critical_errors', unique_critical_count > 0, 'CRITICAL'),
'detail': reason if unique_critical_count > 0 else 'No critical errors', 'detail': reason if unique_critical_count > 0 else 'No critical errors',
'dismissable': False, 'dismissable': True,
'error_key': 'log_critical_errors' 'error_key': 'log_critical_errors'
} }
} }
@@ -4658,7 +4658,7 @@ class HealthMonitor:
health_persistence.record_error( health_persistence.record_error(
error_key='system_age', category='updates', error_key='system_age', category='updates',
severity='CRITICAL', reason=reason, severity='CRITICAL', reason=reason,
details={'days': last_update_days, 'update_count': update_count, 'dismissable': False} details={'days': last_update_days, 'update_count': update_count, 'dismissable': True}
) )
elif last_update_days and last_update_days >= 365: elif last_update_days and last_update_days >= 365:
status = 'WARNING' status = 'WARNING'
@@ -5592,7 +5592,7 @@ class HealthMonitor:
'storage_name': storage_name, 'storage_name': storage_name,
'storage_type': storage.get('type', 'unknown'), 'storage_type': storage.get('type', 'unknown'),
'status_detail': status_detail, 'status_detail': status_detail,
'dismissable': False 'dismissable': True
} }
) )
@@ -5601,7 +5601,7 @@ class HealthMonitor:
'reason': reason, 'reason': reason,
'type': storage.get('type', 'unknown'), 'type': storage.get('type', 'unknown'),
'status': status_detail, 'status': status_detail,
'dismissable': False 'dismissable': True
} }
# Build checks from storage_details # Build checks from storage_details
@@ -5612,14 +5612,14 @@ class HealthMonitor:
checks[st_name] = { checks[st_name] = {
'status': 'INFO', 'status': 'INFO',
'detail': f"[Startup] {st_info.get('reason', 'Unavailable')} (checking...)", 'detail': f"[Startup] {st_info.get('reason', 'Unavailable')} (checking...)",
'dismissable': False, 'dismissable': True,
'grace_period': True 'grace_period': True
} }
else: else:
checks[st_name] = { checks[st_name] = {
'status': 'CRITICAL', 'status': 'CRITICAL',
'detail': st_info.get('reason', 'Unavailable'), 'detail': st_info.get('reason', 'Unavailable'),
'dismissable': False 'dismissable': True
} }
# Add excluded unavailable storages as INFO (not as errors) # Add excluded unavailable storages as INFO (not as errors)