github rcourtman/Pulse v6.2.0-rc.2
Pulse v6.2.0-rc.2

pre-release4 hours ago

✅ Release Asset Validation (Post-Publish): PASSED

Assets were revalidated after publication due to a release edit.

Status: Live release assets re-validated ✅
Validated: 2026-07-28 15:42:58 UTC
Workflow: Pulse Release Pipeline #325

Validation Summary

  • All required assets present ✓
  • Checksums verified ✓
  • Version strings correct ✓
  • Binary architectures validated ✓

Pulse v6.2.0-rc.2 Release Notes

v6.2.0-rc.2 is the second release candidate on the v6.2.0 line, following
v6.2.0-rc.1. It is a hardening and bugfix candidate: it closes the
highest-impact defects reported against v6.1.x — nightly service outages from
the unattended updater, missing PBS backups on multi-cluster estates, broken
Proxmox agent installs, and a DNS query flood — and carries the fixes from an
adversarial review pass over every change since the previous candidate.

Highlights

  • Unattended updates no longer stop Pulse in the night. The update timer fired
    twice per day and a failed update left the service down until someone
    restarted it; the timer now runs once, failures always restart the service,
    and already-deployed installations repair their own stale update units on
    the next update cycle.
  • PBS backups are attributed to the right guest on estates with more than one
    Proxmox cluster. VMIDs that exist on both clusters no longer show "no
    backup" or an ancient backup age when the real backups are in the root
    namespace (#1639).
  • Installing the agent on a Proxmox host from Settings → Infrastructure
    works again, including combined PVE+PBS hosts, and failures are reported
    loudly in the installer output instead of a buried journal warning (#1644).
  • The Patrol model readiness check survives reverse proxies with short read
    timeouts, reports an interrupted check neutrally instead of blaming the
    model, and never renders a proxy's HTML error page into the results (#1640).
  • Pulse no longer floods the local resolver. A discovery-policy check that
    resolved every cluster node's hostname on every 10-second poll now uses the
    shared DNS cache, cutting hundreds of thousands of daily queries to a
    handful (#1638).

Fixed

  • Auto-update reliability. The generated pulse-update.timer carried two
    OnCalendar lines and attempted two updates per day; it now runs once
    daily in the 02:00–06:00 window. Asset staging is guarded: a failed copy or
    write can no longer install a broken helper or a truncated systemd unit
    while reporting success. Existing installations whose hardened update unit
    cannot rewrite its own files migrate automatically through a transient
    systemd-run unit on their next update; if the migration cannot run, the
    update itself still completes as before.
  • PBS backup attribution across clusters (#1639). Snapshot-to-guest
    matching now uses each cluster's own view of its PBS storage and a
    submission-source learner that only trusts evidence when every candidate
    cluster is visible, so shared tokens or synced datastores cannot attribute
    one cluster's backups to another. Evidence survives partial poll failures
    instead of flapping. Backup-age alerts no longer cross-match a PBS
    connection name against a similarly named node.
  • Proxmox agent installation (#1644). Install tokens minted from the main
    installer can now register the PVE or PBS source the installer detects —
    one registration per product type, bound to the first presenting hostname,
    and only within 24 hours of minting. A refused registration aborts the
    install visibly. The API setup script's closing message points at
    Settings → Infrastructure instead of a page that no longer exists, and
    its error branch reports invalid or expired setup tokens instead of
    claiming success. The post-install check waits for the agent's first report
    instead of warning two seconds in.
  • Patrol readiness checks (#1640). The readiness endpoint streams
    keepalive bytes from the first moment of the run, so proxies with 30-second
    read timeouts see a live connection for the full multi-probe evaluation. A
    connection cut mid-run is classified as interrupted, keeps the evidence
    from completed scenarios, and shows a neutral "check did not complete"
    banner; readiness is only reported from a completed verdict, and an
    interrupted check never blocks Patrol from running. A crash inside a
    provider integration now fails the check instead of the whole process, and
    the browser client no longer prints raw non-JSON error bodies into the UI.
  • DNS and SSH churn (#1638). The cluster endpoint discovery-policy check
    resolves hostnames through the shared cached resolver instead of a raw
    lookup per node per poll, and the link-local blocklist is enforced against
    the same resolver view the connection dial uses. Failed SSH temperature
    probes and host-key scans back off with decay instead of retrying every 10
    seconds, and the backoff clears when the SSH key changes or settings are
    saved.
  • Alert threshold editors (#1642). Each metric now has an explicit On/Off
    toggle in the per-resource override editor, the global defaults row, and
    the bulk edit dialog — no more typing -1. Values disabled under older
    guidance that said to use 0 render consistently as Off everywhere, turning
    a metric back on always produces a working threshold, and the toggle is
    reachable by keyboard.
  • SSO callback URLs. OIDC provider cards show the provider's callback /
    redirect URL with a copy button, and all SSO URLs are derived from the
    configured public URL or, when none is set, from the request that reached
    Pulse — never a localhost guess that fails at the identity provider.
  • LXC memory metrics fall back to the cluster-resources listing again when
    per-guest RRD data is unavailable, restoring memory readings lost on some
    PVE configurations.
  • Agent command execution honors the configuration gate at channel admission,
    closing a window where a disabled command channel could still admit an
    agent.

Changed

  • Platform table metric bars are colored from the configured alert thresholds
    rather than fixed cutoffs.
  • The unused autoUpdateTime and autoUpdateCheckInterval settings were
    removed from the system settings API and UI; they were stored but never
    drove the update schedule. Existing configurations containing them load
    unchanged, and API clients that still send them are accepted.

Docs

  • New Microsoft Entra ID (Azure AD) SSO integration guide covering app
    registration, group claims by Object ID, role mapping, the AADSTS650053
    scope pitfall, and group-overage protection (#1635), contributed by
    @drgimpfen and expanded.

Installation

Docker (recommended):

docker pull rcourtman/pulse:6.2.0-rc.2

Docker Compose:
Update your docker-compose.yml to use rcourtman/pulse:6.2.0-rc.2

See the Installation Guide for complete setup instructions.

Paid Pulse Pro, Relay, and eligible legacy customers: public GitHub release assets and the public rcourtman/pulse Docker image are community builds. They do not include the private Pulse Pro runtime hooks. Use https://pulserelay.pro/download.html with your activation key to get the private Pulse Pro Docker image or Linux/LXC archive.

Promotion Metadata

  • Promotion channel: rc
  • Candidate stable tag: v6.2.0-rc.2
  • Promoted prerelease tag: n/a
  • Rollback target: v6.1.2
  • Rollback command: ./scripts/install.sh --version v6.1.2
  • Hotfix exception: false
  • Windows Authenticode required: false
  • Unsigned Windows exception: false

Don't miss a new Pulse release

NewReleases is sending notifications on new releases.