- Shipped
- August 27, 2026 at 3:19 AM UTC
- Author
- kamo
- Commit
- c1d3a84
ExtensionUsagePanel on the stats tab, beside the mailbox and storage panels: count by class, the catalog rate, the monthly total, and the rule in plain language. Both class rules can be shown at once, because an org can run a KamoPBX server and a RingCentral server in the same month - the case mail could never produce. The free numbers are given the same weight as the billable one. Devices are free under both classes, and unassigned extensions - queues, IVRs, ring groups - are free under the third-party rule and are usually the majority. Both are measured by the aggregator rather than asserted in the copy. Gating on the add-a-phone-server picker, with two rules carried over from the e-mail work because both were learned the hard way. It fails OPEN, so a billing outage cannot strand an org mid-migration. And it never locks a provider type the org already runs a live instance of - all four orgs with a phone server today hold no add-on code at all, and telling them the server they are already using requires an add-on would be false. A locked card is shown with the reason on it rather than merely greyed out. Rates come from the catalog, never hardcoded: a rate written into the UI becomes a lie the first time the catalog changes, and nothing fails when it does.