Machines pages polish: Nodes, Hosts, NodeLink

Task 7548 · Done · Coder · created · updated

Goal: Machines surfaces read as one consistent system, show full error text, and guide the admin to the fix. Supersedes drafts 7518, 7521, 7515, 7508, 7505 (items 1, 2, 7, 8), 7527 (item 3) and 7479 (item 4). **Hosts / Nodes** - The host page uses the same OS label (`lib/nodeOs.ts`) and Org value sizing as /nodes. - A stalled order uses one tone on both surfaces. - A waiting host and its never-connected node read as one machine (naming, or the link in words). - The Health ⓘ tooltip never covers the banner. - The phone /nodes footer shows when it carries an aside. - The node page's "Accounts 0" counts or explains the accounts that can run there. **Never-connected node Overview** (review of 7452) - The Install confirm is `destructive: true`. - The disabled Install link carries the awaiting-approval reason. - A pre-set Drain stays cancellable. - Tests cover these, plus the Re-enrol tooltip and Install hidden from non-admins. **Add node wizard** - The whole option card is the click target (the Gmind Cloud radio is covered by its label). **Brains** - Nodes that run no work (`*-host`) are left out of an account's health roll-up. **NodeLink** - Mount errors show in full, or wrap with "more". - A DNS failure with no mount target hints at Storage › Mount target IP › Change. - The Storage tab shows the policy-read failure reason. - No mount target reads "None — resolved by DNS". - Phone facts are grouped, with the rest behind "More". **Slots** - A long project name never hides the Title in the flat outline; drop the session word first beside a docked console. - The free-slot console pane's icon buttons get tooltips. - `slot_title.py` stops storing `free` on lease. Out of scope: server logic beyond `slot_title`, and the MicroVM tab (MicroVM task). Done means: - Each item is shipped or declined with a reason. - Screenshots at desktop and ≤448px. - `NodeDetailPage.test.tsx` covers the Overview items. - An API test shows a freed-then-leased slot's `worktrees.name` is not `free`. Required checks: ./dc check full

Outcome

Machines polish shipped in PR #6104 (merged): 20 of 22 items done, 1 already in place (console tooltips), 1 superseded by Task 7577 (host Org). Visual check done at 1440/420px. The full gate's only red tests are outside the diff and fail on develop too (filed as 7647). UI follow-ups filed as 7566.

Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)