mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-03 12:42:43 +00:00
explainer: drop "Always on: Hardware metrics" chip group
The always-on framing read as unavoidable surveillance — a reason not to install the agent, not a reason to want it. The paragraph above already names what the agent collects (CPU/disk temps, SMART, power, Ceph/RAID) in concrete benefit-focused terms; the chip was redundant and its label backfired. Only the "Off by default, opt in per host" group remains, covering Assistant commands and Patrol remediation — users specifically want these framed as opt-in because they involve command execution. Test restructure: split the old combined "capabilities + trust facts" case into two focused tests, with explicit guards that neither the "Always on" label nor the "Hardware metrics" chip reappears.
This commit is contained in:
@@ -21,8 +21,6 @@ const persistDismissed = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const ALWAYS_ON_CAPABILITIES = ['Hardware metrics'];
|
||||
|
||||
const OPT_IN_CAPABILITIES = ['Assistant commands', 'Patrol remediation'];
|
||||
|
||||
const AGENT_FACTS = [
|
||||
@@ -113,34 +111,18 @@ export const ConnectionsExplainer: Component = () => {
|
||||
only path.
|
||||
</p>
|
||||
|
||||
<div class="mt-4 space-y-2">
|
||||
<div>
|
||||
<div class="mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted">
|
||||
Always on
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<For each={ALWAYS_ON_CAPABILITIES}>
|
||||
{(label) => (
|
||||
<span class="inline-flex items-center rounded-full border border-border bg-surface px-2 py-0.5 text-[11px] font-medium text-base-content">
|
||||
{label}
|
||||
</span>
|
||||
)}
|
||||
</For>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<div class="mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted">
|
||||
Off by default, opt in per host
|
||||
</div>
|
||||
<div>
|
||||
<div class="mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted">
|
||||
Off by default, opt in per host
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<For each={OPT_IN_CAPABILITIES}>
|
||||
{(label) => (
|
||||
<span class="inline-flex items-center rounded-full border border-dashed border-border bg-surface px-2 py-0.5 text-[11px] font-medium text-muted">
|
||||
{label}
|
||||
</span>
|
||||
)}
|
||||
</For>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<For each={OPT_IN_CAPABILITIES}>
|
||||
{(label) => (
|
||||
<span class="inline-flex items-center rounded-full border border-dashed border-border bg-surface px-2 py-0.5 text-[11px] font-medium text-muted">
|
||||
{label}
|
||||
</span>
|
||||
)}
|
||||
</For>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -29,12 +29,23 @@ describe('ConnectionsExplainer', () => {
|
||||
expect(screen.getByText(/Primary source for workloads/i)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('surfaces concrete agent capabilities and trust facts users care about', () => {
|
||||
it('calls out that Assistant / Patrol command execution is opt-in, not default', () => {
|
||||
render(() => <ConnectionsExplainer />);
|
||||
|
||||
for (const capability of ['Hardware metrics', 'Assistant commands', 'Patrol remediation']) {
|
||||
expect(screen.getByText(/off by default, opt in per host/i)).toBeInTheDocument();
|
||||
for (const capability of ['Assistant commands', 'Patrol remediation']) {
|
||||
expect(screen.getByText(capability)).toBeInTheDocument();
|
||||
}
|
||||
// The old "Always on: Hardware metrics" framing read as unavoidable
|
||||
// surveillance. The agent paragraph already names what it collects;
|
||||
// we don't restate it as an always-on chip.
|
||||
expect(screen.queryByText(/^Always on$/i)).toBeNull();
|
||||
expect(screen.queryByText('Hardware metrics')).toBeNull();
|
||||
});
|
||||
|
||||
it('surfaces trust facts users care about', () => {
|
||||
render(() => <ConnectionsExplainer />);
|
||||
|
||||
for (const fact of ['Single Go binary', '~13 MB download', 'No runtime dependencies', 'Open source']) {
|
||||
expect(screen.getByText(fact)).toBeInTheDocument();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user