搜索文档

输入关键词查找当前使用指南和维护文档。

Skip to content
靓企鹅中州韵 · 原站历史文档版本说明

本文保留含 Fcitx 中间层版本的原始说明。中州鹅的功能与操作请查阅当前用户手册。

设置界面 Material 3 / M3 Expressive 改造规划 ​

旧版 Fcitx 文档

这是直连版合入前的原站文档,固定于 edcf536f,仅对应当时的 Fcitx 版本。 旧版完整目录 · 旧版维护报告 · 当前中州鹅手册 · 原始文档

原始规划 · 2026-10-18。2026-10-20 已完成 MD3 主线实现,已提交代码 PR #5,合并状态以该 PR 为准。实际交付范围、用户反馈、相对规划的调整与验证边界见实施记录与合并说明。

下文保留原始审阅时的源码快照和设计建议;「本轮交付规划」「新增」「建议」等表述指 2026-10-18 的规划语境,不等同于当前默认分支已经发布全部功能。

审计对象:fx-rime-only,本次读取 HEAD 为 92fd34ce060cb4625d99066443d294c453c4c693。该 SHA 仅标识此次源码快照,不作为未来实施基线。

推荐在现有 View + Fragment + Preference 架构上完成设置界面的 M3 Expressive 改造:保留六个首页入口、现有功能页面和数据契约;统一组件、色彩、排版、动效与返回体验。在「外观」内新增「设置界面外观」,提供亮色、暗色、跟随系统,以及系统 Monet 和 MCU(Material Color Utilities) 官方算法生成的 CMF 2026 配色。

不需要为了 MD3 先重写整个设置导航或输入法。Compose 可以作为未来局部演进选项,但不是此次实现 MD3、Expressive 列表或预测性返回的前提。

建议先审阅下文「入口映射」「主题隔离」「颜色方案」「决策表」,再决定是否启动实施。

1. 范围与不变量 ​

本轮交付规划报告。应用源码、依赖版本、Manifest、偏好、键盘资源与引擎均未因本报告修改。报告存放在 docs worktree;文档站目录登记属于报告交付。

实施时以三条不变量验收:

  1. 入口身份保持:旧入口名称、route/Intent 目标、参数和操作语义保持;不合并或删除功能,不增加指向同一设置的常规重复入口。现有搜索捷径、外部 Intent 直达仍然保留。
  2. 数据兼容:现有 SharedPreferences key、类型、枚举取值与默认值保持;旧布局、主题、备份可继续读取。新增设置界面偏好采用独立 key,不占用键盘主题 key。
  3. 行为等价:原有确认、校验、权限申请、保存/取消、长按动作、导入导出和返回语义保持。动效不能触发额外部署、同步、保存或删除。

可改变:排序、页面内分区、间距、容器、形状、字体层级、颜色和转场。新增主题与调色板入口属于本次新能力。

本报告的“完整动效”指交互状态覆盖完整:进入、退出、取消、打断、重试、恢复、减少动态效果均有定义;不指每一行都增加动画,也不指所有 Android 版本都能提供同一系统手势能力。

2. 现状审计与技术判断 ​

2.1 已核实的项目情况 ​

项目当前源码事实对方案的影响
AndroidminSdk 23,compileSdk / targetSdk 36保留 Android 6 起的兼容;预测性返回按系统能力分层
UIAppCompatActivity、Fragment、PreferenceFragmentCompat、RecyclerView、XML 和 Splitties DSL主线采用 View 改造,复用偏好与导航
直接声明依赖Material Components 1.14.0;Activity 1.13.0;Navigation 2.9.8;Preference 1.2.1;AppCompat 1.7.1不能把“升级到 Material 3”误写为必须新增 Compose
Compose当前版本表与 app 构建未配置 Compose UI / Material3Compose 是新增技术栈,非已有组件的简单升级
设置主题日间 Theme.MaterialComponents.Light.NoActionBar.Bridge,夜间 Theme.MaterialComponents.DayNight.NoActionBar.Bridge实际仍是旧 Bridge 主题;依赖版本新不等于页面已经 MD3
首页常驻搜索;「日常调整」4 入口、「按需进入」2 入口不需要改造成泛用“账户/通知/安全”目录
导航SettingsRoute + NavHostFragment;navigateWithAnim 使用 R.animator.nav_default_*已有 Animator 基础,不能断言现有预测性返回完全不支持
返回首页搜索有条件启用 OnBackPressedCallback;工具栏根返回可 moveTaskToBack(false)搜索清空、页面出栈和根页退出必须分别设计
外观ThemeFragment 有键盘预览、主题/配置两 tab;独立主题、图标、字体等编辑器现有键盘主题功能和预览需保留
Manifest主 Manifest 未显式声明 enableOnBackInvokedCallback实施核对 merged manifest 与实际设备行为,不能仅凭缺少属性判定关闭
搜索静态声明 132 条搜索记录;集中 key 映射 87 项,另有条目直接指定定位 key这是搜索目录规模,不是全部设置数;引擎动态配置、菜单和编辑器内部操作另计

Fragment、Transition 的最终解析版本未在本轮运行 Gradle 解析。本地缓存存在多个版本,缓存存在不证明当前选中;实施阶段应使用 dependencyInsight 核对后锁定必要版本。

本轮没有操作真机、截图或录像;没有测得帧率、主题切换耗时或 OEM 手势表现。下文是源码审计与设计建议,不把线框或预期体验当作实测效果。

初始主仓库已有 Fcitx 子模块修改:inputmethodengine.cpp/.h、instance.cpp/.h;本轮未处理它们。git submodule status --recursive 遇到本机 MSYS 权限错误,因此递归状态未完整取得;本轮报告工作不依赖原生构建。

2.2 最新官方能力核对 ​

能力本次查证结论规划决定
View 版 ExpressiveMaterial Components 1.14.0 已有 Expressive 主题、列表和相关组件;本地 AAR 也有 ListItemLayout / ListItemCardView、MaterialButtonGroup 和 spring token使用项目现有版本先做能力验证,无需先升级依赖
Compose 版官方发布页当前列出稳定版 1.4.0、预发布版 1.5.0-beta01不把 beta 当稳定版;仅作为备选路线参考
MCU 2026官方 Java 源码存在 SPEC_2026、ColorSpec2026、SchemeCmfCMF 2026 有真实官方算法依据
已有 MDC 内置颜色工具本地 1.14.0 AAR 未发现 SchemeCmf / ColorSpec;其 DynamicScheme 为库内部限制 API不从内部工具类硬接 2026;不假设已有依赖自动包含它
Expressive motion官方区分 spatial / effects spring,View 有 token,但并非所有 View 组件自动采用新 motion逐组件审计和补齐,不能只换父主题就宣称完整支持

来源:MDC 1.14.0 发布说明、View 主题接入、Compose Material3 发布页、MCU ColorSpec、MDC 内部 DynamicScheme。在线 main 链接会变化,实施前必须固定具体算法版本/提交。

3. 入口映射:先保证功能不丢 ​

3.1 首页排序 ​

推荐保留原有「日常调整 / 按需进入」两个分类,日常调整顺序改为 输入与候选 → 外观 → 键盘 → 便捷功能。外观由第 3 项升到第 2 项,曝光新增能力;输入仍优先。缺乏真实使用统计,排序属于设计判断,不以“用户使用频率数据”作依据。

原入口当前位置建议位置既有目标保持持久化 / 风险
搜索首页第 0 项标题下常驻搜索区域现有搜索、跳转与定位查询/焦点/返回恢复是主要风险
输入与候选日常调整 1日常调整 1SettingsGroup("input")导航自身无偏好 key
键盘日常调整 2日常调整 3VirtualKeyboard导航自身无偏好 key
外观日常调整 3日常调整 2SettingsGroup("appearance")既有入口不改名
便捷功能日常调整 4日常调整 4SettingsGroup("convenience")导航自身无偏好 key
数据与备份按需进入 1按需进入 1DataBackup导入有覆盖后果,保留确认流程
高级按需进入 2按需进入 2Advanced兼容性开关不重设
常见问题 / 开发者 / 关于首页溢出菜单原溢出菜单原 URL / Developer / About保留原名称与发现方式

不新增首页账户、通知、隐私、安全分组:当前输入法的任务结构不适合直接套用通用 App 模板。也不新增无依据的实时状态卡或启动时的同步网络查询。

3.2 子页与动作映射 ​

下表的“保持”意味着整页内既有条目、条件可见项、菜单和动作保留,不只是保留一张空的页面外壳。纯导航/动作没有存储 key 时标记为“无”,不人为给它制造偏好。

原入口或功能族当前路径目标位置 / 容器key / 路由契约风险与保留要求
中州韵设置输入与候选原位置,首项InputMethodConfig(name, "rime");动态配置路径保持方案、部署、同步、目录等实际内容按引擎配置生成;不得手工重做成不完整静态列表
全局选项输入与候选原位置GlobalConfig;配置树路径保持条件可见与快捷键行为保持
候选栏样式输入与候选原位置KeyboardGroup(5)horizontal_candidate_style 等原 key 保持
候选窗口、快速预设输入与候选原位置;参数按视觉分区CandidatesWindow快速预设仍为动作;原范围、默认值保持
键盘尺寸键盘原首项KeyboardGroup(0)keyboard_height_percent 等保持
分体、浮动与单手键盘键盘原第 2 项KeyboardModes互斥、自动切换、校准与方向偏好保持
按键行为 / 按键反馈键盘原位置,各自分段列表KeyboardGroup(1 / 2)空格互斥、长按延迟、声音与振动行为保持
工具栏、编辑按钮键盘原位置;编辑按钮仍在工具栏页KeyboardGroup(3)toolbar_height_percent;键盘 ToolbarMetrics 不受设置页尺寸影响
键盘布局自定义键盘原位置KeyboardGroup(4)editors_category 定位保持
修改键盘定义 / 键盘布局管理 / 切换键盘定义配置 / 数字键盘布局键盘布局自定义原位置,维持编辑与选择的不同任务原 Activity / 选择器;tool_text_layout_manager 定位JSON 保留键、空项、占位键语义保持
弹出字符设定 / 在线编辑器键盘布局自定义原位置PopupEditorActivity / 原在线编辑流程启停、导入、权限与安全边界保持
主题外观外观中「键盘外观」视觉分区,旧标题仍为「主题」Theme;原主题/配置两 tab真实键盘预览继续受 ThemeManager 驱动
图标主题 / 字体设定外观与主题同行分区,顺序保持IconThemeListActivity / FontsetEditorActivity导入、编辑、预览、分享和删除确认保持
跟随系统夜间模式、亮色模式主题、暗色模式主题主题 → 配置完整保持follow_system_dark_mode / light_mode_theme / dark_mode_theme不升级为设置界面的三态,不改变类型
剪贴板 / 远端剪贴板同步设置便捷功能 → 剪贴板原路径;同步页沿用 ActivityClipboard → ClipboardSyncSettingsActivity同步账户、连接、权限、数据不可被换肤触发
文本编辑便捷功能原位置TextEditing;text_editing_style 等text_editor 布局与动作白名单保持
表情和符号 / 三类自定义数据便捷功能原位置,分区样式统一Symbol;catalog 与 recentKey 保持导入和删除交互不增加手势快捷删除
语音输入便捷功能原位置KeyboardGroup(6)show_voice_input_button / preferred_voice_input;授权时机保持
浏览用户数据目录数据与备份原位置无;原 DocumentsProvider IntentAndroid 10+ 长按附加路径仍保留
导出用户数据数据与备份原位置无;原导出流程完整备份的原生停写契约保持
导入用户数据数据与备份页内末项,以警示摘要区别无;原导入流程原目标选择、校验、覆盖确认与恢复流程保持
兼容性开关、附加组件高级原页内顺序原则保持,视觉分区Advanced / AddonList;原 keys这里是现存引擎配置,不借改造恢复已删除插件
实时日志 / 详细记录日志 / 重启实例菜单 → 开发者原位置;重启在页面内清晰区分Developer;verbose_log,其余为动作不把重启、日志等挂到常驻状态卡
关于内更新、隐私政策、开源许可、代码、构建信息菜单 → 关于原位置,以信息列表呈现原 Activity / URL / Intent不改升级检查行为与网络时机
设置界面外观(新增)无外观页首分区新的设置界面 route 和独立 keys仅控制设置页面;不修改旧主题入口

「主题」名称保持,通过分区标题「设置界面 / 键盘外观」解释作用范围。禁止把旧「主题」入口直接替换成新的 App 外观页。

3.3 搜索与兼容直达 ​

继续使用 SettingsGroupSpecs、实际承载页和 SettingsSearchIndex 三方一致的维护方式。新增项同步偏好定义、规格/承载页、搜索目录及英文/简体/繁体资源。

现有搜索面包屑有一些历史分类,例如语音记录使用 P_KEYBOARD,实际从便捷功能进入;候选窗口和部分便捷功能仍使用泛化 P_ANDROID。建议在实施本次目录核对时修正面包屑,保持实际 route 和 key;不把现有目录照搬成新的用户层级。

搜索回归需覆盖:别名匹配、输入焦点、主题配置 tab 自动打开、定位 key 消费、隐藏条目处理、Activity 目标不污染下一次定位,以及返回结果列表后保留查询。不要因改为 MD3 SearchBar 而改变搜索的上述语义。

层级验收采用“旧路径深度不增加;新增设置界面外观从首页两次进入可达”。不承诺所有旧功能一律两级可达——当前编辑器及引擎配置本身有更深层级。

4. 视觉方案与组件映射 ​

4.1 页面形态 ​

首页使用大标题、常驻搜索、两组分段列表。通过 surface 层次与首尾圆角形成分组,不把六个入口做成六张巨型卡片;列表条目保留完整标题、摘要与方向指示。标题收起后成为紧凑顶栏,列表滚动和状态恢复连续。

以下为布局线框,不是当前截图或已实现界面:

text
首页                            外观
← 靓企鹅·中州韵          ⋮       ← 外观
   搜索设置                     设置界面
                                [ 设置界面外观                 › ]
日常调整                        [ 跟随系统 · CMF 2026 / 海盐     ]
[ 输入与候选               › ]
[ 外观                     › ]  键盘外观
[ 键盘                     › ]  [ 主题                         › ]
[ 便捷功能                 › ]  [ 图标主题                     › ]
                                [ 字体设定                     › ]
按需进入
[ 数据与备份               › ]  设置界面外观页
[ 高级                     › ]  [亮色] [暗色] [跟随系统]
                                配色预览:标题 / 正文 / 开关 / 按钮
                                色彩来源:系统动态 / 预设配色
                                配色:海盐 / 松林 / 莓果 / ...
                                风格:CMF 2026 / 柔和 / 鲜明 / ...
                                更多外观选项              ›

建议视觉起点:内容外边距约 16–24dp,分组间距约 24dp;单行和双行列表使用相应组件密度并允许内容增高;大标题约 28–32sp、正文约 16sp、摘要约 14sp。具体以 Material 类型与形状 token 为准,这些是项目初稿,不是声称所有 MD3 页面必须采用的固定数值。

颜色分工:surface 做页面底色,surfaceContainer* 做分组与弹层;正文使用 onSurface,摘要使用 onSurfaceVariant;选中态使用 container/onContainer 配对;危险动作使用 error 语义。保留日志级别色的可读性,单独校验。设置页主色不改写键盘预览的实际配色。

4.2 View 主线与 Compose 备选 ​

当前组件推荐 View 实现若未来局部 Compose保留点
AppCompat ToolbarMaterialToolbar + AppBarLayout 的 Expressive 样式相应 TopAppBar根返回与子页标题一致
普通 Preference 行定制 Preference layout,适配 ListItemLayout / ListItemCardView 分段状态ListItem + 分组容器不重写 ManagedPreference 存储/校验逻辑
Switch / CheckboxMaterialSwitch / MaterialCheckBox,对接原 Preference 变更回调Switch / Checkbox每次点击只写一次;整行与控件不双重触发
单选设置Material 单选对话框或 BottomSheetDialogFragmentAlertDialog / ModalBottomSheetentryValues、取消语义保持
三态外观单选按钮组,宽度不足改纵向单选列表SingleChoiceSegmentedButtonRow 或单选列表200% 字体下仍可辨读全部文字
SliderPreferenceMaterial Slider 与原范围/步长/格式适配Slider不增加写入频率;昂贵动作沿用原提交时机
搜索保留现有常驻输入模型,调整 MD3 容器;独立验证后再考虑官方 SearchViewSearchBar 等禁止绑定时抢焦点、重复 TextWatcher
自定义对话框统一 MaterialAlertDialogBuilder / 主题覆盖AlertDialog警示、错误和恢复路径全保留
主题/布局/字体编辑器原 Activity 保留;外壳、表单、菜单统一未来仅替换页面内容Intent、草稿、保存、返回结果保持

官方的 Expressive 列表支持按分组计算首/中/末项形状。接入 Preference 时须自行对接可见项分组和刷新;搜索结果/条件项变化后重新计算。普通设置行关闭滑动操作,避免列表横滑与返回手势竞争。

推荐路线 A:View 完整改造。 复用现有导航、Preference 和编辑器,统一设置 Activity 主题入口与组件适配;额外工作集中在 motion 和颜色切换状态恢复。

备选路线 B:Fragment 中逐页嵌入 ComposeView。 适用于确认长期迁移 Compose 后;保留旧 route 和 Activity,复用同一偏好源,设置 ViewCompositionStrategy,不能再建立另一套竞争的返回栈。首次引入需单独批准固定版本依赖及 Kotlin/Compose 编译配置。不能把换框架本身当作体验验收。

5. 主题模式与颜色引擎 ​

5.1 独立于键盘主题 ​

新增的主题控制域只覆盖主设置页及从它打开的应用自有设置/编辑器外壳。键盘、候选栏、浮动键盘、IME 窗口、键盘预览内容沿用现有 ThemeManager。系统文件选择器、外部浏览器和系统权限页由系统决定外观。

采用按 Activity 限定的主题应用策略及 localNightMode,避免全局 AppCompatDelegate.setDefaultNightMode 或 Application 级全量覆盖把 IME/透明浮层一起改变。主题编辑页的“界面壳”和“真实键盘预览”分别持有正确的主题上下文。

建议新增状态模型(逻辑模型,不是本轮代码):

字段例值约束
modesystem / light / dark三态仅属于设置界面
colorSourcelegacy / system / presetsystem 代表使用系统角色色,不伪装为自选规格
presetIdlegacy / sea_salt / forest / berry 等稳定字符串;名称可本地化
recipeIdcmf2026 / tonal2025 / vibrant2025 / neutral2025 / expressive2025 / classic2021绑定合法 variant + spec,避免任意笛卡尔组合
contraststandard / medium / high首版预设可生成三档;系统模式按真实能力提供
motionsystem / reduced可放“更多外观选项”,是否增加独立开关待审
schemaVersion1显式数据结构版本,不持久化 enum ordinal

新 key 建议统一 settings_ui_* 前缀;具体名单实施前确认。未知新值回落到兼容外观,不能崩溃,也不覆盖原始存储值。原 disable_animation 目前主要被 IME UI 消费,其语义不在此次顺手扩展;设置页优先响应系统减少动态效果,新开关单独存储。

升级策略:旧用户首次使用新界面默认 mode=system,颜色走兼容配色,尽量保持原主色与亮暗观感;不能宣称旧 Bridge 主题等于 SPEC_2021。新的组件形状/排版仍会变化,所保留的是默认色彩意图与行为。新安装建议 system + 可用时 Monet,否则固定品牌配色。只有用户主动选择 CMF 2026 时才切换到该配方。

「恢复默认外观」只重置 settings_ui_*,恢复到固定定义的兼容外观 + 跟随系统,不清除键盘主题或用户数据。首次安装推荐值与恢复默认值的区别应在文案中说明,也可在审阅时选择统一采用兼容默认以减少分支。

5.2 Monet、调色板样式、颜色规格是三件事 ​

系统 Monet:Android 12+ 使用系统动态色角色并尊重系统/OEM 的配色选择;低版本或动态色不可用时回落至固定品牌方案,摘要解释实际生效方案。无需读取壁纸文件或新增壁纸权限。使用官方 DynamicColors 作为独立系统路径是合理的,并非应全面禁止。Android 动态色说明

应用调色板:固定的一个或两个种子色,结合 variant、明暗和对比度生成完整角色表;可在所有支持系统上使用。颜色来源和视觉风格分别建模,但用户只看到当前可用选项。

颜色规格:算法版本。CMF 是一种 variant,2026 是 spec;两者不能作为两个互不约束的自由选择器。官方 SchemeCmf 默认使用 2026,传入其他 spec 会拒绝;允许单种子,亦支持第二种子影响 tertiary。因此推荐预设中提供有设计意图的双色组合。官方 SchemeCmf

用户选择实际执行UI 应显示的规格
系统动态色 / Monet系统提供的角色色系统管理;不标为强制 2026
CMF 2026CMF + SPEC_20262026
柔和 / 鲜明 / 中性 / 表现力TONAL_SPOT / VIBRANT / NEUTRAL / EXPRESSIVE + SPEC_20252025
经典方案(可选)对应支持的 variant + SPEC_20212021
兼容配色原应用颜色适配为完整 MD3 角色兼容;不虚构 MCU 规格

官方 DynamicScheme 对常见四类 variant 的 2026 请求会回退到 2025,另一些 variant 回到 2021。若未来提供高级规格选择,必须按能力筛选并校验最终生效 spec,不能仅存下用户请求后显示“2026”。官方规格回退逻辑

5.3 推荐落地:Monet 系统路径 + 官方算法预生成配色 ​

首版建议两条颜色路径:

text
系统路径:系统动态颜色 → 设置 Activity 的 Material 主题覆盖

预设路径:固定种子色/双色种子
          → 固定版本 MCU(variant + spec + contrast + PHONE)
          → 完整亮/暗角色表
          → 生成并核验 XML theme overlay
          → 设置 Activity / 对话框 / 控件

先规划 6 组具名预设,例如海盐、松林、莓果、琥珀、紫藤、石墨;名称与种子为设计候选,最终需看官方算法输出后定稿。每组提供 CMF 2026 及选定的其他合法风格,色卡显示主色、容器色、次色、第三色及选中标记。预览包含文字、开关、列表与按钮,不能仅用彩色圆点评价可读性。

为何首版推荐预生成: 用户当前要求多种样式、Monet 与 CMF 2026,可由这两条路径完整覆盖;固定配色在 API 23+ 可直接用资源 overlay,无需先解决任意运行时颜色注入所有旧 View 的问题。算法仍是官方 2026,只是提前计算,不能把预生成误叫作“近似 2026”。

生成过程应固定官方 MCU 的准确提交/发行版本、保存许可证与生成参数、保留测试向量;导出所有应用需要的 surface、on-color、outline、inverse、fixed、error 等角色及控件状态色。不得只导出 primary/secondary,也不得手工猜 tone 表后标作官方 2026。此生成工具的引入属于后续待批准的外部代码/依赖范围,本轮未下载或执行。

若以后需要“用系统色重新生成 CMF 2026”或任意用户选色,再评估独立 MCU 模块 + View 颜色适配器。公开系统色不保证可逆恢复壁纸原始种子;用系统强调色再生成时应准确命名为“基于系统强调色”,不宣称与系统 Monet 完全相同。也不能依赖 MDC 的受限内部颜色工具 API。

抽象层建议为 SettingsColorProvider,能力包含 SystemColorProvider、GeneratedPresetProvider 和未来 RuntimeMcuProvider。上层消费统一角色色与有效配方信息,不依赖 Compose 或 View 的具体实现。若采用 Compose,才额外映射为 ColorScheme;当前主线直接映射 Material theme attrs。

5.4 即时预览与保存 ​

外观页顶部展示设置界面预览;主题模式三态直接可见;颜色方案选择打开底部弹层,大屏为合适宽度的对话框。窄屏或大字体用纵向单选项,色卡同时显示文字与选中状态。

推荐“选择即预览,应用后保存”:在弹层中更换临时配色只改变预览,不反复 recreate Activity;应用后原子写入一组偏好并刷新设置外壳;取消、下滑关闭或返回恢复原值。这样可以清楚区分预览和持久化,并减少频繁重建。主题模式单选可直接应用,但需保留当前 route、查询和列表位置。

View 切换亮暗可能重建 Activity,不能承诺仅靠 setTheme() 改变已创建控件。需在创建首帧前选择 windowBackground 与主题,恢复导航/列表/搜索状态,对切换交互做一次统一过渡。编辑器草稿、正在导入/导出的任务不能因换肤丢失;必要时在不可中断事务期间延后换肤。

6. 完整动效与预测性返回 ​

6.1 动效语言 ​

采用 M3 Expressive 的 spring token,把移动/尺寸/形状与颜色/透明度分开。spatial 可有克制的弹性,effects 不应过冲。下表时间是普通过渡的初始调优范围,不是官方统一常数或已经测得的耗时;spring 本身由参数与初速度决定,不硬写成固定 300ms。官方 motion 说明

场景建议效果完成 / 取消 / 降级
首页标题随滚动收起顶栏连续过渡,surface 层次变化返回恢复滚动位置;不重播整页入场
进入子页支持 seek 的横向层级过渡,配合淡入;普通点击约 250–350ms 起调返回同一组可逆效果;不叠加 Animator 与 Transition 两套事务
开关、单选、色卡选中组件原生状态反馈;fast effects / spatial中途重选向最新目标收敛;不重复写值
列表条件项显示/隐藏轻量尺寸与透明度变化保持焦点与阅读位置;批量更新不逐项弹跳
底部弹层Material 原生展开、收起、遮罩与手势反馈返回取消只关顶层;取消预览不写值
颜色与亮暗切换完整角色集一次应用;约 200–300ms 的统一轻量过渡连续选择合并;不对长列表每行独立开颜色动画
搜索结果轻微内容替换,优先输入响应输入框和 IME 不随结果刷新重建
加载、成功、失败合适的进度指示、明确结果与可重试动作业务取消能力由原流程决定,不因动画强制取消备份
编辑器、Tabs、菜单、提示采用对应组件反馈;特殊编辑页单独检查草稿/所选 tab/选中对象恢复
减少动态效果去掉大位移、弹跳与装饰转场,保留状态可辨性系统动画关闭时不得继续强制播放自制 spring

同屏通常只允许一个主导航/主题过渡,局部状态反馈可以并行;这是性能治理原则,不用“最多两个动画”限制组件内部实现。首版不新增页面入场瀑布、全屏圆形揭示或大面积模糊。

完整覆盖要包括独立编辑器、同步设置页和应用自有对话框,不能只验收首页。View 组件原生已有的动画优先复用;缺项逐项适配,不能用全面缩放所有按钮代替 Expressive 设计。

6.2 版本能力边界 ​

系统规划承诺
API 23–32普通返回与一致的非跟手转场;无平台预测性返回能力承诺
API 33系统返回接入;系统预测性返回按设备/开发者选项验证;不承诺 Fragment 逐帧跟手
API 34验证跨 Fragment 跟手、取消与完成;开发者选项/设备能力单独记录
API 35+验证默认系统 back-to-home、跨 Activity 与应用内预测性返回;重点覆盖 targetSdk 36 的实际行为

官方跨 Fragment 预测动画要求 Android 14+,支持 Animator 与 AndroidX Transition,要求 Fragment 1.7.0+、Transition 1.5.0+;旧 Animation 和平台 framework Transition 不属于这条兼容路径。当前 navigateWithAnim 使用 Animator,先验证既有能力,再决定替换,而不是先认定全部失效。Fragment 动画兼容说明

Manifest 是否显式声明启用,需要结合 merged manifest、targetSdk 与实际系统确认;不能把添加一个属性当作完成预测性返回。依赖最终解析不满足要求时,再提交固定版本的变更建议。

6.3 返回的优先级与取消语义 ​

当前状态返回目标手势进行中完成后 / 取消后
系统 IME 接管返回先处理系统输入法服从平台输入法返回策略不额外清查询或跳页
顶层对话框/配色弹层关闭顶层预览底下当前页完成关闭并撤销未应用预览;取消保持弹层
首页有查询退出搜索可做结果层恢复常规列表的预览完成才清查询;取消恢复原查询、焦点、位置
编辑器有未保存草稿原有离开确认不先出栈或保存保留原确认策略,取消无损
普通子页前一个真实目的页交给 Fragment / Navigation 的可 seek 效果完成仅 pop 一次;取消复位
首页且无查询/弹层系统决定返回桌面或上一个任务交还系统动画不常驻注册吞返回的回调

表中具体顺序还需结合 IME、Dialog 各自 Window 验证,不能在 Activity 中硬编码一个与平台争夺优先级的万能拦截器。

推荐 OnBackPressedDispatcher + 生命周期约束;自定义搜索状态才按需处理 started/progressed/cancelled。根页面不自己缩小到 90% 模拟桌面;这种处理会抢走系统动画,也无法正确展示真实前一任务。工具栏箭头保持当前根页最小化语义,系统手势保留平台返回语义。官方返回回调指导

若采用 MaterialSharedAxis 或组合 AndroidX Transition,须验证整组 transition 支持 seeking;普通正向动画可播放不等于反向手势可 seek。无法 seek 的实现采用已验证的 Animator 路径,不混入第二个 pop 回调。预测性返回动画指导

所有业务副作用只在相应确认动作完成后发生。手势中途取消不写偏好、不部署、不同步、不保存草稿。主题切换与导航过渡互斥协调:返回开始后延后新的主题应用,已应用的值不因手势取消而回滚。旋转、分屏、进程恢复时以已提交状态恢复,丢弃过期的动画进度。

7. 自适应、无障碍和性能验收 ​

推荐按当前窗口可用宽度布局,保留用户当前目的页,不以设备名称或朝向硬编码:

窗口宽度起点建议布局
小于 600dp单列,沿用页面层级
600–839dp加宽单列、合适最大宽度;在字号/内容确有空间时才启用双栏
840dp 及以上左侧六个分类的列表或展开式导航区,右侧当前详情;同一个导航模型

这些是初始断点方案,可在大字体、分屏和折叠姿态下调整。右侧表单可限制约 640–720dp 的阅读宽度;主题网格/布局编辑器按任务利用更大空间,不给全部页面同一硬上限。六个长中文分组更适合带标签的侧栏,不强塞六个图标或六个底部导航按钮。官方的 list-detail 模式可参考其交互原则,当前 View 实现不直接照抄 Compose API。

双栏不是新增一套设置入口:保留同一 route、选择状态和历史语义;窄化后打开当前详情,返回恢复对应分类。外部 Activity 不在首期强拆进右栏;保持原 Intent 与结果契约。

无障碍验收:

  • 交互目标至少 48dp;大字体下行高随内容增加。200% 字体、简繁英、横屏和窄分屏不截断关键名称/取值。
  • 普通文本对比度至少 4.5:1,大文本与关键非文本图形按相应 3:1 要求检查;对 primary/onPrimary、各 container/onContainer、surface/onSurface 等实际组合逐一计算,不只看两个主色。
  • 色卡有名称、选中标记与 TalkBack 状态;不靠色相区分。分组标题具有 heading 语义,装饰图标不重复朗读。
  • 单个开关行只有清楚的一次语义动作;外接键盘、方向键与 TalkBack 焦点顺序和视觉顺序一致。弹层关闭恢复触发点焦点。
  • 动态系统方案也需检查实际控件状态、错误提示与截图;兼容配色和每个预设的亮暗/对比度组合逐项校验。不静默把用户选的对比度偏好改写成另一个值;生成失败的配方不发布。
  • 主题过渡中仍需保证关键文字可读;不能依靠长时间两层文字叠影完成换肤。

触控与对比度依据:Android 无障碍指南。

性能目标应在选定设备记录为可复现实验:首帧无错误主题闪屏;滑动/返回中无主线程 I/O;同一操作没有重复导航、重复写值;主题应用完成后不丢焦点/位置。60Hz 帧预算约 16.7ms、120Hz 约 8.3ms,使用 FrameMetrics/Perfetto 或相应性能工具记录 P95/P99 与卡顿帧。验收前再设机型阈值,不在本报告伪造“300ms 内必然完成”或“零掉帧”。

8. 分阶段实施与验收 ​

所有阶段都以审阅批准为启动条件;本轮未开始 Phase 1 代码实施。

阶段产出 / 改动范围必须达到的验收
Phase 0:锁定基线本报告、源码入口表;补真机截图与当前行为录像;核对 merged manifest / resolved dependencies六个入口、菜单、动态引擎配置、编辑器路径都有记录;前后比较依据明确
Phase 1:入口与视觉骨架首页排序、外观分区、M3E 主题与 Preference 行适配旧入口名称和目标保持;搜索目录及定位覆盖通过;新旧数据差分无非预期变化
Phase 2:主题与颜色独立 SettingsUiPrefs;系统 Monet;固定 MCU 配方生成资源;主题三态与预览所有配方完整、规格真实、亮暗可读;API 23 回退;旧键盘主题完全等价
Phase 3:完整组件覆盖分组、设置详情、编辑器外壳、同步页、菜单/对话框、加载/错误状态每个页面有覆盖表;没有一半 Bridge 一半 M3 的遗漏;草稿/业务流程保持
Phase 4:motion 与返回可取消可打断动画;搜索、子页、弹层、编辑器、根页返回API 34+ 手势中途取消与完成各验收;API 23–33 普通返回正确;根页系统动画不被抢占
Phase 5:自适应与无障碍大屏详情布局、窗口缩放、TalkBack、200% 字体、低动态效果双栏/单栏状态连续;标签不丢;对比度与触达通过;性能报告可复现

需要重点运行的现有目标测试包括 SettingsSearchQueryTest、SettingsSearchIndexCoverageTest、主题序列化及相关受影响测试。新增测试只覆盖真正的契约:偏好独立性、配方有效 spec、角色完整性/对比度、预览取消、返回完成仅消费一次等。不能写只复述实现的无效测试代替行为验证。

UI 阶段按交接门禁执行目标 JVM 测试、lint、Debug build;最终做全量本地单测门禁。真机覆盖当前主力 OnePlus、至少一个平台基准设备/模拟器、一个旧 API 与大屏窗口;录制手势从左右边缘开始、拖动取消、快速完成、三键返回、IME 打开、主题切换、旋转与后台恢复场景。记录 OS、构建、分辨率/刷新率、操作步骤与结果。

同步回归键盘输入、主题切换、浮动/单手/分体、文本编辑、剪贴板、Rime 部署同步与备份;设置 Activity 的上下文或资源变化仍可能影响这些共享组件。零方案场景应验证不能输入文字,不能用“能打字”作为通过依据。

不在规划阶段编造工期。建议用一个设置详情页 + 外观选择弹层 + 普通子页预测返回做垂直试验,再据其状态恢复、组件适配和设备结果估算剩余工作。

9. 风险、回滚与待审决策 ​

9.1 主要风险 ​

风险缓解回滚边界
误用键盘主题偏好SettingsUiPrefs 独立;按 Activity 隔离;原 follow_system_dark_mode 等保持恢复旧设置壳,键盘数据无需迁移
换肤重建丢失搜索/草稿/备份状态首帧主题、SavedState、导航恢复;未应用预览不持久化;业务任务沿用现有持有者关闭新换肤入口/回退旧壳,不动用户文件
CMF 源码存在但依赖未包含固定官方算法生成资源;明确版本/许可证/有效 spec切兼容配色;保留已选 recipe 值供后续恢复
UI 标注规格与实际算法不符配方白名单;验证最终 spec;禁止未经校验自由组合停用对应配方,不冒称同名兼容方案
View 组件动效覆盖不足页面/状态逐项 checklist;小范围补 motion adapter按页面停用自制动效,正常导航保留
返回拦截抢走系统动画回调只在需要时启用;每个状态单一责任;手势完成才 pop回退自定义转场/搜索预览,保留正确返回逻辑
系统/OEM Monet 差异尊重系统原色;固定预设提供可重复视觉;真机检查用户可选固定配色
Preference 换壳丢 key/可见性/定位保留原数据对象;分组规格、承载页、搜索同步;覆盖测试逐页恢复旧 layout,不改存储
全应用主题覆盖误伤透明浮层/IME设置 Activity 明确名单;预览使用原主题上下文恢复对应 Activity 主题配置
同期 Compose 与导航双栈迁移首期 View;若未来引入 Compose 保留一个导航责任方单页恢复 View,不整体重做返回栈

回滚建议采用内部构建级开关/可回退的页面样式适配,避免长期给用户暴露“旧设置/新设置”两套产品。新偏好可保留但被旧壳忽略;不回滚已有用户数据,不因回退恢复已删除功能。

9.2 待你审阅的决策表 ​

决策推荐备选 / 影响
技术路线View + Fragment + Preference 完整改造局部 Compose;需新增依赖与更多互操作验证
首页排序输入与候选、外观、键盘、便捷功能;其余保持完全保持原序,只改视觉
新外观入口外观 → 设置界面外观;与键盘外观分区直接嵌入外观页,但需扩大通用分组页职责
主题作用域所有应用自有设置/编辑器外壳;独立于键盘若要求输入法本体也跟随,需另立需求
颜色方案系统 Monet + 6 组固定 MCU 配色,含真实 CMF 2026任意自选种子/系统色重生成 CMF,增加运行时颜色引擎工作
颜色规格呈现以合法“风格配方”显示规格;CMF 固定 2026高级规格选择器,但仍需按 variant 限制组合
MCU 引入方式固定官方版本的生成工具,审核后生成资源引入固定版本/提交的隔离运行时模块;不使用受限内部 API
旧用户默认跟随系统 + 兼容配色自动切 Monet/CMF 会明显改变原观感,需明确选择
新安装默认跟随系统 + Monet 可用则启用与旧用户统一兼容默认,更简单一致
预览保存弹层内即时预览,「应用」保存,「取消」恢复选择立即保存,需接受更频繁刷新并明确返回不撤销
大屏同阶段规划,后阶段落实双栏首版只最大宽度单列,双栏后续单独验收
动效偏好系统减少动态效果优先;可增独立“减少动态效果”仅跟随系统,少一个设置项

上述表格是方案选择,不是依赖升级或实施授权。本次用户审阅后,下一步应先确定范围和颜色接入路线,再做垂直试验。

附录 A:源码核对位置 ​

以下路径均相对 fx-rime-only/:

  • build-logic/convention/src/main/kotlin/Versions.kt、gradle/libs.versions.toml、app/build.gradle.kts:SDK、依赖、Compose 配置现状。
  • app/src/main/AndroidManifest.xml、app/src/main/res/values/themes.xml、app/src/main/res/values-night/themes.xml、app/src/main/res/layout/activity_main.xml:主题、Activity 与主界面容器。
  • app/src/main/java/org/fcitx/fcitx5/android/ui/main/MainFragment.kt、MainActivity.kt:首页、菜单、搜索与返回语义。
  • 同目录 settings/SettingsRoute.kt、settings/group/SettingsGroupSpecs.kt、settings/group/SettingsGroupFragment.kt:路由与分组。
  • 同目录 settings/search/SettingsSearchIndex.kt、settings/search/SettingsSearchPreference.kt:搜索、key 与别名。
  • 同目录 settings/behavior/KeyboardSettingsFragment.kt、KeyboardGroupFragment.kt、DataBackupFragment.kt、ClipboardSettingsFragment.kt、AdvancedSettingsFragment.kt:设置入口和动作。
  • 同目录 settings/theme/ThemeFragment.kt、应用 data/theme/ThemePrefs.kt、ThemeManager.kt:键盘主题与预览、日夜配置。
  • 应用 ui/main/modified/MyPreferenceFragment.kt、ui/common/PaddingPreferenceFragment.kt、data/prefs/ManagedPreferenceFragment.kt:Preference 适配面。
  • 应用 utils/NavController.kt:现有导航 Animator。
  • docs 分支 docs/maintainer/HANDOVER-rime-only.md §0.6.3/0.6.4/0.6.7/0.6.8 与 §0.7.5:入口/搜索/主题回退经验与验证要求。

附录 B:静态搜索记录基线 ​

本附录按当前源码提取 132 条 SettingsSearchEntry 的名称、原目标与定位 key,供实施逐条勾核。不是完整运行时入口树,也不是已确认所有条目当前可达的测试结果;动态 Rime 配置、各编辑器内部按钮/菜单、未索引项仍需 Phase 0 真机补录。标题从简体资源解析,缺项回退默认资源;所有旧记录的目标与 key 建议保持。

这里的 key 是搜索定位 key,不必然等于数据存储 key;“—”仅表示未配置定位 key,不表示此功能完全没有持久化数据。

#名称原目标(保持)定位 key(保持)
1全局选项SettingsRoute.GlobalConfig—
2中州韵设置rimeRoute(context)—
3附加组件SettingsRoute.AddonList—
4输入与候选groupRoute(SettingsGroupSpecs.ID_INPUT)—
5外观groupRoute(SettingsGroupSpecs.ID_APPEARANCE)—
6便捷功能groupRoute(SettingsGroupSpecs.ID_CONVENIENCE)—
7文本编辑SettingsRoute.TextEditing—
8文本编辑风格SettingsRoute.TextEditingtext_editing_style
9Foxy 光标移动步长SettingsRoute.TextEditingtext_editing_cursor_step_dp
10Foxy 长按选取延迟SettingsRoute.TextEditingtext_editing_cursor_long_press_delay
11分体、浮动与单手键盘SettingsRoute.KeyboardModes—
12启用浮动键盘SettingsRoute.KeyboardModesfloating_mode_enabled
13横屏时自动使用浮动键盘SettingsRoute.KeyboardModesauto_floating_landscape
14启用单手键盘SettingsRoute.KeyboardModesone_hand_mode_enabled
15靠右显示SettingsRoute.KeyboardModesone_hand_on_right_portrait
16主题SettingsRoute.Theme—
17图标主题IconThemeListActivity::class.java—
18按键圆角半径SettingsRoute.Themekey_radius
19编码区圆角半径SettingsRoute.Themepreedit_radius
20工具栏上方圆角半径SettingsRoute.Themetoolbar_radius
21启用按键边框SettingsRoute.Themekey_border
22启用按键边框描边SettingsRoute.Themekey_border_stroke
23使用 Gboard 风格的操作按键SettingsRoute.Themespecial_key_oval_shape
24文本编辑按钮圆角半径SettingsRoute.Themetext_editing_button_radius
25剪贴板条目圆角半径SettingsRoute.Themeclipboard_entry_radius
26候选栏高亮圆角半径SettingsRoute.Themecandidate_bar_highlight_radius
27候选栏高亮边距SettingsRoute.Themecandidate_bar_highlight_inset
28启用按键水波纹特效SettingsRoute.Themekey_ripple_effect
29副标签存在时移动主字符SettingsRoute.Thememove_main_text_for_alt_label
30标点位置SettingsRoute.Themepunctuation_position
31导航栏背景SettingsRoute.Themenavbar_background
32跟随系统夜间模式SettingsRoute.Themefollow_system_dark_mode
33亮色模式主题SettingsRoute.Themelight_mode_theme
34暗色模式主题SettingsRoute.Themedark_mode_theme
35虚拟键盘SettingsRoute.VirtualKeyboard—
36键盘尺寸keyboard(LAYOUT)—
37键盘高度keyboard(LAYOUT)keyboard_height_percent
38键盘两侧边距keyboard(LAYOUT)keyboard_side_padding
39键盘底部边距keyboard(LAYOUT)keyboard_bottom_padding
40将按键范围扩展至边缘keyboard(LAYOUT)expand_keypress_area
41自动分体键盘SettingsRoute.KeyboardModessplit_keyboard_enabled
42分体键盘校准SettingsRoute.KeyboardModes—
43分体键盘时采用横屏布局参数SettingsRoute.KeyboardModessplit_keyboard_use_landscape_layout
44分体时复制中间字母键SettingsRoute.KeyboardModessplit_keyboard_duplicate_middle
45强制左右两半在中缝处对齐SettingsRoute.KeyboardModessplit_keyboard_align_halves
46按键行为keyboard(BEHAVIOR)—
47按键时弹出显示字符keyboard(BEHAVIOR)popup_on_key_press
48长按延迟keyboard(BEHAVIOR)keyboard_long_press_delay
49符号划动方向(符号隐藏时)keyboard(BEHAVIOR)swipe_symbol_behavior
50键盘字母保持大写keyboard(BEHAVIOR)keep_keyboard_letters_uppercase
51焦点改变时切换回键盘keyboard(BEHAVIOR)reset_keyboard_on_focus_change
52空格键长按行为keyboard(BEHAVIOR)space_long_press_behavior
53空格键标签样式keyboard(BEHAVIOR)space_key_label_mode
54划动空格键以移动光标keyboard(BEHAVIOR)space_swipe_move_cursor
55显示语言切换键keyboard(BEHAVIOR)show_lang_switch_key
56按键反馈keyboard(FEEDBACK)—
57按键时振动keyboard(FEEDBACK)haptic_on_keypress
58按键松开时振动keyboard(FEEDBACK)haptic_on_keyup
59重复按键时的振动反馈keyboard(FEEDBACK)haptic_on_repeat
60按键振动时长keyboard(FEEDBACK)button_vibration_press_milliseconds
61按键振动幅度keyboard(FEEDBACK)button_vibration_press_amplitude
62按键音keyboard(FEEDBACK)sound_on_keypress
63按键音音量keyboard(FEEDBACK)button_sound_volume
64自定义按键音keyboard(FEEDBACK)custom_key_sound
65工具栏keyboard(TOOLBAR)—
66显示内嵌自动填充建议keyboard(TOOLBAR)inline_suggestions
67输入密码时在工具栏上显示数字行keyboard(TOOLBAR)toolbar_num_row_on_password
68工具栏大小keyboard(TOOLBAR)toolbar_height_percent
69候选栏样式keyboard(CANDIDATE)—
70横向候选词样式keyboard(CANDIDATE)horizontal_candidate_style
71默认高亮第一个候选keyboard(CANDIDATE)highlight_first_candidate
72显示候选项序号角标keyboard(CANDIDATE)show_candidate_index_badge
73候选项序号角标位置keyboard(CANDIDATE)candidate_index_badge_position
74候选项序号角标内容keyboard(CANDIDATE)candidate_index_badge_content
75展开候选词样式keyboard(CANDIDATE)expanded_candidate_style
76长候选词横向滚动keyboard(CANDIDATE)horizontal_candidate_overflow_scroll
77语音输入keyboard(VOICE)—
78显示语音输入按钮keyboard(VOICE)show_voice_input_button
79首选语音输入keyboard(VOICE)preferred_voice_input
80编辑按钮keyboard(TOOLBAR)—
81键盘布局自定义keyboard(EDITORS)—
82字体设定FontsetEditorActivity::class.java—
83弹出字符设定PopupEditorActivity::class.java—
84修改键盘定义keyboard(EDITORS)—
85键盘布局管理keyboard(EDITORS)tool_text_layout_manager
86切换键盘定义配置keyboard(EDITORS)—
87数字键盘布局keyboard(EDITORS)—
88在线编辑器keyboard(EDITORS)—
89候选窗口SettingsRoute.CandidatesWindow—
90快速预设SettingsRoute.CandidatesWindow—
91显示候选窗口SettingsRoute.CandidatesWindowshow_candidates_window
92候选词字体大小SettingsRoute.CandidatesWindowcandidates_window_font_size
93候选窗口圆角半径SettingsRoute.CandidatesWindowcandidates_window_radius
94候选窗口位置SettingsRoute.CandidatesWindowvirtual_keyboard_candidates_position
95候选窗口边距SettingsRoute.CandidatesWindowcandidates_window_padding
96候选词列表方向SettingsRoute.CandidatesWindowcandidates_window_orientation
97候选窗口最小宽度SettingsRoute.CandidatesWindowcandidates_window_min_width
98候选项高亮圆角半径SettingsRoute.CandidatesWindowcandidate_highlight_radius
99物理键盘使用水平候选栏SettingsRoute.CandidatesWindowphysical_keyboard_horizontal_candidate_bar
100剪贴板SettingsRoute.Clipboard—
101记录剪贴板历史SettingsRoute.Clipboardclipboard_enable
102本地剪贴板历史上限SettingsRoute.Clipboardclipboard_limit_local
103显示剪贴板提示SettingsRoute.Clipboardclipboard_suggestion
104隐藏敏感信息(如密码)SettingsRoute.Clipboardclipboard_mask_sensitive
105粘贴后返回SettingsRoute.Clipboardclipboard_return_after_paste
106远端剪贴板历史上限SettingsRoute.Clipboardclipboard_limit_remote
107媒体历史上限SettingsRoute.Clipboardclipboard_limit_media
108剪贴板提示超时SettingsRoute.Clipboardclipboard_item_timeout
109远端剪贴板同步设置SettingsRoute.Clipboard—
110表情和符号SettingsRoute.Symbol—
111隐藏不支持的表情SettingsRoute.Symbolhide_unsupported_emojis
112默认表情肤色SettingsRoute.Symboldefault_emoji_skin_tone
113自定义符号数据SettingsRoute.Symbol—
114自定义表情数据SettingsRoute.Symbol—
115自定义颜文字数据SettingsRoute.Symbol—
116数据与备份SettingsRoute.DataBackup—
117导出用户数据SettingsRoute.DataBackup—
118导入用户数据SettingsRoute.DataBackup—
119浏览用户数据目录SettingsRoute.DataBackup—
120高级SettingsRoute.Advanced—
121忽略系统光标位置SettingsRoute.Advancedignore_system_cursor
122隐藏快捷键配置SettingsRoute.Advancedhide_key_config
123禁用动画SettingsRoute.Advanceddisable_animation
124忽略系统窗口边衬区 (WindowInsets)SettingsRoute.Advancedignore_system_window_insets
125解决 vivo Origin OS 按键检测问题SettingsRoute.Advancedvivo_keypress_workaround
126键盘高度百分比SettingsRoute.Advancedkeyboard_height_percent_base
127开发者SettingsRoute.Developer—
128实时日志SettingsRoute.Developer—
129详细记录日志SettingsRoute.Developerverbose_log
130重启 Fcitx 实例SettingsRoute.Developer—
131关于SettingsRoute.About—
132许可SettingsRoute.License—

附录 C:本轮验证范围 ​

本轮完成源码/资源/官方资料交叉核对与报告人工审阅。git diff --check 通过,npm --prefix docs run build 成功,报告页面被文档站生成;构建输出有 bundle 超过 500kB 的体积提示,没有阻止构建。报告新增文件另行检查空白与占位标记。

没有运行 Android 编译、JVM 测试、安装、真机手势、截图或性能测量。应用实现效果均待审阅后验证。没有 commit、push 或触发外部 workflow。