## What
27ba85ddc6 removed the Patrol page's "Configure Patrol" popover.
Schedule, trigger and model settings moved to **Settings > Pulse
Intelligence > Patrol** (`PatrolSettingsContent` in `AISettings.tsx`,
saved through `useAISettingsState.ts`). Several contract clauses still
described the popover. This PR rewrites them to say where the controls
live and how they save.
| Contract | Old claim | Source today |
|---|---|---|
| patrol-intelligence (alert-trigger policy) | The selector sits in the
Patrol control panel and persists through its own `AIAPI.updateSettings`
call with optimistic state and revert-on-error | It is a field in the
settings form. Nothing is written until `Save Patrol settings`. The
severity goes in the page's single payload only when it changed. A
rejected save keeps the edit, and a successful save reloads the form
from the response |
| frontend-primitives (severity selector) | Lives under
`features/patrol/` in an "advanced Patrol settings disclosure" |
`FormSelect` in the settings page's Triggers section, rendered only
while alert triggers are on |
| frontend-primitives (toggles) | Toggles are named through
`ariaLabelledBy` | They carry explicit `ariaLabel` strings that contain
the visible label (`Enable alert-triggered Patrols`) |
| patrol-intelligence, api-contracts, frontend-primitives #61 | A header
"Schedule & model" drawer, a header settings surface with trigger
toggles, and a Patrol mode dialog | The header has a `Settings` link
(hidden while setup blocks), a conditional trigger-status line, and the
mode selector inside its `Mode and automation` disclosure |
Clauses owned by sibling PRs are left alone: the frontend-primitives
"Patrol schedule and model drawer" block, the patrol-intelligence
"advanced Patrol settings drawer" paragraph, and the patrol-intelligence
"header and configuration dialog" sentence (being folded into #2687).
Merge-tree against #2682, #2686, #2677 and the unpushed sibling heads is
clean.
## Tests
Three new cases in `AISettings.test.tsx` pin the rewritten claims:
- The severity selector is hidden while alert triggers are off, keeps
its value across off/on, and writes nothing before Save.
- A rejected save leaves the edit in the form for a retry. A successful
save reloads the form from the response and does not resend an unchanged
severity.
- Each Patrol trigger toggle's accessible name contains its visible
label.
Each assertion fails against a deliberately broken build: selector
always rendered, autosave on change, form reset on error, no reload
after success, severity always sent, and a divergent toggle `ariaLabel`.
`contract_audit.py`, `registry_audit.py` and `status_audit.py` report no
errors. The test-only frontend change needs no browser receipt; the
guard skips it.
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
- Proxmox Backup Server
- Proxmox Mail Gateway
- Docker and Podman
- Kubernetes and Helm
- TrueNAS SCALE and CORE
- Unified Agent
- Agent security
- VM disk monitoring
- ZFS monitoring
- Temperature monitoring
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
- Metrics history
- Recovery data
- Webhooks
- Automatic updates
- Centralized agent management (Pro)
- Operational trust model
- Current product screenshots
Pulse Intelligence
- Assistant, Patrol, and external-agent overview
- Patrol modes and safety
- Assistant safety model
- External agent HTTP and MCP substrate
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
- Production deployment and security
- Security review scope
- Authentication and credential storage review packet
- Security guide
- Privacy and telemetry disclosure
- OIDC and SSO
- Proxy authentication
- Role-based access control (Pro)
- Audit logging (Pro)
- Reverse proxy configuration
- Code-signing policy
Plans and managed access
- Community, Relay, and Pro capabilities
- Relay and Pulse Mobile handoff
- Multi-tenant organizations (Enterprise/custom)
- Provider-hosted MSP operations (request-assisted)
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
- Upgrade from v4 to v5
- Retired unified-navigation migration — historical context only; current Pulse uses platform-shaped navigation.
- Move a Pulse installation
Found a bug? Use the issue forms. For setup questions, use GitHub Discussions.