feat(device): show server-available agent version and update badge #84

Merged
Claude-Run merged 1 commit from feat/VAPP-73-available-agent-version into main 2026-07-06 03:24:27 +02:00
Member

The Update Agent dialog showed "Target: " (e.g. latest), which is a channel pointer, not the build the server holds, and the quick-facts "Agent" row showed only the running version with no indication whether a newer build was available. A correct no-op Push on a host already on the channel build was indistinguishable from a failure.

Add a get_agent_update_status server function that reads the resolved server-available semver for a device from vervain-server's agentUpdateStatus control API (VS-87 availableversion), returning None for every case where no version is known (non-admin, offline node, no catalog binary, no sidecar published) so the UI degrades to the pre-VS-87 hash-only behavior.

In the device view, prefer the resolved available semver as the Update Agent dialog target (channel string only as a display fallback), and key the "already on target, the push will skip it" hint on the resolved comparison rather than the channel string, which is not a version and yields false mismatches. Add an up-to-date / update-available badge to the "Agent" quick-fact via a new AgentFact component, driven by a pure agent_update_badge helper that returns no badge when the available version is unknown or the running version is blank. Cover the helper with unit tests for the up-to-date, update-available, unknown-available, and blank-running cases.

#VAPP-73

The Update Agent dialog showed "Target: <channel string>" (e.g. `latest`), which is a channel pointer, not the build the server holds, and the quick-facts "Agent" row showed only the running version with no indication whether a newer build was available. A correct no-op Push on a host already on the channel build was indistinguishable from a failure. Add a `get_agent_update_status` server function that reads the resolved server-available semver for a device from vervain-server's `agentUpdateStatus` control API (VS-87 `availableversion`), returning `None` for every case where no version is known (non-admin, offline node, no catalog binary, no sidecar published) so the UI degrades to the pre-VS-87 hash-only behavior. In the device view, prefer the resolved available semver as the Update Agent dialog target (channel string only as a display fallback), and key the "already on target, the push will skip it" hint on the resolved comparison rather than the channel string, which is not a version and yields false mismatches. Add an up-to-date / update-available badge to the "Agent" quick-fact via a new `AgentFact` component, driven by a pure `agent_update_badge` helper that returns no badge when the available version is unknown or the running version is blank. Cover the helper with unit tests for the up-to-date, update-available, unknown-available, and blank-running cases. #VAPP-73
feat(device): show server-available agent version and update badge
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m4s
Create release / Create release from merged PR (pull_request) Has been skipped
bd2ea077c7
The Update Agent dialog showed "Target: <channel string>" (e.g. `latest`), which is a channel pointer, not the build the server holds, and the quick-facts "Agent" row showed only the running version with no indication whether a newer build was available. A correct no-op Push on a host already on the channel build was indistinguishable from a failure.

Add a `get_agent_update_status` server function that reads the resolved server-available semver for a device from vervain-server's `agentUpdateStatus` control API (VS-87 `availableversion`), returning `None` for every case where no version is known (non-admin, offline node, no catalog binary, no sidecar published) so the UI degrades to the pre-VS-87 hash-only behavior.

In the device view, prefer the resolved available semver as the Update Agent dialog target (channel string only as a display fallback), and key the "already on target, the push will skip it" hint on the resolved comparison rather than the channel string, which is not a version and yields false mismatches. Add an up-to-date / update-available badge to the "Agent" quick-fact via a new `AgentFact` component, driven by a pure `agent_update_badge` helper that returns no badge when the available version is unknown or the running version is blank. Cover the helper with unit tests for the up-to-date, update-available, unknown-available, and blank-running cases.

#VAPP-73
Claude-Run deleted branch feat/VAPP-73-available-agent-version 2026-07-06 03:24:27 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-apps!84
No description provided.