diff --git a/ui/src/ui/views/skills.test.ts b/ui/src/ui/views/skills.test.ts index 28a5163f777..ce354ce0f0d 100644 --- a/ui/src/ui/views/skills.test.ts +++ b/ui/src/ui/views/skills.test.ts @@ -100,6 +100,8 @@ describe("renderSkills", () => { it("opens detail dialogs and routes ClawHub actions", async () => { const container = document.createElement("div"); + document.body.append(container); + dialogRestores.push(() => container.remove()); const onDetailClose = vi.fn(); const showModal = vi.fn(function (this: HTMLDialogElement) { this.setAttribute("open", ""); diff --git a/ui/src/ui/views/skills.ts b/ui/src/ui/views/skills.ts index 5145ead7e5a..361fae6f2d3 100644 --- a/ui/src/ui/views/skills.ts +++ b/ui/src/ui/views/skills.ts @@ -28,7 +28,15 @@ function showDialogWhenClosed(el?: Element) { if (!(el instanceof HTMLDialogElement) || el.open) { return; } - el.showModal(); + if (el.isConnected) { + el.showModal(); + } else { + queueMicrotask(() => { + if (el.isConnected && !el.open) { + el.showModal(); + } + }); + } } export type SkillsStatusFilter = "all" | "ready" | "needs-setup" | "disabled";