11 KiB
AtomUI Mobile 文档规范
本文档定义 AtomUI Mobile 架构、模块、Control、平台工程、Gallery 和 LLMS 文档的责任边界、证据状态和同步要求。 通用目录与命名规则见 文档结构与命名规范,单 Control 文件契约见 AtomUI Control 文档规范。本文只补充 Mobile 专项规则。
定位
AtomUI Mobile 文档同时承担两种责任:在源码实现前保存已经批准的目标契约,在源码实现后准确反映可用能力和验证证据。 这两种责任不能混写。目标设计可以约束 Foundation 和控件波次,但不能被表述为已存在的项目、API、平台支持或发布结果。
Mobile 文档遵守以下不变量:
AtomUI.Mobile.Controls与AtomUI.Desktop.Controls平行,Mobile 不依赖 Desktop。- iOS 是首个实现平台,公共架构从 Foundation 开始同时考虑 iOS 和 Android。
- Mobile 复用 AtomUI Global Token、Theme Algorithm、
ThemeConfigProvider和 Localization 运行时。 - Safe Area、键盘遮挡、方向、打开状态、选择状态和 gesture progress 是运行时状态,不是 Token。
- 当前
AtomUI.Toolkits.GalleryBase直接依赖 Desktop Controls,不作为 Mobile Gallery Foundation 的依赖。 - Desktop 与 Mobile Control 文档、Gallery 证据和 LLMS 输出分别拥有独立路径。
文档路由
| 内容 | 正式 owner | 不应放入 |
|---|---|---|
| Mobile Runtime、Viewport、Overlay、Gesture 和跨平台能力契约 | docs/architecture/systems/mobile/ |
单 Control 文档、平台环境指南 |
AtomUI.Mobile.Controls 包、注册、源码 ownership、adapter 和打包 |
docs/modules/mobile-controls/ |
Runtime 总体架构、单 Control API |
| Mobile 平台导航、分类兼容清单和具体 Control 契约 | docs/controls/mobile/ |
签名流程、包注册、跨控件状态机 |
| iOS/Android 工具链、签名、构建、模拟器和真机 | docs/engineering/platforms/ |
Control API、Token 和 Gallery 内容模型 |
| Mobile Gallery 内容主体及 iOS/Android Host 责任 | docs/gallery/platforms/mobile-gallery.md |
完整平台工具链和 Control 契约 |
| LLMS 配置、输入输出和隔离规则 | docs/engineering/tooling/llms-generator-design.md |
手工生成产物和 Control 专属知识 |
| 方案、实施计划和日期化验证证据 | docs/superpowers/ |
正式架构和当前能力的唯一来源 |
稳定事实只由一个正式 owner 维护。其他入口保留摘要和链接,不复制完整状态机、平台矩阵、Token 规则或验证清单。
预实现架构规则
当 AtomUI.Mobile.Controls 尚未存在时,Mobile Architecture、Module、Controls 和 Gallery 正式入口使用以下 notice:
状态:预实现架构。本文定义已批准的目标契约,不表示当前仓库已经包含或发布
AtomUI.Mobile.Controls。
notice 只在文档入口出现一次。正文直接描述目标契约,但必须遵守:
- 不把目标项目列入当前解决方案项目表。
- 不展示虚构的
.csproj、源码文件清单、生成 API、测试项目或 Gallery route。 - 不使用“已经支持”“可直接使用”“已验证”“即将发布”等没有证据的措辞。
- Approved target API 名称必须明确属于目标契约;源码落地后再按真实声明校准。
- 一个入口只有在其描述的源码和验证证据实际存在后才能移除 notice,不能全局批量移除。
证据与状态模型
移动能力的状态按维度独立维护:
| 维度 | 初始状态 | 允许提升状态的证据 |
|---|---|---|
| Design | 能力已纳入总体设计 |
已批准的系统或控件族设计 |
| Source | 未实现 |
Public API、Theme、注册入口和实际项目源码 |
| iOS | 未验证 |
可追溯的 Simulator 或真机场景、日期和结果 |
| Android | 未验证 |
可追溯的 Emulator 或真机场景、日期和结果 |
| Release | 未验证 |
对应平台 Release/AOT/trim 产物构建并成功启动 |
| Publication | 未发布 |
可追溯的 NuGet 或应用版本与发布日期 |
状态不能互相替代:Headless 测试不等于平台验证,Simulator 不等于真机结论,compile 不等于 Release/AOT,iOS 证据 不等于 Android 证据。状态提升必须附证据链接;证据失效或契约变化时必须回退状态并说明重新验证条件。
正式平台文档保存稳定规则。精确 Xcode、SDK、设备、系统版本、机器路径、性能数据和视觉校准值进入日期化的
docs/superpowers/progress/YYYY-MM-DD-<platform>-<scenario>-validation.md。
Mobile Control 分类与兼容清单
Mobile Control 使用七个分类:
| 分类 | 职责 |
|---|---|
general |
高频基础操作和通用视觉原子 |
layout |
空间、对齐、分区和安全区域 |
navigation |
页面、分区、步骤和当前位置切换 |
data-entry |
获取、编辑、选择、验证和提交数据 |
data-display |
展示结构化内容、媒体、状态数据和集合 |
feedback |
结果、进度、加载、确认和临时覆盖反馈 |
other |
横跨多种分类且以移动交互基础能力为主的能力 |
Mobile 不创建 window 分类。系统栏、Safe Area、系统返回和生命周期属于 Mobile Runtime/Platform,不是 Desktop Window
Control 家族。
每项上游能力恰好由一个分类 overview.md 维护。兼容清单使用固定字段:
Capability | AtomUI mapping | API strategy | Wave | Design | Source | iOS | Android | Release | Publication | Evidence
API strategy 只允许:
Tier 1 候选:现有跨产品抽象可能完整承接公共状态和语义,仍需控件族设计确认。Tier 2 候选:共享 model/coordinator,Mobile Control 和 Theme 独立。Tier 3:移动语义占主导,设计独立 Mobile API。波次设计未冻结:总体能力已经纳入,但 API 复用层级必须由对应控件族设计决定。
分类页拥有逐项状态;平台入口只聚合分类数量和导航。单 Control 文档描述当前契约,不复制兼容清单的阶段状态。
上游 ConfigProvider 映射到现有 AtomUI Theme、Localization、启动 options、Control 属性、DataTemplate 和
ControlTheme,不作为第 83 个 Control 进入分类。
单 Control 文档创建门禁
不得预先批量创建空的 Mobile Control 目录。只有以下证据在同一变更中均可审查时,才创建
docs/controls/mobile/<category>/<control>/:
- Control 或紧密 Control 家族已经存在可审查的 Public API 源码。
- 已存在默认 ControlTheme,或有明确的无 Theme 设计证据。
- 已存在 Contract/Headless 测试入口。
- Mobile Gallery 已有结构化 API、Token 和稳定 ShowCase 的承载位置。
- iOS 与 Android 的适用验证状态可以准确填写;未完成的平台明确为
未验证。
门禁满足后继续遵守标准文件契约:
overview.md
implementation.md
token.md # 有专属 Token 时创建
changelog.md
<topic>-design.md # 仅在稳定专项设计需要独立维护时创建
上游文档、截图、Demo 或总体设计不能替代 Public API、Theme、测试和 Gallery 证据。源码、主题、测试和文档冲突时,先 确定目标契约,再同步修正;不能选择最方便的一份作为事实。
平台文档规则
iOS 与 Android 使用平行的责任模型,但验证状态允许不同:
- iOS/Android 公共语义、Control API、Localization 文案和 Theme 契约保持一致。
- 平台差异通过 capability adapter 和 platform profile 表达,不散落在 Control 文档中。
- 工具链文档只记录稳定约束;版本组合必须有官方约束或真实执行证据。
- 未执行的命令不能标记为标准命令,未启动的产物不能标记为 Release 验证通过。
- Simulator/Emulator、真机、屏幕阅读器、IME、旋转、前后台和 Host 重建分别记录证据。
- iOS-first 不允许删除 Android 列、Android adapter 边界或 Android 验证要求。
Gallery 与 LLMS 隔离
Mobile Gallery 文档必须反映真实依赖:
- Mobile Gallery content 拥有 ShowCase、API table、Token table 和兼容状态。
- iOS Host 与 Android Host 只拥有平台启动、生命周期、签名/部署和 adapter 注册。
- 当前 Desktop-bound
AtomUI.Toolkits.GalleryBase不能作为 Mobile Foundation 依赖。 - 共享 Gallery contracts 只有在出现真实、稳定、无 Desktop 语义的重复后才能另行设计。
Desktop 与 Mobile LLMS 使用独立配置和输出 owner。当前 Desktop 继续使用:
docs/AI/generated/llms.config.json
docs/AI/generated/llms/
Mobile Foundation 的目标路径是:
docs/AI/generated/mobile-llms.config.json
docs/AI/generated/mobile-llms/
在 Mobile 配置和 Generator 支持实际落地前,不创建上述文件或目录。任何生成内容都从正式 Control 文档、源码、Theme、 Token 和 Gallery 结构化输入生成,禁止手工编辑。
同步矩阵
| 变更 | 必须同步 |
|---|---|
| Mobile Runtime contract | Mobile Architecture、Module 摘要、受影响 Control 摘要、验证文档 |
| 包依赖、注册或 adapter | Module、dependency graph、runtime platforms、Native 边界、AOT/打包说明 |
| Public API 或行为 | Control overview/implementation/changelog、Gallery API/ShowCase、Contract tests、兼容状态 |
| Theme、Token 或 Semantic Part | Control overview/token/implementation、Theme tests、Gallery Token 表、LLMS source |
| iOS/Android 证据 | 分类兼容清单、平台文档或日期化证据、Release 状态 |
| Gallery Host 结构 | Mobile Gallery 文档、平台入口、受影响 ShowCase ownership |
| LLMS 接入 | Generator 设计、独立配置、输出验证、Control 文档输入覆盖 |
Foundation 和每个控件波次结束时,逐项检查 Architecture、Module、Controls、Engineering Platforms、Gallery 和 LLMS 影响。没有影响的领域应明确为无变更,不能默认遗漏。
验证清单
- Mobile 当前状态和目标架构是否明确分开。
- 每个稳定事实是否只有一个正式 owner。
- 是否没有创建无源码/Theme/测试/Gallery 证据的单 Control 目录。
- 七个分类是否完整覆盖能力清单且没有重复。
- iOS、Android、Release 和 Publication 是否分别表达。
- Theme 文档是否复用现有全局系统,运行时状态是否保持在 Token 之外。
- Gallery 文档是否反映当前 Desktop-bound GalleryBase 依赖。
- Desktop/Mobile LLMS 路径是否隔离,生成产物是否未被手工修改。
- 所有人工维护目录是否使用
overview.md。 - 相对链接、旧路径扫描、LLMS verify 和
git diff --check是否通过。