Commit Graph
3847 Commits
Author SHA1 Message Date
CTimet 74b4b24bbd feat(SearchEdit): Enter handler
1. Add HandleEnterAsSearch property with default value false to maintain old code's behavior.
2. Override OnKeyUp method to process Enter keyUp. It triggers NotifySearchButtonClicked method only if HandleEnterAsSearch is true. Override keyUp rather than keyDown to avoid triggering repeatedly when user press Enter continuously.
2026-08-11 08:53:08 +08:00
chinboy 1d50b45555 docs(Mobile): define mobile documentation architecture 2026-08-11 08:44:17 +08:00
chinboy 1ff73e9385 docs(Mobile): define mobile controls architecture 2026-08-11 08:11:53 +08:00
chinboy a6fc404ba6 docs(Typography): add font package authoring guide
新增 `docs/guides/typography/`,补上字体包的操作路径。此前 `architecture/systems/typography/`
只描述字体子系统的架构与契约,要新做一个包得自己去读 `AtomUI.Fonts.AlibabaSans` 和
`AtomUI.Fonts.AlibabaPuHuiTi` 的源码反推步骤。按文档分类规范,"怎么完成任务"属于 Guide。

教程从"注册和生效是两件事"开篇,而非从建项目开始。注册链路与生效链路互不相干,只在 Avalonia
解析 `FontFamily` 字符串时汇合,因此只注册 `FontCollection` 不会改变任何界面外观 —— 这是做字体
包最费时间的坑,放在写代码之前说。其余章节依次为建项目、确认字族名、`FontCollection`、两个注册
扩展、`WithDefaultFontFamily` 激活、验证排查、分发许可与交付清单。

两处内容经实测修正,未照现有两个包的表象推断:

- `fc-scan` 输出为一行逗号分隔,且只有第一项可用。实扫 PuHuiTi 得
  `Alibaba PuHuiTi 3.0,阿里巴巴普惠体 3.0,Alibaba PuHuiTi 3.0 55 Regular,...`,本地化名与子族
  全名写进代码均不生效。同一命令解释了字重归组:AlibabaSans 六个面首项均为 `Alibaba Sans`。
  文中给出真实输出而非文字描述。
- `FontManager.Current.SystemFonts` 全仓库无调用点,该排查片段已对 Avalonia 12.1.1 单独编译
  验证后收录。

记录三处读现有包看不出的行为,均经源码核对:

- 主题配置显式声明 `FontFamily` Token 时 `WithDefaultFontFamily` 完全失效。
  `ThemeManager.AddDefaultFont` 在该 key 已存在时提前返回,是有意的优先级设计,但表现为"调用已
  执行而界面未变",故列入排查清单。
- 字符串格式错误抛异常,字族缺失只静默回退,两种失败模式的可观测性不同。
- `AtomUI.Controls` 引用 `AtomUI.Fonts.AlibabaSans` 但不调用 `AddFontCollection`。引用只保证资源
  随构建产出,注册是应用的责任,库不应代应用决定。

`AlibabaSans` 的注册扩展位于全局命名空间,按历史遗留记录而非范例,并指出可观察后果:Desktop
Gallery 无 `using` 即可调用,Browser Gallery 为另一个包必须显式 `using`。新包应带命名空间。

另标注两个现存包均未附字体许可文件 —— 将字体编译进程序集即构成再分发。此处仅在文档中点明,未
改动包内容,补充许可属授权决定而非文档变更。

同步接入 Guide 导航,并从 typography 架构 overview 与 font-packages 建立反向链接。
2026-08-10 16:53:18 +08:00
chinboy 4391e14155 docs(Typography): define font subsystem architecture
新增 `docs/architecture/systems/typography/`,记录字体子系统的当前架构。此前字体只有
`docs/modules/fonts/overview.md` 一页概览,跨模块的契约、派生算法和边界没有正式所有者。

字体跨 `AtomUI.Core`、两个 `AtomUI.Fonts.*` 包、`AtomUI.Controls` 和消费控件,按文档分类规范
属于 `architecture/systems/`。核心结论是它由两条互不相干的轴组成:字体资源注册进 Avalonia
`FontManager`,与主题编译字号行高 Token,两者只在解析 `FontFamily` 字符串时汇合,没有任何代码
把它们对账。

按职责拆成六篇:overview 定位与两轴架构;font-packages 讲 `FontCollection` 与注册入口;
font-family-resolution 讲回退链、覆盖路径与注入时序;tokens-and-derivation 讲 23 个 Token 的
分级与 `e^(i/5)` 阶梯算法;consumption 讲 AXAML 与 C# 消费面和相对行高换算;verification 讲
AOT、兼容性、验证要求与已知不一致。

记录三处已确认的实现问题,均经源码核对:

- Compact 算法不压缩字号。`CalculateFontMapTokenValues` 以 `FontSize` 而非 `FontSizeSM` 为基数,
  且第 1 档强制等于基数使重算幂等,因此 Compact 与 Default 的字体 Token 完全相同。上游 antd
  compact 取 `fontSizeSM`,`FontSize = 14` 时应得 12 而非 14。共享派生函数里还留着上游那句
  `// Smaller size font-size as base` 注释,位置已使其不再成立。
- 默认字体族首项 `fonts:AlibabaSans` 是前向引用。`AtomUI.Core` 不依赖字体包,`AtomUI.Controls`
  的项目引用也不含 `AddFontCollection`;未注册时 Avalonia 静默回退,全程无诊断信号。
- 相对行高到绝对行高的换算在五个控件中各写一遍,无共享 helper,且必须同时监听行高与字号两个
  属性才不会在字号变化后失配。

同步在 `docs/overview.md`、Architecture 与 systems 导航、主题系统导航和 Fonts 模块接入入口。
2026-08-10 14:25:44 +08:00
chinboy 9f6ec36645 docs: rename directory entry files to overview.md
统一文档目录的入口文件名为 `overview.md`,取代原先的 `index.md`。单 Control 目录本来就用
`overview.md`,此前只有目录级入口用 `index.md`,两套命名并存;现在全库一致。

改名覆盖 42 个入口文件:`docs/` 根、一级分类目录、Architecture 分组与跨模块系统目录、Module
目录、Control 平台与分类目录、Guide 与 Reference 子目录。`docs/AI/generated/index.md` 是手工
维护的导航页,一并改名。

生成产物 `docs/AI/generated/llms/**/index-cn.md` 保持原名,它属于 LLMs Generator 的输出契约。

同步更新 28 个正式文档与 `AGENTS.md` 中的入站链接,以及两处目录树示意图。改名后全部相对链接
可解析,LLMs Generator `verify` 通过(78 控件 / 159 文件),单 Control 四件套文件名契约未变。

新增 `docs/engineering/contributing/documentation-structure-guidelines.md` 承载入口命名、文档
拆分标准、事实所有权和链接规范。此前该规则只写在带日期的设计过程记录里,不适合作为长期来源。
`docs/superpowers/specs/2026-08-10-documentation-information-architecture-design.md` 保留原文
并加取代说明,其余结论继续有效。
2026-08-10 14:24:36 +08:00
chinboy cafec81a6f docs: organize AI outputs and prune redundant module pages 2026-08-10 11:05:37 +08:00
chinboy 5c950d22d6 docs: repair documentation references after reorganization 2026-08-10 10:04:59 +08:00
chinboy 3f5cc5b56f docs: standardize navigation releases and generated output 2026-08-10 09:57:22 +08:00
chinboy 0bc3447ebb docs: reorganize module engineering and Gallery domains 2026-08-10 09:32:07 +08:00
chinboy bc482f94d1 docs(Controls): reorganize shared infrastructure documentation 2026-08-10 09:12:36 +08:00
chinboy a43ea82e4b docs(Localization): separate system module and reference docs 2026-08-10 09:02:52 +08:00
chinboy 83ff8e94ed docs(Theme): separate architecture guides and reference 2026-08-10 08:59:22 +08:00
chinboy ff9590d805 docs(Architecture): establish global documentation navigation 2026-08-10 08:54:54 +08:00
chinboy 1ae1479a48 docs(Architecture): define repository documentation taxonomy 2026-08-10 08:48:09 +08:00
chinboy 3ab7df2ba0 docs(Core): define Semantic Part architecture and generator contract 2026-08-10 08:28:42 +08:00
chinboy eb63f153ea feat(SearchPanel): implement custom theme for GalleryCodeViewer search panel v6.1.3 2026-08-09 16:25:22 +08:00
chinboy 12ba9b92ef chore(Release): add build and packaging for AtomUI language packs 2026-08-09 13:05:32 +08:00
chinboy e022023802 chore(Release): update Avalonia to 12.1.1 and increment AtomUI version to 6.1.3 2026-08-08 23:50:14 +08:00
chinboy 85ac813fc4 refactor(Localization): update namespace for localization build tasks and adjust target states in XLIFF files 2026-08-08 17:33:08 +08:00
chinboy ef7464d11d docs(Localization): translate generator design to Chinese 2026-08-08 13:25:51 +08:00
chinboy dff4d37665 docs(Localization): define generator-first build design 2026-08-08 13:23:19 +08:00
chinboy f501cee604 refactor(Localization): simplify language pack authoring 2026-08-08 12:23:29 +08:00
chinboy e3f7b1010f feat(Generator): bind deferred language packs at consumption 2026-08-08 11:20:55 +08:00
chinboy b66c813c12 build(Localization): discover language pack contracts automatically 2026-08-08 11:10:28 +08:00
chinboy 1412351a47 feat(Localization): add deferred language pack validation 2026-08-08 10:54:38 +08:00
chinboy fee5ef72b8 docs(Localization): define deferred language pack validation 2026-08-08 10:39:04 +08:00
chinboy ee680c3546 refactor(Localization): rename LocalizationRuntime to LocalizationHost and update related references 2026-08-08 09:32:14 +08:00
chinboy 46e3156d6d gallery(Localization): add pt-BR resources and responsive demos 2026-08-08 00:05:25 +08:00
chinboy cf127d7793 build(Localization): support language pack project references 2026-08-07 17:58:52 +08:00
chinboy 52bda74e4d gallery(Localization): add pt-BR language switching 2026-08-07 17:29:35 +08:00
chinboy 71a7053620 test(Localization): verify official pt-BR package graph 2026-08-07 17:22:26 +08:00
chinboy 03866a7d88 feat(Localization): finalize pt-BR control translations 2026-08-07 16:36:25 +08:00
chinboy 93fba1053c feat(Localization): add pt-BR control translation drafts 2026-08-07 16:26:24 +08:00
chinboy 17be2f4b9a fix(Localization): support intentional empty translations 2026-08-07 16:19:53 +08:00
chinboy 6e1bb21178 fix(Localization): define pt-BR source package paths 2026-08-07 16:08:40 +08:00
chinboy 87b45acd1f test(Localization): keep aggregate fixture payload-free 2026-08-07 15:54:01 +08:00
chinboy bd59e44b1b feat(Localization): scaffold official pt-BR language packages 2026-08-07 15:43:46 +08:00
chinboy bb68c048ad test(Localization): strengthen aggregate language package assertions 2026-08-07 15:13:45 +08:00
chinboy f2691c09e8 test(Localization): cover aggregate language package consumption 2026-08-07 14:47:13 +08:00
chinboy f7ff81d830 feat(Localization): enforce configurable translation review states 2026-08-07 14:18:38 +08:00
chinboy f0e9ae993a feat(Generator): support dormant static language modules 2026-08-07 14:13:53 +08:00
chinboy 39513bc134 docs(Localization): define modular pt-BR language pack architecture 2026-08-07 13:55:55 +08:00
chinboy 92d54fe28a refactor(Localization)!: use enum keys as catalog unit identity 2026-08-07 13:27:02 +08:00
chinboy 29ca28d9da docs(Localization): adopt key-based catalog identity 2026-08-07 10:39:56 +08:00
chinboy d9f61c8d97 refactor(Performance): isolate localization benchmarks 2026-08-07 09:44:58 +08:00
chinboy 9d0a5df516 fix(Performance): run combined localization verifiers 2026-08-07 09:31:03 +08:00
chinboy 9841056ef6 fix(Generator): avoid language extension name collisions 2026-08-07 09:30:25 +08:00
chinboy a0c98a88d7 fix(Gallery): include Developer Tools runtime dependencies 2026-08-07 09:16:58 +08:00
chinboy 54c6b52069 fix(NavMenu): ignore stale selected nodes after item replacement 2026-08-07 09:16:23 +08:00