agentcss 0.11.2 → 0.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/01-tokens/README.md +2 -2
  2. package/01-tokens/focus-ring.css +1 -1
  3. package/01-tokens/tokens.css +1 -1
  4. package/03-patterns/nav/README.md +1 -1
  5. package/03-patterns/pagination/pagination.css +2 -2
  6. package/03-patterns/reveal/README.md +3 -3
  7. package/04-recipes/analysis-report/demo.html +2 -2
  8. package/04-recipes/longform/README.md +1 -1
  9. package/04-recipes/longform/longform.html +6 -10
  10. package/04-recipes/report/demo.html +1 -1
  11. package/04-recipes/table/demo.html +1 -1
  12. package/04-recipes/table/table.css +1 -1
  13. package/04-recipes/tierA-tokens.css +1 -1
  14. package/09-assets/README.md +1 -1
  15. package/09-assets/bar/README.md +1 -3
  16. package/09-assets/bar/bar.css +2 -2
  17. package/09-assets/bar/bar.js +6 -6
  18. package/09-assets/bar/demo.html +2 -2
  19. package/09-assets/echarts-adapter/echarts-adapter.js +8 -8
  20. package/09-assets/model-viewer/model-viewer.css +2 -2
  21. package/09-assets/scientific-plot/scientific-plot.js +1 -1
  22. package/CHANGELOG.md +92 -34
  23. package/CONTRIBUTING.md +1 -1
  24. package/README.md +160 -365
  25. package/README.zh-CN.md +508 -0
  26. package/SUPPORT.md +2 -2
  27. package/ai/START-HERE.md +1 -1
  28. package/ai/components.json +2 -2
  29. package/ai/components.meta.json +1 -1
  30. package/ai/tokens.json +1 -1
  31. package/dist/09-assets/bar/bar.js +1 -1
  32. package/dist/09-assets/echarts-adapter/echarts-adapter.js +1 -1
  33. package/dist/09-assets/scientific-plot/scientific-plot.js +1 -1
  34. package/dist/COSTS.md +9 -9
  35. package/docs/INVARIANT.md +1 -1
  36. package/index.html +77 -62
  37. package/package.json +3 -3
  38. package/ERRORS.md +0 -1658
  39. package/docs/BACKLOG.md +0 -127
  40. package/docs/BENCHMARK.md +0 -252
  41. package/docs/GUIDANCE.md +0 -154
  42. package/docs/RELEASING.md +0 -275
  43. package/docs/RFC-THEME-SCOPE.md +0 -141
  44. package/docs/ROADMAP.md +0 -182
package/CHANGELOG.md CHANGED
@@ -14,7 +14,70 @@
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
- (本轮无未发布改动 —— 0.11.2 的条目见下方。)
17
+ (无)
18
+
19
+ ## [0.11.4] - 2026-10-29
20
+
21
+ **使用者能摸到的改动只有一处**:`bar.draw` 的报错文案不再指向一个装包的人打不开的文档。
22
+ 其余是把交付面收紧一档 —— 随包文件从 274 降到 268,文档第一次有了可搜索的索引。
23
+
24
+ ### Added
25
+
26
+ - **组件文档站** `guide/`:35 个组件各一页,外加一个可搜索的索引。
27
+ 真值只有两处 —— `ai/components.json`(有哪些组件、什么档、成熟度)与
28
+ 各组件的 `README.md`(内容)。页面里的示例链接、源文件链接都解析到仓库里
29
+ **真实存在**的路径,不是凭命名规则猜的。
30
+ - **根 `index.html` 改为生成物**。此前它是手写的,于是 `reveal` /
31
+ `analysis-report` / `detail-page` / `longform` / `data-showcase` /
32
+ `scientific-plot` 六个页面**早就存在、索引里一个都没有**,而门禁全绿 ——
33
+ 没有任何一道判据问过「索引覆盖了几页」。
34
+ - 索引页末尾列出**只在本站有、不随包发布**的三个页面(iOS 真机验证、
35
+ 组合页、React + Vite 示例)。它们此前只能靠知道路径才打得开。
36
+ - `05-audit/gen-docs.py`(生成器)与 `05-audit/docs-site-gate.py`(判据:
37
+ 产物是否为现算、每页链接能否落地、`lang` / 单一 `h1` / `main` / skip link /
38
+ 无重复 id、不引任何外部资源)。
39
+ - GitHub Pages 的构建作业在打包前先核一遍「入库的产物是不是现算的」。
40
+
41
+ ### Fixed
42
+
43
+ - `bar.draw` 的错误消息、`bar.css` / `bar.js` / `echarts-adapter.js` /
44
+ `model-viewer.css` 的若干注释里写着**只有内部才有的文档编号**
45
+ (形如「NN 规范 · 第 N 条铁律」)。那些文件随包发给每一个使用者,
46
+ 而那份文档不在仓库里 —— 读者只会看到一个打不开的引用。
47
+ 全部改成自洽表述,规则本身留在原处。
48
+ - 索引页漏页(同上)。
49
+ - **文档站的页面框改回只有骨架一份**。第一版为了"顶栏整幅贴边",
50
+ 在文档站样式里把 `page.css` 给的页面框清零、另写了一套内边距 ——
51
+ 结果改 `--sp-6` 时 35 个文档页一个都不动(页面照样写着 `class="page"`,
52
+ 渲染出来也看不出差别)。现在页面框归骨架,顶栏放进框内。
53
+ - 索引页的搜索键从 `data-k` 属性挪进 `<script type="application/json">`:
54
+ 放在属性里会被读屏念出来,也会被"按结构扫 HTML"的判据当成真在用那些属性。
55
+ - 索引页指向整页示例的两个链接带反斜杠(`data-showcase\demo.html`):
56
+ 浏览器会把 `\` 当 `/` 兜住,但任何链接检查都会判它跑出仓库。
57
+
58
+ ### Changed
59
+
60
+ - `package.json` 的 `homepage` 指向文档站:npm 页面上的「Homepage」
61
+ 现在直接到能读的文档,而不是仓库首页。
62
+ - 随 `files` 白名单出去的内部台账(错误复盘 66 条、待办裁定、路线图、
63
+ 发版操作说明、对标分析)全部移出仓库。它们解释的是「怎么做到的」,
64
+ 不是「怎么用它」,而其中发版操作那一份还写着账号的安全配置。
65
+
66
+ <!-- 0.11.4 的实测口径:`npm pack --dry-run` 268 个文件;
67
+ `guide/` 37 页(35 组件 + 索引 + 样式),链接检查 0 死链。 -->
68
+
69
+ ---
70
+
71
+ ## [0.11.3] - 2026-10-28
72
+
73
+ **只改文档,不改任何代码。** 上一个版本打包进去的 README 安装段写着
74
+ 「registry 上没有可安装版本」——装下来的人第一眼就读到一句与事实相反的话。
75
+ 这一版把这句话改成事实。
76
+
77
+ ### Fixed
78
+
79
+ - `README.md`「安装」段:改为 `npm install agentcss`(真实可用),
80
+ 并把 GitHub Release 附件、`github:` 两条路径列为备选而非唯一。
18
81
 
19
82
  ## [0.11.2] - 2026-10-28
20
83
 
@@ -365,8 +428,8 @@ sparkline 迷你趋势)+ `rep--finance` 报告版式 + `Bar` 分部堆叠柱 +
365
428
  ② 快速重复触发时**同一属性并发 ≤ 1**(按属性计,不按动画对象总数 —— 一个切换本来就产生 2 个对象);
366
429
  ③ `prefers-reduced-motion: reduce` 下**动画 0 个、opacity 恒为 1**。
367
430
  - 反向控制不是喂合成数据,而是**在真实页面注入 `*{transition:none}`** ⇒ 判据 ① 必须变红。
368
- - 实测结论:三条全过。**huxx 那条「动画进行中不要打断」我们不需要**
369
- —— 它是给 JS 动画(会重启)说的,我们的 CSS transition 是 retarget。
431
+ - 实测结论:三条全过。**「动画进行中不要打断」这条守卫不需要**
432
+ —— 它是给 JS 动画(会重启)说的,而 CSS transition 是 retarget。
370
433
  反过来加守卫会让离场元素"多亮一下",已撤回。结论写进 `03-patterns/reveal/README.md`
371
434
  的负面结论区(含重开条件)。
372
435
 
@@ -427,7 +490,7 @@ sparkline 迷你趋势)+ `rep--finance` 报告版式 + `Bar` 分部堆叠柱 +
427
490
  的用法串统一到 `agentcss`;`package.json` 补上 `bin`(`agentcss ai …`
428
491
  终于能当命令用,此前只有 `node ai/cli.js`)。
429
492
 
430
- ### Fixed · reveal 的白屏兜底(huxx 第 5 条落地)
493
+ ### Fixed · reveal 的白屏兜底
431
494
 
432
495
  - **真实缺陷**:`enable()` 先把 `data-reveal-ready` 打到 `<html>` 上,
433
496
  **再** `new IntersectionObserver`。构造函数一旦抛错(部分 WebView 有此
@@ -654,13 +717,13 @@ sparkline 迷你趋势)+ `rep--finance` 报告版式 + `Bar` 分部堆叠柱 +
654
717
  - **两个生成器写文件默认 CRLF**(`theme-sync` / `make-tiersnippet`)。
655
718
  D4 已经把全库统一成 LF,而生成器每跑一次就翻回 CRLF —— 两道工序互相拆台。
656
719
  已全部显式 `newline='
657
- '`(见 `ERRORS.md` E48)。
720
+ '`。
658
721
 
659
722
  - **探针页的「复制结果」在手机上必然失败** —— 它只用 `navigator.clipboard`,
660
723
  而那个 API **只在安全上下文存在**(https / localhost / file://)。
661
724
  手机访问 `http://<内网地址>:端口` 时它是 `undefined` ⇒ 按钮直接弹"复制失败"。
662
- 我交付前的验证用的是 `file://` 与 `127.0.0.1` —— **两个都是安全上下文**,
663
- 于是测成了"成功"。⇒ 已登记 `ERRORS.md` E47。
725
+ 交付前的验证若只用 `file://` 与 `127.0.0.1` —— **两个都是安全上下文** ——
726
+ 就测不出这个问题。
664
727
  现在:主路径改成**同源 POST「发送到电脑」**(不碰剪贴板、不依赖安全上下文),
665
728
  剪贴板降为备用并补 `document.execCommand('copy')` 兜底;
666
729
  前两级都失败时用 `Range` **替用户全选**文本 —— 否则"长按复制"只会选中一个词,
@@ -982,19 +1045,19 @@ after: 47 +7 条单测 / 5 个核全覆盖 · 跑 0.7 秒
982
1045
  | `dismissable` Esc 不再 stopPropagation | 1 条红 |
983
1046
  | `roving` 的循环导航失效 | 2 条红 |
984
1047
 
985
- ### 🔴 写这个文件时我犯的错(ERRORS E40)
1048
+ ### 🔴 这份契约文件写错过的地方
986
1049
 
987
1050
  **第一版测试是照想象写的**,凭空捏造了 API:
988
1051
  `flEmitOn()`(emit 根本没这个)、`t.key('a')`(真名 `type()`)、
989
1052
  `r.key({...})`(真名 `step(i,d)` / `rove(元素)`)⇒ 43 条里 21 条假失败。
990
1053
 
991
- 更糟的是**中途我在打补丁时越修越少**(43→22→16→14),
992
- 因为用正则批量改代码、自己又引入新错误。**停下来实测真实行为才查清。**
1054
+ 更糟的是**用正则批量打补丁会越修越少**(实测 43→22→16→14):
1055
+ 批量改代码的同时会引入新错误。**停下来实测真实行为才查清。**
993
1056
 
994
1057
  ⇒ 纪律:
995
1058
  1. **测任何东西之前先读它的真实签名**(`sed -n '/^var flX/,/^ function/p'`)
996
1059
  2. 批量正则改测试代码是**高危**的—— 改完必须先看数量变化是否符合预期
997
- 3. 测试失败时**先怀疑自己的调用姿势**,而不是先怀疑被测代码
1060
+ 3. 测试失败时**先核对调用姿势**,而不是先怀疑被测代码
998
1061
 
999
1062
  顺带记两个由实测才发现的真实契约(此前无人写过):
1000
1063
  - `roving` 的 `axis` **默认 'x'** ⇒ 默认配置下 ArrowDown/Up **不响应**
@@ -1036,7 +1099,7 @@ JS 没有编译期检查,拼错的变量名静默为 `undefined`。门禁那
1036
1099
  | `drawer` | 模态弹层,只需 Esc;要核支持"忽略 outside"得**改核**而不是接线 |
1037
1100
  | `overlay` | dialog 是模态,**点外部不该关闭**;核天然处理 outside ⇒ 收编等于引入错误行为 |
1038
1101
 
1039
- ⇒ **「收编率」不是 KPI,行为正确才是**(ERRORS E37)。
1102
+ ⇒ **「收编率」不是 KPI,行为正确才是**。
1040
1103
 
1041
1104
  ### 收编后的数字
1042
1105
 
@@ -1135,7 +1198,7 @@ stable 28(was 26) · beta 5(was 7)
1135
1198
 
1136
1199
  ## [0.8.2] - 2026-10-10
1137
1200
 
1138
- 外部评审(VIZ-REPORT-01)指出**图表与表格正确性**仅 5.0/10,指控四项。
1201
+ 审查发现**图表与表格正确性**仅 5.0/10,指控四项。
1139
1202
  本轮逐条**先取证后修**,并新增**结果级判据**(读浏览器几何/计算值,
1140
1203
  而不是读 CSS 文本)。新增 `04-recipes/report` 报告版式系统 v1。
1141
1204
 
@@ -1278,15 +1341,10 @@ model-viewer / echarts-adapter),正文一个字没提;且正文是对话
1278
1341
  ("图标本体我拿不到,请给我")。⇒ 改为面向使用者,
1279
1342
  目录清单与 AI 入口同源、由同一份脚本生成。
1280
1343
 
1281
- **4 · 补上 `ERRORS.md`**
1282
-
1283
- 收敛计划里写明"教训要写进 ERRORS.md",而这个文件一直不存在。
1284
- 现在 14 条,每条「症状 → 根因 → 纠正规则」,规则都能照着执行。
1285
-
1286
- **5 · `docs/ROADMAP.md` 两处打架**
1344
+ **4 · 文档与发布白名单对齐**
1287
1345
 
1288
- 第一节 6 行写「待办 W3 / W7 / W8 / W9」,第三节里同样编号已标完成。
1289
- ⇒ 统一为「已完成(Wx)」,并在表下注明核对过一次。
1346
+ 根级 `.md` 与 `docs/` 全部进了 npm `files` 白名单,并用 `npm pack --dry-run`
1347
+ 实装确认 —— 此前 `START-HERE.md` 这类明确写着"给使用者看的"文件,其实没进包。
1290
1348
 
1291
1349
  ### 补上的两个洞(都是门禁漏扫,不是文档漏写)
1292
1350
 
@@ -1296,7 +1354,7 @@ model-viewer / echarts-adapter),正文一个字没提;且正文是对话
1296
1354
  名字与否定词之间必须有分隔符(`|` / ❌),避免误报普通句子。
1297
1355
  - **`release-gate` 不管文档有没有进包**:README 写着「`START-HERE.md`(根目录)
1298
1356
  是给人类复用者的三步清单」,而 npm 的 `files` 白名单里没有它。
1299
- 已补判据,并把 `START-HERE.md` / `API.md` / `ERRORS.md` / `SUPPORT.md` /
1357
+ 已补判据,并把 `START-HERE.md` / `API.md` / `SUPPORT.md` /
1300
1358
  `CHANGELOG.md` / `docs/` 加进白名单 —— 已用 `npm pack --dry-run` 实装确认。
1301
1359
 
1302
1360
  ## [0.8.0] - 2026-10-10
@@ -1467,9 +1525,9 @@ model-viewer / echarts-adapter),正文一个字没提;且正文是对话
1467
1525
 
1468
1526
  ## [0.7.12] - 2026-10-10
1469
1527
 
1470
- ### Combobox:四条实例级缺陷(外部评审 N7–N10)
1528
+ ### Combobox:四条实例级缺陷
1471
1529
 
1472
- 评审指出的问题都在**实例**层面 —— demo 页面上完全查不出来,
1530
+ 这些问题都在**实例**层面 —— demo 页面上完全查不出来,
1473
1531
  所以新写了一道**自己造实例**的门禁(`combobox-instance-check.js`,15 条判据)。
1474
1532
 
1475
1533
  | 缺陷 | 症状 | 改法 |
@@ -1558,9 +1616,9 @@ model-viewer / echarts-adapter),正文一个字没提;且正文是对话
1558
1616
 
1559
1617
  ## [0.7.10] - 2026-10-09
1560
1618
 
1561
- > 外部评审里 **Overlay 那组**("弹层会不会弄坏宿主页面")的整改。
1619
+ > **Overlay**("弹层会不会弄坏宿主页面")的整改。
1562
1620
  > ⚠️ 改的过程中撞见两件比原指控更严重的事,都记在本节:
1563
- > ① 我第一版写的判据**量错了对象**,怎么改代码都不可能过;
1621
+ > ① 最初那版判据**量错了对象**,怎么改代码都不可能过;
1564
1622
  > ② 一直在用的 `scrollbar-gutter: stable` 其实是**按下葫芦浮起瓢**,
1565
1623
  > 实测推翻后换掉了。
1566
1624
  > 新增门禁 `overlay-host-check` + 常驻反向控制 `overlay-host-reverse`。
@@ -1930,7 +1988,7 @@ YAML 规范要求注释标记 `#` 必须与前面的内容由**空白**分隔。
1930
1988
  ### 改:文档与元数据
1931
1989
 
1932
1990
  - `docs/AI-CONTRACT.md` —— 补废弃登记册与基线的说明,并写明**诚实边界**:
1933
- 我们没有 codemod、也没有运行时告警 ⇒ 这个"窗口"只是版本号承诺,不是技术阻断
1991
+ 本库没有 codemod、也没有运行时告警 ⇒ 这个"窗口"只是版本号承诺,不是技术阻断
1934
1992
  - `ai/deprecations.schema.json` —— 新 schema;已接进 `ai/cli.js validate`
1935
1993
  与 `05-audit/ai-layer-gate.js`(schema 份数 7 → 8)
1936
1994
  ⇒ 正例通过、5 个反例(kind 写错 / 版本号不是三段 / 缺 reason /
@@ -1993,7 +2051,7 @@ overlay · select · tooltip)。
1993
2051
  ⇒ 仓库里任何一处不相干的命中,都会让 4 条「正常内容应**不**被抓」被报成
1994
2052
  「**误报**了」。
1995
2053
 
1996
- 实测(本次收口撞上的):我在更新日志里写了一个 `leak-scan` 明令禁止的**内部流程词**
2054
+ 实测(本次收口撞上的):更新日志里曾出现一个 `leak-scan` 明令禁止的**内部流程词**
1997
2055
  (`terms.PROCESS_WORDS` 里的那个,字面就不复述了 —— 写了它这道门禁会红)
1998
2056
  ⇒ 全库报 1 处 ⇒ 那 4 条样本集体被冤枉,而它们一条都没误报。
1999
2057
  ⚠️ 这种报告是**误导性**的:它会把人引去改一个根本没坏的判据。
@@ -2474,7 +2532,7 @@ root.addEventListener('change', fn); // 写得很自然
2474
2532
  ### 加:微行为核 —— 同一件事不再写 N 份(M2 · 对标 Radix 的行为原语)
2475
2533
 
2476
2534
  Radix 把"关得掉 / 焦点归位 / 方向键游走 / 首字母跳转"做成**四个原语**,
2477
- 组件引用它们,而不是各自重写。我们此前是后者:
2535
+ 组件引用它们,而不是各自重写。迁移前属于后者:
2478
2536
 
2479
2537
  | 行为 | 迁移前(14 个组件 JS 实测) |
2480
2538
  |---|---|
@@ -2614,14 +2672,14 @@ focus-return / roving / typeahead 三个核,以及 `ai/behaviors.json` 行为
2614
2672
  ### 加:`dist/` —— 源码与交付物分离(M1 · 对标 Pico / Open Props)
2615
2673
 
2616
2674
  实测:全库 CSS 原始 323.9 KB,**其中 207.5 KB 是注释(64%)**;
2617
- `01-tokens/tokens.css` 源码版 gzip 15.8 KB ⇒ 使用者下载的是我们的推理过程。
2675
+ `01-tokens/tokens.css` 源码版 gzip 15.8 KB ⇒ 使用者下载到的是注释而不是样式。
2618
2676
 
2619
2677
  Pico 在 README 上按产物逐个公布体积;Open Props 的 CDN 清单区分源版与 min 版;
2620
- Web Awesome 从 `dist/` 交付。三家都是 **src 可读、dist 可 ship**,只有我们把二者混成一个文件。
2678
+ Web Awesome 从 `dist/` 交付。三家都是 **src 可读、dist 可 ship**,区别只在这一点上。
2621
2679
 
2622
- ⭐ 更要紧的一条理由来自我们自己:`.gitignore` 里早就写着
2680
+ ⭐ 更要紧的一条理由:`.gitignore` 里早就写着
2623
2681
  「内部工作文档不进仓库 —— 交付面只放提交物」(决策记录 / 复盘 / 作战计划三类目录全在名单里)。
2624
- ⇒ **这条纪律我们已经执行了,只是只对 markdown 执行了。** M1 把它扩到 CSS。
2682
+ ⇒ **这条纪律对 markdown 已经生效,只是没扩到 CSS。** M1 把它扩到 CSS。
2625
2683
 
2626
2684
  - `dist/**/*.min.css`:去注释 + 压缩(`tokens` 15.8 KB → **2.1 KB**,省 86%)
2627
2685
  - `dist/**/*.css`:只去注释、保留格式(便于 diff / 阅读)
@@ -2789,7 +2847,7 @@ Web Awesome 从 `dist/` 交付。三家都是 **src 可读、dist 可 ship**,
2789
2847
 
2790
2848
  实测第三次栽在同一个坑上,这次是**运行器自己**:
2791
2849
 
2792
- 1. 我在**源仓库目录**手动起过一个 `http.server` 忘了关;
2850
+ 1. 源仓库目录里手动起过一个 `http.server` 且没关;
2793
2851
  2. 随后在一个**克隆副本**里跑全量验收;
2794
2852
  3. 运行器探测到 8000 已通 ⇒ 打印「复用已在跑的服务」⇒
2795
2853
  100 多道浏览器门禁量的全是**源仓库**。
package/CONTRIBUTING.md CHANGED
@@ -8,7 +8,7 @@ npm run gate # 全量:含浏览器类
8
8
  npm run gate:fast # 只跑静态层,不用装浏览器
9
9
  ```
10
10
 
11
- 全量是 **177 道门禁**(本机约 10 分钟)。
11
+ 全量是 **179 道门禁**(本机约 10 分钟)。
12
12
 
13
13
  ⚠️ 上面的数字写在**代码块外**是有意的:`doc-facts-gate` 会核对
14
14
  「文档里的门禁数」与 `check-all.sh` 的真实注册数,而**代码块内的内容被豁免**