diff --git a/apps/web/src/components/settings/NoteProseCssPreview.tsx b/apps/web/src/components/settings/NoteProseCssPreview.tsx index 96d0f25a..2c756a01 100644 --- a/apps/web/src/components/settings/NoteProseCssPreview.tsx +++ b/apps/web/src/components/settings/NoteProseCssPreview.tsx @@ -89,14 +89,21 @@ export const NoteProseCssPreview = ({ anchor.textContent = link; const codeElement = document.createElement("code"); codeElement.textContent = code; - paragraph.append(before, anchor, between, codeElement, after); + // Root typecheck resolves ParentNode.append to the Workers stream helper. + paragraph.appendChild(document.createTextNode(before)); + paragraph.appendChild(anchor); + paragraph.appendChild(document.createTextNode(between)); + paragraph.appendChild(codeElement); + paragraph.appendChild(document.createTextNode(after)); const quotation = document.createElement("blockquote"); const quotationText = document.createElement("p"); quotationText.textContent = quote; - quotation.append(quotationText); - prose.append(title, paragraph, quotation); - frame.append(prose); - scope.append(frame); + quotation.appendChild(quotationText); + prose.appendChild(title); + prose.appendChild(paragraph); + prose.appendChild(quotation); + frame.appendChild(prose); + scope.appendChild(frame); root.replaceChildren(style, scope); }, [after, before, between, code, dark, fontSize, heading, lineHeight, link, previewCss, quote]); diff --git a/tests/web-sync-queue.test.ts b/tests/web-sync-queue.test.ts index f2618868..905bd028 100644 --- a/tests/web-sync-queue.test.ts +++ b/tests/web-sync-queue.test.ts @@ -15,6 +15,7 @@ const { } = await import("../apps/web/src/lib/sync-queue"); const { formatLocalDraftClipboardText } = await import("../apps/web/src/lib/memo-save-conflict"); const originalFetch = globalThis.fetch; +const originalNavigator = Object.getOwnPropertyDescriptor(globalThis, "navigator"); const payload = (title: string, revision = 0): MemoUpdateSyncPayload => ({ memoId: "memo_sync_test", @@ -76,6 +77,11 @@ beforeEach(async () => { afterEach(() => { globalThis.fetch = originalFetch; + if (originalNavigator) { + Object.defineProperty(globalThis, "navigator", originalNavigator); + } else { + delete globalThis.navigator; + } }); describe("web sync queue concurrency", () => {