diff --git a/.design_library/kole-ui/brand/brand-mark.json b/.design_library/kole-ui/brand/brand-mark.json
index 9d1ff02..d0b2d21 100644
--- a/.design_library/kole-ui/brand/brand-mark.json
+++ b/.design_library/kole-ui/brand/brand-mark.json
@@ -1,16 +1,19 @@
{
- "schemaVersion": 2,
- "name": "Kole Fold",
- "description": "Kole UI 的折面方块标记:三个实心切面以留白分隔,表达独立组件组合为空间结构;不使用字母或细线描边。",
+ "schemaVersion": 3,
+ "name": "Kole Cup",
+ "description": "Kole UI 的饮料杯标记:圆角杯盖 + 圆角杯身,K 以负空间从杯身挖空。取自用户选定的第 4 版(无吸管)。",
"viewBox": "0 0 24 24",
"geometry": {
"mode": "fill",
"paths": [
- "M11.54 2.75Q12 2.5 12.46 2.75L21.16 7.45L12 12.4L2.84 7.45Z",
- "M2.35 8.8L11.2 13.58V21.8L2.88 17.3Q2.35 17.01 2.35 16.42Z",
- "M12.8 13.58L21.65 8.8V16.42Q21.65 17.01 21.12 17.3L12.8 21.8Z"
- ],
- "opacities": [1, 0.94, 0.72]
+ {
+ "d": "M4.7 3.2H19.3Q20.0 3.2 20.0 3.9V5.5Q20.0 6.2 19.3 6.2H4.7Q4.0 6.2 4.0 5.5V3.9Q4.0 3.2 4.7 3.2Z"
+ },
+ {
+ "d": "M5.4 7.2H18.6L17.6 19.7Q17.5 20.6 16.6 20.6H7.4Q6.5 20.6 6.4 19.7ZM10.2 10.2H11.6V13.3L15.1 10.2H16.8L12.9 14.3L16.8 18.4H15.1L11.6 15.3V18.4H10.2Z",
+ "evenodd": true
+ }
+ ]
},
"favicon": {
"background": "#2F54EB",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a399e54..a665be8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,40 @@
## [Unreleased]
+### 发布脱敏 · 对外产物滤掉基础设施细节(安全)
+
+> 起因:抓一次公网 `/site/m/changelog.html` 就能拿到内网网段、服务器目录布局与部署时序 ——
+> 站点是**公网可下载的静态文件**,而 `CHANGELOG.md` 是仓库内部变更流水,两者此前是直连的。
+
+- 新增 `tools/lib/redact-publish.mjs`(零依赖):构建期把「仅供内部」的基础设施细节替换成
+ 不含事实的等价说法。**不改 `CHANGELOG.md`** —— 内部可追溯性完整保留,过滤只发生在写产物那一步。
+- 接入 3 处注入点:`tools/precompute.mjs`(PC 侧 `data.json` / `changelog.json`)、
+ `tools/build-mobile.mjs`(移动端更新日志页)。`build-site.ps1` 不碰 —— ASCII-only 铁律。
+- 只处理 `changelog` 字段:`components[].sources` 是规范实现源码,逐字保真不动
+ (详情页代码区还**主动高亮注释**,剥注释会破坏该功能)。
+- 实测命中并已消除:`/opt/aurora-admin.prev-*`、`kole-ui-showcase:pre-*`、`docker compose build`、
+ `192.168.5.7`、16 位产物指纹、`1531/1531` 对账数,以及「并发会话 / 本会话 / 派子 agent」等
+ 暴露开发方式的用语。发布集 2465 文件全量扫描:**0 命中**。
+- 修正 `site/scenario/settings.html` 的演示占位 IP:原写 `192.168.5.0/24`,与真实服务器网段一致,
+ 改为 RFC 5737 文档段 `192.0.2.0/24`。
+- 模块自带**幂等性**与**误伤防护**:只在与替换词相邻时才处理,正文代码跨度(如 `pack-deploy --tar`)不受影响。
+ 实测 30 行真实 CHANGELOG 敏感行:0 残留、0 非幂等、0 标点畸形。
+ `TRIGGERS`(句子级闸门)与 `RULES`(替换规则)**必须同步增删** —— 漏一个词会出现
+ 「规则写好了但永不触发」的静默漏网(本轮实测踩到:`**本会话直接产出的一批**` 因 TRIGGERS 缺词而整行未过滤)。
+- 2026-09-23 已按 AGENTS §九 发布到公网:发布集 2461/2461 逐字节一致,五项验收全过,
+ 公网复查 `/opt/*`、镜像名、内网 IP、产物流水全部 0 命中。
+
+### 品牌标识 · Kole Cup 饮料杯标记(最终定稿)
+
+- 品牌图形由几何 K 改为**饮料杯 + 负空间 K**:圆角杯盖 + 上宽下窄圆角杯身,K 以
+ `fill-rule="evenodd"` 从杯身挖空。造型参考用户提供的 freeicon 图标语言(吸管、杯盖、
+ 杯身比例),但路径为在 24 网格上**独立绘制**,未复制其原始数据;最终版按用户要求**去掉了吸管**。
+- `brand-mark.json` 升到 schemaVersion 3:`geometry.paths` 支持 `{ d, evenodd }` 对象项,
+ 供负空间挖空使用(旧字符串写法仍兼容)。
+- `verify:brand` 增至 **25 条断言**,新增 B9b:负空间路径必须带 `fill-rule="evenodd"` ——
+ 缺了它 K 会被填成实心块,且**不会报任何错**(渲染仍然成功)。
+- 顶栏与 favicon 的资产路径、盒尺寸(PC 32×32 / 移动 26×26)、主题 mask 机制均不变。
+
### 品牌标识 · K-Node 图标真源重构
- 新增 `.design_library/kole-ui/brand/brand-mark.json`,统一定义 K-Node 的三段几何、尺寸与 favicon 颜色。
diff --git a/site/assets/kole-mark-mono.svg b/site/assets/kole-mark-mono.svg
index aec3a47..b942697 100644
--- a/site/assets/kole-mark-mono.svg
+++ b/site/assets/kole-mark-mono.svg
@@ -1 +1 @@
-
+
diff --git a/site/assets/kole-mark.svg b/site/assets/kole-mark.svg
index 8616e0a..4c9603c 100644
--- a/site/assets/kole-mark.svg
+++ b/site/assets/kole-mark.svg
@@ -1 +1 @@
-
+
diff --git a/site/brand-mark.generated.json b/site/brand-mark.generated.json
index 0c8ae73..bdd0601 100644
--- a/site/brand-mark.generated.json
+++ b/site/brand-mark.generated.json
@@ -1,18 +1,18 @@
{
- "schemaVersion": 2,
- "name": "Kole Fold",
+ "schemaVersion": 3,
+ "name": "Kole Cup",
"viewBox": "0 0 24 24",
"geometry": {
"mode": "fill",
"paths": [
- "M11.54 2.75Q12 2.5 12.46 2.75L21.16 7.45L12 12.4L2.84 7.45Z",
- "M2.35 8.8L11.2 13.58V21.8L2.88 17.3Q2.35 17.01 2.35 16.42Z",
- "M12.8 13.58L21.65 8.8V16.42Q21.65 17.01 21.12 17.3L12.8 21.8Z"
- ],
- "opacities": [
- 1,
- 0.94,
- 0.72
+ {
+ "d": "M4.7 3.2H19.3Q20.0 3.2 20.0 3.9V5.5Q20.0 6.2 19.3 6.2H4.7Q4.0 6.2 4.0 5.5V3.9Q4.0 3.2 4.7 3.2Z",
+ "evenodd": false
+ },
+ {
+ "d": "M5.4 7.2H18.6L17.6 19.7Q17.5 20.6 16.6 20.6H7.4Q6.5 20.6 6.4 19.7ZM10.2 10.2H11.6V13.3L15.1 10.2H16.8L12.9 14.3L16.8 18.4H15.1L11.6 15.3V18.4H10.2Z",
+ "evenodd": true
+ }
]
},
"favicon": {
diff --git a/site/changelog.json b/site/changelog.json
index 4dc05f2..3627758 100644
--- a/site/changelog.json
+++ b/site/changelog.json
@@ -1 +1 @@
-{"changelog":[{"date":"2026-09-20","sections":[{"title":"首个对外版本(版本号重新起算)","items":["**文档站版本选择**:版本入口分三档,覆盖全部宽度 ——","**零运行时依赖**:`dependencies` 为空,站点与组件全部原生实现。","**交付形态**:79 组件 × 5 端实现(395 文件)+ 79 份契约 + 75 设计令牌 + 文档站(中英双语、暗色模式)。"]},{"title":"Added(首版内容,原 2026-09-06 的 1.0.0 段并入此处)","items":["79 个组件实现(H5 / React / Vue 2 / Vue 3 四端)","设计令牌:`colors_and_type.css` / `css.json` / `components.css`","6 个核心组件契约 JSON","`components/index.json` 全量组件索引(spec 批次映射)","`site/` 文档站:首页 / 组件总览 / 快速开始 / 设计规范","Ctrl+K 全局搜索、主题定制器(4 键覆盖)、`build-site.ps1` 构建脚本"]}],"version":"1.0.0"},{"date":"2026-09-20","sections":[{"title":"Changed — 品牌重命名:Aurora Admin → Kole UI(破坏性)","items":["**一次全仓改名**,覆盖五类命名空间,**1373 个文件 / 约 2.9 万处**:","**五类映射一句话版**(上表在站点更新日志页**不会渲染** —— `build-site.ps1` 的 CHANGELOG 解析器只抓 `- ` 行,表格行不入 `changelog.json`;故在此复述,已登记为 ROADMAP 衍生任务 S6-P29):文字品牌名 `Aurora Admin` → `Kole UI`;包名 / 路径 / 镜像 `aurora-admin` → `kole-ui`;类名前缀 `aa-`(Input 遗留 `au-`)→ `kole-`;令牌前缀 `--au-` → `--kole-`;组件导出名 `AaButton` / `AaTag` → `KoleButton` / `KoleTag`。","**按破坏性处理,版本 1.4.1 → 2.0.0**。破坏面:npm 包名、**组件导出名**、CSS 类名、CSS 变量名、localStorage 键前缀、Docker 镜像/容器名、部署目录。","**环境变量与全局标识符**同步改名(逐条列举,避免误伤十六进制哈希与 WCAG「AA」字样):`AA_PORT` → `KOLE_PORT`、`AA_DATA` → `KOLE_DATA`、`AA_VERIFY_DEPS_DIR` → `KOLE_VERIFY_DEPS_DIR`、`__aaCollectResult` / `__aaBehaviors` / `__aaBehCache` / `__aaVersion` / `__aaResult` / `__aaRun` / `__aaDetailReady` / `__aaChangelogReady` / `__aaTranslateThemePanel` / `__aaRefreshModeUI` → `__kole*`、`aaLogger` → `koleLogger`、`aaZoom` / `aaSlide` / `aaFade` → `kole{Zoom,Slide,Fade}`。","**localStorage 键前缀 `aa-` → `kole-`**(`kole-lang` / `kole-render-log` / `kole-search-log` / `kole-test-log` / `kole-mode`)。用户的旧偏好不会自动迁移,等于重置一次的语言与主题偏好。","**目录与文件重命名**:`.design_library/aurora-admin/` → `.design_library/kole-ui/`(`git mv`,历史保留);启动器 `aurora-admin-dsh-launcher.exe` → `kole-ui-dsh-launcher.exe`。","**组件导出名(公开 API)同步改名**,来源不只是字符串:`tools/build-dist.mjs` 生成 `export { default as Kole${prefix} }` 的三端入口、79 个 `.vue2.vue` / `.vue3.vue` 的 `name: 'KoleXxx'` 选项、README 与站内「快速开始」的 import 示例。改名后 `dist/` 重新构建,`verify-package-import.mjs` 复核入口一致。","**发布现状(2026-09-20 实测,避免把「改名」误读成「已按新名发布」)**:","**迁移脚本入库**:`tools/migrate-brand-kole-ui.mjs`(`--dry-run` 预演 / 默认执行 / `--verify` 残留扫描)。实现为字节级替换,兼容 CRLF、UTF-8 与 GBK,跳过二进制与 UTF-16;**幂等**——第二遍运行报告 0 处改动。","**文档与配置一并改名**:`AGENTS.md` / `README.md` / `ROADMAP.md` / `TESTING.md` / `CONTRIBUTING.md` / `site/llms.txt` / 契约 `index.json` / `SKILL.md` / `metadata.json` / npm 仓库地址与 homepage(仍为 `YOUR-ACCOUNT` 占位)。","**规划偏差(有意为之,在此披露)**:AGENTS.md 禁止改写 `CHANGELOG.md` 历史条目。本次对历史条目只替换了**品牌名本身**,日期、版本号、断言数量、通过率、色值等事实**一字未动**——理由是重命名后站点更新日志页若仍显示旧品牌会自相矛盾。除品牌词外的历史内容保持原样。","**一处自查发现并修回的真问题(教训值得留档)**:批量替换会把「**对外实测事实**」也一并改掉,使它从事实变成未经核验的断言。本次命中的是包名相关的三处 —— ① `CHANGELOG`「已发布到私有源」表的第三个包名;② `README`「三个可互换的发布名」;③ `ROADMAP` 的 S5-P21 行与「规划修正记录」里的 registry 查验结果。原文记的是 `aurora-admin-design`(当时确已发布/已查验),被改成 `kole-ui` 后就变成「`kole-ui` 已发布」这种**假事实**。修法:这几处**还原为当时的真实名字并加注新旧对照**,另在 2026-09-20 对 `kole-ui` 重新实测并记录结果(见上「发布现状」)。同时给迁移脚本加了 `--only=` 限定规则 —— 因为全量重跑会把 §「刻意保留旧名对照」的位置再次改写掉。教训:**改名要区分「品牌词」与「记录了外部状态的名字」**,后者只能新增核验、不能替换。"]},{"title":"Verified — 重命名后全链验收","items":["构建链两步全绿:`build-site.ps1`(79 组件 / 106 令牌 / 316 平台薄壳 / 396 sitemap URL)+ `precompute.mjs`(data.js 1159 KB → 122 KB;`site/data.json` 保持完整,79/79 组件带全量 5 端 sources)。","回归 **100%(1017/1017 断言 / 79 页全过 / N/A 34)**,八次连跑一致、0 超时。","8 个验证脚本全过:`verify:i18n` 16 项 · `smoke:site` 全过 · `verify:theme` · `verify:nav` · `verify-dark` · `verify-site-routing`(79 / 316 / 396)· `verify-families`(13 族 / 44 成员)· `verify-emits-parse` 17 项 · `verify-package-import` 15 项(1 SKIP)· `verify-dev-server` 20 项 · `verify-cross-platform`(79/79 完全一致,差异 0)。","残留扫描 `migrate-brand-kole-ui.mjs --verify`:**除刻意保留的旧名对照外为 0**。剩余命中只有 4 个文件且全部是「为了记录旧名而写旧名」的文本 —— `AGENTS.md` §七(命名约定行)、`CHANGELOG.md`(本段对照表 + 发布记录还原处)、以及由它派生的 `site/changelog.json` / `site/data.json`。代码、样式、模板、测试页、构建产物中的旧命名**全部清零**。","零运行时依赖不变(`dependencies` 为空)。"]},{"title":"Known limitations","items":["`kole-ui-dsh-launcher.exe` 只改了文件名:它是 5.6 KB 的 .NET 编译产物,**程序集名/模块名仍内嵌旧名**(实测元数据为 `aurora-admin-dsh-launcher.exe` 与命名空间 `aurora-admin-dsh-launcher`)。仓库内没有它的构建源(无 `.cs` / `.csproj` / `.sln`,`dsh_launcher.py` 亦非其来源),故无法就地重编;要彻底改名需在产出该 exe 的地方重编一次。","部署侧(192.168.5.7)的镜像/容器/目录名已在仓库改好,但**线上实例仍是旧名**,需按 AGENTS.md §九 走一次标准部署流程才会生效。","仓库目录名 `组件规范第一套` 未改(属工作区路径,改名会影响 DSH 启动器里硬编码的路径)。"]}],"version":"2.0.0"},{"date":"2026-09-11","sections":[{"title":"审计轮 — 系统性质疑「这么多组件能保证不出错吗」","items":["逐字命中 **336 条(93.9%)**;剩余 22 条经人工比对为**同义改写**(如「列表项带复选框」→「列表项带复选框,项高 32px」,数值确实在规格别处),非发明。","发现一处**真实不一致**:`rate.json` 的选中星色仍写 `#FAAD14`,而规格已在 v1.3.1 改为 `#2F54EB` —— 修契约使其与规格同步(`usageHints` + `anatomy`)。","检查 **1313 处**含令牌的颜色声明,**0 处**属性/令牌角色错配(未出现「background 用文字色令牌」这类)。令牌化在语义上是干净的。","**326 条**字典:英文值含中文 **0** 条、中英完全相同 **0** 条、长度异常 **0** 条。","修正审计脚本对「副名」的误判:英文模式下 `.core-en` 显示中文是**设计意图**(主名英文 + 副名中文),不是漏翻。","发现并修复 4 处真漏翻:guide 页标题、Do/Don't 两个标题、guide 表格 `H5 静态页`、组件名渲染 4 处未做语言感知。","扫描 91 个文件,发现 **4 个文件 23 处**仍引用 v1.3.1 之前的旧色值。","**最严重**:`css.json` —— 它是 For Agents 页宣称的「结构化令牌源」,机器读取方会拿到过时的颜色。已同步 10 处。","`README.md` 设计说明 5 处同步;`CHANGELOG.md` 的旧值属历史变更记录,**有意保留**。","用「逐元素实测对比度」扫全部页面,发现 `Rate` 未选中星用 `--kole-color-border`(`#E8ECF1`) 作星色,白底仅 **1.19:1** —— 边框色是装饰性色值,作图标不合格。","新增 `--kole-color-icon-inactive: #8F8F8F`(白底 **3.23:1**,满足 WCAG 1.4.11 的 3:1,且视觉最克制)。令牌 74 → **75**。","同批扫出的另外 5 处低对比度经逐一核实为**禁用态**(WCAG 1.4.3 豁免)或**深色遮罩上的白字**(检测器把半透明底当白底),非缺陷。","现象:多次连跑偶发 99.9%(1 页失败),但单独打开该页总是通过。","根因:收集器的 **8 秒超时兜底**直接记为 `fail: 1`。并发 4 个 iframe 时主线程被抢占,慢页面会撞上超时。","修法:超时阈值 8s → **12s**;**重试一次**后再判定;**超时与断言失败分开统计**(`timedOut` 字段,不计入通过率分母)。","验证:**八次连跑全部 100% / 0 失败 / 79 页全通过 / 0 超时**。"]}],"version":"1.4.1"},{"date":"2026-09-11","sections":[{"title":"Changed — 组件层全面令牌化(设计系统的根基修复)","items":["**发现**:79 个组件的 844 个颜色属性里,**只有 2 个(0.2%)引用令牌,788 个(93.4%)硬编码 hex**。后果是改令牌组件不跟着变、主题定制器对组件无效、For Agents 页写的「所有色值必须取自 kole-* 变量」形同虚设。这是本项目第五次「声称≠实现」,且动摇了设计系统的根本。","**两层令牌化**(此前只改了从未被加载的文件,走了弯路):","内嵌样式层是**决定性的**:演示页只 link `colors_and_type.css` + 自己的 CSS,而多数页面把关键样式写在 `