diff --git a/AppImage/ProxMenux-1.2.2.AppImage b/AppImage/ProxMenux-1.2.2.AppImage index d8dcbedd..0757cb82 100755 Binary files a/AppImage/ProxMenux-1.2.2.AppImage and b/AppImage/ProxMenux-1.2.2.AppImage differ diff --git a/AppImage/ProxMenux-Monitor.AppImage.sha256 b/AppImage/ProxMenux-Monitor.AppImage.sha256 index d405cc37..2cb2c60c 100644 --- a/AppImage/ProxMenux-Monitor.AppImage.sha256 +++ b/AppImage/ProxMenux-Monitor.AppImage.sha256 @@ -1 +1 @@ -dc0f267de13f20ba7035df442ddaa22bea6e4d26cbaa542a5246ba88c796ffad +6f083dbae1558612f5036a0a10a9ded23024ae86dfd7914393f7e3d5d11ae853 diff --git a/AppImage/scripts/health_persistence.py b/AppImage/scripts/health_persistence.py index be3630df..64f18985 100644 --- a/AppImage/scripts/health_persistence.py +++ b/AppImage/scripts/health_persistence.py @@ -673,11 +673,21 @@ class HealthPersistence: cursor = conn.cursor() now = datetime.now().isoformat() + # Persist `reason` into the dedicated resolution_reason column + # (and tag resolution_type='auto' so the audit log can tell + # auto-resolves apart from explicit admin clears). Previously + # this UPDATE only touched resolved_at, so the `reason` arg + # every caller passes — including the new + # `_reconcile_stale_disk_warnings` pass — was silently dropped + # and the resolution_reason column stayed NULL for every + # auto-resolved error. cursor.execute(''' UPDATE errors - SET resolved_at = ? + SET resolved_at = ?, + resolution_type = COALESCE(resolution_type, 'auto'), + resolution_reason = ? WHERE error_key = ? AND resolved_at IS NULL - ''', (now, error_key)) + ''', (now, reason, error_key)) if cursor.rowcount > 0: self._record_event(cursor, 'resolved', error_key, {'reason': reason})