diff --git a/docs/changelog.html b/docs/changelog.html index ac2fd4c..ad61162 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -1,4 +1,4 @@ - +
@@ -2545,6 +2545,15 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }聚珍(Juzhen)/cjk-autospace 變更紀錄。← 回文檔
+下游 .selection-bar-message 病例:垂懸字(orphan)之段末實義字落於 opaque <button>(巢於可切 <span>)時,splitElementAt 僅驗頂層 span 可切;splitTreeAfter 逐層克隆「文本節點→top」祖先鏈時,中間 opaque button 從未複查即被克隆肢解(複製出 splitoff button、破壞互動元素)。firstText/lastText 守下潛(遇非可切回 null),攀升卻無對稱守衛——此即真正病根,下游 per-instance 迴避僅治標。
splitTreeAfter 切分前先驗「textNode.parentNode…top(含 top)」整條祖先鏈皆 canSplit,任一層 opaque/pill/isolate/帶 id 即放棄、回退整綁(退化但安全,與下潛守衛對稱)。純新增守衛、無新克隆邏輯;jinze 之 isolateBoundaryToken 因下潛已守,行為不變。附帶亦杜絕中間祖先帶 id 之克隆重複 id。canSplit 須對「切點 textNode 至 top 之整條祖先鏈」成立、非僅 top——下潛(firstText/lastText)+攀升(splitTreeAfter 守衛)雙向守。splitoff、button 完整;退化路徑 render→revert 還原一致。亲驗——暫禁守衛則該測試於「無 splitoff」斷言失敗(證明非空通過、病根屬實)。下游需求:非段落/特定範圍元素用半角式(banjiao),段落用全角/開明。原標點樣式僅由 lang 決定(lang.policy/lang.style),無逐元素覆寫。新增與 data-jz-level/level.text 同構之逐元素樣式機制(banjiao 渲染早已就緒、此為純路由,無新壓縮邏輯/CSS)。單元測試 121→127 全綠。