1.15.7 — The whole portal shows its work
Editorial identity incomplete
2026-08-20
A patch release completing the admin-portal responsiveness sweep. Every click that goes and does work now shows that it is doing it, across all the remaining surfaces — the WebApps list and app page, the onboarding wizard, Domains and DNS, settings, SMS, email, activity, the dashboard inspectors, the platform panels and people. Failures render in place with a retry instead of leaving the previous screen sitting there as though nothing was clicked. Two bugs where a click silently ran nothing are fixed, one of which left a live purchase button under a message saying the quote had expired.
Changed
- Every awaiting control in the portal now shows a pending state. Where a control is destroyed by its own reload — confirm-then-destroy flows, inspector actions that close before they await — the whole view goes busy instead, because there is no surviving element to pin a pending state to.
- An action whose first wait is a person answering a dialog shows nothing until they have answered.
- A panel that fails to load renders an error with a retry, instead of appending a message under stale content.
- The two local action wrappers are retired in favour of the shared one. The platform panels keep only scrim ownership, because their progress reporting needs it.
Fixed
- Clicking Users and then Groups in People left the Users content on screen while the address bar and page state said groups, and nothing ever repainted.
- The domain purchase button stayed clickable after its quote was spent, leaving a live money button under a message saying the quote was gone.
- Two unrelated screens both used the name
framework-updatefor their in-flight work and could return each other's.
Upgrade notes
- The contract test enforcing this now walks every JavaScript file in the portal rather than a hand-maintained list, so a new feature file is covered the day it is added. It also asserts that no pending state is pinned to a container its own handler closes, and that no module calls the shared helpers without importing them.
- The metrics controls are deliberately exempt from the re-entry guard: they supersede rather than queue, and guarding them would leave the chart on the previous selection while the control showed the new one — the exact disagreement this work exists to remove.