16fc14f
批量 page weight 更新
加入 POST /admin/pages/batch-weight,以 DB batch commits 套用批量 weight updates。包含嚴格 input validation 及優化 prepared statements,減少 round-trips。
// 開發日誌
根據 0xCMS Worker commit log 整理的最新改動。
結構化編輯器加入可重用的上載和評分欄位選項,item 次序亦可直接以拖曳手柄調整。Rich text 在標點符號及 CJK 文字旁的 inline 格式亦更可靠。
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。由本機 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‑14