Show what THIS phone server costs, not just the org total

Fixkamo-internal
Shipped
August 27, 2026 at 8:22 PM UTC
Author
kamo
Commit
9cbd4a6

The extensions tab showed only the organization-wide figure, so an empty KamoPBX server displayed "21 billable extensions — $63.00 / month". The 21 were on a FreePBX server elsewhere in the same organization: true of the org, false of the server on screen, and impossible to tell apart from there. The panel now leads with the open server's own line — its billable count, its monthly total, the rule that applies to it, and its free extensions — and keeps the organization total underneath, which was worth having and is now labelled as what it is. The two provider kinds read differently on purpose, because they bill differently: a hosted server charges every active extension whether anyone is assigned or not, so its free count is always zero; a third-party server charges only assigned ones and reports queues, IVRs and spares as free. selectServerBilling prefers the SERVER's class over the organization's counts for exactly this reason — a new KamoPBX server is hosted from the moment it exists, and explaining its zero with the third-party rule would be precisely wrong. The helper lives in app/lib/voip rather than beside the component because vitest's `include` is an allowlist that does not cover app/settings/**, so a test placed next to the component would have silently never run. Needs BillingService e6d5c5c for the `instances` field; falls back to the old organization-only display without it.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing