Polish plans customers and billing pages

Task 8561 · Done · Coder · created · updated

Quality goals for operator Products › Plans, Customers, and the tenant billing pages (was #8349, #8396, #8385, #8405, #8476, #8469). Skip anything already fixed. Products › Plans: 1. "Billing not connected" said once at the section, not on every row; rows marked Hidden only for a plan-specific reason; chip and reason on one line; the Default chip never squeezes a name ("Bus…") in the split pane. 2. Flag active plans that share a name (prod `team` / `team_trial`). Customers: 3. Plan tab: an unsold plan's Price row reads "no price to override" (no Stripe call to action) and has a disabled ⋯ or lock like other Terms rows; rows hoisted from a named included plan are distinguishable without hover. 4. Billing › Details (`DeskDetailsEditor.tsx`): leaving with unsaved edits asks first (`hooks/useLeaveGuard`). 5. Pending cards and sign-up summary: emails break only at "@"; the "Plan not started" fact links to the customer's Billing tab; one label column width on phone. Tenant: 6. Change dialog: hide "Need another plan? Contact us" when a contact plan is listed. 7. Change plan wizard (/org/billing/subscription/change): body2 billing-period labels; a selected-plan tint that reads as chosen in dark; order-table figures on the stepper's baseline; "Total" kept beside the folded figure on phone. 8. Agents cap (terms §7): count `user`-state worktrees and live advisor conversations in `org_limits.py` `runner_slots`, or record the decision not to and narrow §7 (c)/(d); show "Agents active" on Subscription. Out of scope: prices and plan ranges, trial logic, purchase/quote API, Stripe sync, approve/reject flows, the plan editor dialog. Done means: - Each item fixed or declined with a one-line reason in the PR. - Tests for 1, 2, 5 (Billing link), 8 (an org at its cap cannot open an interactive session). - Screenshots of changed surfaces at 390 px and desktop.

Outcome

PR #6487 is queued to the merge lane. Items 1–5, 7 and 8 are fixed: Agents now counts console sessions and the console refuses at the cap. Item 6 is declined because no contact plan is ever listed. Quick gate, web tests (1262) and API tests are green. The visual check is done. Follow-ups are in draft 8591.

Pull request

Artifacts

Activity

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