UX suggestions from the hosting product-change live test
Project instruction: UX issues noticed while testing in the UI become a task of itemized 1-2 sentence requirements. These were observed live on app.dev.jaah.ai by Task 5749 (its report and `task-5749-ux-suggestions.md` artifact carry screenshots); the coder could not file them. Implement each as its own small change; skip an item only with a stated reason in your report.
Hosting product change (this epic's surface):
1. Hosting page: keep the latest finished product change's step timeline readable (collapsed) instead of hiding it once `done`.
2. Hosting page Machine field: label root size as usable filesystem size ("47 GB usable of 50 GB") so it doesn't look like the wrong product size.
3. Hosting page "Up since": show date AND time, so a same-day restart is visible.
4. Change product quote: hide Stripe's zero-amount "$0.00 Remaining time on <old item>" line.
5. Hosting Price names: use one naming scheme ("Dedicated host · t4g.medium" vs "Dedicated host · m8i.large · 2 vCPU · 8 GB" today).
6. Change product: always list the hosting's current type (marked Current) even when the operator turned its product Off.
7. Hosting page: list the sessions running on the hosting's nodes (the type-change warning only counts them).
8. Billing › Products: an ended hosting shows "Ended" twice and still a "/mo" price; show one status and drop or past-tense the price.
Elsewhere in the console (seen during the same test):
9. Billing › Payments "View": show invoice line items in the console, not only Stripe's hosted page total.
10. Billing deep links: `/org/billing?tab=payments` should open Payments (its internal id is `history`); accept the visible tab names.
11. Directory › Orgs: a new org has no members and Access › Add finds only users already in it; offer "invite by email" there.
12. Node detail: rename "Runners" (GitHub Actions) to e.g. "CI runners" so it doesn't clash with Credentials › Runners (LLM accounts).
13. Products › Hosting products: allowing an instance type doesn't make its product orderable; link the two or say so on the type row.
14. Directory › Orgs › Delete: right after deleting an org's nodes, say "node removal still in progress, try again in a few minutes" instead of the database-reference error.
15. Credentials: an existing row whose type isn't served shows an empty form; show why and what to do.
Out of scope: the hosting-change billing engine and durable workflow logic, the stuck-chip label and tailnet cut-over cleanup (separate follow-ups of this epic), pricing/catalogue data, any new feature beyond the items.
Done means:
- Each item implemented (or skipped with a stated reason) with a component/API test where it changes behaviour, and a dev screenshot per UI item in the report.
- `./dc check quick` green; PR(s) merged to develop by the merge lane; Jaah Deploy succeeds in GitHub.
Outcome
All 15 UX items shipped: #5088 (lane-merged) + #5103 (CI runners tab, after #5085). Quick gate green, review lanes clean, Jaah Deploy run 38184340477 succeeded. 8 further UX suggestions attached (coder can't file tasks).
Artifacts
Activity
- Ready
- Runner started
- Runner ended (done)