3.7 KiB
Compact Fleet Cards Design
Date: 2026-07-30
Status: Approved
Intent
Increase the Fleet workbench's information density without moving the desktop overview and search out of the left sidebar. Remove the aggregate health strip because its fleet-wide CPU, memory, temperature, SMS, and online-rate values do not support the operator's primary workflow. Restore the upstream SimAdmin version to each instance card.
Layout Contract
- The desktop overview and search remain in the left sidebar.
- The results pane starts with the existing node-group tabs, followed by the result count, sort control, and card matrix.
- The entire
节点资源健康strip is removed, including online rate, average CPU, average memory, highest temperature, and SMS channel count. - The card matrix uses explicit viewport contracts: 1 column at 390px, 2 at 768px, 2 at 1024px, 4 at 1440px, and 5 at 1920px.
- Cards continue to fill their grid tracks so the results pane has no artificial side gutters or fixed-width card gaps.
Card Contract
- Keep the current warm, shadowless telemetry-card visual language: cream surface, warm hairline border, brown typography, mint status accents, and restrained interaction feedback.
- Keep identity, status, batch selection, and the accessible action menu in the header.
- Render the upstream version beneath the instance name as
SimAdmin <version>. - When the upstream resource summary has no version, render
版本未知; do not confuse the instance configuration revision with the SimAdmin version. - Keep per-instance origin, tags, capabilities, phone number, maximum temperature, CPU, memory, and latest SMS because these values support node-level diagnosis.
- Preserve truncation and wrapping safeguards for narrow cards. The origin and long names may truncate with their full values available through existing accessible names or titles; hardware values must remain readable.
Version Data Flow
The API resource endpoint already returns the upstream SimAdmin version. The observed local response from /api/v1/instances/:id/resources contains version: "1.1.6". The API resource service, web data source, and Fleet view model already preserve this field. The defect is isolated to card rendering, which currently omits row.version.
The implementation therefore adds no new endpoint or fallback parser. It renders row.version in the identity area and tests the existing API-to-view-model contract to prevent another presentation-layer omission.
Responsive Behavior
- At 390px the page remains a single card column.
- At 768px the stacked workspace uses two columns.
- At 1024px the left sidebar remains visible and the results pane uses two columns to protect minimum readable card width.
- At 1440px the results pane uses four compact columns.
- At 1920px it uses five compact columns.
- Menus, tags, telemetry rows, phone numbers, temperatures, and version labels must stay within card and viewport bounds.
Testing
- Component tests assert the aggregate health region is absent.
- Component and integration tests assert a resource version renders as
SimAdmin 1.1.6and a missing version renders as版本未知. - Existing card navigation, menu, selection, restart, resource, and SMS tests remain green.
- Real Chrome E2E asserts the 1/2/2/4/5 column contract at 390/768/1024/1440/1920 and checks version/card geometry.
- Screenshots are reviewed at mobile and desktop widths for wrapping, overlap, excess whitespace, and accidental sidebar movement.
Out Of Scope
- No API contract or database changes.
- No changes to instance-detail telemetry.
- No removal of per-instance CPU, memory, temperature, phone, or SMS data.
- No movement of overview or search controls into the results pane.