From e7fffbbf9c3aee60a0c56c20b939250cac41c18c Mon Sep 17 00:00:00 2001 From: "pulse-triage[bot]" <249995291+pulse-triage[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 10:58:43 +0100 Subject: [PATCH] Prepare v6.6.0-rc.5 Release candidate cut from main at 1c2f23aef6b6. It carries every change merged since stable v6.5.0. Contract-Neutral: Release-only v6.6.0-rc.5 version, release notes and distribution metadata; no public install or runtime contract changes. Change-source: pulse-maintainer --- VERSION | 2 +- deploy/helm/pulse/Chart.yaml | 8 +- deploy/helm/pulse/README.md | 2 +- docker-compose.yml | 2 +- docs/RELEASE_NOTES.md | 4 +- docs/UPGRADE_v6.md | 4 +- docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md | 172 ++++++ .../RELEASE_NOTES_v6.6.0-rc.5.md.visuals.json | 5 + docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md | 498 ++++++++++++++++++ frontend-modern/public/docs/UPGRADE_v6.md | 4 +- scripts/install-docker.sh | 2 +- 11 files changed, 689 insertions(+), 14 deletions(-) create mode 100644 docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md create mode 100644 docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md.visuals.json create mode 100644 docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md diff --git a/VERSION b/VERSION index 9e6b8a923c..c4405afd7e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.6.0-rc.4 +6.6.0-rc.5 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 2b1d0ef2c9..ffd5089500 100644 --- a/deploy/helm/pulse/Chart.yaml +++ b/deploy/helm/pulse/Chart.yaml @@ -2,9 +2,9 @@ apiVersion: v2 name: pulse description: Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent. type: application -version: 6.6.0-rc.4 -appVersion: "6.6.0-rc.4" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.6.0-rc.4/docs/images/pulse-logo.svg +version: 6.6.0-rc.5 +appVersion: "6.6.0-rc.5" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.6.0-rc.5/docs/images/pulse-logo.svg keywords: - monitoring - proxmox @@ -32,7 +32,7 @@ annotations: description: Smoke tests with kind cluster deployment artifacthub.io/links: | - name: Documentation - url: https://github.com/rcourtman/Pulse/blob/v6.6.0-rc.4/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.6.0-rc.5/docs/KUBERNETES.md - name: Support url: https://github.com/rcourtman/Pulse/discussions artifacthub.io/maintainers: | diff --git a/deploy/helm/pulse/README.md b/deploy/helm/pulse/README.md index c5ea62315e..47cbf012de 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.6.0-rc.4](https://img.shields.io/badge/Version-6.6.0--rc.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.6.0-rc.4](https://img.shields.io/badge/AppVersion-6.6.0--rc.4-informational?style=flat-square) +![Version: 6.6.0-rc.5](https://img.shields.io/badge/Version-6.6.0--rc.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.6.0-rc.5](https://img.shields.io/badge/AppVersion-6.6.0--rc.5-informational?style=flat-square) Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent. diff --git a/docker-compose.yml b/docker-compose.yml index 715c54187b..c62d1089d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: pulse: - image: ${PULSE_IMAGE:-rcourtman/pulse:6.6.0-rc.4} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.6.0-rc.5} container_name: pulse restart: unless-stopped logging: diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index 20f8f1033a..42075d3ff1 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -7,8 +7,8 @@ For historical v4 notes that previously lived in this repo, see: `docs/releases/RELEASE_NOTES_v4.md` For the current v6 release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.6.0-rc.4.md` -- `docs/releases/V6_CHANGELOG_v6.6.0-rc.4.md` +- `docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md` +- `docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md` For the current stable v6 packet, see: - `docs/releases/RELEASE_NOTES_v6.5.0.md` diff --git a/docs/UPGRADE_v6.md b/docs/UPGRADE_v6.md index 482bb3f0df..6c9811d548 100644 --- a/docs/UPGRADE_v6.md +++ b/docs/UPGRADE_v6.md @@ -9,8 +9,8 @@ public Community downloads do not replace a private Pro build. For the current v6 release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.6.0-rc.4.md` -- `docs/releases/V6_CHANGELOG_v6.6.0-rc.4.md` +- `docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md` +- `docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md` For the current stable v6 packet, see: diff --git a/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md b/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md new file mode 100644 index 0000000000..20af189cd8 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md @@ -0,0 +1,172 @@ +# Pulse v6.6.0-rc.5 Release Notes + +This release candidate follows `v6.6.0-rc.4` on the way to stable `v6.6.0`. Stable `v6.5.0` remains the rollback target. + +Pulse v6.6.0 puts alerts, trends and useful next steps together so you can see what needs attention across your homelab. Backup coverage, disk health and guest readings explain when information is old or incomplete. Cluster agent installation, scheduled reports, notifications and updates need less manual work. Reports of guest freezes, Windows restarts and elevated server memory remain unresolved. + +## Highlights + +- See problems, recent trends and longer history together in resource details. +- Install cluster agents and schedule inventory and backup reports with fewer manual steps. +- Get clearer alerts when readings stop, hardware changes or guests move. + +## What's improved + +- **Charts sit beside the problem.** Resource Overview combines alerts, recent trends and longer history for guests, nodes, agents, Docker hosts and containers. The separate History tab is removed. +- **Brief spikes stay visible.** Charts show minimum and maximum readings around average lines, helping distinguish short peaks from sustained load. +- **History is easier to follow.** Consistent ranges, clearer axes, dated values and source labels explain readings. Inspected values survive resizing, gaps remain visible, and bounded histories retain the newest observations. +- **Charts show relevant alerts.** Resource history includes its own alerts and trigger lines without unrelated parent alerts. Row history also charts network and disk I/O. +- **Useful details come first.** Resource details lead with warnings and failed availability checks. Inventory sits under Details, with complete identifiers and fewer repeated values. +- **Web links can be edited together.** Bulk-edit saved interfaces for workloads and Docker containers, then open a guest's saved interface from its header. +- **Guests keep their identity when moved.** Proxmox migrations preserve metadata, links, selection and history. Matching names or guest IDs at separate installations stay distinct. +- **Manual grouping stays yours.** Links, chained links and splits survive refreshes and identity changes. Unlinking separates rows, while reporting a bad merge removes only the responsible links. +- **Large dashboards do less repeated work.** Inventory updates reduce copying, grouping and sorting. Tables fetch only displayed history, hidden charts pause collection, and stored chart queries do less decoding and disk lookup work. +- **VM inventory exports can run on a schedule.** Export the organization's current VM inventory as CSV weekly or monthly, including newly discovered VMs. Email it or save it to disk. +- **Client backup health gets a report.** Compatible Pro runtimes offer weekly or monthly PDF and CSV summaries of Proxmox backup attempts, including jobs writing to PBS. Failures, missing attempts and incomplete history remain explicit. +- **Report delivery is easier to recover.** Settings shows readiness and results. Temporary email failures retry within limits, retries preserve the report period, and uncertain sends warn about duplicates. Schedules survive monitor reloads. + +## Alerts and notifications + +- **Alerts open the right place.** Overview prioritises active problems. Guest and filesystem alerts open their guest, storage alerts open their pool, and notifications open the alert's timeline when a public URL is configured. +- **Open alerts explain their state.** Threshold alerts show the current reading, averaging window, clear level and recovery progress while preserving the original breach value and date. +- **Missing readings interrupt confirmation.** Metric, storage, connection and disk-temperature timers restart after observation gaps instead of treating separated readings as continuous trouble. +- **Off stays off.** Disabled Docker, Mail Gateway and backup defaults remain disabled after saving. Low thresholds keep their clear level below the trigger, and fresh installations receive Docker defaults. +- **Settings preserve your edits.** Omitted settings and node overrides survive other saves. Drafts wait for confirmed saves, editors wait for saved policy, and threshold controls have accessible names. +- **Agent handovers preserve coverage.** Linked agents avoid duplicate node alerts without losing temperature monitoring. Proxmox cleanup preserves alerts belonging to other platforms. +- **History explains closures.** Moved alerts stay distinct from recovered alerts in timelines, reports and notifications. Host, container, service, disk, array and sensor history stays with its resource. +- **History is clearer and bounded.** Messages wrap, frequency bars show severity and local times, and acknowledgements sync between tabs. Read errors stay visible, caches have limits, and retained failures say when retries stopped. +- **Delivery controls explain their effect.** Destinations come first, schedules explain timing, and pause messages distinguish detection from delivery. Notification drafts survive tab changes, uncertain saves and masked-secret updates. +- **Webhook sends match their templates.** Required headers reach real alerts, including Telegram. Cleared optional headers restore defaults, examples escape text safely, and invalid templates stop with a configuration error. +- **Email works with more SMTP servers.** Provider defaults, LOGIN prompts and port 465 work consistently in tests and delivery. Concurrent sends keep recipients separate. Subjects name the host, and rate limits persist while email is off. +- **Connection failures get better handling.** Notifications can reach another approved address when the first stalls, and cancelled DNS work stops. Interrupted replies cannot count as completed delivery, while temporary disconnects remain eligible for retry. + +## Disks and storage + +- **Capacity problems lead the storage view.** Tables emphasise filling pools and explain attention states. Collapsing groups no longer pins them, reopens them or scrolls back to an earlier pool. +- **Storage history stays with its resource.** Expanded pools and disks include collapsible history charts with minimum-to-maximum bands. +- **Unrelated disks stay separate.** Matching serials on different hosts and generic QEMU serials no longer merge different hardware. Agent disks stay out of unrelated cluster-member inventory. +- **Hardware matching handles different ID formats.** Equivalent WWNs from Proxmox and agents match correctly, including controller disks. Empty or placeholder identifiers cannot establish a match. +- **Replacement disks start clean.** New hardware no longer inherits the old disk's SMART readings, slot identity, alert history or operator settings when its identity differs. +- **Retained readings look retained.** Standby disks and silent agents show last-known temperatures, usage and RAID state. Merged disks preserve each source's collection state. +- **Heat limits agree across views.** Alerts, colours, reports and Patrol use disk-type limits and host overrides. TrueNAS disk limits are editable, and Unraid uses its agent's reported temperature. +- **Heat alerts close for the right reason.** Removing a disk or disabling its temperature threshold clears its alert. Missing reports preserve unresolved SMART problems without presenting old temperatures as current. +- **Risk labels explain the problem.** Heat alone reads Running Hot rather than Replace Now. SSD wear is labelled life remaining, and disk alerts are logged once. +- **History follows the hardware.** Controller-member and Unraid serial-based charts resolve correctly. Same-serial disks on different hosts retain separate charts. +- **Real local mounts remain visible.** Mounts such as /snapshots and /runtime are no longer excluded merely because their paths resemble filtered system directories. + +## Proxmox, PBS and backups + +- **Guest memory explains its limits.** Views and alerts distinguish current, retained and cache-inclusive VM readings. Percentages use sampled capacity, including ballooned VMs. LXC listing memory is treated as cache-adjusted usage. +- **Windows collection handles recovery better.** Guest reads can resume after cooldowns and restarts. Pulse learns the OS before optional Linux memory requests and collects filesystems first, so unsuitable requests cannot block later disk readings. +- **Filesystem totals avoid false duplicates.** Shared filesystems count once regardless of mount order. Distinct Windows volumes remain separate even when equally sized, and invalid counters remain unknown. +- **Partial filesystem reads remain useful.** Valid rows survive incomplete responses without implying complete capacity or recovery. Stopped guests no longer publish retained filesystems as current measurements. +- **LXC collection works within the helper sandbox.** Running containers and mounted filesystems can be read without Proxmox control sockets. Unmounted paths cannot borrow parent usage, and nodes without containers report an empty inventory. +- **Guest commands respect backup safeguards.** Reads and actions defer for locks, uncertain completion and malformed replies. Equivalent endpoints share coordination, and cancellation cannot prematurely release another command. +- **Slow polls retain valid inventory.** Completed inventory survives optional-detail deadlines. Retired connections cannot republish readings, temporary OS-read failures can recover, and shared login renewal survives one caller cancelling. +- **PBS coverage survives incomplete polls.** Missing namespace or snapshot results preserve known backups without marking them freshly checked. Root-namespace coverage includes LXC guests, and restored backup alerts are checked before startup delivery. +- **Backup coverage is easier to inspect.** Health counts filter matching workloads. Details track completed backups, distinguish freshness from verification and restore the PBS interface shortcut. Each PBS server shows host statistics once. +- **Amber shields explain their limit.** Backup details name the configured age limit and link to Recovery thresholds. Saved changes update shields immediately, making longer backup schedules easier to configure. +- **Replication shows observed results.** Status comes from source-node job observations. Slow reads do not pile up, failed reads preserve jobs, and saved configuration alone no longer implies successful replication. +- **Access messages give useful next steps.** Denied package-update checks explain their separate permissions without treating limited access as a node fault. Outdated sensor notices appear across Proxmox tabs. + +## TrueNAS, vSphere and Docker + +- **TrueNAS CORE keeps usable inventory.** Unknown or string-valued disk rotation rates no longer abort collection. Pool capacity can use top-level vdev statistics when flat fields are absent. Missing or conflicting readings remain unknown. +- **TrueNAS charts and app readings recover.** Native disk-temperature history works again, with a bounded fallback for empty reporting results. Fractional SCALE app CPU readings no longer interrupt reporting sessions. +- **TrueNAS explains unhealthy states.** Pools and topology give concrete reasons for attention. Services and VMs distinguish intentionally stopped items from those expected to run, with status text matching its indicator. +- **vSphere leads with health.** The overview highlights vCenter signals and explains datastore and network problems. Host groups use cluster names, and the vCenter column appears only when several are connected. +- **vSphere activity reads clearly.** Events use vCenter's descriptions, VM records retain the correct platform, and state text matches its status indicator's colour. +- **Container health is consistent.** Tables show health and uptime, details include health-check results, and indicators reflect crash loops, failed health checks and missing state. +- **Docker networks summarise their containers.** Each network has one status indicator. Running counts use Docker's running state, while attached-container state text reflects health. +- **Swarm rollout states are distinct.** Updating, rolling back, Update paused and Rollback paused have separate labels. Missing running replicas takes priority, and task, replica and node status text reflects the problem. +- **Image checks preserve update warnings.** Unknown local digests and daily cleanup no longer clear update alerts incorrectly. Explicit Docker Hub references reach the correct registry, unavailable checks explain why, and image names stay readable. +- **Updates sit beside the warning.** Container details offer Update and View image tags. Review dialogs survive refreshes, and update plans retain the saved deployment target. +- **Uncertain restarts get checked.** After a missing Docker restart response, Pulse reads container state within the original deadline without repeating the restart. Observed health stays distinct from confirmed execution. +- **Podman CPU uses the measured interval.** Reports, history and alerts agree on usage. Small positive readings remain visible as fractions, with help explaining the percentage scale. + +## Install, updates and agents + +- **Cluster agents need fewer manual steps.** A connected Proxmox member can install agents on uncovered siblings using existing cluster SSH trust and individual bootstrap credentials. Progress confirms a live connection. +- **Enrollment finishes before collection starts.** On non-Windows agents, modules use the exchanged runtime credential from their first start. Command channels use Pulse's resolved identity and remain connected after restarts. +- **Monitoring agents can reduce permissions.** Reporting agents can establish identity without a command channel. Action-runner setup recognises restored certificate trust while keeping command connections verified. +- **Docker commands reach their host.** Container and other Docker child identities no longer make a unique reporting host ambiguous. Genuine collisions are reported clearly instead of appearing as a missing agent connection. +- **Removal preserves recovery files.** Unix, Windows, Synology DSM and TrueNAS SCALE removal confirms services and boot tasks have stopped before deleting credentials or recovery state. +- **Agent setup protects credentials.** Installers reject unsafe paths and incomplete downloads, respect selected token files and preserve credentials when saved server details are missing. Copied removal commands use saved credentials. +- **Server updates prepare before stopping Pulse.** Replacement binaries are checked first, shutdown is confirmed, and uncertain service state stops replacement. Archives stage on the install filesystem, avoiding failures with a separate /tmp. +- **Updates respect saved choices.** Manual and automatic updates read saved channels reliably. Automatic updates honour consent and systemd masks, exclude unknown editions, and confirm the running executable matches the installed version. +- **Update failures remain diagnosable.** Installer and log-collector results stay separate, including final output without a newline. Recovery files remain when completion is uncertain, and source-built installs use atomic replacement. +- **Imports and resets protect existing installs.** Startup import requires the actual destination to be empty, including agent-only, TrueNAS and vSphere setups. Reset and removal wait for affected services to stop. +- **Setup gives clearer information.** Forms ask for the address before its name. First-run coverage, CPU counts, Linux distribution names and agent update notices are clearer. Usage-statistics opt-out no longer reports a false failure. +- **Empty service inventories work correctly.** No matching service files means no service was found, while genuine discovery failures remain visible. + +## Pulse Pro, AI and hosted + +- **Patrol setup lives on Patrol.** Connect a provider, choose a guided model, preview costs and check readiness from the page. Unreachable providers lead to Provider & Models. +- **Actions start with review.** Pro Patrol defaults to Ask first until a mode is chosen. Safe auto-fix and Autopilot remain available. Assistant offers Read-only and Ask first, with proposed actions saved in Actions. +- **Guest protection stays effective.** Never auto-remediate blocks actions and previously approved plans across links, splits and identity changes. Approved actions check current policy. The inactive Assistant Protected guests field is removed. +- **Suppression rules can be removed.** Patrol Activity lists manually created rules with their scope and reason. Ending suppression leaves reviewed findings reviewed. +- **Maintenance silences the right findings.** Patrol honours recurring windows and maintenance covering child resources. Expected-offline settings silence availability findings while allowing other problems through. +- **Investigations target the right resource.** Filesystem and disk findings resolve to their owner. Repeated names stay distinct, while decision, action-review and threshold links open the relevant resource or settings row. +- **Investigations use collected evidence.** AI can read backup inventory, attempts, errors, verification and storage history. Old readings cannot prove health, cache-inclusive VM memory cannot prove pressure, and unavailable storage stays explicit. +- **Patrol resumes its schedule after restart.** Saved schedules retain their remaining wait, overdue checks run once, and complete runs clear obsolete coverage warnings. Historical fixes cannot close newly recurring findings. +- **Incomplete investigations keep a next step.** Empty replies, summary timeouts, tool calls printed as prose and uncertain action results remain eligible for scheduled follow-up within policy limits. Chat preserves its streamed summary. +- **AI Discovery is removed.** Service context scans, the Discovery tab and automatic web-link and availability proposals are no longer offered. +- **Paid installs can switch to Pro in place.** Eligible systemd and Proxmox LXC installs can switch through the API. Docker gets image commands. Older Pro versions are refused, and the stable channel cannot switch to a prerelease. +- **Hosted installs recover better.** Initial setup stays reachable without a licence, paid renewals survive restart, and tenant deletion and shutdown wait for active monitoring, alert checks and history writes. + +## Monitoring and service health + +- **Freshness follows actual polling.** Proxmox, PBS, Mail Gateway, connections and resource APIs use the live fixed or adaptive schedule. Connection alerts also continue after monitor reloads. +- **Silent agents get accurate wording.** Pulse says an agent stopped reporting without claiming its host is down. Offline source states remain effective, linked agents use their own heartbeat, and failed availability checks cannot keep nodes online. +- **Availability views agree.** Settings and Machines show consistent results. Old successful locations cannot look current because another location failed more recently, and licence changes restore local checks correctly. +- **Retained readings cannot create fresh trends.** Old guest measurements no longer become new history points or bridge gaps. Memory and disk searches exclude unavailable measurements instead of treating them as zero. +- **Primary IP selection respects interfaces.** Normal guest interfaces take priority over container and overlay interfaces. Addresses stay associated with their interface, and all reported addresses remain available. +- **CPU temperatures agree across views.** Tables, details, history and alerts use the hottest current CPU reading. Node details show real low and record values without mixing readings from same-named nodes at other sites. +- **Ages keep moving.** Resource, backup, replication, alert, delivery, Patrol, token, installer and diagnostic ages update without refreshing. A stalled watchdog request no longer leaves Refresh waiting indefinitely. +- **Long outages avoid rapid retry loops.** Polling backoff retains its maximum delay through persistent failures. +- **Kubernetes problems stand out.** Not Ready nodes lead the overview, rows reflect their alerts, and status words match their indicators. Long names remain readable and copy without inserted breaks. +- **Mail Gateway 9 collection works again.** String-valued cluster IDs no longer break collection or trigger guessed backup requests. Failed reads retain known backups, gateway alerts stay attached, and saved collection opt-outs remain explicit. +- **Pulse health stays distinct.** Pulse service failures are separated from failed TrueNAS polling and other monitored-resource alerts. Guest-agent fallback requires real replies, rather than merely having the agent enabled. +- **Demo monitoring behaves consistently.** Mode changes update all tenant monitors and clear old sample alerts. Demo workloads have stable parents, distinct names and one history timeline per resource. + +## Security + +- **Tokens stay within their authority.** Callers cannot grant scopes they lack or turn limited access into instance-wide credentials. Token lists, diagnostics, editing, deletion and rotation respect the caller's organizations and permissions. +- **Instance administration stays with instance admins.** Organization owners and organization-bound tokens cannot change global credentials, security, licensing or updates. They retain access to their own organization's administration. +- **Organizations keep separate data.** Live events, reports and AI metric summaries stay with their organization. Missing tenant monitors cannot expose default-org data, and a custom metrics database path applies only to the default organization. +- **Changes require the right permissions.** Links and attention changes require monitoring:write, AI report narration requires ai:execute, and browser agent removal requires admin access. Read-only tokens no longer see link-editing controls. +- **Assistant checks command arguments.** Read-only decisions inspect options and each pipeline stage, preventing familiar command names from disguising file writes, service changes or other actions requiring approval. +- **SAML replies stay tied to their request.** Sign-in and logout responses must match the outstanding browser request. Replays are refused, and manually configured identity providers use the saved certificate for signature checks. +- **Certificate trust survives reconnection.** Proxmox recovery cannot replace an established certificate pin. Diagnostics distinguish timeouts from trust failures and inspect the configured endpoint. +- **Redirects keep credentials within their destination.** Infrastructure and notification requests refuse redirects to another origin. Configure the final notification URL directly when a receiver redirects elsewhere. +- **Webhook handling exposes less.** Receiver text, private template content and unsafe retry hints stay out of logs. Saved secrets remain masked, and destination checks reject forbidden IPv4 addresses embedded in IPv6. +- **Demo restrictions remain enforced.** WebSocket headers cannot bypass blocked changes, and profiling endpoints are hidden on demo instances. +- **Security status reflects exposure.** Plain HTTP is critical when Pulse is publicly reachable. Private-network installations receive an HTTPS recommendation. +- **Sign-in settings update consistently.** SSO changes publish together after saving, avoiding mixed settings during concurrent sign-ins. Session, settings and logout changes reject read-only HTTP methods. + +## Other improvements + +- **Tables behave predictably.** Selecting text no longer toggles rows, expanded details span visible columns, and workload selection no longer restores an obsolete scroll position. +- **Kiosk views show more monitoring.** Filter toolbars and section tabs are hidden, and table preview limits are lifted. +- **Controls are easier to read.** Light-mode banners have stronger contrast, disabled toggles show their actual state, and Manage explains each operator control in plain language. +- **Connections are easier to check.** Infrastructure entries open the platform showing that system's data. Proxmox, PBS and Mail Gateway connection tests use edited certificate settings with saved credentials before you save changes. +- **Logs stay responsive.** Slow viewers no longer block server logging, and the browser batches incoming lines. Pause, clear and download controls explain their effects. +- **Views can be bookmarked.** Patrol and Actions have dedicated routes, and links to Patrol's mode selector open the relevant control. +- **Troubleshooting gives safer next steps.** Guides cover guest backup safety, PBS permissions, Kubernetes credentials, OIDC, CORS and NAS setup, with bounded checks that keep credentials private. +- **Bug reports need less guesswork.** Guidance separates monitored guests from the Pulse server, explains damaged tokens without needless replacement, and makes specialist diagnostics optional. +- **Audit requests fail clearly.** Malformed export and summary time filters are rejected, while concurrent tenant incident records keep distinct identifiers. +- **The GitHub star prompt is less abrupt.** It appears on the first return day with clearer presentation. +- **Optional telemetry explains more usage.** Preview includes counts of successful extended-history reads and aggregate report outcomes and repeat use. Resource identities and readings stay excluded, and opt-out is respected. +- **Dependencies include security fixes.** Go, networking and frontend dependencies are updated. Production styling also works under Pulse's content security policy, and unsupported email reply-to and retry controls are removed. + +## Known issues + +- **Guest safety remains under investigation.** These changes do not confirm a fix for every guest freeze or Windows restart. If monitoring was stopped after a guest froze, do not restart it solely to test this beta or this release. +- **Affected backups still need precautions.** Stop Pulse monitoring before a planned backup. Keep it stopped until the backup ends and independent checks confirm thaw, fresh writes on every backed-up filesystem and workload liveness. +- **Elevated server memory remains unresolved.** Reduced allocation work does not confirm a lower long-running baseline. Report higher steady usage as well as continued growth, comparing existing readings at similar uptimes and workloads. + +## Before you upgrade + +- Windows Unified Agent binaries are not Authenticode-signed while SignPath remains unavailable and may show an Unknown Publisher warning. Verify downloads with the published checksums and detached signatures. +- Pulse Mobile is being retired on 31 March 2027. It keeps working until then. For alerts on your phone afterwards, add an ntfy, Gotify, or Pushover destination, and open Pulse in your phone's browser. Relay is no longer sold, and existing Relay subscribers now have Pro features at their current price. This candidate does not require a companion mobile release. +- The rollback target is stable `v6.5.0`. On systemd and Proxmox LXC installs, use this command only when `/bin/update` was installed by the Pulse server installer: `sudo /bin/update --version v6.5.0` to return to the previous stable release. For Docker Compose, pin `rcourtman/pulse:6.5.0` and recreate the container. diff --git a/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md.visuals.json b/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md.visuals.json new file mode 100644 index 0000000000..dc2038ee88 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md.visuals.json @@ -0,0 +1,5 @@ +{ + "schema_version": 1, + "captures": [], + "decision": "Zero captures: the notes describe the changes in text." +} diff --git a/docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md b/docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md new file mode 100644 index 0000000000..6ffaa5b495 --- /dev/null +++ b/docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md @@ -0,0 +1,498 @@ +# Pulse v6.6.0-rc.5 + +This changelog describes the changes since `v6.5.0`. Stable `v6.5.0` remains the rollback target. + +## Changes since v6.5.0 + +- Cluster retained metrics storage to remove chart row lookups (#3070) +- Keep guest HTTP tests on namespaced fixture identities (#3069) +- Stabilize private bootstrap and guest-agent HTTP fixtures (#3068) +- Register the focused workload chart idle-worker proof (#3066) +- Reduce retained chart read overhead (#3063) +- Record maintenance qualification and remaining recovery evidence (#3062) +- Keep monitoring readings, trusted connections and recovery guidance reliable (#2888) +- Measure workload chart generation in performance guards (#3053) +- Fix notification failure diagnosis and response completion (#3052) +- Fix SMTP LOGIN compatibility and authentication negotiation (#3051) +- Reconcile reliability roadmap and exit evidence (#3050) +- Fix notification connectivity fallback and DNS cancellation (#3049) +- Track recovery and change gaps after reliability (#3048) +- Fix SMTP provider authentication and isolate delivery envelopes (#3045) +- Document recovery and change investigation gaps (#3046) +- Add aggregate reporting outcomes and repeat-use telemetry (#3044) +- Release v6.6.0-rc.4 (#3043) +- Add scheduled client backup health reports (#3041) +- Keep instance administration away from org-bound API tokens (#3040) +- Schedule the existing VM inventory CSV export (#3039) +- Scope report metrics to the requesting organization (#3037) +- Deliver websocket events only to the organization that owns them (#3031) +- Keep the metrics DB path override on the default org (#3036) +- Judge Assistant read commands by their arguments, not first word (#3032) +- Make scheduled report delivery visible and recoverable (#3035) +- Keep instance administration away from organization owners (#3033) +- Stop tenant monitor lookups falling back to the default org (#3034) +- Keep the Pro runtime switch off stable-channel prereleases (#3030) +- Supply GNU ln to macOS Linux installer fixtures (#3020) +- Keep last-known PMG backups when backup reads fail (#3028) +- Renew QGA fallback eligibility only from real agent replies (#3029) +- Stop calling an LXC's Proxmox listing memory cache-inclusive (#3017) +- fix: keep main-loop leaked tool call from ending an investigation (#3016) +- Keep installer lookup Last seen ticking on the shared clock (#3025) +- Treat empty pct list output as an empty LXC inventory (#3027) +- Read agentless LXC listing memory as real pressure in Patrol (#3021) +- Make the Upstart teardown harness independent of umask (#3026) +- Keep connection alerts running after a monitor reload (#3024) +- Stop sibling guest poll tests depending on host speed (#3015) +- Require an instance admin to replace instance credentials; check embedded IPv4 in webhook guard (#3013) +- Read diagnostics token inventory under the config lock (#3014) +- Fix action-runner setup after collector TLS trust recovery (#3010) +- Keep shared Proxmox login alive when its starter cancels (#3009) +- fix(api): publish SSO config changes as immutable snapshots (#3018) +- Stage server update archives on the install filesystem, not /tmp (#3006) +- Keep token, doctor and drawer ages ticking on the shared clock (#3008) +- Keep reconciling preview when stable convergence evidence is gone (#3000) +- fix: keep streamed chat summary prefix before a leaked tool call (#3004) +- Guard Docker update alerts against the daily resolve loop (#3002) +- Read CORE pool capacity from top-level vdev stats (#3001) +- Fix connection tests ignoring edited SSL settings (#2999) +- Release v6.6.0-rc.3 (#2997) +- Count successful history reads beyond seven days (#2996) +- Record the bounded unattended recovery comparison (#2995) +- Keep incomplete investigations eligible for scheduled follow-up (#2994) +- Record remaining unattended investigation qualification gap (#2993) +- Release v6.6.0-rc.2 (#2992) +- Accept PMG 9 cluster ids and stop guessing backup nodes (#2991) +- Give Alert History's free width to the message (#2990) +- Reconcile uncertain restarts and keep Patrol follow-up available (#2989) +- Say delivery is turned off, not never turned on (#2988) +- Show a PBS server's host stats once in Backups (#2987) +- Name the notification switch the same in both states (#2986) +- Resume Patrol's persisted schedule after restart (#2985) +- Keep historical fix results from closing recurring findings (#2984) +- Order the endpoint step as address, then name (#2982) +- Fix Docker child aliases that block command host routing +- Ask for the node endpoint before its name (#2979) +- Clear the stale reader marker between PTY test phases (#2978) +- Stop setup reporting a false usage-statistics failure (#2976) +- Read canonical backup inventory in investigations (#2977) +- Link alert notifications to the alert in Pulse (#2975) +- Restore collected backup and storage evidence in investigations (#2973) +- Open one alert in Alert History from a link (#2974) +- Title the alerts Schedule page Delivery Schedule (#2972) +- Show Alert History as cards when its card is too narrow (#2971) +- Keep release visuals near highlights and collapse upgrade guidance (#2970) +- Match the History Resource button by its full name in E2E (#2969) +- Name Alert History row controls after their alert (#2968) +- Improve release highlights and reusable screenshot evidence (#2966) +- Link the action review to the resource it acts on (#2965) +- Label the alert frequency axis with round local times (#2967) +- Open Patrol's thresholds link on the resource's own row (#2963) +- Open a Patrol decision's resource on the page that shows it (#2962) +- Say a silent agent stopped reporting, not that its host is offline (#2961) +- Release v6.6.0-rc.1 (#2959) +- Name every alert threshold control for assistive tech (#2958) +- Say why a backup shield is amber and link to its limit (#2957) +- Colour Alert History frequency bars by severity (#2956) +- Read TrueNAS and vSphere states in their dot's colour (#2955) +- Name Swarm rollouts truly and colour the cells behind each dot (#2952) +- Colour Kubernetes status words by their dot, from one platform helper (#2954) +- Open a Proxmox storage alert's pool on the Storage page (#2953) +- Link connected systems to the page that shows their data (#2950) +- Let a paid community install switch to the Pro runtime (#2949) +- Colour a network's attached-container state words by their dot (#2948) +- Give a Docker network row one dot for what is on it (#2947) +- Filter a network's running containers by Docker's run state (#2946) +- Colour a crash-looping container's dot by its restart verdict (#2945) +- Read a container's state under its name on narrow phones (#2944) +- Colour a container with no reported state by its unified status (#2938) +- Offer the update itself beside an available update in Worth checking (#2937) +- Colour a container drawer's status dot by its health, as the row does (#2935) +- Give agent, container and Docker host drawers the Proxmox Overview (#2934) +- Name where History readings came from instead of always "stored" (#2933) +- Band and fold the storage History charts like the drawer charts (#2932) +- Stop History chart axis labels crowding or repeating (#2931) +- Repair the remaining drawer and storage history browser proofs (#2928) +- Keep Retry focus handoff working in Chromium; repair seven proofs (#2927) +- Give the GitHub star prompt a warmer presentation (#2926) +- Drop the history Refresh button and chart only a resource's own alerts (#2925) +- Repair the PBS drawer browser fixture and its two proofs (#2924) +- Show one chart panel in phone drawers and the rest on request (#2923) +- Name history ranges the same way in every range picker (#2921) +- Release v6.6.0-beta.3 (#2922) +- Show storage pool and disk history in the detail itself (#2920) +- Accept cumulative prerelease changelog bases (#2919) +- Chart history on Overview in Docker host and resource drawers (#2918) +- Show each bucket's min-max range behind drawer chart lines (#2917) +- Chart drawer history on Overview and drop the History tab (#2913) +- Record the daily beta release cadence (#2914) +- Drop guest row captions that repeat an empty cell (#2912) +- Explain denied Proxmox update checks in node details (#2878) +- Use one primary CPU temperature rule everywhere (#2911) +- Make drawer charts and attention readable at a glance (#2910) +- Treat a denied update check as a setting and wrap node details (#2909) +- Keep one timeline per resource in mock chart history (#2908) +- Keep drawer History dots round and its readout steady (#2907) +- Open drawer History on the week below the 24h trend cards (#2906) +- Consolidate shared contracts and retire obsolete obligations (#2904) +- Consolidate installer and settings contract ownership (#2903) +- Honour recurring and descendant maintenance in Patrol findings (#2902) +- Lead the guest and node drawers with alerts and 24h trends (#2900) +- Say what each Manage control does in plain words (#2901) +- Stop timing the route normaliser rows that flip with layout (#2899) +- Scope Patrol's expected-offline silence to availability (#2898) +- Annotate memory provenance on the per-node LXC fallback (#2896) +- Open the guest a filesystem alert belongs to (#2895) +- Open the guest an alert names from the Alerts overview (#2894) +- Preserve canonical resource ownership in Assistant (#2892) +- Use explicit governance qualification and evidence (#2891) +- Point release pages at GitHub's comparison with a Source comparison section (#2890) +- Keep workload identity stable across node moves (#2882) +- Send unreachable Patrol providers to Provider & Models (#2889) +- Set up Patrol on the Patrol page (#2887) +- Hide History sliders for mouse inspection (#2885) +- Default Pro Patrol to Ask first until a mode is chosen (#2884) +- Keep guest backup readings current and preserve safe recovery (#2883) +- Show the GitHub star prompt on the first return day (#2881) +- Preserve agent recovery and show trustworthy guest and backup evidence (#2880) +- Clarify current contract and validation ownership (#2879) +- Consolidate current Discovery contract ownership (#2877) +- Release v6.6.0-beta.2 (#2876) +- Warm the pulse-agent build before the pinned release API shards (#2875) +- Make guest-read safety explanations readable without hover (#2874) +- Unify alert metric editing across responsive layouts (#2873) +- Keep guest readings current and preserve recovery during agent removal (#2872) +- Restore Patrol's Safe auto-fix and Autopilot modes (#2871) +- Release v6.6.0-beta.2 (#2870) +- Teach the pre-release metadata test about a second beta (#2869) +- Explain backup freshness without changing alert policy (#2868) +- Retry registry reads when verifying release container images (#2866) +- Retire Patrol's Safe auto-fix and Autopilot modes (#2863) +- Retire the obsolete governed worktree workflow (#2865) +- Share demo generation and stabilize workload parent groups (#2861) +- Retry the release listing so a GitHub 504 cannot fail a release (#2862) +- Keep guest readings and recovery guidance trustworthy (#2825) +- Release v6.6.0-beta.1 (#2860) +- Treat no matching unit files as an empty service inventory (#2859) +- Remove AI Discovery (#2848) +- Let backup health counts filter Coverage to their workloads (#2857) +- Keep phone alert rows to one action row (#2856) +- Read staged governance inputs from the Git index (#2852) +- Release v6.6.0-beta.1 (#2853) +- Advance the Go toolchain to 1.26.9 and x/net to v0.60.0 (#2849) +- Keep the phone backup indicator from taking over guest rows (#2850) +- Wait for reporting hook loads instead of counting ticks (#2847) +- Release v6.6.0-beta.1 (#2846) +- Release v6.6.0-beta.1 (#2845) +- Let the release metadata tests accept beta versions (#2844) +- Update source-map-js in the Cloud portal lockfile to 1.2.2 (#2843) +- Show diagnostics callers only the API tokens they may manage (#2841) +- docs: describe the token authority rules that now ship (#2842) +- Require ai:execute for AI narration of reports by token (#2836) +- Keep token management inside the caller's organizations (#2837) +- Make alert threshold Off stick for Docker, PMG and backups (#2839) +- Require instance-wide authority to rotate credentials by token (#2838) +- Require an admin for non-token agent uninstall (#2833) +- docs: state the scopes for token regeneration and resource links (#2834) +- Admit attention lifecycle POSTs on the mutation scope (#2832) +- docs: stop labelling free Patrol routes as Pro (#2831) +- Stop token callers widening or bypassing their scopes (#2830) +- docs: correct API reference auth labels and add missing routes (#2829) +- docs: correct customer docs that drifted from the source (#2826) +- Remove the Assistant mutation handlers nothing calls (#2824) +- Recover Windows guest readings and keep monitoring evidence trustworthy (#2817) +- Give Alert History messages room to wrap instead of truncating (#2823) +- Say when a Proxmox guest's memory reading may include cache (#2820) +- Make the first-run Infrastructure screen readable and truthful (#2819) +- Keep end-to-end sign-in and agent removal checks reliable (#2816) +- Record why a disk's operator state does not follow its ID (#2815) +- Keep tenant cleanup safe and preserve unattended-update completion evidence (#2814) +- Keep notification recovery feedback in its view and release discarded history storage (#2813) +- Bound alert-history caching and keep updater tests and agent help accurate (#2812) +- Keep updates recoverable and alert settings and History trustworthy (#2795) +- Rebuild the mock view when only a link's creation time changes (#2811) +- Stop pin succession erasing an operator split (#2810) +- Keep a remediation lock readable on an ID a succession retired (#2809) +- Drop the dead inputs from useWorkloadsState (#2807) +- Port the inline selection scroll E2E spec to the platform pages (#2803) +- Stop the Windows polling contract depending on host speed (#2804) +- Build the mock linked view at the rebuild's link boundary (#2799) +- Require page-owned state on WorkloadsSurface (#2802) +- Drop the unread postures response meta from the frontend (#2801) +- Stop mock-mode callers that read identity rebuilding the estate view (#2798) +- Keep a remediation lock when a reporter gains an identity key (#2800) +- Hide section tabs and lift table preview caps in kiosk (#2797) +- Carry the PBS-reported node name into the connections ledger (#2794) +- Fold chained manual links the same way in any link order (#2793) +- Keep an operator-split host pair as two rows in the browser (#2792) +- Carry operator decisions across a rebuild that cannot read them (#2791) +- Keep guest disk totals, email settings and recovery guidance trustworthy (#2790) +- Keep a split PVE disk off the agent's SMART row (#2789) +- Judge adaptive-polling freshness by the scheduler's cadence (#2788) +- Drop the unread points response meta from the recovery decode (#2787) +- Stop monitoring linking a node to an agent the operator split off (#2786) +- Keep a remediation lock across links and ID successions (#2783) +- Open the Patrol mode selector when a link lands on its anchor (#2784) +- Admit human action dispatch under the policy coordinator (#2781) +- Stop Storage group headers pinning the group they collapse (#2782) +- Undo only the links that hold a reported source in report-merge (#2780) +- Preserve notification edits and truthful monitoring recovery (#2768) +- Stop mock target lookups rebuilding the estate view per tick (#2778) +- Remove the inert Assistant Protected guests setting (#2776) +- Hide every filter toolbar in kiosk mode (#2779) +- Judge connection freshness by the monitor's live poll cadence (#2774) +- Stop TempDir-backed alert managers in two tests (#2775) +- Trim useRecoveryPoints to what the TrueNAS Protection tab reads (#2773) +- Show drawer identity values whole instead of cutting them (#2772) +- Correct Patrol mode selector and dialog contract prose (#2771) +- Drop audit rules whose replacement modules were deleted (#2770) +- Keep guest memory and issue reports truthful (#2767) +- Keep guest memory readings and issue versions accurate, with complete parallel CI smoke checks (#2766) +- Make Assistant planning controls and guest-memory reporting guidance accurate (#2765) +- Keep guest memory evidence honest across AI queries and observers (#2764) +- Keep Patrol guest memory warnings grounded and reject native image drift earlier (#2763) +- Keep alert timing and workload attribution truthful and notification redirects private (#2761) +- Preserve certificate trust and keep guest readings and AI controls honest (#2760) +- Keep guest readings, monitoring and update recovery trustworthy (#2576) +- Fix Patrol investigation of host filesystem alerts (#2754) +- Clarify unavailable Docker container updates (#2753) +- Drop audit rules and allowlist entries for deleted recovery modules (#2752) +- Remove recovery exports and fallbacks the Recovery page left dead (#2750) +- Remove WorkloadsSurface's unreachable built-in filter toolbar (#2749) +- Let an operator split override a Proxmox node's agent link (#2741) +- Let a clean full Patrol clear the stale coverage caveat (#2697) +- Point dev:verify at the Proxmox backups layout spec (#2747) +- Honour operator splits in the linked physical disk join (#2748) +- Judge PBS and PMG freshness by the live polling interval (#2746) +- Apply operator links in the mock-mode unified view (#2732) +- Judge resources API freshness by the monitor's thresholds (#2745) +- Remove the summary chart routes no client calls (#2720) +- Start fresh installs with factory Docker alert thresholds (#2683) +- Point Patrol trigger contracts at the Patrol settings page (#2691) +- Resolve saved hosts an operator link joins to the link's primary (#2744) +- Resolve Patrol finding references before reading operator state (#2743) +- Resolve references to resources a manual link folded (#2721) +- Record the browser pass for main's merged Patrol state hook (#2742) +- Remove test-only Patrol autonomy save helpers (#2740) +- Stop Workloads row focus staging a stale shell scroll restore (#2736) +- Split operator-linked resources when a merge is reported (#2739) +- Remove the unreachable Workloads chart visibility toggle (#2734) +- Stop Patrol fetching the circuit-breaker status nobody reads (#2704) +- Drop Patrol state members no surface reads (#2695) +- Colour pulse-relaxed guests by the thresholds their alerts use (#2735) +- Stop Storage scrolling back to open pools and reopening groups (#2733) +- Bind SAML logins to the browser that started them (#2729) +- Wrap long identity chips inside phone drawers (#2731) +- Stop sending the ignored autonomous_mode chat field (#2730) +- Name sensor setup notice nodes the way the nodes table does (#2727) +- Drop the dead recovery serializer and its stale contract prose (#2728) +- Stop hidden tooltips and breakpoints listening to resize (#2724) +- Correct stale platform-page embed contract prose (#2726) +- Split a manually linked pair when the API unlinks it (#2725) +- Remove the unreachable Workloads group drawer and group pin (#2723) +- Retire the summary hover E2E spec pinned to removed surfaces (#2722) +- Pin each manual-link side from its own identity (#2719) +- Correct stale Storage embed and History range contract prose (#2718) +- Let only POST narrate single-resource reports with Pulse Assistant (#2716) +- Judge source merges by the ingest's stale thresholds (#2717) +- Drop the unused Patrol readiness-failure object behind the toggle toast (#2687) +- Stop tenant incident stores racing on shared ID counters (#2711) +- Remove unused CorrelationsResponse type (#2710) +- Alert on the Unraid temperature an agent disk shows (#2701) +- Drop the summary focus bridge members nothing reads (#2709) +- Hide pprof routes on demo-mode instances (#2708) +- Judge a linked agent's guest disks by that agent everywhere (#2712) +- Drop contract prose for the deleted problem-resource surfaces (#2706) +- Keep alert settings a config save leaves out (#2689) +- Judge pulse-relaxed guests by one threshold on poll and save (#2705) +- Raise Proxmox disk temperature alerts under the per-type policy (#2680) +- Count down to future Patrol times instead of reading just now (#2702) +- Fill the table's visible width with phone drawers (#2703) +- Require POST for Assistant session mutation routes (#2670) +- Judge filesystem alerts by their own threshold on config save (#2700) +- Remove unread Patrol summaryStats and its audit rule (#2690) +- Stop Patrol fetching the correlation list nobody reads (#2677) +- Read controller-member disk history at its written key (#2694) +- Remove dead Patrol assessment and save-failure handoffs (#2682) +- Keep Off alert defaults off after saving (#2684) +- Remove exports orphaned by the summary component deletions (#2671) +- Keep a low alert default's clear below its trigger (#2678) +- Remove test-only Patrol context summary helpers (#2674) +- Read the shared wall clock on Alerts overview cards (#2673) +- Keep platform metric alerts through Proxmox node cleanup (#2672) +- Read a silent in-guest agent's guest drawer readings as last known (#2669) +- Stop websocket upgrade headers exempting demo-mode writes (#2666) +- Refuse a seeded disk slot mapping when the disk was replaced (#2667) +- Show the outdated sensor setup notice on every Proxmox tab (#2668) +- Switch every running tenant monitor when mock mode flips (#2665) +- Rank a confirmed availability outage first in the summary check (#2664) +- Stop a failing availability check keeping a node online (#2663) +- Show retained disk temperatures as last known in drawers and tables (#2659) +- Drop the summary chart caches nothing reads (#2662) +- Keep same-serial disks on different machines apart (#2660) +- Keep watchdog, delivery log and Patrol ages moving (#2598) +- Lead open History rows with the live reading of held alerts (#2638) +- Stop a stale agent SMART row lending a replaced disk its identity (#2658) +- Judge disk heat under the reporting host's Disk Temp override (#2654) +- Keep fixture alerts from outliving a mock-mode switch (#2656) +- Show a silent agent's retained RAID state as last known (#2652) +- Stop reporting unavailable storage as disabled to AI tools (#2657) +- Remove status and disk helpers left unused by the selector removal (#2651) +- Stop QEMU default disk serials merging nested Proxmox disks (#2653) +- Remove contract prose and badge helpers for deleted surfaces (#2655) +- Remove the unreachable resource policy summary card (#2650) +- Remove exports orphaned by the unified resource table removal (#2649) +- Stop a replaced PVE disk inheriting the old disk's evidence (#2648) +- Show a remote unacknowledge in a tab that acknowledged locally (#2647) +- Own PVE disk alert history rows by recorded hardware (#2646) +- Pair a merged disk's temperature with its rows' own states (#2645) +- Show a silent agent's retained disk usage as last known (#2644) +- Keep a source's own offline verdict through the stale pass (#2643) +- Move static inline styles to classes the production CSP allows (#2642) +- Name disk wearout as life remaining and log disk alerts once (#2640) +- Stop reports and resource history calling a moved alert recovered (#2607) +- Lead alert cards and Patrol with the live reading of held alerts (#2637) +- Keep PVE disk alert references out of resource history (#2627) +- Replace stored alerts with each payload instead of merging (#2631) +- Give Docker containers and services without IDs their own alert refs (#2629) +- Keep the cleared history hint box so hovered guests stay put (#2624) +- Judge disk heat by the alert disk temperature thresholds (#2636) +- Keep retained disk temperatures out of AI, Patrol and reports (#2625) +- Show a host whose agent stopped reporting as offline (#2634) +- Raise disk health alerts for mock physical disks (#2633) +- Poll only the history each metric table renders (#2632) +- Call a disk that is only hot Running Hot, not Replace Now (#2623) +- Remove the unreachable host metric cells from grouped workload rows (#2622) +- Show real CPU low and record in the Proxmox node drawer (#2594) +- Keep a merged disk's temperature under its own row's state (#2618) +- Record Docker host, service and sub-resource alert history (#2620) +- Keep node temperatures off same-named nodes at other sites (#2617) +- Say a reviewed Patrol issue stays reviewed when suppression ends (#2615) +- Chart Net and Disk I/O in the row history lens (#2614) +- Show the live reading of threshold alerts held below trigger (#2567) +- Remove the never-mounted unified resource table (#2612) +- Settle slow polled reads and keep replication links honest (#2610) +- Judge disk risk only on a temperature collected now (#2611) +- Show retained disk temperatures as last known, not live (#2603) +- Stop serving retained disk temperatures as current readings (#2609) +- Record Proxmox and agent alert history on the canonical resource (#2608) +- Key previous Proxmox nodes by source ID so poll carry-overs match (#2604) +- Read a linked agent's own heartbeat in host snapshots (#2601) +- Stop presenting a silent agent's disk readings as collected (#2593) +- Record the browser pass for the combined Machines table (#2597) +- Show a moved alert as moved in Patrol, history and assistant (#2591) +- Tint Kubernetes node rows for their drawer's alerts (#2596) +- Clear agent disk temperature alerts when the disk leaves (#2595) +- Clear agent disk temperature alerts when their threshold is off (#2589) +- Carry a typed reason when an alert closes without recovering (#2580) +- Show each identifier once in the drawer's Identity card (#2590) +- Keep the availability result readable and give names room (#2588) +- Hand a node only the usage metrics its agent evaluates (#2581) +- Evaluate host agents in mock mode like live agents (#2585) +- Keep open row drawers spanning the table when columns change (#2571) +- Stop presenting a silent agent's node temperature as live (#2582) +- Give agent disk, array and sensor alerts their own resource type (#2583) +- Say what an agent update brings and what the CPU count is (#2584) +- Keep row, drawer and replication ages moving on the shared clock (#2578) +- Tint Docker host and Machines rows for their drawer's alerts (#2579) +- Dedup node alerts by agent link and keep node thresholds on save (#2577) +- Revalidate restored backup alerts before startup notifications (#2572) +- Stamp alert platforms so cards stop guessing the policy owner (#2574) +- Show open alerts in the Machines and Docker host drawers (#2575) +- Read platform alert Started as an age that keeps moving (#2573) +- Open an issue when the weekly signing preflight fails (#2570) +- Keep node temperature alerts when a host agent runs on the node (#2569) +- Run the release signing preflight every Monday (#2568) +- Show the vCenter column only when several are connected (#2566) +- Describe releases as the fixed release train everywhere (#2565) +- Link alert cards to their platform from incident metadata (#2564) +- Read vSphere activity as vCenter's own sentences (#2563) +- Collect LXC filesystems without pmxcfs or LXC socket IPC (#2562) +- Keep parent node identity out of Proxmox child aliases (#2561) +- Name vSphere, not Proxmox, as the owner of vSphere VM records (#2560) +- Say why vSphere datastores and networks need attention (#2559) +- Close the harness command client before Windows removes its state dir (#2558) +- Keep Docker update alerts open when the local digest is unknown (#2557) +- Stop the Restarts and Lifecycle headers clipping at tablet widths (#2555) +- Resolve masked webhook values per key and keep responses masked (#2556) +- Size Alert History columns to content so messages read (#2537) +- Bump golang in /.devcontainer (#2554) +- Register agent command channels under the identity Pulse resolves (#2550) +- Use the shared link and button primitives in two remaining spots (#2549) +- Paint the backgrounds the dead bg-base class dropped (#2548) +- Let agents without a command channel reduce their authority (#2547) +- Move three forms onto shared controls and draw the select arrow (#2546) +- Send built-in webhook template headers on real alerts (#2545) +- Show a Docker container's health check in its drawer (#2534) +- Keep paired PR benchmarks inside their time budget (#2544) +- Explain why the Container update risk switch is locked (#2541) +- Release v6.5.0 (#2536) +- Keep deployed agents' command channel across restarts (#2542) +- Keep agent-reported disks out of cluster member state (#2543) +- Keep Actions target names whole on narrow cards (#2539) +- Keep a disabled toggle's track visible and true to its state (#2535) +- Keep VM Discovery safe during backups and document precise Patrol rule removal (#2533) +- Give organization deletion time for a busy tenant loop to stop (#2529) +- Stop mock metrics seeding when its monitor is cancelled (#2532) +- Flag an outdated agent once on the Infrastructure page (#2531) +- Give Patrol autopilot tests their own session store (#2530) +- Reduce temporary memory churn in complete monitoring updates (#2527) +- Show Docker container health and uptime in the containers table (#2526) +- Keep the Proxmox guest Backup badge whole at laptop widths (#2525) +- Keep a text-selection drag from toggling table rows (#2524) +- Exchange the bootstrap token before any agent module starts (#2520) +- Keep Docker image names readable by their repository and tag (#2521) +- Copy Kubernetes names without a break between head and tail (#2522) +- Install cluster member agents in one step from a covered sibling (#2508) +- Preserve guest identity and History consistency with accessible backup evidence (#2518) +- Keep Docker update and Kubernetes node status badges whole (#2517) +- Keep the Docker image update badge readable at tablet widths (#2516) +- Bulk-edit Docker container links and hide edits from read-only tokens (#2515) +- Truncate platform summary cells inside their own column (#2514) +- Require empty subsystem default proof lists the guard never reads (#2512) +- Stop Kubernetes Config and Deployments tables clipping names (#2509) +- Stop Kubernetes names clipping at tablet widths (#2506) +- Retire the same-subsystem test wildcard the guards never honoured (#2505) +- Stop the SSE connect-snapshot test racing a queued duplicate (#2503) +- Read the guard's registry and contracts from the evaluated commit (#2504) +- Judge each commit's contract edit against that commit, not HEAD (#2502) +- Keep guest readings truthful and diagnostic help safe (#2486) +- Say why TrueNAS storage is unhealthy, drop the healthy pills (#2497) +- Point Audit Webhooks visitors to alert notifications (#2500) +- Call plain HTTP critical only when Pulse is publicly reachable (#2499) +- List every reason a resource needs attention in its drawer (#2498) +- Mark the alerting Mail Gateway number, keep rows single-line (#2496) +- Say which TrueNAS services and VMs should be running (#2495) +- Make availability checks agree across Settings and Machines (#2493) +- Show Mail Gateway alerts on the gateway they belong to (#2490) +- Explain backup protection in plain words (#2492) +- Reload the Patrol briefing E2E page by navigation on WebKit (#2491) +- Lead the Kubernetes overview with the nodes that are not Ready (#2489) +- Say when a Docker host goes silent, and stop repeating host columns (#2482) +- Make Patrol and Actions views linkable (#2488) +- Lead Notifications with where alerts go (#2487) +- Render light-mode banner and callout text at full strength (#2485) +- Lead the vSphere overview with vCenter's health signals (#2481) +- Lead alert thresholds with each group's default limits (#2484) +- Say what backup health counts mean and drop per-source age columns (#2483) +- Keep deferred guest readings, alerts and History truthful (#2472) +- Count alerting guests under Attention on the Proxmox overview (#2480) +- Add a bulk web-link editor to the workloads table (#2477) +- Turn the older-agent notice into one quiet line (#2479) +- Make the Alerts overview answer what is broken first (#2476) +- Lead the storage table with what is filling up, and say why (#2478) +- Stop repeating Kubernetes workload names in the demo (#2475) +- Open a guest's saved web interface from its drawer header (#2474) +- Label vSphere host groups with their cluster, not a VM (#2473) +- Keep guest monitoring truthful and preserve TrueNAS CORE inventory (#2471) +- Release v6.5.0-rc.1 (#2470) + +## Release Metadata + +- Version: `v6.6.0-rc.5` +- Previous candidate: `v6.6.0-rc.4` +- Previous stable: `v6.5.0` +- Rollback target: `v6.5.0` +- Rollback command: `sudo /bin/update --version v6.5.0` +- Promotion path: exact-SHA single-build release candidate from `main` +- Windows signing decision: prereleases publish checksum- and detached-signature-verified Windows agents without Authenticode while SignPath remains unavailable. Windows Unified Agent binaries may display an Unknown Publisher warning +- Mobile decision: `no-mobile-impact`. No governed mobile route, payload, Relay, pairing, approval, push or onboarding contract changed from `v6.5.0`, so no companion mobile build or store rollout is required diff --git a/frontend-modern/public/docs/UPGRADE_v6.md b/frontend-modern/public/docs/UPGRADE_v6.md index 482bb3f0df..6c9811d548 100644 --- a/frontend-modern/public/docs/UPGRADE_v6.md +++ b/frontend-modern/public/docs/UPGRADE_v6.md @@ -9,8 +9,8 @@ public Community downloads do not replace a private Pro build. For the current v6 release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.6.0-rc.4.md` -- `docs/releases/V6_CHANGELOG_v6.6.0-rc.4.md` +- `docs/releases/RELEASE_NOTES_v6.6.0-rc.5.md` +- `docs/releases/V6_CHANGELOG_v6.6.0-rc.5.md` For the current stable v6 packet, see: diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 19e7c5ba56..82bb8498c2 100755 --- a/scripts/install-docker.sh +++ b/scripts/install-docker.sh @@ -6,7 +6,7 @@ set -euo pipefail SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" DOCKER_IMAGE_REPO="${DOCKER_IMAGE_REPO:-rcourtman/pulse}" -CANONICAL_DEFAULT_PULSE_VERSION="6.6.0-rc.4" +CANONICAL_DEFAULT_PULSE_VERSION="6.6.0-rc.5" resolve_default_pulse_version() { if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then