Files
pulse/docs
rcourtman 0f5f054ecb Settle slow polled reads and keep replication links honest (#2610)
Follow-up to #2578 from a second-opinion review. It closes three gaps
#2578 left, plus the issues found while fixing them.

**Polled reads that never settle.** The shared poll in
`createNonSuspendingQuery` replaced any read still in flight on every
tick. The API answers 429 with `Retry-After: 60` and `apiFetch` waits it
out, so under rate limiting a 30-second poll discarded every read and
the query never settled. Replication reads also ignored the abort
signal, so each replaced request kept running.
- A poll now skips its tick while a read that an earlier poll started is
still in flight.
- A refresh, a source change or a remount revalidation stays replaceable
at the next tick, as before. The behaviour pinned by `744160fa0e` and
the History tests is unchanged.
- A polled read still in flight at or after 150 seconds is presumed
stalled. It is replaced and settled as a failed read, so nothing spins
forever when every read hangs.
- `fetchReplicationJobs` forwards the signal to `apiFetch`.
- It throws `apiErrorFromResponse` errors that keep the HTTP status, so
a 401 or 403 withdraws the jobs.

**Replication direct links.** A failed first read made the job count
zero, so `/proxmox/replication` fell to Overview with no error or Retry.
- Replication presence is now unknown until a read succeeds.
- After a read succeeds, a failed poll keeps the last answer instead of
reopening a route that an empty read closed.
- An access denial withdraws the tab, and the link holds on the denial
message.

**The shared clock trailed by a tick.** `useRelativeTimeNow` returned
its last tick, so a cell mounted between ticks measured from up to 30
seconds ago, and the desktop backup age could disagree with its band.
- Every read now returns the wall clock, and the tick only schedules
re-reads.
- This retires the backup `Math.max` workaround.
- The #2578 age tests now jump the clock and fire one tick. They used to
loop hundreds of re-renders, and one timed out under load.

Each new test fails without its fix.

Live check: a private mock stack driven by Playwright, with replication
answers shaped per scenario, at 1600px and 390px.
- A 500 on the first read keeps the error and Refresh, and Refresh loads
all 8 jobs.
- A 403 after loading withdraws the tab and shows the server's denial.
- Empty, then failed, then empty stays on Overview.
- With a polled read held open, two poll ticks start nothing and abort
nothing.
- Leaving the page aborts the read.
- Backup ages and bands render consistently with no Unknown cells.

The same session with main's runtime files reproduced each failure. The
browser receipt is in the commit.
2026-10-06 22:18:42 +01:00
..
2026-10-05 21:53:41 +01:00
2026-10-05 21:53:41 +01:00
2026-10-05 21:53:41 +01:00

Pulse documentation

Start here for installation, platform setup, security, operations, and Pulse Intelligence. Commands, configuration keys, image names, API fields, and product identifiers remain untranslated in localized guides.

Start here

  • Install Pulse — signed Proxmox/Linux installation, Docker, Docker Compose, Kubernetes, and first-run setup.
  • Production deployment and security — least-privilege Proxmox setup, root-agent boundaries, discovery, supply-chain verification, plan limits, scale evidence, and a rollout checklist.
  • Upgrade from Pulse v5 — migration prerequisites, rollback, agent continuity, and post-upgrade checks.
  • Releases and update channels: choosing Stable or Preview, beta and RC expectations, and how releases are tested and promoted.
  • Configure Pulse — authentication, notifications, discovery, retention, and system settings.
  • Deployment models — data locations, lifecycle, and differences between supported deployment paths.
  • Troubleshooting and FAQ — common failures, diagnostics, and operator questions.

Localized getting started guides: Deutsch · Español

Platforms and agents

VMware vSphere support is early access. Current builds expose dedicated vSphere inventory and recovery context, but operators should validate the integration against their own vCenter before production use.

Monitoring and operations

Pulse Intelligence

Patrol watch-only analysis is available on Community with a local model or the operator's own provider. Investigation and governed fixes require the relevant Pulse Pro capabilities.

Security, privacy, and access

Plans and managed access

Pulse Cloud is not generally available. Ordinary self-hosted Pulse remains the primary installation path; MSP and Enterprise access are explicit commercial paths rather than defaults in self-hosted setup.

Development and reference

Detailed design notes and dated migration specifications may remain in this directory for maintainers, but they are not operator setup guides unless they are linked from the sections above.

Previous versions and migrations

Found a bug? Use the issue forms. For setup questions, use GitHub Discussions.