# 变更日志 > 由 `ua changelog` 依据 git 提交史生成,请勿手改;条目按提交时间倒序。 ## 迭代 - `a754bd6` iter(g170): 分页器支持极简模式与单页隐藏 - `bd98fc8` iter(g169): 表单字段支持跨列 - `879be29` iter(g168): 补配方 11 数据看板筛选区 - `ff94429` iter(g167): 弹窗支持内置页脚与异步确认 - `a80644c` iter(g166): 下拉选项支持分组标题 - `804ab3b` iter(g165): 步骤条支持竖向排列 - `b533903` iter(g164): 描述列表支持竖排与标题操作区 - `6febeba` iter(g163): 留痕校验补编号与时间线约束 - `fe78275` iter(g162): 门禁补暗色令牌齐全校验 - `0bcf73f` iter(g161): 通知支持同 key 原地更新 - `ef564fc` iter(g160): 滑块支持双滑块区间 - `312e801` iter(g159): 多选下拉支持标签折叠 - `638f623` iter(g158): 日期选择支持快捷区间预设 - `c2412fb` iter(g157): 补配方 10 暗色主题切换 - `bbebb70` iter(g156): ua tokens 支持按名过滤 - `a3ece11` iter(g155): llms.txt 补配方目录 - `ab758ab` iter(g154): MCP 搜索补组件级命中 - `0609175` iter(g153): ua search 支持多关键词 - `bc984ae` iter(g152): ua list 增加组件全览 - `f59e9b7` iter(g151): verify 校验 MCP 工具清单 - `04f6df8` iter(g150): ua info 反查所属配方 - `d0eea04` iter(g149): 补 ua search 关键词检索 - `4a655d2` iter(g148): MCP 暴露组合配方检索 - `2387335` iter(g147): 补三条组合配方 - `2adae6e` iter(g146): 进度条支持环形形态 - `af09500` iter(g145): 滑块支持刻度标注 - `1009c89` iter(g144): 新增头像组组件 avatarGroup - `3058da1` iter(g143): 页签栏支持右侧操作区 - `5af2139` iter(g142): 间距容器支持分隔符 - `6cde618` iter(g141): 通知支持四角停靠 - `e40cd2c` iter(g140): 表格支持整行点击 - `08ceb8f` iter(g139): 提示气泡支持左右方位 - `1af4e57` iter(g138): 日期选择支持区间模式 - `55da08f` iter(g137): 演示页补暗色主题开关 - `f6706c1` iter(g136): 新增链接组件 link - `21950d9` iter(g135): 表单支持多列布局 - `2a9193c` iter(g134): 新增 ua sync-counts 自动同步组件计数 - `0f6331c` iter(g133): 新增树形选择 treeSelect - `9d0c195` iter(g132): 新增 @提及输入 mentions - `d9559ae` iter(g131): 新增悬浮操作按钮 floatButton - `23d1e06` iter(g130): 新增栅格容器 grid - `ea2a846` iter(g129): 新增排版文本组件 typography - `b399640` iter(g128): 收尾刷新变更日志 - `48b0f35` iter(g127): 补长表单编辑页组合配方 - `023a2eb` iter(g126): 数字输入补 precision 小数位 - `490c9fa` iter(g125): 开关补 loading 加载态 - `63d3c91` iter(g124): 复选框补 indeterminate 半选态 - `ba102e0` iter(g123): 收尾刷新变更日志 - `72c5d24` iter(g122): 评分组件支持 allowHalf 半星 - `151d901` iter(g121): textField 补 maxCount 字数统计 - `5a6c7a5` iter(g120): 补新增组件落点清单 - `176504b` iter(g119): 空状态支持自定义图标 - `123e7e6` iter(g118): 收尾再刷变更日志 - `6cf4905` iter(g117): 指示条与滑块跟随尺寸重算 - `2ab9406` iter(g116): 抽屉支持非模态模式 - `c2900a4` iter(g115): 新增月历组件 calendar - `cb2601d` iter(g114): 收尾刷新变更日志 - `ec7aaf0` iter(g113): 吸顶容器支持贴底固定 - `5372fdd` iter(g112): 消息提示支持撤销类操作 - `f40ef6d` iter(g111): 面包屑支持超长路径折叠 - `e042143` iter(g110): 下拉选择支持清空 - `1bf35da` iter(g109): 提示气泡支持触摸点按 - `5601e59` iter(g108): 表单补错误汇总条与 onError - `48f9465` iter(g107): 新增二次确认气泡 popconfirm - `c66bcf3` iter(g106): 滚动监听改为卸载自清理 - `f398f09` iter(g105): 标签页支持可关闭页签 - `8e2175d` iter(g104): 留痕校验回查提交真实性 - `e497c16` iter(g103): 区分表格两种空状态 - `abfbb82` iter(g102): 焦点陷阱下沉为共享助手 - `265842e` iter(g101): 新增锚点导航组件 anchor - `b190718` iter(g100): 收尾刷新变更日志 - `a5d4faf` iter(g99): 加载指示器补可定制播报 - `c32f20c` iter(g98): 弹窗与抽屉补遮罩关闭开关 - `3fe1fe3` iter(g97): 收尾刷新变更日志 - `306fd90` iter(g96): 抽屉支持上下滑出方位 - `7e0612e` iter(g95): 统计数值支持倒计时模式 - `03eab7a` iter(g94): 补充数据表联动导出配方 - `90bba1c` iter(g93): 树形组件支持按标签搜索 - `ac5c5cd` iter(g92): 徽标支持数字角标与红点 - `47756c8` iter(g91): 表单字段补辅助说明 hint - `1e6898b` iter(g90): 刷新变更日志至最新提交 - `68ca2ba` iter(g89): 演示产物启用保守压缩 - `9a7c46a` iter(g88): 数据表支持导出 CSV - `cf4ec96` iter(g87): 轮播补焦点暂停与轮播语义 - `a123140` iter(g86): 弹层外部点击监听改按需挂载 - `bd64e43` iter(g85): 进度条补可访问名与语义色 - `db5d38c` iter(g84): 数据表定宽列支持拖拽调宽 - `151b542` iter(g83): 开关改 switch 语义并补可访问名 - `37412b3` iter(g82): 文件选择补类型体积数量校验 - `f3c83e9` iter(g81): 树组件改用 roving tabindex - `c324afc` iter(g80): 通知悬停与聚焦暂停自动关闭计时 - `2c0b9fd` iter(g79): 表头排序补键盘可达与 scope 语义 - `b9261fb` iter(g78): 新增 space 间距容器组件 - `6b895bf` iter(g77): 刷新 CHANGELOG 至最新提交 - `45a00f6` iter(g76): 文字头像补 role=img 使名称可播报 - `b77eb18` iter(g75): 评分组件键盘可达性与焦点保持 - `640c286` iter(g74): 弹窗与抽屉补 aria-labelledby 标题关联 - `ebd5793` iter(g73): 表格分页区补导航语义与页码播报 - `2aaf30f` iter(g72): 文档站搜索框与结果区补无障碍语义 - `a6d0692` iter(g71): 数据表表头补 aria-sort 三态播报 - `5fb61e1` iter(g70): 冒烟补多列排序、页大小与 reset 重置断言 - `e6cf875` iter(g69): 修正单击排序升降序循环与 getPageInfo 陈旧快照 - `99981fe` iter(g68): alert 增加语义图标与通栏形态 - `cc3c649` iter(g67): tag 支持 checkable 筛选片,选中态与 aria-pressed 同步 - `805b54d` iter(g66): verify 反向校验入参接口字段均已登记文档 - `b7824f7` iter(g65): verify 校验文档 props 落到实现,并补齐漏记字段 - `4ca6f5e` iter(g64): 刷新 CHANGELOG 并说明刷新时机 - `835967e` iter(g63): card 支持标题操作区、底部操作区与悬停态 - `a6cd41c` iter(g62): verify 校验 demo 实际调用每个组件 - `f56ca51` iter(g61): tree 支持勾选多选与父子级联 - `dbdae9f` iter(g60): 新增 multiSelect 多选下拉组件 - `9ef1b41` iter(g59): verify 检测 README 组件清单重复项 - `7684ae2` iter(g58): 新增 affix 固钉组件 - `fcec391` iter(g57): form 校验支持异步规则 - `e6bf801` iter(g56): ua style 增加单文件 200 行门禁 - `e54fdb6` iter(g55): 新增 checkboxGroup 多选组组件 - `818e20e` iter(g54): 新增 watermark 水印组件 - `697d354` iter(g53): 新增 tour 引导漫游组件 - `81ea189` iter(g52): 新增 colorPicker 颜色选择组件 - `b93b6dd` iter(g51): 新增 backTop 返回顶部按钮 - `e270e09` iter(g50): 新增 datePicker 日期选择组件 - `cb8a9ea` iter(g49): 新增 autoComplete 自动补全组件 - `d7bfabb` iter(g48): 新增 splitter 可拖拽分栏容器 - `d81b724` iter(g47): 新增 cascader 级联选择组件 - `1fe76e2` iter(g46): 新增 transfer 穿梭框组件 - `0a0dc7a` iter(g45): modal/drawer/image 打开时锁定背景滚动 - `b50315b` iter(g44): accordion 标题行方向键导航 - `fc8a541` iter(g43): select/menu/popover/image 的 Esc 接入统一弹层栈 - `314366a` iter(g42): pagination 支持每页条数切换 - `cf25164` iter(g41): verify 校验 README 分组行与清单一致 - `d685f66` iter(g40): 修表单双提交并支持 Enter 提交 - `fa8b0b8` iter(g39): 统一键盘焦点描边并补可访问性约定 - `82909c5` iter(g38): select 支持 searchable 搜索过滤 - `3143a8b` iter(g37): llms-full 增加组合配方章节 - `8ac71c4` iter(g36): 新增 result 结果页组件 - `8b5f355` iter(g35): 新增 notification 通知卡片组件 - `d461a3e` iter(g34): ua info 支持组件 id 查询并输出可读 props 表 - `f20e977` iter(g33): 新增 upload 文件选择组件 - `097f79f` iter(g32): tree 补 ↑↓/Home/End 行间导航 - `4b0dbfe` iter(g31): 新增 tree 树形组件 - `1a161d6` iter(g30): check 链并入 demo 构建并校验产物锚点 - `e5ed297` iter(g29): 新增 carousel 轮播组件 - `d9feeda` iter(g28): 浮层 Esc 逐层关闭,阻止冒泡连带关外层 - `d80e132` iter(g27): 抽出弹层 Esc 栈,多弹层只关最上层 - `6ad0765` iter(g26): verify 增加令牌引用校验并统一令牌来源 - `563730c` iter(g25): 新增 ua tokens 命令与 MCP get_tokens 工具 - `e6b4a84` iter(g24): 新增 list 列表组件(含空状态回落与可点击条目) - `9e8b435` iter(g23): tabs 支持 Home/End 跳转首末页签 - `9bef9d2` iter(g22): menu 键入字母快跳菜单项 - `c5a4a37` iter(g21): pagination 跳页输入框 - `646fed9` iter(g20): inputNumber 长按连发步进 - `34abe3f` iter(g19): textarea 字数统计 - `44b8697` iter(g18): textField 可清空按钮 - `27d797a` iter(g17): select 键入字母快跳选项 - `a036b0a` iter(g16): image 加载失败占位 - `85988f0` iter(g15): toast 悬停暂停自动关闭 - `00a7b90` iter(g11): 浮层空间不足时自动翻转 - `90d3b64` iter(g13): 新增 ua changelog 生成变更日志 - `b3c3bc7` iter(g14): 演示站目录支持关键字过滤 - `1b75fb4` iter(g12): verify 增加 backlog 与留痕交叉校验 - `2f8ccb6` iter(g10): 新增 statistic 统计数值组件 - `d8d45fc` iter(g09): 新增 descriptions 描述列表组件 - `0e385cd` iter(g08): 新增 segmented 分段控制器组件 - `db96a30` iter(g07): 新增 timeline 时间线组件 - `b6c9489` iter(g06): 组件数门禁覆盖 README - `9651c39` iter(g05): verify 增加 llms-full 同步校验 - `c0bb8d7` iter(g04): dataTable 筛选框加搜索图标前缀 - `bfa7013` iter(g03): 输入组件补 prefix/suffix 附加块 - `33979b2` iter(g02): 新增 image 图片组件 - `98f557c` iter(g01): ua docs 幂等化防时间戳弄脏工作区 - `a5439fe` iter(f06): 锁文件入库并补全目录树 - `265060f` iter(f05): index 幂等化防时间戳弄脏工作区 - `99ce0cd` iter(f04): commit-lint 收严强制 scope - `f57da4c` iter(f03): 新增留痕格式门禁 lint-iterations - `f2fc286` iter(f02): check 链描述补 verify 第六步 - `c19f83b` iter(f01): 组件数漂移纳入 verify 门禁并修正文档 - `c457e0c` iter(e05): 新增 divider 分隔线组件 - `fd4ee01` iter(e04): 新增 empty 空状态组件 - `ee20322` iter(e03): 新增 rate 评分组件 ## 功能 - `7072f77` feat(cli): 新增 commit-lint 提交信息校验 ## 文档 - `1de7ec3` docs(iteration): 补充多实例错位接力机制 - `62784b1` docs(iteration): 记录调度器粒度限制与自动化改动自检规则 - `dc4bac4` docs: 同步提交规范到 AGENTS/ITERATION/cli 清单 ## 维护 - `3804759` chore(backlog): 记录 g170 完成 - `8c9541d` chore(backlog): 记录 g169 完成 - `adc94ca` chore(backlog): 记录 g168 完成 - `649ebf3` chore(backlog): 记录 g167 完成 - `b6a6827` chore(backlog): 记录 g166 完成 - `e1b7de6` chore(backlog): 记录 g165 完成 - `dddbccd` chore(backlog): 记录 g164 完成 - `bb1625a` chore(backlog): 记录 g163 完成 - `eea5074` chore(backlog): 记录 g162 完成 - `a8e13e3` chore(backlog): 记录 g161 完成 - `8b74206` chore(backlog): 记录 g160 完成 - `084ffcd` chore(backlog): 记录 g159 完成 - `cbf0526` chore(backlog): 记录 g158 完成 - `476747a` chore(backlog): 记录 g157 完成 - `1831aec` chore(backlog): 记录 g156 完成 - `2848dd5` chore(backlog): 记录 g155 完成 - `ea77f4b` chore(backlog): 记录 g154 完成 - `c423d9c` chore(backlog): 记录 g153 完成 - `313954f` chore(backlog): 记录 g152 完成 - `df75058` chore(backlog): 记录 g151 完成 - `7418b79` chore(backlog): 记录 g150 完成 - `1455f82` chore(backlog): 记录 g149 完成 - `16032c8` chore(backlog): 记录 g148 完成 - `38284ac` chore(backlog): 记录 g147 完成 - `734eb33` chore(backlog): 记录 g146 完成 - `adc69fa` chore(backlog): 记录 g145 完成 - `99214ff` chore(backlog): 记录 g144 完成 - `9b1c068` chore(backlog): 记录 g143 完成 - `5b8472e` chore(backlog): 记录 g142 完成 - `508d11a` chore(backlog): 记录 g141 完成 - `36087b1` chore(backlog): 记录 g140 完成 - `2a7fdcd` chore(backlog): 记录 g139 完成 - `a3db5e6` chore(backlog): 记录 g138 完成 - `b3fd20c` chore(backlog): 记录 g137 完成 - `a8026bb` chore(backlog): 记录 g136 完成 - `b1bc8c6` chore(backlog): 记录 g135 完成 - `7b41630` chore(backlog): 记录 g134 完成 - `6701c22` chore(backlog): 记录 g133 完成 - `fc195df` chore(backlog): 记录 g132 完成 - `eac02f0` chore(backlog): 记录 g131 完成 - `42e43c0` chore(backlog): 记录 g130 完成 - `88c2515` chore(backlog): 记录 g129 完成 - `6158f49` chore(backlog): 记录 g128 完成 - `6a5e12b` chore(backlog): 记录 g127 完成 - `fc58442` chore(backlog): 记录 g126 完成 - `686b0f7` chore(backlog): 记录 g125 完成 - `56e5d18` chore(backlog): 记录 g124 完成 - `85731a2` chore(backlog): 记录 g123 完成 - `0338f21` chore(backlog): 记录 g122 完成 - `f4a5101` chore(backlog): 记录 g121 完成 - `3e1e4ea` chore(backlog): 记录 g120 完成 - `85e6345` chore(backlog): 记录 g119 完成 - `c67b167` chore(backlog): 记录 g118 完成 - `2f9f83e` chore(backlog): 记录 g117 完成 - `dcd5e0e` chore(backlog): 记录 g116 完成 - `9a118f6` chore(backlog): 记录 g115 完成 - `b4ab92e` chore(backlog): 记录 g114 完成 - `b814e47` chore(backlog): 记录 g113 完成 - `5c25e88` chore(backlog): 记录 g112 完成 - `bf1bd22` chore(backlog): 记录 g111 完成 - `f900337` chore(backlog): 记录 g110 完成 - `9abadf0` chore(backlog): 记录 g109 完成 - `d88bcc0` chore(backlog): 记录 g108 完成 - `4d76ba0` chore(backlog): 记录 g107 完成 - `137bf87` chore(backlog): 记录 g106 完成 - `7d57f26` chore(backlog): 记录 g105 完成 - `1132220` chore(backlog): 记录 g104 完成 - `10eb402` chore(backlog): 记录 g103 完成 - `f4701af` chore(backlog): 记录 g102 完成 - `f373b8c` chore(backlog): 记录 g101 完成 - `befed76` chore(backlog): 记录 g100 完成 - `aa16531` chore(backlog): 记录 g99 完成 - `44efe8b` chore(backlog): 记录 g98 完成 - `13266f0` chore(backlog): 记录 g97 完成 - `c8bf4a9` chore(backlog): 记录 g96 完成 - `6e6860a` chore(backlog): 记录 g95 完成 - `5e81cfe` chore(backlog): 记录 g94 完成 - `c82446a` chore(backlog): 记录 g93 完成 - `1b10616` chore(backlog): 记录 g92 完成 - `8e6c84a` chore(backlog): 记录 g91 完成 - `46a90da` chore(backlog): 记录 g90 完成 - `2fc4d17` chore(backlog): 记录 g89 完成 - `ce662bd` chore(backlog): 记录 g88 完成 - `fa07101` chore(backlog): 记录 g87 完成 - `9ff2c7b` chore(backlog): 记录 g86 完成 - `249fa03` chore(backlog): 记录 g85 完成 - `b2beb43` chore(backlog): 记录 g84 完成 - `f5db24a` chore(backlog): 记录 g83 完成 - `ab0f1a5` chore(backlog): 记录 g82 完成 - `9dfe9cf` chore(backlog): 记录 g81 完成 - `ba196b8` chore(backlog): 记录 g80 完成 - `263fbe9` chore(backlog): 记录 g79 完成 - `907b8eb` chore(backlog): 记录 g78 完成 - `9bb0704` chore(backlog): 记录 g77 完成 - `1a913fa` chore(backlog): 记录 g76 完成 - `d487303` chore(backlog): 记录 g75 完成 - `ae9d500` chore(backlog): 记录 g74 完成 - `182158b` chore(backlog): 记录 g73 完成 - `706d863` chore(backlog): 记录 g72 完成 - `6c5e331` chore(backlog): 记录 g71 完成 - `532dcbb` chore(backlog): 记录 g70 完成 - `5c0caeb` chore(backlog): 记录 g69 完成 - `3fe5916` chore(backlog): 记录 g68 完成 - `1cd4731` chore(backlog): 记录 g67 完成 - `173c3d5` chore(backlog): 记录 g66 完成 - `3144295` chore(backlog): 修正 g65 留痕时间格式 - `900ceeb` chore(backlog): 记录 g65 完成 - `9e3d914` chore(backlog): 记录 g64 完成 - `2b91b77` chore(backlog): 记录 g63 完成 - `fd1de1a` chore(backlog): 记录 g62 完成 - `175f6db` chore(backlog): 记录 g61 完成 - `0dd0f50` chore(backlog): 记录 g60 完成 - `184f972` chore(backlog): 记录 g59 完成 - `a0db916` chore(backlog): 记录 g58 完成 - `89cddad` chore(backlog): 记录 g57 完成 - `7f94723` chore(backlog): 记录 g56 完成 - `a755758` chore(backlog): 记录 g55 完成 - `73b37b1` chore(backlog): 记录 g54 完成 - `30f5a45` chore(backlog): 记录 g53 完成 - `bb8c44d` chore(backlog): 记录 g52 完成 - `95b46a0` chore(backlog): 记录 g51 完成 - `1eff67b` chore(backlog): 记录 g50 完成 - `e5c7778` chore(backlog): 记录 g49 完成 - `1fa5933` chore(backlog): 记录 g48 完成 - `5c10eb2` chore(backlog): 记录 g47 完成 - `cdef605` chore(backlog): 记录 g46 完成 - `a650b6d` chore(backlog): 记录 g45 完成 - `7437fed` chore(backlog): 记录 g44 完成 - `c42eb4b` chore(backlog): 记录 g43 完成 - `f0b115d` chore(backlog): 记录 g42 完成 - `39d105a` chore(backlog): 记录 g41 完成 - `931ef70` chore(backlog): 记录 g40 完成 - `78779d7` chore(backlog): 记录 g39 完成 - `b45e6fb` chore(backlog): 记录 g38 完成 - `587ea92` chore(backlog): 记录 g37 完成 - `9466997` chore(backlog): 记录 g36 完成 - `f1703b3` chore(backlog): 记录 g35 完成 - `8711fae` chore(backlog): 记录 g34 完成 - `fe165a3` chore(backlog): 记录 g33 完成 - `052c215` chore(backlog): 记录 g32 完成 - `e203c9e` chore(backlog): 记录 g31 完成 - `4f512b0` chore(backlog): 记录 g30 完成 - `086f145` chore(backlog): 记录 g29 完成 - `84f83df` chore(backlog): 记录 g28 完成 - `b263075` chore(backlog): 记录 g27 完成 - `c6ce184` chore(backlog): 记录 g26 完成 - `d961d57` chore(backlog): 记录 g25 完成 - `ccb99c2` chore(backlog): 记录 g24 完成 - `2b65922` chore(backlog): 记录 g23 完成 - `59dc091` chore(backlog): 记录 g22 完成 - `874c2b9` chore(backlog): 记录 g21 完成 - `e009f5c` chore(backlog): 记录 g20 完成 - `42a954c` chore(backlog): 记录 g19 完成 - `bf05e99` chore(backlog): 记录 g18 完成 - `cfe299c` chore(backlog): 记录 g17 完成 - `2e48d94` chore(backlog): 记录 g16 完成 - `e781e72` chore(backlog): 记录 g15 完成 - `6cd991d` chore(backlog): 记录 g11 完成 - `11ac538` chore(backlog): 记录 g13 完成 - `3161340` chore(backlog): 记录 g14 完成 - `4ffc654` chore(backlog): 记录 g12 完成 - `07b9b75` chore(backlog): 记录 g10 完成 - `cf65939` chore(backlog): 记录 g09 完成 - `086831d` chore(backlog): 记录 g08 完成 - `7cf1f28` chore(backlog): 记录 g07 完成 - `511a390` chore(backlog): 记录 g06 完成 - `8d439f0` chore(backlog): 记录 g05 完成 - `86c72f7` chore(backlog): 记录 g04 完成 - `5131977` chore(backlog): 记录 g03 完成 - `d5ac26a` chore(backlog): 记录 g02 完成 - `0c42c6f` chore(backlog): 记录 g01 完成 - `7ce8bf7` chore(backlog): 记录 f06 完成 - `35c9f00` chore(backlog): 记录 f05 完成 - `fbe0348` chore(backlog): 记录 f04 完成 - `f1363e8` chore(backlog): 记录 f03 完成 - `3fb3cd2` chore(backlog): 记录 f02 完成 - `b9b05f5` chore(backlog): 记录 f01 完成 - `67374c7` chore(backlog): 灌入审计产出的 f01-f06 应修条目 - `cbf1d4a` chore: 留痕补 commit 哈希 - `84d008b` chore: 留痕补 commit 哈希 - `62d4ce6` chore: 留痕补 commit 哈希 - `4f7d1e8` chore: 留痕补 e02 commit 哈希 - `47bea0b` chore: 留痕补 e01 commit 哈希 - `b89d1cd` chore: backlog 记录 d29 done - `c8154b4` chore: backlog 记录 d27/d28 done - `734017a` chore: backlog 记录 d26 done ## 其他 - `fc7a1e8` iter: e02 新增 stepper 步骤条组件(三态流转 + active 信号双向绑定 + clickable 回跳) - `20d7b94` iter: e01 新增 inputNumber 数字输入组件(−/+ 步进 + 键盘上下调节,信号双向绑定,min/max/step 夹取) - `d7226f4` iter: 协议加时钟硬规范——时长禁止自报估算,预算判断改 date 实测差值 - `f8934ba` iter: d29 menu Home/End 跳转(与 select 键盘导航对称) - `8e16829` iter: d28 drawer 焦点陷阱(Tab/Shift+Tab 回绕、关闭归还焦点) - `fac74a3` iter: d27 modal 焦点陷阱(Tab/Shift+Tab 回绕、role=dialog、关闭归还焦点) - `82f48aa` iter: d26 select 键盘导航(↑↓ 环形移动、Home/End、Esc 回焦触发器) - `6a5e662` iter: d25 menu 条目支持快捷键提示 - `6efe3ab` iter: d24 重写 README + 组件清单防漂移校验 - `f361a19` iter: d23 alert 标题行 + 可关闭 + role=alert - `f86da98` iter: d22 新增头像 avatar 组件 - `00a6104` iter: d21 无障碍收尾(aria-label / role / aria-hidden) - `9cfdb43` iter: d20 progress 支持不确定态 - `4555542` iter: d19 dataTable 选中态受控 - `4012923` iter: d18 硬编码颜色门禁 + 清掉 ui.css 残留 #fff - `bdc1fec` iter: d17 表单错误态覆盖包裹式控件 + 校验时机事件 - `fa168b9` iter: d16 dataTable 落地列宽 width - `1c03c81` iter: d15 CLI 包补清单 + 文档组件数纠正 - `d3fc754` iter: d14 新增抽屉 drawer 组件 - `730ee1a` iter: d13 dataTable 列对齐与单元格格式化 - `9eefdcb` iter: d12 新增可关闭标签 tag 组件 - `d1a2864` iter: d11 modal 补 size 档位与 footer 操作区 - `a08f157` iter: d10 toast 手动关闭 + 堆叠上限 - `a11157b` iter: d09 新增滑块 slider 组件 - `1a4b2c1` iter: d08 演示页侧边目录 + 滚动高亮 - `fb9ab88` iter: d07 新增可交互气泡卡片 popover - `582318a` iter: d06 新增 ua verify 门禁(清单/文档/演示锚点一致性) - `60c0524` iter: d05 新增面包屑 breadcrumb 组件 - `ccbdcb9` iter: d04 dataTable 接加载态(骨架行 + 交互禁用) - `df2fb34` iter: d03 新增折叠面板 accordion 组件 - `6b9fa95` iter: d02 select/radioGroup 补 disabled + 修复 select 箭头旋转