diff --git a/docs/release-control/v6/internal/subsystems/ai-runtime.md b/docs/release-control/v6/internal/subsystems/ai-runtime.md
index 6e641f641..504f8979e 100644
--- a/docs/release-control/v6/internal/subsystems/ai-runtime.md
+++ b/docs/release-control/v6/internal/subsystems/ai-runtime.md
@@ -145,16 +145,17 @@ runtime cost control, and shared AI transport surfaces.
the VMware page must not introduce VMware-local AI prompts, a provider
model picker, or a vSphere-specific chat/runtime route just because
networks are now rendered as a first-class API-native table.
- The frontend-primitives-owned `Standalone` platform page follows the same
- AI runtime boundary: route registration and primary-tab chrome may expose
- the support-manifest `agent` platform plus agentless availability
- endpoints, but the page must not add an agent-specific Assistant prompt
- surface, AI launcher, model picker, or browser-owned model context.
- Standalone rows may seed Assistant or Patrol only through the shared
- unified resource handoff contracts. Its IA, primary shell position, and
- landing eligibility belong to `frontend-primitives`; those changes must
- not alter Patrol or Assistant utility-tab ordering, launcher visibility, or
- shared keyboard handling in `frontend-modern/src/AppLayout.tsx`.
+ The frontend-primitives-owned Machines surface follows the same AI runtime
+ boundary while retaining the internal `standalone` route/id contract: route
+ registration and primary-tab chrome may expose the support-manifest `agent`
+ platform plus agentless availability endpoints, but the page must not add an
+ agent-specific Assistant prompt surface, AI launcher, model picker, or
+ browser-owned model context. Machine rows may seed Assistant or Patrol only
+ through the shared unified resource handoff contracts. Its IA, primary
+ shell position, and landing eligibility belong to `frontend-primitives`;
+ those changes must not alter Patrol or Assistant utility-tab ordering,
+ launcher visibility, or shared keyboard handling in
+ `frontend-modern/src/AppLayout.tsx`.
## Forbidden Paths
@@ -687,8 +688,10 @@ adding a platform tab through the same shell files must not fork Assistant or
Patrol shell state or smuggle in AI-owned platform reads.
Post-auth `/` and `/login` resolution follows the frontend-primitives-owned
provider-first platform landing contract, so the assistant-capable shell never
-overrides Standalone eligibility or revives legacy Infrastructure as the
-default estate surface.
+overrides Machines-surface eligibility or revives legacy Infrastructure as the
+default estate surface. The user-facing Machines label is an app-shell
+presentation label for the existing `standalone` route/id and must not create a
+separate AI handoff or prompt namespace.
The route-backed Proxmox platform tab is app-shell navigation only. Adding the
tab through `frontend-modern/src/App.tsx` and
diff --git a/docs/release-control/v6/internal/subsystems/cloud-paid.md b/docs/release-control/v6/internal/subsystems/cloud-paid.md
index 983f91986..b6980f0b2 100644
--- a/docs/release-control/v6/internal/subsystems/cloud-paid.md
+++ b/docs/release-control/v6/internal/subsystems/cloud-paid.md
@@ -500,7 +500,7 @@ or other self-hosted uncapped continuity plans.
Paid and hosted app shells must inherit the frontend-primitives-owned
platform/runtime primary navigation contract and canonical path constants
from `frontend-modern/src/routing/resourceLinks.ts`; cloud-paid must not
- carry a second copy of the platform list, shell order, or Standalone
+ carry a second copy of the platform list, shell order, or Machines-surface
eligibility rules. Product navigation remains support-and-evidence gated:
`enabled`, `live`, and inclusion in the rendered primary navigation derive
from the governed support manifest plus canonical resource evidence in
@@ -521,9 +521,10 @@ or other self-hosted uncapped continuity plans.
bespoke per-family tables, synthetic placeholder data, or reintroduce
Infrastructure as a primary navigation entry without a governed contract
decision recorded by the frontend-primitives owner.
- The presence of a `Standalone` tab is not a new commercial usage unit:
- hosted and paid surfaces continue to meter the governed monitored-system
- grouping result rather than counting primary navigation destinations.
+ The presence of the user-facing `Machines` tab, backed by the internal
+ `standalone` route/id, is not a new commercial usage unit: hosted and paid
+ surfaces continue to meter the governed monitored-system grouping result
+ rather than counting primary navigation destinations.
Landing behavior for paid and hosted shells must also defer to the
frontend-primitives-owned provider-first landing contract instead of
defining a cloud-paid-specific order.
diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md
index 9850d4d7c..389c5aa23 100644
--- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md
+++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md
@@ -1097,26 +1097,28 @@ not a replacement status card, CTA band, or page-local nested card.
that platform-first set only, so mobile and desktop navigation stay aligned
without reintroducing aggregate Workloads / Storage / Recovery workspace
tabs or the legacy Infrastructure entry.
- Frontend primitives owns the sole user-facing `Standalone` IA contract for
- the support-manifest `agent` platform and agentless availability endpoints;
- adjacent subsystem contracts may reference this owner for dependencies but
- must not restate the route, navigation, or landing semantics. Its primary
- tab, mobile priority, command-palette destination, and keyboard shortcut
- must all route through `buildStandalonePath()` and the
- `PrimaryInfrastructureNavId` `standalone` evidence gate; they must not
- create a generic Hosts, Nodes, Other, or mixed-systems bucket, and they
- must not include provider-owned platform nodes that are not canonical
- standalone resources. The Standalone page is a platform/runtime page, not a
- legacy Infrastructure page: it must use the shared platform tab, toolbar,
- table-card, and kind-aligned column primitives, and it must not reintroduce
- the old top-of-page InfrastructureSummary chart strip. Standalone must also
- remain secondary in the shell hierarchy when provider/runtime platform
- evidence exists: `PRIMARY_INFRASTRUCTURE_NAV_IDS`, desktop primary tabs,
- mobile primary priority, app-shell preload order, authenticated landing
- fallback, and command-palette ordering must prefer Proxmox, Containers,
- Kubernetes, TrueNAS, and vSphere ahead of Standalone. Standalone may win
- those first/default positions only when the current estate has standalone
- Pulse Agent machines or agentless availability endpoints and no
+ Frontend primitives owns the sole user-facing `Machines` IA contract for
+ the support-manifest `agent` platform and agentless availability endpoints.
+ The compatibility route, internal navigation id, and builders remain
+ `standalone` / `buildStandalonePath()`; adjacent subsystem contracts may
+ reference this owner for dependencies but must not restate the route,
+ navigation, or landing semantics. Its primary tab, mobile priority,
+ command-palette destination, and keyboard shortcut must all route through
+ `buildStandalonePath()` and the `PrimaryInfrastructureNavId` `standalone`
+ evidence gate; they must not create a generic Hosts, Nodes, Other, or
+ mixed-systems bucket, and they must not include provider-owned platform
+ nodes that are not canonical machine-page resources. The Machines page is a
+ platform/runtime page, not a legacy Infrastructure page: it must use the
+ shared platform tab, toolbar, table-card, and kind-aligned column
+ primitives, and it must not reintroduce the old top-of-page
+ InfrastructureSummary chart strip. The Machines surface must also remain
+ secondary in the shell hierarchy when provider/runtime platform evidence exists:
+ `PRIMARY_INFRASTRUCTURE_NAV_IDS`, desktop primary tabs, mobile primary
+ priority, app-shell preload order, authenticated landing fallback, and
+ command-palette ordering must prefer Proxmox, Containers, Kubernetes,
+ TrueNAS, and vSphere ahead of Machines. The Machines surface may win those
+ first/default positions only when the current estate has standalone Pulse
+ Agent machines or agentless availability endpoints and no
provider/runtime platform evidence.
## Forbidden Paths
@@ -1412,9 +1414,10 @@ not a replacement status card, CTA band, or page-local nested card.
rules.
`frontend-modern/src/App.tsx` must land authenticated `/` and `/login`
handoffs through this subsystem's provider-first platform landing contract:
- the first visible provider/runtime platform wins, and Standalone is eligible
- only when the current estate has standalone Pulse Agent machines or
- agentless availability endpoints and no provider/runtime evidence. The
+ the first visible provider/runtime platform wins, and the Machines surface
+ is eligible only when the current estate has standalone Pulse Agent
+ machines or agentless availability endpoints and no provider/runtime
+ evidence. The
retired Infrastructure aggregate route and nested settings infrastructure
aliases are not compatibility commitments:
first-time operator setup must enter through the canonical Settings →
@@ -2564,7 +2567,7 @@ retired or unknown routes such as `/dashboard` must not be coerced into the
nearest platform tab just because the authenticated shell has a provider-first
landing fallback. Shared desktop and mobile navigation must tolerate a missing
active tab for those paths while still highlighting canonical active routes
-such as Proxmox, Containers, Kubernetes, TrueNAS, vSphere, Standalone, Alerts,
+such as Proxmox, Containers, Kubernetes, TrueNAS, vSphere, Machines, Alerts,
Patrol, and Settings.
The recovery feature shell now also depends on the shared
`frontend-modern/src/components/shared/Subtabs.tsx` primitive for its primary
@@ -3583,11 +3586,11 @@ metric slot, while keeping recent check timing and fuller failure context in
the tooltip or drawer so operators can understand what was measured without
duplicated row chrome.
Operational navigation for those agentless endpoints belongs to the
-frontend-primitives-owned Standalone surface rather than a new primary nav item.
+frontend-primitives-owned Machines surface rather than a new primary nav item.
The page may show availability checks beside standalone Pulse Agent machines and
provide a focused availability tab, but Settings remains the add/edit owner and
the app shell must not add a separate top-level Availability destination.
-The Standalone page must not pretend its machine list is a generic overview:
+The Machines page must not pretend its machine list is a generic overview:
the default tab is `Machines`, and the full availability-check row list belongs
to the `Availability checks` tab. Servers, laptops, desktops, and comparable
computers that are monitored by agentless reachability checks are still
diff --git a/docs/release-control/v6/internal/subsystems/unified-resources.md b/docs/release-control/v6/internal/subsystems/unified-resources.md
index 9cb0cf131..ba4e23284 100644
--- a/docs/release-control/v6/internal/subsystems/unified-resources.md
+++ b/docs/release-control/v6/internal/subsystems/unified-resources.md
@@ -688,11 +688,11 @@ AI-only summary payloads, or page-local heuristics.
derive every internal link from those builders so the canonical resource
URL vocabulary stays single-sourced; ad hoc string concatenation of
platform routes inside feature directories is not permitted.
- Standalone's default resource route is the machines projection
+ The user-facing Machines surface's default resource route is the machines projection
(`/standalone/machines`); agentless endpoint rows use the
`/standalone/availability` projection and must not be collapsed into a
generic overview URL.
- The frontend-primitives-owned Standalone IA contract consumes the
+ The frontend-primitives-owned Machines IA contract consumes the
unified-resource projection for Pulse-managed standalone agent rows and
agentless availability endpoint rows; this subsystem owns only the
membership rules for those projected rows. Agent membership must require
@@ -700,7 +700,7 @@ AI-only summary payloads, or page-local heuristics.
resource sources or source status, and no stronger provider-owner evidence
from Proxmox, VMware, TrueNAS, or Kubernetes. Source-less legacy snapshots
may fall back to a normalized `platformType === "agent"`, but
- provider-owned nodes must not become Standalone-page members through
+ provider-owned nodes must not become machine-page members through
hostname, `agent` platform scope, or agent telemetry alone; those facts
surface as facets on the owning provider page.
The default tab for each platform path must point at a sub-tab whose
@@ -740,9 +740,8 @@ AI-only summary payloads, or page-local heuristics.
`/settings/monitoring/availability`, and the add flow for MQTT, ping, TCP,
and HTTP checks is `/settings/monitoring/availability?add=target`. Saved
availability targets carry a `targetKind` so agentless servers, laptops,
- desktops, and comparable computers can participate in the Standalone
- Machines inventory without reclassifying service or device checks as
- machines.
+ desktops, and comparable computers can participate in the Machines inventory
+ without reclassifying service or device checks as machines.
6. Keep infrastructure source visibility on canonical unified-resource truth.
Settings infrastructure source filters and summaries must preserve known
sources such as `truenas` and `availability` through the shared source
@@ -1149,7 +1148,7 @@ or the live-state `platformData.availability` mirror: the System column uses
the probe protocol as the compact identity badge (`ICMP`, `TCP`, or `HTTP`),
while the metric cell shows only the target detail and latest latency or
failure result, such as `6053: 11 ms`, `/status: 503`, `3 ms`, or `timed out`.
-Frontend primitives owns Standalone as the operational presentation for those
+Frontend primitives owns Machines as the operational presentation for those
same agentless checks; unified resources owns the projection contract consumed
there. `StandalonePageSurface.tsx` must fetch both `agent` and
`network-endpoint` resources, keep standalone machines and availability checks
@@ -2803,7 +2802,7 @@ redirect. Canonical infrastructure management lives under
lives under `/settings/monitoring/availability`; day-to-day resource
inspection lives on the platform/runtime pages named by the
frontend-primitives-owned IA contract, with unified resources projecting
-standalone agent machines and agentless endpoint checks for the Standalone
+standalone agent machines and agentless endpoint checks for the Machines
consumer. Future infrastructure work must extend those owners rather than
recreating
`frontend-modern/src/features/infrastructure/`, a `/infrastructure` route, or
diff --git a/frontend-modern/src/AppLayout.tsx b/frontend-modern/src/AppLayout.tsx
index 55c2657b2..8fbe7286a 100644
--- a/frontend-modern/src/AppLayout.tsx
+++ b/frontend-modern/src/AppLayout.tsx
@@ -213,7 +213,7 @@ export function AppLayout(props: AppLayoutProps) {
kubernetes: 'Kubernetes',
truenas: 'TrueNAS',
vmware: 'vSphere',
- standalone: 'Standalone',
+ standalone: 'Machines',
alerts: 'Alerts',
ai: 'Patrol',
settings: 'Settings',
@@ -387,10 +387,10 @@ export function AppLayout(props: AppLayoutProps) {
},
{
id: 'standalone',
- label: 'Standalone',
+ label: 'Machines',
route: ROOT_STANDALONE_PATH,
settingsRoute: ROOT_INFRASTRUCTURE_SETTINGS_PATH,
- tooltip: 'Standalone Pulse Agent machines and agentless availability checks',
+ tooltip: 'Pulse Agent machines, agentless computers, and availability checks',
enabled: isVisible('standalone'),
live: isVisible('standalone'),
icon: ServerIcon,
diff --git a/frontend-modern/src/__tests__/App.architecture.test.ts b/frontend-modern/src/__tests__/App.architecture.test.ts
index 2b15936fa..62b84f25f 100644
--- a/frontend-modern/src/__tests__/App.architecture.test.ts
+++ b/frontend-modern/src/__tests__/App.architecture.test.ts
@@ -67,9 +67,7 @@ describe('App architecture', () => {
expect(appRuntimeStateSource).not.toContain('fetchInfrastructureSummaryAndCache');
expect(appRuntimeStateSource).not.toContain('fetchWorkloadsSummaryAndCache');
expect(appRuntimeStateSource).not.toContain('requestIdleCallback');
- expect(appSource).toContain(
- "const StandalonePage = lazy(() => import('./pages/Standalone'));",
- );
+ expect(appSource).toContain("const StandalonePage = lazy(() => import('./pages/Standalone'));");
expect(appSource).toContain('');
expect(appSource).toContain(
'',
@@ -103,7 +101,7 @@ describe('App architecture', () => {
"tooltip: 'VMware vSphere hosts, virtual machines, datastores, and networks'",
);
expect(appLayoutSource).toContain(
- "tooltip: 'Standalone Pulse Agent machines and agentless availability checks'",
+ "tooltip: 'Pulse Agent machines, agentless computers, and availability checks'",
);
// Governed shell nav: Infrastructure, Workloads, Storage, and Recovery are
// not standalone shell tabs; platform/runtime pages own those workflows.
diff --git a/frontend-modern/src/__tests__/AppLayout.test.tsx b/frontend-modern/src/__tests__/AppLayout.test.tsx
index 336bb0a98..b445e097f 100644
--- a/frontend-modern/src/__tests__/AppLayout.test.tsx
+++ b/frontend-modern/src/__tests__/AppLayout.test.tsx
@@ -131,9 +131,9 @@ describe('AppLayout navigation icons', () => {
within(infrastructureGroup as HTMLElement)
.getAllByRole('tab')
.map((tab) => tab.getAttribute('aria-label')),
- ).toEqual(['Proxmox', 'Containers', 'vSphere', 'Standalone']);
+ ).toEqual(['Proxmox', 'Containers', 'vSphere', 'Machines']);
expect(
- within(infrastructureGroup as HTMLElement).getByRole('tab', { name: 'Standalone' }),
+ within(infrastructureGroup as HTMLElement).getByRole('tab', { name: 'Machines' }),
).toBeTruthy();
expect(
within(infrastructureGroup as HTMLElement).getByRole('tab', { name: 'Proxmox' }),
diff --git a/frontend-modern/src/components/shared/KeyboardShortcutsModal.tsx b/frontend-modern/src/components/shared/KeyboardShortcutsModal.tsx
index 6aad1af60..5863378a8 100644
--- a/frontend-modern/src/components/shared/KeyboardShortcutsModal.tsx
+++ b/frontend-modern/src/components/shared/KeyboardShortcutsModal.tsx
@@ -19,7 +19,7 @@ interface KeyboardShortcutsModalProps {
const UNIFIED_NAV_SHORTCUTS: ShortcutGroup = {
title: 'Navigation',
items: [
- { keys: 'g then s', description: 'Go to Standalone' },
+ { keys: 'g then s', description: 'Go to Machines' },
{ keys: 'g then p', description: 'Go to Proxmox' },
{ keys: 'g then d', description: 'Go to Containers' },
{ keys: 'g then k', description: 'Go to Kubernetes' },
diff --git a/frontend-modern/src/components/shared/__tests__/CommandPaletteModal.test.tsx b/frontend-modern/src/components/shared/__tests__/CommandPaletteModal.test.tsx
index 051ea5e60..4e510077c 100644
--- a/frontend-modern/src/components/shared/__tests__/CommandPaletteModal.test.tsx
+++ b/frontend-modern/src/components/shared/__tests__/CommandPaletteModal.test.tsx
@@ -94,7 +94,7 @@ describe('CommandPaletteModal', () => {
/>
));
- expect(screen.getByText('Go to Standalone')).toBeInTheDocument();
+ expect(screen.getByText('Go to Machines')).toBeInTheDocument();
expect(screen.getByText('/standalone/machines')).toBeInTheDocument();
expect(screen.getByText('Go to Proxmox')).toBeInTheDocument();
expect(screen.getByText('Go to Containers')).toBeInTheDocument();
@@ -112,7 +112,7 @@ describe('CommandPaletteModal', () => {
const commandLabels = screen.getAllByRole('button').map((button) => button.textContent ?? '');
expect(commandLabels.findIndex((label) => label.includes('Go to Proxmox'))).toBeLessThan(
- commandLabels.findIndex((label) => label.includes('Go to Standalone')),
+ commandLabels.findIndex((label) => label.includes('Go to Machines')),
);
});
@@ -183,7 +183,7 @@ describe('CommandPaletteModal', () => {
expect(screen.queryByText('Go to Workloads')).not.toBeInTheDocument();
expect(screen.queryByText('Go to Storage')).not.toBeInTheDocument();
expect(screen.queryByText('Go to Recovery')).not.toBeInTheDocument();
- expect(screen.queryByText('Go to Standalone')).not.toBeInTheDocument();
+ expect(screen.queryByText('Go to Machines')).not.toBeInTheDocument();
expect(screen.queryByText('Go to Containers')).not.toBeInTheDocument();
expect(screen.queryByText('Go to Kubernetes')).not.toBeInTheDocument();
expect(screen.queryByText('Go to TrueNAS')).not.toBeInTheDocument();
diff --git a/frontend-modern/src/components/shared/__tests__/MobileNavBar.test.tsx b/frontend-modern/src/components/shared/__tests__/MobileNavBar.test.tsx
index 20e61c9b3..89692f44a 100644
--- a/frontend-modern/src/components/shared/__tests__/MobileNavBar.test.tsx
+++ b/frontend-modern/src/components/shared/__tests__/MobileNavBar.test.tsx
@@ -90,10 +90,10 @@ describe('MobileNavBar', () => {
primaryTabs={() => [
{
id: 'standalone',
- label: 'Standalone',
+ label: 'Machines',
route: '/standalone/machines',
settingsRoute: '/settings/infrastructure',
- tooltip: 'Standalone',
+ tooltip: 'Machines',
enabled: true,
live: true,
icon: StandaloneIcon,
@@ -135,10 +135,10 @@ describe('MobileNavBar', () => {
primaryTabs={() => [
{
id: 'standalone',
- label: 'Standalone',
+ label: 'Machines',
route: '/standalone/machines',
settingsRoute: '/settings/infrastructure',
- tooltip: 'Standalone',
+ tooltip: 'Machines',
enabled: true,
live: true,
icon: StandaloneIcon,
@@ -200,7 +200,7 @@ describe('MobileNavBar', () => {
expect(screen.getByText('3')).toBeInTheDocument();
expect(screen.getByText('Pro')).toBeInTheDocument();
- fireEvent.click(screen.getByTitle('Standalone'));
+ fireEvent.click(screen.getByTitle('Machines'));
expect(onPrimaryClick).toHaveBeenCalledWith(expect.objectContaining({ id: 'standalone' }));
fireEvent.click(screen.getByTitle('Alerts'));
diff --git a/frontend-modern/src/components/shared/commandPaletteModel.ts b/frontend-modern/src/components/shared/commandPaletteModel.ts
index ae314ba64..6a97799a3 100644
--- a/frontend-modern/src/components/shared/commandPaletteModel.ts
+++ b/frontend-modern/src/components/shared/commandPaletteModel.ts
@@ -112,7 +112,7 @@ export function buildCommandPaletteCommands(options: {
if (primaryInfrastructureNavigationIsVisible(options.infrastructureVisibility, 'standalone')) {
commands.push({
id: 'nav-standalone',
- label: 'Go to Standalone',
+ label: 'Go to Machines',
description: options.paths.standalonePath,
shortcut: 'g s',
keywords: [
diff --git a/frontend-modern/src/features/standalone/AgentsMachinesTable.tsx b/frontend-modern/src/features/standalone/AgentsMachinesTable.tsx
index 2260b97d4..0142d078c 100644
--- a/frontend-modern/src/features/standalone/AgentsMachinesTable.tsx
+++ b/frontend-modern/src/features/standalone/AgentsMachinesTable.tsx
@@ -189,13 +189,13 @@ export const AgentsMachinesTable: Component<{
}
>
diff --git a/frontend-modern/src/features/standalone/StandalonePageSurface.tsx b/frontend-modern/src/features/standalone/StandalonePageSurface.tsx
index 629a23e4e..3750b1c2a 100644
--- a/frontend-modern/src/features/standalone/StandalonePageSurface.tsx
+++ b/frontend-modern/src/features/standalone/StandalonePageSurface.tsx
@@ -81,15 +81,15 @@ export function StandalonePageSurface() {
}
>
@@ -97,7 +97,7 @@ export function StandalonePageSurface() {
when={!error()}
fallback={
void refetch()}
/>
@@ -118,7 +118,7 @@ export function StandalonePageSurface() {
fallback={
@@ -149,7 +149,7 @@ export function StandalonePageSurface() {
0}>
@@ -164,7 +164,7 @@ export function StandalonePageSurface() {
diff --git a/frontend-modern/src/features/standalone/__tests__/StandalonePageSurface.test.tsx b/frontend-modern/src/features/standalone/__tests__/StandalonePageSurface.test.tsx
index d60a3b3ce..80b23704c 100644
--- a/frontend-modern/src/features/standalone/__tests__/StandalonePageSurface.test.tsx
+++ b/frontend-modern/src/features/standalone/__tests__/StandalonePageSurface.test.tsx
@@ -176,7 +176,7 @@ describe('StandalonePageSurface', () => {
expect(screen.queryByTestId('agents-machines-table')).not.toBeInTheDocument();
expect(screen.queryByTestId('availability-checks-table')).not.toBeInTheDocument();
- expect(screen.getByText('No standalone machines')).toBeInTheDocument();
+ expect(screen.getByText('No machines')).toBeInTheDocument();
expect(screen.getByRole('link', { name: 'View checks' })).toHaveAttribute(
'href',
'/standalone/availability',
@@ -202,6 +202,6 @@ describe('StandalonePageSurface', () => {
render(() => );
expect(screen.getByTestId('agents-machines-table')).toHaveAttribute('data-resource-count', '1');
- expect(screen.queryByText('No standalone machines')).not.toBeInTheDocument();
+ expect(screen.queryByText('No machines')).not.toBeInTheDocument();
});
});
diff --git a/frontend-modern/src/routing/__tests__/resourceLinks.test.ts b/frontend-modern/src/routing/__tests__/resourceLinks.test.ts
index 964f16071..7ae437619 100644
--- a/frontend-modern/src/routing/__tests__/resourceLinks.test.ts
+++ b/frontend-modern/src/routing/__tests__/resourceLinks.test.ts
@@ -40,7 +40,7 @@ describe('resource link routing contract', () => {
expect(buildProxmoxPath('')).toBe('/proxmox');
});
- it('builds canonical Standalone, container runtime, Kubernetes, TrueNAS, and vSphere tab paths', () => {
+ it('builds canonical Machines, container runtime, Kubernetes, TrueNAS, and vSphere tab paths', () => {
expect(STANDALONE_PATH).toBe('/standalone');
expect(STANDALONE_DEFAULT_TAB).toBe('machines');
expect(buildStandalonePath()).toBe('/standalone/machines');