diff --git a/internal/gateway/ui/index.html b/internal/gateway/ui/index.html index f320636..e40f114 100644 --- a/internal/gateway/ui/index.html +++ b/internal/gateway/ui/index.html @@ -5052,18 +5052,26 @@ } /* ---------- boot ---------- */ + // refresh renders one tab. + // + // The plugin-element re-mount is applied HERE, once, rather than at the end + // of each renderer: seven pages assign their pane's innerHTML wholesale, + // and a per-page call is one more place to forget. function refresh(tab) { - if (tab === "status") return renderStatus(); - if (tab === "chat") return renderChat(); - if (tab === "keys") return renderKeys(); - if (tab === "sort") return renderSort(); - if (tab === "sources") return renderSources(); - if (tab === "adapters") return renderAdapters(); - if (tab === "plugins") return renderPlugins(); + const done = () => remountPluginElements(); + if (tab === "status") return renderStatus().then(done, done); + if (tab === "chat") return renderChat().then(done, done); + if (tab === "keys") return renderKeys().then(done, done); + if (tab === "sort") return renderSort().then(done, done); + if (tab === "sources") return renderSources().then(done, done); + if (tab === "adapters") return renderAdapters().then(done, done); + if (tab === "plugins") return renderPlugins().then(done, done); // A page contributed by a plugin has no renderer here: its