產品說明・版本解讀

EmDash 1.1:功能更新與程式碼隔離說明

EmDash 是什麼、1.1 更新了什麼,以及「新建的 HTML 程式碼區塊預設隔離、讀不到網站 Cookie」究竟適用在哪裡。

依官方發布資料整理 重點:不要混淆三種沙盒 可離線閱讀・響應式版面

EmDash 是什麼

EmDash 是一套開源內容管理系統(CMS),以 TypeScript 撰寫、由 Astro 驅動。Cloudflare 將它稱為 WordPress 的「精神上的接棒者」:這是產品方向的比喻,不表示它是 WordPress 的新版本,也不是沿用 WordPress 程式碼重製;Cloudflare 明確表示建立 EmDash 時沒有使用 WordPress 程式碼。它可部署在 Cloudflare,也可執行於 Node.js 伺服器等環境。這些定位可見於 Cloudflare 的 EmDash 介紹。

官方在 EmDash 1.0 發布公告中稱它為穩定版,並定位為可用於正式網站的 CMS。1.1 是 1.0 之後的首次版本更新,主要擴充編輯與發布流程,同時修補效能和可靠性問題;因此 1.1 是建立在穩定版基礎上的更新,不應與早期預覽版混為一談。Cloudflare:EmDash 1.0 穩定版與外掛註冊表 ↗

版本脈絡
EmDash 1.0:官方標示為穩定版。EmDash 1.1:首個後續更新,新增編輯器、登入及公開內容搜尋相關能力,並包含核心、管理介面、Cloudflare 支援與外掛工具的修正。詳情見 EmDash 1.1 官方發布說明。

EmDash 1.1 更新重點

編輯與發布

發布日曆

在月曆或 Agenda(日程)檢視中查看已發布內容、排期內容及排期更新;可跨可見內容集合與語言篩選,並顯示網站時區(若與瀏覽器本地時間不同,也會顯示本地時間)。能發布該條內容的角色可調整排程、移除排程,或立即發布逾期內容。窄螢幕會以 Agenda 為預設檢視。

Portable Text 編輯器

HTML、CSS、JavaScript 區塊與預覽

HTML 區塊新增 HTML、CSS、JS 與 Preview(預覽)分頁。由管理介面新建,或在視覺編輯中用 /html 新建的區塊,預設以隔離 iframe 呈現;需要時可從區塊選單改選 Inline。

「新建時預設隔離」有範圍:既有 HTML 區塊,以及經由匯入、REST 或 MCP 建立的區塊,若沒有明確設定 isolated: true,仍會以 inline 呈現。
第三方內容

獨立的 iframe 嵌入區塊

可用 /iframe 加入其他網站頁面,貼上嵌入碼或 HTTPS 網址;YouTube、Vimeo 連結會轉成播放器。公開頁面使用響應式、延遲載入並設有 sandbox 與嚴格 referrer policy 的 iframe。若啟用 Astro CSP,需在 frame-src 允許預期的嵌入主機。

登入

Microsoft Entra ID

1.1 加入 Microsoft 工作或學校帳號登入。啟用提供者須設定 Client ID、Client Secret 與 Tenant ID;三者齊備後才會啟用。郵件地址是否被視為已驗證,會受 Tenant ID 設定影響:使用目錄租戶 ID 時有較明確的驗證依據;使用 common、organizations 或 consumers 時,預設不視為已驗證,啟用自助註冊前應依官方登入規則檢查帳號連結設定。

實驗功能

WebMCP 公開內容搜尋

實驗性的 WebMcpSearch 元件會在支援 WebMCP 的瀏覽器註冊唯讀 search_site 工具。只有瀏覽器代理程式呼叫該工具時才會執行搜尋;結果限於已發布且允許搜尋的內容,回傳標題、絕對網址與純文字摘錄。不支援 WebMCP 的瀏覽器不會執行此功能;WebMCP 本身仍是實驗性瀏覽器 API。

可靠性與效能

多項修正

更新亦修正可能漏掉項目的分頁排序、重新整理導向規則的方式,以及影像請求、選單快取、分類查詢與內容快取等問題。這些是分散在核心與管理/部署支援中的可靠性改善,並不等同於新增一個單獨的「效能模式」。

三種機制,三條不同的邊界

「沙盒」一詞在這些功能中指向不同層次。照片中的 Cookie 說明屬於第一層,不應拿來概括插件執行環境或整個 EmDash 網站。

1

文章 HTML 區塊的瀏覽器 iframe

Cookie 說明所在層。新建 HTML/CSS/JS 區塊預設使用 opaque-origin iframe;限制的是區塊中的瀏覽器程式碼讀取宿主頁面資料。改用 Inline 時,內容回到頁面內的經清理 HTML,不具相同隔離邊界。

2

EmDash 外掛的伺服器端能力沙盒

外掛在 Dynamic Worker/隔離執行環境中運作,透過 manifest 聲明並經網站管理員核准的能力取得特定權限。Cloudflare 的說明指出,未授予的能力不會因為安裝外掛就自動開放。這是伺服器端外掛權限模型,不是瀏覽器 iframe 對網站 Cookie 的隔離規則。詳見 EmDash 1.0 外掛安全與註冊表說明。

3

嵌入外部頁面的 iframe 區塊

這個區塊把另一個網站的頁面嵌進文章;公開渲染器提供響應式尺寸、延遲載入、sandbox 與嚴格 referrer policy。它與「在 EmDash 編寫 HTML/CSS/JS」的區塊不是同一個功能。使用 Astro CSP 時,需為預期的外站設定 frame-src。

部署與升級時留意

更新前

先備份,再依官方流程升級

1.1 發布說明建議升級前備份網站。Cloudflare 部署需同步更新 emdash 與 @emdash-cms/cloudflare 核心套件並重建;同站使用的 EmDash 外掛套件也應一併更新。Node.js 部署不需要 Cloudflare 專用套件。

自訂渲染器與 CSP

確認保留新區塊的渲染方式

若網站自訂了 HTML 區塊或 Portable Text renderer,須辨識 isolated: true:可交由 emdash/ui 的 HtmlBlock 處理,或自行使用不含 allow-same-origin 的 iframe sandbox。啟用 Astro 內建 CSP 時,應檢查它與隔離 HTML 的樣式、腳本及自動高度行為是否相容;外部 iframe 主機則按實際需要加入 frame-src。