16fc14f
批量 page weight 更新
加入 POST /admin/pages/batch-weight,以 DB batch commits 套用批量 weight updates。包含嚴格 input validation 及優化 prepared statements,減少 round-trips。
// 開發日誌
根據 0xCMS Worker commit log 整理的最新改動。
c2d27ac可撤銷的存取 session 會把每個 access token 綁定到有效 session 及目前使用者角色,因此登出、刪除帳戶或調低角色權限會即時生效。Refresh session 現設有七日滾動期限及 30 日絕對期限。c2d27ac公開媒體與 plugin 檔案隔離 規定兩條公開媒體 route 均須有 media_files 登記才會提供物件;即使 key 與公開媒體重疊,plugin API 檔案仍保持私有。授權檢查會在 thumbnail cache lookup 前執行。c2d27ac由 host 核准的 plugin 能力 將具體 blueprint 存取、trusted plugin UI 及 plugin file prefix 交由 administrator 決定。除非明確核准 trusted UI,新舊 plugin 一律預設 sandboxed UI。c2d27ac更安全的即時編輯及 request 處理 WebSocket 必須有完全相符的 Origin 及有效 session,會重新檢查 idle socket,並為 request、upload、plugin file、state、asset 和 network fetch 設定上限。新帳戶現會以最小權限的 viewer 身分建立;管理員則可用已儲存的主色及系統字體 stack 個人化 CMS 介面。Viewer 登入後的頁面及 credit 個人檔案流程亦獲針對性的可用性修正。
ea01114最小權限的 viewer dashboard 每個新 OAuth 帳戶不論 provider 的 role claim,都會建立為 viewer。已登入 viewer 可載入 /admin、個人檔案及已驗證的 view assets,但內容及修改 route 仍受 capability 保護。9799a53已翻譯的 viewer 登入後頁面 Viewer dashboard 的字串現經 client-view translation catalogue 處理,歡迎、私隱及 app 指引文字會跟隨所選 UI locale。85a4918Viewer 狀態 icon 加入 viewer dashboard 所用而原先遺漏的 lock-closed SVG symbol。c50a022零餘額 credit 個人檔案 使用者沒有 credit 餘額時,wallet 轉帳及捐贈至 shared pool 的控制項會隱藏,避免顯示無法成功的操作。323b1e5執行時字體及主色設定 System settings 新增經驗證的主色及字體選項。已儲存的外觀會透過 CSS variables 為後台強調狀態及登入頁換色,包含可讀的前景墨色與深色/淺色調色階,毋須重新部署。新的 CMS 安裝現會在整合後的 baseline migration 建立 role permissions 時,保留既有的 plugin 後台存取模式。
4ae1cfbPlugin 存取 baseline migration 為已擁有 plugin-defined permission 的角色加入可重複執行的 plugin:access 授權,與既有安裝使用的 migration 一致;新 database 沒有 plugin permission 時則不會產生變更。Plugin 平台現在會把每個 manifest 身分釘選至已註冊的 Worker,並把 plugin 自訂權限限制在該身分的 namespace。批量發佈及取消發佈以有上限的 set-based batch 取代逐頁資料庫及 target 操作;setup wizard 現亦可建立並上載 Apple 會輪換的 client-secret JWT。
28bf7fe釘選 plugin 身分及 namespaced 權限 首次使用時會把 manifest ID 綁定到單一 registry row;重複或已變更的身分會被拒絕,直至 administrator 重新核准,而核准改名後原有 capability approval 會被撤銷。Plugin 權限必須使用該 plugin 的 <manifest-id>:<capability> namespace;非 admin 存取 plugin 頁面時,亦必須具備 CMS 端的 plugin:access 權限。2853f8eSet-based 批量發佈 批量發佈及取消發佈會以 batch 處理 submission-mirror 檢查、D1 發佈寫入、tag catalogue 及 publish target 工作。這會避免舊有的 N+1 request pattern,讓較大的有上限操作範圍仍可符合 Worker 及 D1 的 subrequest limit。b0156d3Apple setup 會建立 client secret 啟用 Apple 時,npm run setup 現會建立 ES256 JWT,驗證下載的 .p8 key 及 ID,並會在可行時從 AuthKey_<key-id>.p8 推斷 key ID。獨立產生器仍可用於 Apple 六個月期限前的 renewal。D1 update trigger 執行後,plugin 的頁面儲存現在會可靠地回報成功;runtime page 及 block type 的 slug 亦可保留底線,讓整合用識別碼更清晰。
8b91af0可靠的 plugin 頁面更新 PUT /__cms/pages/:id 現在只會把零行寫入視為 version conflict,避免 D1 trigger 或 index write 已成功儲存頁面後仍錯誤回傳 409。Runtime type normaliser 亦會保留 page 及 block type slug 內的 _。重新排序頁面列表後,系統會即時更新每個受影響頁面的草稿 weight,並立即顯示它是否與已發佈頁面不同,讓 editor 不用離開列表也可發佈新的次序。
a3e4f6b已發佈 weight 同步提示 會回傳目前可見重排範圍的最終 weight、毋須重載 dashboard 即可更新控制項,並在草稿 weight 與已發佈值不同時顯示原有的發佈同步 action。Editor 現可直接在單一頁面類型的 dashboard 列表排列頁面;管理員亦可拖曳排序主要及 Settings 側欄連結。兩個流程都保留精確的 weight 控制,方便微調。
231c688安全的頁面列表重排 為未套用狀態篩選的單一頁面類型列表加入僅限拖曳手柄的 drag-and-drop。Server 會驗證所見範圍仍然是最新、把序列上限設為 5,000 頁、以保留手動調整空間的間隔重新編號,並記錄 audit event。31618e4可拖曳排序的側欄設定 以可重用的拖曳控制取代設定表格,用於主要及 Settings 導覽項目,同時提供顯示狀態、icon 及 weight 設定,並保留 System 的防鎖死保護。批量搜尋及取代現在會把頁面標題視為可編輯內容,讓一致的改名可在一次經檢閱的操作中,同時更新頁面名稱及相符的結構化欄位。
73cb7f1頁面名稱批量取代 會在取代預覽中加入 page.name,並與相符的 lect 文字一併更新。即使只改動名稱,頁面仍會保留版本歷史及 lifecycle update event。已登入的 viewer 現會進入安全的 dashboard,不再完全被 CMS shell 擋住。Editor 可在確認批量變更前,先預覽有上限的文字取代結果;Apple 亦已啟用為 production OAuth provider,並附有本機 client-secret 產生工具。
138949fViewer dashboard 及可預覽的批量取代 讓沒有任何權限的已登入使用者可進入 /admin 及個人檔案,同時仍關閉所有受保護的 editor route。Advanced Search 新增 Search & Replace 流程,確認前最多預覽 100 個頁面及 500 項改動,支援 selected 或 filtered scope,並重用有上限的 bulk-action path。8005766啟用 Apple 登入 把 apple 加入 ENABLED_PROVIDERS、設定 CMS Services ID,並提供 npm run apple:client-secret,以 team、key 及 Services ID 資料產生 Apple client-secret JWT。協同編輯現在會在字元層級合併並行的 rich text 變更;同時插件平台加入明確的瀏覽器信任邊界、由 host 管理的檔案儲存,以及由 operator 管理的 tenant 設定。唯讀角色亦不會再進入可編輯的頁面表單。
2fc061bYjs CRDT 協同編輯及插件信任級別 在 PageSyncDO 以逐欄 Y.Text document 取代整欄 richtext 衝突。插件現可宣告 server-only、sandboxed-ui 或 trusted-ui;sandboxed UI 在 opaque-origin iframe 內運行,而 server-only 插件不能提供 admin UI。4eebc7e受範圍限制的插件檔案 API 新增經驗證的 /__cms/files,讓插件存取 CMS R2 media bucket。插件必須宣告 path prefix,並由 administrator 核准;重疊的 prefix 會全域保留,list/read/write/delete 操作亦設有上限並使用 no-store。3cf00a4Plugin manager 的 tenant variables 讓 operator 可透過經驗證的插件設定 endpoint 檢視及更新 manifest 宣告的 tenant variables,值會限定於 canonical CMS tenant。06d80df唯讀編輯器 guard 把沒有 content:write 的使用者,由 /admin/pages/:id/edit 轉至對應的 read view,保留原有 query string,亦不會在只供檢視的 session 載入協同編輯 assets。插件現可宣告新連接 CMS tenant 時所需的部署變數。enrollment handshake 只會傳送變數名稱;插件 SDK 在一次性 ticket 兌換後才複製相符且非空白的值,讓每個 tenant 的設定保持隔離,同時不會在傳輸中暴露 secret。
181003a經驗證的 tenant KV 變數 為自動插件 enrollment 加入 manifest tenantVars/tenant_vars 支援。名稱必須是唯一的大寫 identifier,且不可與 SDK connection field 衝突;connection rotation 時既有的 tenant 專屬 override 會保留不變。Tags 畫面現在只會在確實同步成功或失敗時顯示發佈同步訊息,平常管理標籤時不再出現空白的狀態提示。
ea445da準確的同步狀態 banner 令 Liquid tags view 可分辨空白 query value 與真正訊息,所以一般開啟頁面時不會誤顯示成功或錯誤 banner。008e974批量取得插件頁面資源 新增經驗證的 POST /__cms/pages/list-batch,以一個 D1 batch 載入最多 20 個各自排序的頁面類型清單。插件可選擇按 tag taxonomy 為每個有上限的結果分組,並可包括未標記頁面,同時維持頁面類型存取及 request limit 的限制。編輯者現在可從 dashboard 及進階搜尋,為多個頁面批次新增或移除索引。流程會尊重既有的頁面及索引記錄,只更新實際有變動的頁面,令處理大量內容時的分類管理更方便。
5c32545批次新增索引 為已選頁面或已篩選結果加入 Add tags action,並按分類法分組顯示索引。系統會略過既有關聯、照常記錄 page-update lifecycle event,並沿用現有具上限的批次 action 路徑。f7f66b4批次移除索引 加入對應的 Remove tags action。沒有所選索引的頁面會安全略過;已變更頁面則會獲得正確的更新時間及 lifecycle notification。a7a3c7c可靠的新索引表單 如未填寫 slug,索引編輯器會自動產生可用 slug,避免建立索引時發生 server error。060e0ba刪除安全的索引變更 批次移除進行期間,系統會確認所選索引記錄仍然存在,避免過時選擇影響頁面與索引的關聯。48ead8f已發佈標籤目錄 現在會把完整 tag 記錄鏡像到 D1 及插件發佈目標,而不只同步頁面與 tag 的關聯。建立、編輯、重排、移動、刪除或改名 tag/taxonomy 時,公開讀取端亦會同步;Tags 後台另提供具上限的 Sync published backfill,供既有網站使用。f6a48a4整合已發佈 migration 把 published-tag schema 併入 baseline migration,令新的 published D1 安裝與目錄保持一致。語言設定現已成為一項一等的內容設定,CMS 可採用最切合網站的已啟用 locale,而非固定預設值。頁面工作區和 dashboard 亦加強了狀態、翻譯及發佈回饋;rich-text 欄位則更易閱讀和編輯。
24737ff可設定的預設內容語言 在 Languages 後台加入由 content.default_language 支援的選擇器。所選的已啟用 locale 會套用到內容設定、tag label 及後台 API,CMS 亦會防止它被停用或刪除。17e7ceb更易閱讀的頁面編輯 改善 field label 版面,在頁面身分資料旁顯示目前 draft/live/scheduled/ended 狀態,提供安全的預設 field renderer,並為 richtext/md 加入即時字數和字元數。59213c2發佈狀態感知的頁面 weight 清楚分隔 dashboard 的 weight 修改與 live 內容,當 live weight 與 draft 不同時發出提示,並提供明確的發佈路徑以同步兩者。32af684已翻譯的頁面列表及編輯器 chrome 把頁面列表 heading、數量及 scheduled/ended 狀態文字本地化,並以目前 UI 語言顯示 editor title 和 save-and-publish control。頁面編輯器現以頁面身分及當前工作為核心重新編排。Metadata、協作者和發佈 control 各有更清晰的位置;結構化內容亦可保持精簡,同時保留編輯和重排 control。配套 client renderer 會在 client-side render 後維持一致的行為。
9845567聚焦的編輯版面 將頁面名稱、slug 及頁面類型放到更突出的層次,重新整理頁面設定的分組,並改善較小螢幕的 responsive 編輯器及 sidebar 細節。7934d68精簡的發佈及協作 control 為發佈時間表和 action 設立獨立的可摺疊 panel,把協作者管理放到頁面 attribution 旁邊,並讓編輯器的結構化欄位 copy/paste 工具隨時可用。a40b624記住狀態的結構化編輯器 section item group 和個別 item 現可摺疊,並在 browser 按頁面保存開合狀態。client-rendered 路徑亦會提供穩定 key,讓動態 render 後保留相同體驗;顯示 flash 後亦會清理 URL。b4741e7依賴項目維護 更新專案鎖定的 dependencies,讓 Worker toolchain 保持最新。Plugin 建立頁面時現可穩妥處理較長的生成 slug;Liquid 後台 shell 亦加入更安全的 render 方式及可重用、由設定驅動的 page chrome。Core template 和共用 view section 已整合至 src/core,feature 擁有的畫面則保留在相應的可選能力旁邊。
5baecce長 slug 安全的衝突檢查 Plugin 建立頁面時,檢查生成 slug suffix 的方式由 LIKE 改為可利用索引的 lexical range。較長的標題,例如 shipment EDM subject,不會再超過 D1 的 pattern limit。f79f605安全的 Liquid layout render 驗證 layout syntax,並只在受信任的 render boundary 明確以 raw 輸出 body,同時提供標準的 header 及 layout content slot。664febb共用後台 page chrome 新增可重用的 page-header 及 form-actions section,並在 core 和 feature view 中以 template 設定驅動 heading、back link 及 action。既能減少重複 markup,亦保留各畫面的 route-specific control。c3f549Core template ownership 把必備的 TypeScript template 由 src/templates 移至 src/core/templates,令 Worker 程式碼及 view assembly 的 core/feature 邊界更明確。私有 CMS 與已發佈的 D1 資料庫現共用相同的頁面和 tag table 名稱;draft version 則由不可變的歷史記錄推導,而非依賴可變 pointer。後台 view tree 亦採用與 Worker 程式碼及 schema 相同的 core+feature profile 邊界,因此關閉的能力不會再隨 bundle 帶出其畫面或翻譯。
20fbcec對齊的 D1 頁面資料表 把 CMS 及 published store 統一為 pages 和 page_tags,並為既有資料庫提供明確 migration scripts。Draft/admin 內容與 published reads 現由資料庫邊界區分,而非不同的資料表名稱。3fb342b由歷史推導 active version 移除 draft_pages.current_page_version_id;最新的不可變 page_versions 記錄會定義 active draft。相關 migration 亦移除 draft page 的 parent cascade,讓 child records 得到刻意處理。c331c8a按 profile 組裝的後台 views 把每個可選 feature 的 Liquid templates、browser assets 及 locale fragments 放回其程式碼旁邊,再只把已啟用的 views 組裝到 dist/views。Wrangler 現會在 deploy 前執行 build,避免 CI 或直接 deploy 時缺少生成的 assets。3a080a6更精簡的後台 chrome 加入側欄切換按鈕並改善 credit 餘額換行,讓 responsive 後台導覽保持緊湊,同時不會失去 controls。Plugin 現可保存只屬於某個 CMS 的連接資料或偏好,而毋須把這些由 host 擁有的資料放到 plugin Worker。新的 state contract 會把每個 CMS tenant 的記錄留在其自身的 D1 資料庫,並在 plugin 被正常解除註冊時一併移除。
b7bddfa由 host 擁有的 plugin state 新增已驗證的 GET、PUT 及 DELETE /__cms/state endpoints,用於按呼叫方 manifest ID 命名空間劃分的不透明 JSON 值。Key、value 大小及每個 plugin 的項目數量均有限制;state 會隨 plugin 清理,且明確不應用作 secrets store。c337f31State API 指引 為 plugin 作者及 operator 記錄 /__cms/state routes、host 與 plugin 的資料擁有權、限制,以及安全處理未完成 migration 的方式。Credit 現已成為可獨立選用的多貨幣 feature:operator 可用一般 credit 或 premium diamond 為動作定價,而無需讓 CMS core 依賴收費邏輯。當 tenant 在 KV 設定可用前已被快取,plugin enrollment 亦能順利復原。
fd39484Diamond wallet 在 credit 以外加入獨立的 diamond 貨幣。每種貨幣各有 user wallet、shared pool 及只追加的 ledger;以 diamond 定價的動作不能花費一般 credit,plugin 亦可宣告每項收費使用哪個 wallet。6b3250b可移除的 credit engine 把 currencies、billing contracts 及 credits 實作放到生成的 feature-service registry 後面。Profile 可獨立安裝 credits;未安裝時,定價動作會維持免費,core 亦不會 import billing。63034b6已快取 tenant 的復原 當自動 enrollment 的 plugin tenant 快取記錄尚未有 KV 設定時,系統會重新連接它,operator 無需先手動清除快取即可完成 tenant 設定。0xCMS 現以穩定的 core 與可獨立選用的 feature slice 組成。單一 profile 會生成 Worker registry 及全新安裝所需的 schema,而明確的 extension point 令可選的 plugin、發佈、後台與基礎設施不會變成隱藏的 core 依賴。
7c07f96生成 feature profile 以 cms.features.json 作為已啟用 feature 的唯一來源。Build 會生成 registry 並組合 schema fragment,令全新部署只包含所選 feature 的程式碼和資料表。3f2a6f2保障 dependency 的 profile 當所選 feature 依賴已關閉的 feature 時會拒絕該 profile,不會留待部署在 runtime 才失敗。046137ecore 與 feature 的邊界 把共用 render、HTTP、authentication、Durable Objects 及 publishing 整理至 src/core/,feature slice 則透過 extension point 運作,不再反向 import。eba1701完整的平台 slice 把 plugin platform 整合至 src/features/plugins/,與其他可選能力並列,並為 operator 和 contributor 記錄新的結構。e5dac63更清晰的 runtime content types 把資料庫管理的 content-type feature 改名為 runtime-content-types,並將生成的 registry 移到 src/generated/,清楚區分 build output 與可選 feature。60725ed可選的背景工作 令 jobs slice 可獨立移除。安裝時,長時間 plugin 動作及 search 批量操作會使用耐久的 queue 工作;未安裝時,CMS 會安全地回退至有界的同步處理。47ca3c7配合 profile 的選單設定 隱藏已由 build 排除的 feature 控制項,並保留其 sidebar 的已儲存狀態,因此日後重新啟用 feature 時不會意外令導覽維持關閉。Editor 現可在不同頁面或語言之間搬移整套結構化值,毋須逐項重建 form。支援的 multi-tenant plugin 亦可透過短暫、單次使用的 enrollment exchange 從 CMS 連接;同時平台把 schema 和 feature ownership 整理到界線清晰的 slice。
8cf70b7複製及貼上 page fields 為 structured editor 加入覆蓋所有 lect-encoded settings、content、blocks 及 items 的 clipboard。貼上時會套用目前語言、報告目標中沒有對應的 field、確認取代操作,並在 browser permission 不可用時提供手動 clipboard fallback。44a1bd1自動連接 plugin tenant 宣告 autoTenant 的 plugin 可由 admin UI 完成 CMS tenant 設定。五分鐘有效、只存 hash 的單次 ticket 會綁定已註冊 HTTPS URL;只有 plugin 可透過 /__cms/tenant/claim 一次性兌換其 pairwise secret。e4f4245由 feature 擁有的 schema fragment Migration 會由各 feature 旁的 SQL fragment 組合而成,並有測試驗證每個支援的 profile 均可執行,以及移除 feature 後不會破壞其餘 Worker。結構化編輯器加入可重用的上載和評分欄位選項,item 次序亦可直接以拖曳手柄調整。Rich text 在標點符號及 CJK 文字旁的 inline 格式更可靠,而沒有 translation catalog 的 plugin 亦不再發出遺失 locale 的 request。
708ae42可靠的 rich text 及拖曳排序 在轉換 Markdown 時保留 word joiner,令 inline emphasis 在標點符號及 CJK 文字旁仍能維持正確。Client-rendered item group 現設有可存取的拖曳手柄,儲存前會更新既有的 weight 欄位。98e022efile、range 及 rating page fields 新增可重用的 file、range 及 rating snippets。檔案會上載至 /media/files/;range 提供附標籤的離散選項;rating 提供可用鍵盤操作的星級選擇,並保留無 JavaScript fallback。4922f52可選的 plugin nav locale 令沒有選擇 i18n 的 plugin 保留 manifest label,不會再查詢不存在的 translation key。5da8296按選擇要求 plugin locale 把 manifest 的 i18n 設定傳入 plugin client view,只有提供 catalog 的 plugin 才會請求 locale JSON。由本機 CMS 提供的 plugin 頁面現在可顯示本機開發 server 的圖片,同時不會放寬 production policy。
c4dde2b本機 plugin 圖片 CSP 由目前 CMS URL 建立完整文件 plugin 的 img-src policy。只有在 localhost 或 127.0.0.1 提供 CMS 頁面時才容許 loopback HTTP 圖片;production 繼續使用較嚴格的 'self' data: https: policy。媒體選擇器現在可在 edge 產生精簡預覽,同時不會公開私有媒體 bucket。新路徑保留既有的安全行為,任何無法產生縮圖的情況都會可靠地提供原始檔案。
2c3bec6使用 Images binding 的媒體縮圖 將 /media-preview/* 改為經 Cloudflare Images binding,從私有 R2 object 產生並快取 100×100 WebP cover 縮圖。若 binding 或 object 不存在、檔案並非圖片或過大,或解碼失敗,系統會安全地回退至原始 object,並保留 media security headers。46d92eb更新 dependency lock 更新 package-lock.json,令已解析的 package set 保持最新。內容作者現在可在頁面編輯器使用更完整的 Markdown workflow。新的欄位會同步 rich text、Markdown 與已儲存的 HTML,而相關 client bundle 和 dependencies 亦已整理及記錄。
9f1548eMarkdown rich-text 編輯器 新增 richtext/md page field,提供同步的 rich-text、Markdown 及 HTML 模式。預設 page 和 block 的 body 欄位現已使用它,並附有 bundled client asset、已翻譯 controls,以及對過往 double-escaped HTML 的安全還原。9cd2f10更清晰的 Markdown 編輯 把深色 Markdown textarea 改用白色文字,提升對比度和可讀性。319f203記錄 client bundling 記錄 rich-text browser code 的 esbuild pipeline,並更新 Worker tooling dependencies。4a59337精簡內部 API surface 移除未使用的 admin、role 和 publishing exports,不改變 runtime behaviour。Plugin operator 現可直接在 CMS 複製註冊 secret 和 tenant KV 連線資料,並會看見清晰的暫時成功提示。今次更新亦讓共用 page-field snippet 支援翻譯,並把 credit subscription 整合到 CMS 初始 schema。
b271f8eTenant KV 設定輔助 在每個 plugin 的 shared secret 旁加入可複製的 Tenant KV key/value,令 Worker 設定更快、更不易出錯。63a300f複製成功提示 為 plugin form 的複製按鈕加入已本地化的 Copied! 狀態、Clipboard API 支援及 textarea fallback。3c8ef68本地化 page-field snippet 讓 text、email、number、textarea、picture、select 和 switch 欄位可從 i18n key 取得已翻譯的 label、placeholder 及 option label,同時保留純文字 fallback。e297eaa整合 credit-subscription schema 把 credit_subscriptions 併入 0001_initial_schema.sql,讓新的 CMS 安裝只需一個 baseline migration。CMS 進一步成為更適合國際化和訂閱模式的平台:admin 可按選用語言和時區工作,plugin 可收取週期 credit,而由設定或 plugin 擁有的 page type 可安全擴展,毋須修改其基礎定義。這個版本亦收緊 Worker 的渲染及 request 邊界,並改善安裝流程。
6932e40週期 plugin credit 與類型擴展 新增 credit_subscriptions、排程式預繳/後付 billing、ledger integration,以及 Plugin API subscription/usage endpoints。admin 亦可為設定或 plugin 定義的 page type 追加 blocks 和 taxonomies,同時保護其原有定義。f77e725本地化 admin 及 timezone 設定 以 database-backed locale overrides 本地化 admin UI,讓 system timezone 可設定,並在 admin、auth、profile 和 settings flows 一致保留選用 locale。25f30cc本地化 plugin management 令 plugin assets、credits、limits 及 page-type management 同樣使用已翻譯的 admin 體驗。0ab2945Profile language selector 在 admin profile menu 加入精簡的語言控制,並在 return paths 和 logout 後保留 locale。dfdc453更清晰的 editor 與 dashboard workflow 改善 responsive dashboard/plugin actions 及 editor layouts,提供更清楚的已翻譯 controls 和 page-reference 行為。431709e可靠的 privacy controls 令 privacy toggles 在可捲動的 admin tables 中保持正確位置,並把 recurring-credit migration coverage 移至現時 schema path。927432a更安全的 rendering 及 origin configuration 加固 rendered 及 proxy plugin content,並把 canonical-origin enforcement 改為按部署需要選擇啟用。9e78ac2Auth 及 SSRF 加固 收緊 authentication 和 server-side request checks,並擴大 security regression coverage。d00661a互動式 Cloudflare setup 新增 installation script 引導設定 Cloudflare;a6ba4e8、bc4498a 和 6b8c4dc 則更新 dependencies、client rendering 和 migration-contract coverage。f8407fe批量 dashboard 編輯及更完整翻譯工具 新增可選取的頁面列和批量動作、page-type 篩選、可搜尋的 parent-tag picker,以及可對照內建 locale 值與 database override 的翻譯管理。bacbe74可靠的批量搜尋類型處理 dashboard 的批量進階搜尋會直接從 D1 解析 page type,包括已不在現行 blueprint 的類型;6e4876b 則本地化相關 confirmation dialog。31f2aa4更精簡的 trash 及 tag 動作 把 page-type context 移入可點擊的 trash-list badge,並以可存取的 icon action 取代 tag table 的文字 edit link。在公佈 host source 前,完成 authentication、authorization、plugins、structured input、response caching 及 dependencies 的程式碼層面審查。修正均有 regression tests;這是安全審查,不是認證,亦不能取代獨立 penetration test。
/__cms fail closed;全域 fallback 永不接受作 inbound authentication。kid、issuer、audience、expiry 及 OAuth nonce。剩餘信任邊界:代理的插件頁面及已核准的 plugin JavaScript 會在 CMS origin 執行。只安裝已審核插件,並只批出最低所需的 assets 及 delegated scopes。
新增可在執行時管理語言及翻譯的後台介面,讓所有 admin 更易檢視 plugin 價格和 limits,並加強 Worker 的請求一致性及重複提交防護。
6479917語言及翻譯管理 新增 /admin/settings/languages 及 /admin/settings/translations,可管理 locales、fallback 次序、content/UI 啟用狀態,以及由資料庫支援的 translation overrides;同時收緊 admin 及 Plugin API 的 authorization checks。5aefef7Credit summary 新增唯讀的 /admin/settings/credits 總覽,顯示已啟用 plugin 的 charges、有效價格及 usage limits。78c568f一覽 limits 在總覽加入有效 quota limits 及 scope;所有已登入 admin 都可查看,而設定連結只會向 plugin manager 顯示。4c33c6b耐久的重複提交防護 把單次使用 _cms_once form token 的 claim 由 D1 移至分片 Durable Objects,為相同提交作序列化而不造成 D1 contention,並保留安全 retry 的 release 行為。5a976da一致的 D1 request session 每個 Worker request、queue job 及 scheduled task 均由 primary D1 session 開始,使之後的 read 可看見之前的 write,同時安全使用足夠新的 replicas。2eeaaf4簡化全新安裝 將 migration history 合併為完整的初始 private 及 published schema,令新的 0xCMS database setup 只需一個 baseline step。0824f92Plugin registration 指引 更新 runtime plugin registration 的 configuration 及 documentation,包括 inbound 與 outbound secret 之間清晰的界線。為 Plugin API 加入受範圍限制的批量發佈操作,保護 admin POST form 免受意外重播, 並讓已設定的 CMS 品牌可直接連回 admin dashboard。
a30d577Plugin 批量發佈 API 加入 POST /__cms/pages/publish,可一次處理最多 100 個 draft page ID。此 API 強制 plugin authentication 及 page-type scope,拒絕無效或重複 ID,逐項回傳包括 partial target failure 在內的 publish error,並透過現有 pipeline 觸發 publish hooks。25288c2單次使用的 admin submit token 為每個 form 簽署 _cms_once token,並在 D1 作原子 claim,防止 double-click、resubmit 和 retry 導致重複 POST;下游工作失敗時會釋放 claim 以便重試。同時保留 publish 及 unpublish 動作的 return_to。229df8e可連結的 admin 品牌 讓 desktop 及 mobile admin navigation 內已設定的 site title 和 icon 可直接連到 /admin。令大型 Plugin API lookup 可安全避開 D1 bind limit,統一 page/block type administration 與 plugin page creation, 並把 CSV tools 移至專用 import-export plugin;同時加入受權限控制的 media content list、穩定 Pages navigation,及擴充 plugin capabilities 與 credits。
d1c302b可擴展的 Plugin API lookup 透過 json_each(?) 以 JSON array 綁定 page IDs 及 slugs,令大型 ids/slugs lookup 與 include_tags=1 list 不會超出 D1 的 100-parameter limit。c5f2adc統一類型後台與建立流程 把 page-type 及 block-type CRUD 整合至共用 type-admin routes 和 views;單筆及批量 Plugin API page creation 現共用同一套驗證流程,處理 parent/ID resolution、limits、credits、writes 及 hooks。07a281cImport/export plugin 基礎 把內建 CSV tools 移至專用 plugin,並為 import/export workflow 擴充 Plugin API 的 content metadata、tag ensuring 及 bulk lookup 支援。5c8b636Dictionary build 清理 移除已過時的 Chinese-character dictionary generation script;保留現有生成的 search data,毋須再維持未使用且依賴網絡的 build step。c4d7b8dMedia content list 加入受權限控制的 /admin/settings/content 頁面,列出 R2 media objects 的 metadata、支援 cursor pagination,並連結至每個檔案被哪些 draft pages 引用。7aa8bad穩定的 Pages navigation 設定 custom admin home 時仍保留 Pages sidebar entry,讓用戶可隨時從 admin navigation 返回 content list。e6993f6Plugin taxonomy 探索 把 contentTypes.taxonomies 加到 plugin page-types 畫面,分開顯示已定義 page types、taxonomies 及 delegated access,並加入 links 和測試覆蓋。36a1e62Plugin-defined page types 在 delegated read/write scopes 旁顯示 contentTypes.blueprint,讓 admin 清楚區分 plugin 定義的 page types 與其申請的 access。3f662bdSubmission ingest 一般化 把任何 live-only page 視為 submission mirror,加入專用 submission hook,並按 mirror history 阻止 publish/unpublish,而毋須依賴 hard-coded page types。e6e8e1c可靠的 plugin navigation 令 plugin sidebar items 在 deep routes 及 page-edit return flows 中保持 active,並在 mobile menu 打開時把 active item 滾動至畫面內。98d10e4並行 refresh grace 為剛 rotation 的 refresh tokens 提供短暫 grace window,避免並行 admin requests 被錯誤撤銷,同時保留 expiry checks。a80c19c可選 live page status 為 /pages 及 /pages/:id 加入 include_live_status=1,毋須額外 requests 即可回傳 isPublished。a5bad97Shared credit pool 及 transfers 加入 site-wide credit pool,可補足不足的 credits、接受用戶捐贈及 admin 調整、支援 permissioned grants 和 user-to-user transfers,並透過 credit API 回報 pool balances。擴充 plugin operations,支援 transactional bulk page updates 及 per-second limits;同時加入由 owner 定義的 publish-time lect projections,令 live content 可在發佈到所有 targets 前一致地精簡。
6bff14aPublish-time lect projections 在 snapshot build 期間加入 plugin-defined contentTypes.publishLect rules、強制 blueprint ownership,並將相同的 draft projection 套用於 live-versus-draft comparisons,避免 projected page types 顯示錯誤的永久 drift。b7f6cb9Per-second plugin limits 加入 per_second operational limit scope,容許省略 page_type,更新 normalization 及 admin messaging,而此 plugin-enforced limit 不會計入 CMS usage。9c70291Bulk Plugin API page updates 加入 PATCH /pages/batch,讓 plugins 以 transaction 更新多個 page lect,同時保留 version history 及 per-item errors;預先分配 page 與 version IDs 以減少 D1 subrequests,並擴充 batch tests 及 duplicate slug-family handling。加入 plugin-declared auto-republish behavior,令已 live 的 plugin page types 可在儲存後自動重新發布; 同時把 inline field behavior 移到 shared assets,令 admin page fields 在 client-side re-renders 及 plugin-view sanitization 後更穩定,並簡化 legacy trash restore handling。
9347cf0Auto-publish PR merge 把 auto-publish-gpt 分支的 plugin page type auto-republish work 合併到主要 CMS history。6640b8fAuto-republish plugin page types 加入 plugin-declared autoPublishTypes,讓符合資格且已 live 的 plugin-owned pages 在儲存後自動重新發布,避免該 path 觸發重複 update hooks,更新 flash messaging,並以 route tests 覆蓋 republish 及 draft-only behavior。8f1995dShared page-ref asset 把 page reference combobox logic 移到 /assets/page-ref.js,由兩個 layouts 載入,移除 snippet 內的 inline script,並以 sticky action row 令 editor actions 保持可見。6a0009cShared picture field asset 把 picture preview 及 upload behavior 抽出到 views/assets/picture-field.js,令 picture fields 在 client-side rendering 及 sanitized plugin HTML 後仍可正常運作。1da7d48Legacy restore snapshot cleanup 移除舊有 special-case restore path,不再為沒有 preserved version history 的 trashed pages 建立額外 snapshot,並更新 restore query helper comments 以反映現時行為。加強 secret-authenticated plugin requests:把標準化 tenant identifier 帶到 admin proxying、 edit views、hooks、publish targets 及 background jobs。
4012cd2Tenant-aware plugin auth headers 傳遞 x-cms-tenant,以 pluginTenantId 集中處理 auth header setup,並改用 constant-time plugin write-back secret checks,同時加入 CANONICAL_ORIGIN tenant 行為的測試覆蓋。打磨 plugin-facing 細節:single-item navigation entries 會使用 plugin labels, 而 Plugin API 在禁止使用的 page type 場景會回傳更清晰的錯誤。
ca7b693Single-item plugin nav labels 當 plugin 只註冊一個 navigation item 時使用該 plugin 的 label,令 admin sidebar 更容易掃讀。db5ba6fForbidden page type API errors 當 page type 超出允許 scope 時,為 Plugin API callers 提供更具體的錯誤訊息。透過 batched plugin hooks、可選的 page field projection,以及 indexed pointer filter queries, 改善 Plugin API 的效能及 response shaping。
7b4955eBatched plugin hooks 及 field projection 減少重複 hook work,並讓 Plugin API page responses 只包含 requested fields。27b7f82cms-api.ts follow-up 在 field projection 改動後收緊 Plugin API implementation。69cc5ffPointer filter indexes 加入 D1 indexes 及 query updates,令 advanced search 及 Plugin API 使用的 pointer-based filters 更快。把 advanced search 擴展成較安全的 bulk operations 介面,加入 async admin jobs、batching、 lifecycle logging 及 queue configuration。同日亦加入 page create validation、RSVP submission ingestion、 Plugin API 命名整理、mobile dropdown 修正,以及 default-timezone version timestamps。
dff9ffbPage create ID validation 在透過 Plugin API 建立 pages 前,先驗證 incoming IDs 及 parent references。17c87f8Guest import confirm action revert 經 review 後移除 queued guest import confirmation path。2a9fc6dQueued guest import confirm action 原本把 guest import confirmation 轉到 admin job queue 處理。1d18f7eBulk unpublish optimization 改善 D1、R2 及 Worker publish adapters 的 bulk unpublish handling,並加入 lifecycle logging。865de78Admin jobs queue for bulk operations 啟用長時間 bulk actions 需要的 Worker queue configuration。337b579All-scope bulk action fix 令 all-results bulk actions 忽略 visible row selections,確保正確套用 requested scope。4850329Batched advanced search bulk actions 把 bulk work 切成較細的 admin job batches,令處理更可預期。a47960bAsync bulk search operations 把 advanced search bulk actions 改由 admin jobs 執行,不再於 request 期間完成所有工作。c046559Advanced search bulk actions 加入 bulk controls、search utilities、admin rendering support、styles、Liquid view updates 及 route tests。3622924RSVP submissions 轉為 draft pages 把收到的 RSVP submissions ingest 成 draft page records,並加入相關 indexes、admin routing 及 tests。5e6ee33Plugin API 命名整理 在 routes 及 tests 中把剩餘 F1 references 改為 Plugin API,令 plugin-facing API 用語一致。6d7c93aPlugin config dropdown overflow 修正 令設定選單在 mobile viewport 內保持貼合。3bc97d4Default-timezone version timestamps 以設定時區格式化 page version history。擴展 plugin-facing admin 能力:加入 advanced page search、wildcard page-type scopes、 custom update actions、user credit visibility、分頁 credit history,以及更清晰的 plugin action menu。
4fd73f0Advanced plugin page search 為插件提供更豐富的 page lookup 工具。b0c1c8dUsers view 更新 在 account 及 credit UI 改動後更新 users.liquid。32fd45bCustom version actions 讓 page updates 記錄更精準的 version action。d42f41fWildcard page-type scopes 讓 plugin permissions 可覆蓋匹配的 page-type family。27ef9c9Sidebar credit balance 在 admin sidebar 顯示目前用戶的 credit balance。acab94f分頁 credit history 令 profile credit logs 在 usage 增長後仍容易瀏覽。552c578Plugin management view 更新 在 action layout 改動後刷新 plugins-manage.liquid。f1a0014Plugin action layout 重構 重新整理插件管理 controls 的 spacing 及 grouping。8f378f3Grouped plugin action dropdown 把重複的插件操作整合到 dropdown pattern。為插件加入第一層 credit 及 quota control:可配置的 quota limits、credit billing、較安全的原子 credit updates, 以及登入頁的品牌 app icon。
846d0a6原子 credit updates 使用 RETURNING,令 credit 變更可可靠地套用並讀回。6db3e38Credit billing system 加入 credit-backed plugin usage 的 billing 基礎。5ce3871Configurable plugin quotas 加入可按 deployment 調整的 quota limits。bf29f50Branded login icon 在登入頁使用 app icon,令入口體驗更一致。加強後台操作控制:admin home 現可配置,破壞性 purge paths 加入更明確 gating, 而已批准的 plugin assets 亦可在 plugin-rendered edit views 中使用。
4f23d17Edit views 使用已批准資產 在 plugin-owned edit experiences 中 expose 已批准的 plugin assets。b623e41Configurable admin home 及 purge gating 讓 admins 選擇 home destination,同時收緊 purge actions 的存取。Plugin-owned admin surfaces 大幅推進:create 及 read-only page views 落地, plugin taxonomies 成為後台一等功能,tags 轉向 weighted taxonomy slugs, system branding/sidebar settings 加入,page version maintenance 亦更安全。
dd2745aPlugin create views 及 tag filtering 讓插件接管 create forms,並改善 tag-based filters。b50543fTaxonomy slug migration 及 batch reorder 把 tags 移到 taxonomy_slug,並加入 batch reordering。0295564Tag weights 及 config taxonomy options 為 taxonomy-backed tags 加入排序及設定選項。8f77447Branding 及 sidebar system settings 開放後台設定 site brand 及 sidebar behavior。3f31690Admin sidebar menu settings 加入 sidebar menu configuration 管理。812dd33Plugin-defined taxonomies 在後台支援 plugin-provided taxonomy definitions。9789741Page version deletion 及 cleanup 加入 historical page versions 的 maintenance tools。2115037保留 draft IDs 發佈到 D1 時保持 draft IDs 穩定。01bce75Editor sync 及 feature coverage 加入 editor sync 行為及 feature flows 的測試。81407d6Plugin-rendered read-only views 讓插件 render read-only page views。ad4dcdaType admin 及 editor helpers 重構 type administration 及 editor flows 的 shared helpers。e2b5c51Plugin page-type access approvals 為插件存取 page types 加入 approval path。8468f50Plugin asset revision queries 修正 plugin assets 的 revision query handling。fcad6b2Immutable plugin view assets 以 immutable caching 提供 plugin view files。723b6a7Admin session keepalive 在後台頁面工作時保持 session alive。收緊 plugin-admin 存取權,擴展已批准資產 pipeline,為 admin 及 plugin assets 加入 revision-aware cache busting,並改善 mobile admin header。
20f2594Auto-hiding mobile admin header 改善 mobile navigation 行為。d51fe1dPlugin worker revision cache-busting 使用 plugin worker revisions 來 bust asset caches。4b7e1caRevisioned admin assets 為 admin assets 及 plugin caching 加入 revision handling。4ccdaa6Plugin camera 及 WASM opt-in 讓插件 opt into camera 及 WASM security allowances。1e86047資產審批 integrity 在插件資產審批 UI 加入 integrity hash。495584d已批准資產 serving 資產獲批後可被插件提供。c5691ee以 manifest 限制 plugin admin 根據 manifest permissions 檢查 plugin admin 存取。改善 live content 的編輯 dashboard:live-only pages 可拉回 draft,列表直接查詢 live pages,搜尋亦理解中文異體字。
c0b498e拉回草稿 為 live-only pages 加入 draft recovery flow。19e1788Live-page 分頁 直接查詢 live pages 並回傳分頁結果。ca6f9ca中文異體搜尋 把頁面搜尋擴展到中文異體字。0c47a03產生式字元 mapping 取代 opencc-js。8cd04b5Dashboard 篩選 加入狀態篩選及中文搜尋。完善插件驅動的後台 workflow:queueable jobs、更完整的 form-field rendering、修正 pagefield snippet resolution,並為 trash 加入 filtered bulk restore。
ff6905cClient render 更新 更新 client-rendered 後台層。2de6739leading-relaxed utility 在後台樣式加入文字 utility。6c6007dPagefield snippet 路徑 修正 view-base resolution。2330c63Form field templates 加入 templates 及 required-field 支援。12ed982可排隊 plugin jobs 讓 plugin actions 可排程 admin jobs。1d116d1Filtered bulk restore 按篩選條件 restore trash items。後台大幅打磨的一天:collection-aware bulk actions、page duplication、table filtering、privacy masking、color labels,以及補回 CMS shell 所需的 utility classes。
803c050Pointer-based collection selection 改善 bulk operation 的目標選取。8a4ad16批量頁面複製 加入 duplication API endpoint。a3a95c7色彩 picker 及刪除確認 改善 label 互動及提示。39e5c03Null page_id coercion 修正 CMS API 處理。9e2ed54Nested event session 測試 加入 regression coverage。466d709複製圖示資產 加入 duplication actions 使用的圖示。a6dffddColor tag picker 加入 color-label picker 功能。c659093姓名 masking 更乾淨地處理 middle-dot names 及 Latin tokens。7f32612私隱表格 masking 改善 table-level masking。112a58ePII 欄位 masking 為敏感表格欄位加入 masking。f0cda7fAuth provider 載入狀態 選擇 provider 時顯示 feedback。bb0fba5iOS form zoom 修正 避免後台表單在手機上觸發 zoom。f553189Table filters 加入 table-filter asset 及整合。5e37123寬度及截斷 utilities 補回缺少的 layout classes。0a62e00Spacing 及 layout utilities 擴大後台 utility 覆蓋。2b72cdeTailwind utility 覆蓋 加入 views 使用但缺少的 classes。加入 admin profile 介面,並完善 account-linking controls、Microsoft OAuth、user deletion safeguards 及 identity-provider visibility。
0e5d83cScoped client template cache 按 view base path 隔離 cached templates。62b7a8bUser list 顯示 identity providers 在 admin users 顯示已連結 providers。de926c1停用 Apple provider 從 enabled providers 移除 Apple。51114afUser deletion safeguards 加入受保護的 admin user deletion。831da67Microsoft OAuth config 啟用 Microsoft OAuth 設定。c4c239eAdmin form actions 打磨 form footer actions。94c0abdOAuth disconnect 在 profile 加入 disconnect providers 支援。e30596f明確 account linking OAuth linking 必須使用 link=1。bb19ae0Admin profile page 加入 profile view。集中擴展 authentication 及加固 plugin-admin,包括 multi-provider identity linking、統一 icon actions、清理 plugin HTML,以及 iframe isolation 實驗。
0db7f95Microsoft 及 Apple OAuth 加入更多 providers 支援。426e4c4Multi-provider identity linking 把多個 OAuth identities 連到同一帳戶。075cc02統一 action buttons 以 icon variants 標準化 admin action buttons。3da2ca1Security 及 client views 加固 plugin client-rendered views。c3a2d14Plugin HTML sanitization 避免 plugin-admin HTML 出現 XSS。0b10a9fIframe isolation revert 回復 sandboxed iframe isolation 改動。221ca0fSandboxed iframe isolation 初步以 sandboxed iframe 隔離 plugin admin views。把核心 views 轉向 client rendering,外置 SVG sprite,加強 plugin permissions,並改善 cache behavior、mobile navigation、table layout 及 page-store utilities。
6cd16f7Admin API 及 plugin access 加固 permission checks。0fefa60Dependency cleanup removes emmet and liquidjs.13de3faSecurity helpers 及 media routes 重構 shared code。aee9befPage-store utilities 抽出 helpers 並加入 withLiveStatus。639488cEmpty pointer values 保留 empty pointers,而不是刪除。5529676Dashboard table positioning 加入 relative positioning。f7843cdPlugin-defined permissions 在 roles/admin 顯示 plugin permissions。0c63fb3Mobile sidebar nav 把 sidebar 更新為 full-page mobile menu。b450994View revision cache-busting 加入 revision-aware view caching。088468dLoading 及 cache headers 修正 placeholders 及 cache headers。eca65ecReactive reorder rows 讓 reorderable rows 對 DOM changes 保持 reactive。bf81d6aDefault layout update refreshes default.liquid.580574cClient-rendered views 切換 admin views 並加入 proxies。8428fdf0xCMS site title 重新命名 site title。62b430bExternal SVG sprite 透過 sprite 提供 icons。7029cabTable container styles 標準化 table containers 及 widths。後台效率大幅提升:加入 page weight 及刪除的批量操作,重整 trash 系統並加入分頁及細緻 purge 選項,同時為 admin UI 加入完整 light theme。
16fc14f
加入 POST /admin/pages/batch-weight,以 DB batch commits 套用批量 weight updates。包含嚴格 input validation 及優化 prepared statements,減少 round-trips。
69927c5
加入 client-side logic,讓任何帶 data-reorder 的 table 支援拖放排序,並自動以 fetch 把新排序送回 backend。
09ec980
Trash view 現在支援按 type 篩選、item counts 及細緻 purge options(例如只 purge 過去一小時 trashed 的 items)。
f1c154c
加入 DELETE /pages/batch,以單一 D1 transaction 把多個 draft pages 移到 trash,大幅降低 bulk cleanup 的 API overhead。
ca5b6c8
以 CSS custom properties 加入完整 light theme stylesheet,作為預設 dark mode 以外的高對比、傳統 Tailwind 風格選項。
44b43cc
以 bulk D1 inserts 及單批 unique slug allocation 優化頁面建立,並為穩定性限制每次 request 最多 100 items。
915f714加入 batch page-weight endpoint 及 tests。991d77c更新 admin.css。57ae3f3為 trash 加入 pagination 及 empty-all action。1a17419更新 cms-api.ts。623a270更新 cms-api.ts。6b740d8保留 plugin redirects 並清理 empty pointers。589aefd加入 blockNamesFor 及 boolean field snippet。13a08fe更新 routes.test.ts。d34d691顯示 plugin block types 及 settings nav。a6dcd7f在 editor previews 顯示 Lect JSON diff。較早期改動:native-editor escape hatch、插件 opt-in same-origin framing、更完整 pages API,以及 plugin edit-view support。
73c2f62?native=1 editor bypass — 記錄 query flag,並加入 tests 確認內建 editor 會被提供,且 flag 會保留於 form actions 及 redirects。8afddb2Native-editor escape hatch — ?native=1 / ?editor=cms 即使插件會 render edit view,仍強制使用內建 CMS editor; preferNativeEditor + withNativeFlag 並把它穿過 action URLs。e02ec18datetime.liquid — 新增 page-field snippet。4ae4f64/api/pages/:type 加入 search 及 id lookup。6393900Opt-in same-origin framing 供 plugins 使用。4d7c8f2Plugin edit view support 已加入。93505b6跨頁保留 editor return_to。Plugin system 變成可管理的平台:加入 DB-backed registration、per-plugin secrets、 plugin-contributed page types、navigation、read APIs、write-back support,以及更完整的 timezone/schema 基礎。
95b6eafExtend schema: timezones, trash versions, plugins.91b4f86Add page timezone support.e9502c9Set defaultLanguage to 'mis' and add locales.034ca0cAdd basic switch pagefield snippet.779b8a4Remove dump test; conditionally render table header.85128a3Add test that dumps admin HTML.b5ecfe0Support plugin readTypes and show plugin names.db35601Preserve original parent for trashed pages.078a0d9Decode percent-encoded plugin titles.21dd862Update plugins.ts.2c13f49Add per-plugin secret and rotation support.3dcccd2Add plugin write-back API and trash support.6caef21Support plugin nav in admin layout.ca73d5fSupport plugin-contributed page types in admin.c4816caAdd PLUGIN_SECRET to .dev.vars.example.6405277Add DB-backed plugin registry and admin UI.加入 roles/users admin,讓 admin UI 具備 permission awareness,減少 route rendering boilerplate, 並打磨 editor language scope、taxonomy fallback 及 structured editor controls。
3241a8eReplace inline weight form with read-only view.438cd24Create basic.liquid.a69351dRedirect to edit with language; scope editor form.3189919Update CMS config and regenerate admin CSS.15330d3Update routes.test.ts.6a2474bRemove revert button and update taxonomy fallback.6417922Merge pull request #5 from LionRockJS/refactor/reduce-boilerplate.71290feAdd renderPage helper to cut route render boilerplate.1c1ff3fAdd adminLayout helper to cut template boilerplate.c93a50eMake admin UI permission-aware.9153280Add separate tag:write permission.54925e8Add input bg class in editor and regenerate admin CSS.0f23bc7Compact weight inputs in structured editor.20261ccAdd roles/users admin and permission system.更多 content configuration 移入資料庫:page types、block types、taxonomies rename、 unique draft slugs、cache fixes,以及重新產生 admin utility styles。
8a2a407Add DB-backed block types and admin UI.c602735Rename tag_types and tag_lists to taxonomies.2d53bfdEnsure unique draft slugs; cache and lect fixes.d01f7b0Add database-defined page types and admin UI.ad31713Regenerate admin.css Tailwind utilities.將 publish-adapter branch 合入主線,並加入 example plugin publish targets 及 tests。
001de3cMerge branch publish-adapters.c1d96b7Add example publish plugins and tests.加入 publish-target architecture,包含 D1、R2 及 plugin fan-out paths。
ab15ce8Merge pull request #4 from LionRockJS/publish-adapters.1d350adAdd pluggable publish targets: d1, r2, plugin.改善 editor metadata 顯示、安全解析 lect,並簡化 presence storage behavior。
dccc8afDisplay modifier name and safely parse lect.12c93daRemove presence table; add avatar fallback.以安全加固為主:更嚴格 CSP/JWT claims、fail-closed CSRF、hardened cookies、 upload protections、rate limiting、registration controls、audit logging 及 plugin proxy safeguards。
e7641d9Add presence handling to PageSync DO and routes.0e47957Merge pull request #3 from LionRockJS/security-hardening.78e2891Enforce sensitive cache headers and plugin secret.d941293Resolve P3: capability-based RBAC and plugin shared-origin mitigation.9f3b9c0Merge pull request #2 from LionRockJS/security-hardening.1fc713bSession hygiene, registration allowlist, audit logging.80b3cd9Plugin proxy header allowlist, CSV filename encoding, presence validation.7f5397dFail-closed CSRF checks, __Host- auth cookies, POST-only logout.8b20692Strict CSP with local Tailwind build and per-request nonces; JWT issuer/audience.7601059Add IP-keyed rate limiting to auth and upload endpoints.10336e1Harden media upload and serving against stored XSS.建立 collaborative editing 基礎:PageSync、CRDT operations、WebSocket attachment、 presence tracking、multi-user tests、plugin integration 及 modular admin routes。
3b27d05Sanitize WebSocket fields and omit avatar relay.99c3d7eAdd PageSync multi-user tests; relax editor.2d4cdfcCRDT: per-user ops, reset and save handling.151951cImprove CRDT sync, WebSocket attachment, and presence interval.e4c9b20Update editor.liquid.83e1fe0Add PageSync DO and editor CRDT sync.6642664Add presence tracking: DB, API, UI.bf3850cAdd plugin system and integrate plugins.bfb92b5Refactor admin into modular routes and utilities.將 published content 拆到獨立 D1 database,讓 public readers 與 draft/admin data 隔離。
0dd60f3Split published content into separate D1 DB.擴展 content operations:localized CSV import/export、draft exports、lect-derived fields、 dashboard pagination、import shortcuts 及 batched lookups。
31f03deAdd bulk CSV import and batched lookups.27c134cAdd CSV import links to admin dashboard.6e4d3b0Add pagination to admin dashboard.b8a1f02Include lect-derived fields in CSV exports.dde2e0dAdd CSV export for draft pages.e10bb9aSupport localized CSV import/export.加入 CSV import modes、preview/confirmation flow、import/export foundations、parent-page APIs、 dynamic editor comboboxes 及 advanced-search blueprint options。
85a7752Add CSV import modes and UI options.561c2edAdd CSV import preview and confirmation flow.43ae6c3Update dashboard.liquid.34c308bAdd parent-pages API and dynamic editor combobox.da29d3cAdd CSV import/export and parent combobox.7e5d1faAdd blueprint path options for advanced search.建立 advanced-search 介面:multi-type criteria、locked page-type routes、dashboard search, 以及 admin searches 的 redirect behavior。
603d6b5Redirect admin searches to advanced-search.2fb2cbbAdd dashboard search and lock advanced-search type.6feaccaUse path param for advanced-search page type.55cbb73Advanced search: multi-type and dynamic criteria.1ae0fb7Add advanced search feature and UI tweaks.加入 private R2 media uploads、Cloudflare image previews、error response cleanup、 draft metadata、initial schema consolidation、item weights 及 structured-editor improvements。
4093cbbServe thumbnails via /media-preview with resize.d8e97c8Add Cloudflare image preview and upload guidance.aed7522Add X-CMS-Error header to error responses.b9a137cReturn JSON for forbidden admin/api requests.7f1fa8bReturn JSON for admin upload auth errors.64f27b4Add private R2 media uploads and tests.b3906f2Add draft metadata to created/merged lects.0e8101bConsolidate migrations into initial schema.02444c6Add page creator and editors metadata.f1c58e1Add implicit item weights and sort items.90231e6Structured editor: block attrs, tags, live-diff.大型 admin build-out:responsive templates、Liquid/JSON view experiments、editor/tag parity、 lect migration、version-table unification、CSP/referer fixes 及 package updates。
9257a97Respect secure cookies; UI/accessibility tweaks.c09dbb3Add package-lock and update package.json.d1e1f00Delete package-lock.json.642c768Update package-lock.json.6e7d5cfUpdate dashboard.liquid.fbcb905Update dashboard.liquid.64fd421Make admin UI responsive and mobile-friendly.9ca0b0bSwitch from Liquid to JSON template views.71091a5Add JSON template rendering and Emmet integration.932cbf7Load Liquid templates via VIEWS fetcher.413ee79Use LiquidJS templates for admin views.767988bUpdate index.ts.40b0b40Refactor tag admin routes to use page components.a7d6277Add admin templates and editor improvements.9eee329Update auth.ts.248e1ccUnify page version tables into page_versions.67ada5bMigrate original structured content to lect.93a9dd5Update editor.ts.b0d1e10Show default-language value as placeholder.ddc57afAdd favicon route; fix editor URL and CSP.74d1da1Update editor.ts.fb45883Add page-type datalist and referer checks.f775ce1Add admin CMS parity: originals, tags, media.Consolidate content database bindings,支援 comma-separated roles,並擴展 origin checks。
f6d4794Support allowed origins in security checks.0f66f41Consolidate D1 databases into single DB binding.fc9db3dUnify content DB into single CONTENT_DB.5937543Support comma-separated user roles and utilities.加入 multi-provider OAuth support 及 security headers。
dc62ba2Support multi-provider OAuth and security headers.建立早期 auth/data split:AUTH_DB、trash workflow、Eventuai OAuth integration、 dependency upgrades、config updates,以及 repository root commit。
25adf0aUpdate wrangler.toml.4fd286cUpdate login.ts.ca123a2Add Eventuai OAuth provider and role sync.565df36Upgrade esbuild, TypeScript, Wrangler, and Hono.5993d38Add cms-trash DB and update AUTH_DB id.372e5a5Add AUTH_DB and move auth data off LIVE.93b3909Add trash soft-delete workflow.c415a99Merge pull request #1 from LionRockJS/copilot/create-database-migration-for-content.409f105Initial commit.以 initial implementation plan 及第一個 Cloudflare Worker CMS scaffold 開始: OAuth 2.1、dual JWTs,以及 live/draft database workflow。
505b671Add Cloudflare Worker CMS with OAuth 2.1, dual JWT, and LIVE/DRAFT database workflow.f53cdcbInitial plan.由 0xCMS Worker commit log 產生 · 最後更新 2026‑07‑26