2026-05-22 — 初始發布
- 工廠函式
createCjkAutospace(options),回傳{ apply(root?) }。Port 自 Pangu.js v7.2.1 規則表(MIT 授權),覆寫架構為雙 pass:- Pass A — per-block Pangu on tag-stripped text:對每個 BLOCK 走 DFS 收集邏輯文本(樣式標籤透明、PILL 與子 BLOCK 中斷 run),整段套
panguSpace,把 MARK 反映射回 textNode/offset 並插入.cjk-autospacemarker span。 - Pass B — pill boundary, style-inline aware:對每個 PILL 透過樣式鏈遞迴找邏輯鄰字(
adjacentLogicalChar),按 0/1/多+特殊規則處理空白。
- Pass A — per-block Pangu on tag-stripped text:對每個 BLOCK 走 DFS 收集邏輯文本(樣式標籤透明、PILL 與子 BLOCK 中斷 run),整段套
- 標籤三分類:STYLE_INLINES / PILL / BLOCK,皆可由消費端配置。
- UMD-ish export:同時支援 ESM
import、CommonJSrequire、browser globalglobalThis.createCjkAutospace與 inline<script>函式宣告形式。 - TS 宣告:
cjk-autospace.d.ts提供完整CjkAutospaceOptions與CjkAutospaceInstance型別。 - 初始消費者:
- Claude HTML 模板(
Base/templates/html/runtime/lib/cjk-autospace/,pillSelector"code, kbd") - Peek.nvim Markdown 預覽 shim(
Nvim/lua/user/lib/cjk-autospace/,pillSelector"code, kbd, mark, samp") - cdrop(
cdrop/web/src/lib/cjk-autospace/,pillSelector"code, kbd, .cjk-pill")
- Claude HTML 模板(
- docs 分支:
index.html(架構詳細文檔)+CHANGELOG.html(本檔)。
設計來源 雙 pass 架構是原創設計,解決 Pangu.js 原版「text-node walker 看不到跨元素邊界」之問題(典型癥狀:
<strong>是</strong> Neovim 此類邊界無法被識別)。