- Shipped
- September 6, 2026 at 10:22 PM UTC
- Author
- Kamo
- Commit
- f928bca
The approved routing design had three tiers and only two of them were reachable. A number could name its own text provider, and failing that the phone server was asked to text itself — but the middle tier, "unless a number says otherwise, our texts go through Telnyx", was implemented in TextRouter and settable nowhere. An organization with two hundred DIDs on one FreePBX had to edit two hundred rows to express one fact, which is the data-entry job the Numbers screen was supposed to avoid. It is now a dropdown on the phone server itself. Three things worth naming: - The merge runs LAST in save(). Every provider branch above it ASSIGNS configJson rather than merging into it, so the first version of this was silently dropped on Telnyx servers — the one provider whose branch happens to come after where it originally sat. - "Nothing — set each number individually" rather than a blank option, because an empty dropdown reads as unset rather than as a decision. - The key is one string in two languages in two repositories, and drift is SILENT: the setting saves, the dropdown still shows the provider that was picked, and every number relying on the fallback quietly falls through to texting via the phone server — which for FreePBX means not texting at all. So the form imports DEFAULT_TEXT_INSTANCE_KEY, and textRouteContract.test.ts pins it against TextRouter.java the way billingCycles.test.ts pins the billing enum. That guard is deliberately honest about what it proves. The cross-repo half skips whenever the sibling checkout is absent or stale — which is most of the time — so it is named "when that source is available" and a pass there means "not contradicted", never "verified". The assertion that always runs is the one that caught a rename when the guard was probed by breaking it on purpose. Design doc updated: the two limits it listed as deferred — a carrier-only organization unable to thread a reply, and MMS through Telnyx — are both closed in voipservice 8eaebfb.