mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-09 18:15:50 +00:00
Prepare v6.4.0-rc.4 release
This commit is contained in:
@@ -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.4.0-rc.3
|
||||
appVersion: "6.4.0-rc.3"
|
||||
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.3/docs/images/pulse-logo.svg
|
||||
version: 6.4.0-rc.4
|
||||
appVersion: "6.4.0-rc.4"
|
||||
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.4/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.4.0-rc.3/docs/KUBERNETES.md
|
||||
url: https://github.com/rcourtman/Pulse/blob/v6.4.0-rc.4/docs/KUBERNETES.md
|
||||
- name: Support
|
||||
url: https://github.com/rcourtman/Pulse/discussions
|
||||
artifacthub.io/maintainers: |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# pulse
|
||||
|
||||
  
|
||||
  
|
||||
|
||||
Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent.
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ version: '3.8'
|
||||
|
||||
services:
|
||||
pulse:
|
||||
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.3}
|
||||
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.4}
|
||||
container_name: pulse
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
|
||||
@@ -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 (the current v6 support release candidate packet), see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.3.2.md`
|
||||
@@ -19,10 +19,12 @@ For the preceding stable v6 packet, see:
|
||||
- `docs/releases/V6_CHANGELOG_v6.3.1.md`
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
|
||||
|
||||
For the earlier v6.4 release candidate packet, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.1.md`
|
||||
|
||||
|
||||
+7
-5
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
|
||||
|
||||
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
|
||||
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
|
||||
|
||||
For the earlier v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.1.md`
|
||||
|
||||
|
||||
@@ -1774,25 +1774,29 @@ diagnostics. The same release workflow also executes the generated self-signed
|
||||
and custom-CA Windows installer commands through Windows PowerShell 5.1 before
|
||||
release assembly, so the first HTTPS fetch is release proof rather than a
|
||||
string-shape assertion.
|
||||
The active prerelease `v6.4.0-rc.3` cut sets the repo-root `VERSION`, repo-root
|
||||
The active prerelease `v6.4.0-rc.4` cut sets the repo-root `VERSION`, repo-root
|
||||
`docker-compose.yml` image default, `scripts/install-docker.sh` fallback, and
|
||||
Helm chart release metadata to the same `6.4.0-rc.3` release version. It follows
|
||||
`v6.4.0-rc.2` on the published `v6.4.0` candidate line. This prerelease keeps
|
||||
Helm chart release metadata to the same `6.4.0-rc.4` release version. It follows
|
||||
`v6.4.0-rc.3` on the published `v6.4.0` candidate line. This prerelease keeps
|
||||
`rollback_version=v6.3.2`, publishes a versioned public GitHub prerelease
|
||||
plus versioned Docker and Helm artifacts, and does not move stable/latest
|
||||
install pointers or stable semver aliases. The candidate makes large-estate
|
||||
workload, infrastructure, storage, and platform rendering incremental;
|
||||
canonicalizes table, drawer, touch, disclosure, sorting, and navigation
|
||||
behavior; adds notification delivery history and a least-privilege agent
|
||||
profile; provides deliberate Docker and Kubernetes re-enrolment recovery; and
|
||||
fixes metrics-history retention, Patrol startup recovery, backup pagination,
|
||||
stale storage and stale container-health presentation, and backup scope
|
||||
persistence. API-only Proxmox nodes also retain node metrics history without
|
||||
presenting agent-only disk I/O. The changes since `v6.4.0-rc.2` do not require a Pulse Mobile
|
||||
install pointers or stable semver aliases. The candidate moves resources,
|
||||
Connected infrastructure, and active alerts onto keyed per-client deltas;
|
||||
defers expensive realtime merges during operator input; preserves windowed-row
|
||||
identity across reordered snapshots; and isolates REST recovery from the
|
||||
websocket delta baseline. It also restores Proxmox network details, hardens
|
||||
backup and drawer history targeting, clears committed notification delivery
|
||||
warnings immediately, and keeps supported Proxmox VM/LXC lifecycle requests on
|
||||
the governed action path without a QEMU guest-agent prerequisite or manual
|
||||
command fallback. The changes since `v6.4.0-rc.3` do not require a Pulse Mobile
|
||||
client change and preserve
|
||||
the existing mobile, Relay, onboarding, and mobile-facing API contracts, so the
|
||||
server cut is classified `no-mobile-impact`; no companion upload or public
|
||||
mobile-store rollout is part of this candidate. The prerelease Windows path
|
||||
mobile-store rollout is part of this candidate. The canonical mobile
|
||||
compatibility projection and route/method/scope, request/response, pairing, and
|
||||
push checks passed against Pulse Mobile revision
|
||||
`57353a83eb950d1102c90074aa8fe67e1559685b`, iOS build 12, and Android build 9.
|
||||
The prerelease Windows path
|
||||
retains exact-SHA, checksum, and detached-signature verification without
|
||||
Authenticode. Stable `v6.4.0` also skips SignPath under the standing unavailable
|
||||
policy and retains the same exact-SHA, checksum, detached-signature, manifest,
|
||||
@@ -1801,9 +1805,15 @@ only after the release owner explicitly confirms that production credentials
|
||||
and certificate authorization are ready and a reviewed policy/code change
|
||||
restores it.
|
||||
|
||||
The preceding `v6.4.0-rc.3` cut published from exact source SHA
|
||||
`cf0ca6f127540e9997c2eb97eeed32f27619d242`. Its tag and versioned artifacts
|
||||
remain immutable; `v6.4.0-rc.4` supersedes it without moving stable install
|
||||
pointers or stable semver aliases from `v6.3.2`.
|
||||
|
||||
The preceding `v6.4.0-rc.2` publication attempt built and staged the exact
|
||||
candidate artifacts but failed release convergence before public activation.
|
||||
Its tag is immutable and the candidate is superseded by `v6.4.0-rc.3`; stable
|
||||
Its tag is immutable and the candidate is superseded by later `v6.4.0`
|
||||
prereleases; stable
|
||||
install pointers and stable semver aliases remained on `v6.3.2`.
|
||||
|
||||
The preceding prerelease `v6.4.0-rc.1` cut set the repo-root `VERSION`,
|
||||
@@ -2237,8 +2247,8 @@ For the active stable `v6.1.2` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.1.2` whenever the
|
||||
governed `VERSION` is that stable cut. The stable promotion guard remains in
|
||||
force and rejects leftover `-rc.` defaults.
|
||||
For the active prerelease `v6.4.0-rc.3` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.3` until the next
|
||||
For the active prerelease `v6.4.0-rc.4` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.4` until the next
|
||||
governed stable cut moves them forward. Each new release moves
|
||||
these two pins together with the repo-root `VERSION` and the Helm chart metadata
|
||||
in the same commit; a cut that leaves any of the four on a superseded value is a
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# Pulse v6.4.0-rc.4 Release Notes
|
||||
|
||||
`v6.4.0-rc.4` is a release candidate for the next v6 minor release. It fixes two customer-reported trust issues, restores several Proxmox views, and makes live large-estate screens steadier while data is changing.
|
||||
|
||||
## What's improved
|
||||
|
||||
- **Steadier large-estate screens** — Resource, infrastructure, and alert updates now use keyed deltas. Pulse defers expensive live merges while an operator is interacting, then applies the queued state afterward.
|
||||
- **Smaller resource snapshots** — Repeated capability descriptions and default policy metadata are deduplicated without changing the resource shape consumed by the web interface.
|
||||
- **More useful workload tables** — Workload IDs can be sorted, columns can be resized deliberately, and header alignment remains stable across the table.
|
||||
- **Restored Proxmox network details** — Node network interfaces and their configuration are visible again in the Proxmox detail view.
|
||||
- **Clearer operational API access** — API token scopes now expose the governed agent-lifecycle capability used for lifecycle operations.
|
||||
|
||||
## Fixes
|
||||
|
||||
- Delivery warnings now clear as soon as the committed notification queue becomes healthy after a retry, dismissal, cancellation, or successful delivery ([#1761](https://github.com/rcourtman/Pulse/issues/1761)).
|
||||
- Assistant no longer treats the QEMU guest agent as a prerequisite for governed Proxmox VM or LXC lifecycle actions, and no longer redirects supported requests to manual `qm` or `pct` commands ([#1782](https://github.com/rcourtman/Pulse/issues/1782)).
|
||||
- Keyed resource rows retain their identity when full snapshots arrive in a different order, and REST recovery no longer contaminates the websocket delta baseline.
|
||||
- Proxmox backup rows keep the correct alert attribution, filter by repository correctly, and hydrate reliably when backup data arrives after the initial page state.
|
||||
- Docker container history keeps the selected container identity across filtered refreshes.
|
||||
- Workload and infrastructure drawers use the canonical history target, preventing one resource from showing another resource's metrics.
|
||||
- Mock storage and workload histories preserve continuity so release render checks exercise the same stable chart behavior as a live runtime.
|
||||
- Proxmox network detail formatting and offline-node browser coverage are back under their qualified checks.
|
||||
|
||||
## Before you upgrade
|
||||
|
||||
- This is a release candidate. Stable installations remain on v6.3.2 unless an operator explicitly selects this version.
|
||||
- Existing configurations remain valid and no manual data migration is required.
|
||||
- Pulse Mobile does not consume the changed browser resource stream. The canonical route, request/response, pairing, and push compatibility checks passed against Pulse Mobile 1.0.0 build 12 on iOS and build 9 on Android, so no companion update is required.
|
||||
- Windows Unified Agent binaries are checksum- and detached-signature-verified but are not Authenticode-signed, so Windows may show an Unknown Publisher warning.
|
||||
|
||||
## Known issues
|
||||
|
||||
- Windows Authenticode signing remains unavailable for this candidate; use the published checksum and detached signature when verifying Windows agent downloads.
|
||||
@@ -0,0 +1,66 @@
|
||||
# Pulse v6.4.0-rc.4
|
||||
|
||||
_This changelog describes the changes since `v6.4.0-rc.3` included in
|
||||
`v6.4.0-rc.4`._
|
||||
|
||||
## Added
|
||||
|
||||
- API token scope presentation includes the governed agent-lifecycle scope.
|
||||
- Workload tables support deliberate column-width persistence and sorting by
|
||||
workload ID.
|
||||
- Webhook presentation retains stable message keys and explicit resource
|
||||
context for language-neutral downstream handling.
|
||||
|
||||
## Changed
|
||||
|
||||
- Resources, connected-infrastructure entries, and active alerts use per-client
|
||||
keyed deltas. Unkeyed or missing-baseline transitions fail safely to a full
|
||||
payload instead of attempting a partial merge.
|
||||
- Browser resource ingestion deduplicates capability catalogs, default policy
|
||||
posture, AI-safe summaries, and self-alias identity entries while restoring
|
||||
the existing consumer shape at the ingestion boundary.
|
||||
- Realtime resource application defers during operator input and coalesces the
|
||||
queued changes after the gesture. Windowed workload, storage, and platform
|
||||
rows preserve identity while scrolling and while reordered snapshots arrive.
|
||||
- REST state recovery is isolated from the websocket baseline, so a late REST
|
||||
response cannot advance or replace the per-connection delta source of truth.
|
||||
- History drawers resolve canonical storage, Docker, host, VM, and container
|
||||
targets before querying metrics, including mock and API-only source paths.
|
||||
|
||||
## Fixed
|
||||
|
||||
- Notification queue health is reconciled immediately after committed queue
|
||||
transitions, clearing stale delivery system alerts after retry, dismissal,
|
||||
cancellation, purge, or successful delivery
|
||||
([#1761](https://github.com/rcourtman/Pulse/issues/1761)).
|
||||
- Proxmox VM/LXC lifecycle actions remain available through the governed action
|
||||
path without a QEMU guest-agent prerequisite. Assistant grounding no longer
|
||||
suggests manual `qm`/`pct` fallback for supported lifecycle requests
|
||||
([#1782](https://github.com/rcourtman/Pulse/issues/1782)).
|
||||
- Proxmox node network details render again and retain browser-qualified layout
|
||||
coverage.
|
||||
- Backup recovery data retains the correct source attribution, repository
|
||||
filter, and delayed-hydration state.
|
||||
- Docker container history retains its selected target through filtered
|
||||
refreshes, and workload drawer history no longer crosses resource identities.
|
||||
- Keyed platform rows retain component identity when a full snapshot reorders
|
||||
otherwise unchanged entries.
|
||||
- Mock storage and workload histories preserve continuity across refreshes.
|
||||
- Offline-node E2E coverage returned to the qualified stable tier after its
|
||||
repaired proof passed.
|
||||
|
||||
## Release Metadata
|
||||
|
||||
- Version: `v6.4.0-rc.4`
|
||||
- Previous candidate tag: `v6.4.0-rc.3`
|
||||
- Previous stable: `v6.3.2`
|
||||
- Rollback target: `v6.3.2`
|
||||
- Rollback command: `./scripts/install.sh --version v6.3.2`
|
||||
- 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 may show an Unknown Publisher warning
|
||||
- Mobile decision: `no-mobile-impact`; the changed keyed stream is a browser
|
||||
transport and the canonical core/mobile contract passed against Pulse Mobile
|
||||
revision `57353a83eb950d1102c90074aa8fe67e1559685b`, iOS build 12, and Android
|
||||
build 9, so no companion build or public store rollout is required
|
||||
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
|
||||
|
||||
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
|
||||
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
|
||||
|
||||
For the earlier v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.1.md`
|
||||
|
||||
|
||||
@@ -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.4.0-rc.3"
|
||||
CANONICAL_DEFAULT_PULSE_VERSION="6.4.0-rc.4"
|
||||
|
||||
resolve_default_pulse_version() {
|
||||
if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then
|
||||
|
||||
@@ -887,12 +887,11 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
|
||||
"## Fixes",
|
||||
"## Before you upgrade",
|
||||
"## Known issues",
|
||||
"notification delivery",
|
||||
"least-privilege",
|
||||
"Saved views have been removed",
|
||||
"MSP evaluation mode",
|
||||
"Business tier",
|
||||
"API-only Proxmox nodes now retain node metrics history",
|
||||
"keyed per-client deltas",
|
||||
"Delivery warnings now clear",
|
||||
"QEMU guest agent",
|
||||
"Restored Proxmox network details",
|
||||
"Pulse Mobile does not consume the changed browser resource stream",
|
||||
"not Authenticode-signed",
|
||||
"Unknown Publisher warning",
|
||||
)
|
||||
@@ -902,17 +901,12 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
|
||||
"Rollback target: `v"+previous+"`",
|
||||
"Promotion path: exact-SHA single-build release candidate from `main`",
|
||||
"This changelog describes the changes since `v"+comparisonVersion+"`",
|
||||
"Notification delivery history",
|
||||
"least-privilege Unified Agent install profile",
|
||||
"Saved views have been removed",
|
||||
"4.75 MB to 4.09 MB",
|
||||
"Metrics-history retention releases oversized backing arrays",
|
||||
"Patrol retries provider initialisation",
|
||||
"backup roll-ups derive `totalPages`",
|
||||
"Storage rows mark retained readings stale",
|
||||
"Stopped Docker and Podman containers no longer re-fire health alerts",
|
||||
"Disabled Proxmox backup collection scope persists",
|
||||
"API-only Proxmox nodes retain node metrics history",
|
||||
"Resources, connected-infrastructure entries, and active alerts use per-client keyed deltas",
|
||||
"REST state recovery is isolated from the websocket baseline",
|
||||
"Notification queue health is reconciled immediately",
|
||||
"Proxmox VM/LXC lifecycle actions remain available through the governed action path",
|
||||
"Proxmox node network details render again",
|
||||
"Backup recovery data retains the correct source attribution",
|
||||
"Windows signing decision: prereleases publish checksum- and detached-signature-verified Windows agents without Authenticode",
|
||||
"Mobile decision: `no-mobile-impact`",
|
||||
"no companion build or public store rollout is required",
|
||||
|
||||
@@ -144,6 +144,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T)
|
||||
{version: "6.4.0-rc.1", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.2", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.3", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.4", want: "6.3.2"},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
|
||||
Reference in New Issue
Block a user