diff --git a/AppImage/ProxMenux-1.2.2.2-beta.AppImage b/AppImage/ProxMenux-1.2.2.2-beta.AppImage index 10a18a2b..96e5c515 100755 Binary files a/AppImage/ProxMenux-1.2.2.2-beta.AppImage and b/AppImage/ProxMenux-1.2.2.2-beta.AppImage differ diff --git a/AppImage/ProxMenux-Monitor.AppImage.sha256 b/AppImage/ProxMenux-Monitor.AppImage.sha256 index bfb74454..1eebf612 100644 --- a/AppImage/ProxMenux-Monitor.AppImage.sha256 +++ b/AppImage/ProxMenux-Monitor.AppImage.sha256 @@ -1 +1 @@ -4e84314fc310aba70a73aa76f6bd0e7ae7d5ea3bdc63c2e357fce7c2097423fd ProxMenux-1.2.2.2-beta.AppImage +375863dcab1afad9aed9e57a04016c29212f3cc8a543af386c5ed933944bec7d ProxMenux-1.2.2.2-beta.AppImage diff --git a/AppImage/scripts/health_monitor.py b/AppImage/scripts/health_monitor.py index c3c732e0..dc66ced0 100644 --- a/AppImage/scripts/health_monitor.py +++ b/AppImage/scripts/health_monitor.py @@ -1603,10 +1603,17 @@ class HealthMonitor: error_key = f'disk_space_{mount_point}' if fs_status['status'] != 'OK': issues.append(f"{mount_point}: {fs_status['reason']}") - # Carry error_key into the check dict so - # _apply_dismiss_aware_status can flag this - # row as dismissed once acknowledged. + # Carry error_key + dismissable into the check + # dict — the frontend gates the Dismiss dropdown + # on `dismissable === true` strictly, and the + # spread at the consumer (`storage_details → + # checks[key]`) only forwards fields actually + # present on fs_status. Without these two lines, + # /mnt/* fullness rows reach the UI as plain + # CRITICAL/WARNING with no Dismiss button — the + # same gap the operator hit on stable 1.2.2. fs_status['error_key'] = error_key + fs_status['dismissable'] = True storage_details[mount_point] = fs_status # Record persistent error for notifications usage = psutil.disk_usage(mount_point) @@ -1638,13 +1645,16 @@ class HealthMonitor: if zfs_pool_issues: for pool_name, pool_info in zfs_pool_issues.items(): issues.append(f'{pool_name}: {pool_info["reason"]}') - # Carry error_key into pool_info BEFORE pushing into - # storage_details, so _apply_dismiss_aware_status can - # mark the row as dismissed once acknowledged. real_pool - # gets computed twice (here + below) but both paths land - # on the same key. + # Carry error_key + dismissable BEFORE pushing — same + # rationale as the disk_space path above: the frontend + # gates the Dismiss button on `dismissable === true` + # strictly, and the splat at the consumer only forwards + # what pool_info already has. real_pool gets computed + # twice (here + below) but both paths land on the same + # key. real_pool = pool_info.get('pool_name', pool_name) pool_info['error_key'] = f'zfs_pool_{real_pool}' + pool_info['dismissable'] = True storage_details[pool_name] = pool_info # Record error for notification system