From 1860efa7af42853d5960d178387daf1651c00a4a Mon Sep 17 00:00:00 2001 From: Judith Roth Date: Mon, 8 Jun 2026 19:03:47 +0200 Subject: [PATCH] [STC-823] Documents not working on exotic browsers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://community.openproject.org/wp/STC-823 On epiphany, I got the following error: SyntaxError: The string did not match the expected pattern. add --- block-note-element.ts:54 BlockNoteElement --- block-note-element.ts:54 define Module Code --- block-note-element.ts:151 The root cause is that browser_specific_classes in BrowserHelper only adds classes for Chrome, Firefox, Safari, Edge, and mobile/Windows. Epiphany (WebKitGTK on Linux) doesn't match any of those, so it returns []. The ERB template then renders browser-specific-classes="", and "".split(' ') in JS produces [""] — one empty string — which passes the length > 0 guard and then classList.add("") throws in WebKit. --- frontend/src/elements/block-note-element.ts | 2 +- lib/primer/open_project/forms/block_note_editor.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/elements/block-note-element.ts b/frontend/src/elements/block-note-element.ts index 2dddfcee99c..3561cc8da42 100644 --- a/frontend/src/elements/block-note-element.ts +++ b/frontend/src/elements/block-note-element.ts @@ -49,7 +49,7 @@ class BlockNoteElement extends HTMLElement { const shadowRoot = this.attachShadow({ mode: 'open' }); this.editorRoot = document.createElement('div'); - const browserSpecificClasses = this.getAttribute('browser-specific-classes')?.split(' ') ?? []; + const browserSpecificClasses = this.getAttribute('browser-specific-classes')?.split(' ').filter(Boolean) ?? []; if (browserSpecificClasses.length > 0) { this.editorRoot.classList.add(...browserSpecificClasses); } diff --git a/lib/primer/open_project/forms/block_note_editor.html.erb b/lib/primer/open_project/forms/block_note_editor.html.erb index 840c78a40b2..cbcf474576c 100644 --- a/lib/primer/open_project/forms/block_note_editor.html.erb +++ b/lib/primer/open_project/forms/block_note_editor.html.erb @@ -41,7 +41,7 @@ "attachments-collection-key": attachments_collection_key, "blocknote-stylesheet-url": blocknote_stylesheet_url, "shadow-dom-stylesheet-url": shadow_dom_stylesheet_url, - "browser-specific-classes": browser_specific_classes.join(" "), + "browser-specific-classes": browser_specific_classes.join(" ").presence, "data-test-selector": "blocknote-document-description" ) )