trim((string) ($body["version"] ?? "")), "php_version" => trim((string) ($body["php_version"] ?? "")), "disk_free" => (int) ($body["disk_free"] ?? 0), "pending_migrations" => max(0, (int) ($body["pending_migrations"] ?? 0)), ]; manageInstanceTouch($instance["id"], $report); if (isset($body["last_backup_at"])) { try { manageInstanceUpdate($instance["id"], [ "last_backup_at" => trim((string) $body["last_backup_at"]), ]); } catch (Throwable $exception) { manageLogError("Heartbeat backup timestamp update failed", [ "instance" => $instance["id"], "error" => $exception->getMessage(), ]); } } $latest = manageReleaseLatestVersion(); $updateAvailable = false; if ($latest !== "" && $report["version"] !== "") { $updateAvailable = version_compare( ltrim($latest, "vV"), ltrim($report["version"], "vV"), ">", ); } manageApiSendJson(200, [ "success" => true, "instance" => $instance["id"], "latest" => $latest, "update_available" => $updateAvailable, "server_time" => date(DATE_ATOM), ]);