Files
pulse/internal
rcourtman 3054621cd8 Read vSphere activity as vCenter's own sentences (#2563)
The vSphere Activity tab titled every vCenter event with its class name
("HostConnectedEvent", "HostProfileAppliedEvent"). Its When column
clipped the time on every row at 390, 768, 1024, 1280 and 1440px.

**Why the events read as class names**
Pulse never asked vCenter for the readable text. `QueryEvents` leaves
out each event's `fullFormattedMessage` unless the filter sets
`disableFullMessage` ([Broadcom VI JSON
reference](https://developer.broadcom.com/xapis/virtual-infrastructure-json-api/latest/data-structures/EventFilterSpec/):
"If the property is not set, the collected events do not include the
full formatted message"). On a real vCenter, the drawer's Message row
was therefore always empty too.

**What changes**
- **Readable events.** The client now sends `disableFullMessage: false`.
The provider titles an event change with vCenter's message, falling back
to the class when vCenter sends none, so Patrol's change context gets a
readable reason as well.
- **Stored records.** Events stored before this change still carry the
class as their title, so the page model prefers the message when it has
one.
- **Nothing lost.** The class stays in `vmwareEventType`. Activity
search still finds it, and the drawer shows it as a new Event type row.
The drawer no longer repeats the title in its Message row.
- **When.** It now reads as an age ("1d ago"), as Kubernetes events do,
with the exact time on hover and in the drawer. A vCenter time before
2000, vCenter's marker for an unset time, still shows "-".
- **Registry.** The Activity table moves from the date-time
shared-template rule to the relative-time rule, and the guardrail tests
follow.

**Verification**
- **Private mock stack, before and after.** Event rows read vCenter's
sentence, including records stored before the change. When clips at no
width, where it clipped at five of seven.
- **Trade-off.** The longer sentences truncate on phones and tablets,
with the full text on hover and in the drawer.
- **Drawer.** Checked in light and dark mode.
- **After rebasing onto main** (which now has #2559 and #2560): the
Activity sweep is unchanged, and the Datastores and Networks Health
columns measure exactly as verified in #2559.
- **Tests:** 1,802 frontend tests, the `internal/vmware` package, the
shared-template audit and the completion guard pass.
- **New tests cover:**
  - the request flag;
  - message-or-class titling;
  - the stored-record fallback;
  - search by class;
  - the drawer rows;
  - the relative When and its exact-time hover;
  - the pre-2000 guard.
- **Review.** A second reviewer read the change twice and found one
stale assertion, which is fixed. Its first read is what surfaced the
missing `disableFullMessage`.
2026-10-06 12:06:16 +01:00
..