docs: changelog 2026-07-16 塊級分類 CSS 鉤子 data-jz-block-level + 增量塊粒度契約(下游建議七/說明八)

This commit is contained in:
2026-07-16 16:46:24 +08:00
parent c4f0ee02d4
commit 1a5f0078c6
2 changed files with 365 additions and 33 deletions
+27
View File
@@ -25,6 +25,20 @@
<!-- BODY -->
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
<h2>塊級分類 CSS 鉤子 data-jz-block-level 增量塊粒度契約 <span class="badge accent">2026-07-16</span></h2>
<p>下游 HTML 模板消費端新一輪回饋兩項(建議七/說明八):resolved 分類之 CSS 可查鉤子(新功能、向下兼容),與增量 API 使用契約之文檔化。單元測試 140→145 全綠。</p>
<h3>建議七:resolved 分類寫回 DOMlevelMark pass</h3>
<ul>
<li><strong>動機</strong>:消費端之段落級 CSS(首要 CJK 兩端對齊 <code>text-align:justify</code>)語義上應與段落級 pass(禁則/垂懸)作用於同一集合;level 判定原僅存內部快取、不寫回 DOM,消費端只能另立一份必然漂移之選擇器白名單(實例:<code>.callout</code> 綁了避頭尾卻仍散尾)。</li>
<li><strong>機制</strong>:新增 standalone pass <code>levelMark</code>order 10,恆開)——render 時對每個「直接承載可處理文本」之塊級元素寫 <code>data-jz-block-level="paragraph|text"</code>revert 全數移除(I6 之 <code>data-jz-*</code> 清單涵蓋)。消費端 <code>[data-jz-block-level="paragraph"]{ text-align: justify }</code> 即與聚珍共用單一真相源、永不漂移。</li>
<li><strong>純容器不標</strong>body/ul/table…——直接文本僅空白):否則 body 恆被判 paragraph、justify 鉤子經繼承污染全頁。標記集合恰為段落級 pass 實際作用之塊集(collectRuns 對純容器收不到 run);avoid 子樹/pill 內部文本不計,未被處理之塊一致不標。</li>
<li><strong>輸入/輸出分離</strong>:作者輸入 <code>data-jz-level</code> 只讀不寫;輸出屬性本庫絕不讀取、亦不在 C2 觀察白名單(外部改動不觸發重處理);增量路徑 revert 即清、render 即重標,分類屬性變化自動刷新。是否對齊仍由消費端 CSS 決定(窄欄邊注可 opt-out),聚珍只供分類、不介入樣式。</li>
</ul>
<h3>說明八:增量「塊粒度」契約(純文檔)</h3>
<ul>
<li>READMEARCHITECTURE §3.1 明載:增量更新須以<strong></strong>為粒度——換塊內容、增刪塊、改分類屬性皆與全量重繪一致;<strong>不支持</strong>對聚珍已切分文本節點之外科式 <code>characterData</code> 直改(charify 以 fragment 替換原節點,render 前之舊引用已脫離文檔)——後處理排版器之固有限制、非缺陷,以塊為單位替換內容即可。</li>
</ul>
<h2>效能第二/三層:掃描/佈局提速 + 增量恢復(Tier3) <span class="badge accent">2026-07-12</span></h2>
<p>承第一層(S2+S3)。本批含掃描/佈局提速與**增量恢復**(動態頁面局部變化免全樹重掃),全程獨立複驗+4 份真人撰寫真實文檔驗收。單元測試 130→140 全綠。</p>
<h3>掃描 / 佈局提速</h3>
@@ -280,6 +294,19 @@
<script type="text/markdown" id="md-source">
# 變更紀錄Changelog 聚珍Juzhencjk-autospace
## 塊級分類 CSS 鉤子 data-jz-block-level 增量塊粒度契約2026-07-16
下游 HTML 模板消費端回饋兩項建議七說明八resolved 分類之 CSS 可查鉤子新功能向下兼容與增量 API 使用契約之文檔化測試 140145 全綠
### 建議七resolved 分類寫回 DOMlevelMark pass
- 動機消費端段落級 CSStext-align:justify應與段落級 pass禁則垂懸作用於同一集合level 原僅存內部快取消費端另立選擇器白名單必然漂移.callout 綁了避頭尾卻仍散尾
- 機制新增 standalone pass levelMarkorder 10恆開render 對每個直接承載可處理文本之塊寫 data-jz-block-level="paragraph|text"revert 全數移除I6CSS[data-jz-block-level="paragraph"]{ text-align: justify } 即與聚珍共用單一真相源
- 純容器不標body/ul/table直接文本僅空白否則 body 恆判 paragraphjustify 經繼承污染全頁標記集合恰為段落級 pass 實際作用之塊集avoid 子樹pill 內部文本不計
- 輸入輸出分離作者輸入 data-jz-level 只讀不寫輸出屬性本庫絕不讀取不在 C2 觀察白名單增量路徑 revert 即清render 即重標自動刷新
### 說明八增量塊粒度契約純文檔
- READMEARCHITECTURE §3.1 明載增量須以塊為粒度換塊內容增刪塊改分類屬性皆與全量一致不支持對已切分文本節點之外科式 characterData 直改charify fragment 替換原節點舊引用已脫離文檔後處理排版器固有限制非缺陷
## 效能第二三層掃描/佈局提速 增量恢復Tier32026-07-12
承第一層S2+S3含掃描/佈局提速與增量恢復動態頁面局部變化免全樹重掃全程獨立複驗4 份真人撰寫真實文檔驗收測試 130140 全綠