fix(settings): 设置页尾部不再渲染不属于本页的空态卡

用户 2026-11-08 在 M174 的助手页与 M175 的 Java 页截图里看到同一张卡(四格图标 +
「没有逐实例覆盖」+ 说明被窗口下沿截断):两张图 1180×1100、卡片位置完全一致、
独立居中在内容下方。

根因是 `pages/settings/mod.rs` 的 `form()` 在分组循环之后**无条件** push 了
`pages/settings/frame.rs` 的 `overrides_empty()`(M84 骨架期的占位,M99 纯搬移时原样
留下,固定 320dp 高):于是六个分组下面都长出同一张卡,与实例选中态无关。

修法:删掉该空态位及其唯一的三个 i18n key(`SettingsOverrides*`,金表同步删三行)。
设置页永远有内容(总有一组被选中),12b §15 的空态件是给实例/下载/日志页的;
「逐实例覆盖」全仓既无数据源也无消息落点,所以不挪给任何一组,直接不渲染。

守门(`settings/frame.rs` 的 `no_stray_empty_state` 三条,变异实测会红):
尾部不许再出现额外 push、`form()` 不认任何空态件名、设置页不读实例选择。
This commit is contained in:
AskaEth committed 2026-11-08 19:13:37 +08:00
1 parent 30b61e2684
commit 7fdebba961
4 files changed
+106 -34

No files matched your search

-4
View File
@@ -47,10 +47,6 @@ macro_rules! general_entries {
SettingsGroupAppearance => ("Appearance", "外观"),
SettingsGroupJava => ("Java", "Java 运行时"),
SettingsGroupDownloads => ("Downloads", "下载"),
// 逐实例覆盖的空态(M106)
SettingsOverridesEmptyTitle => ("No per-instance overrides", "没有逐实例覆盖"),
SettingsOverridesEmptyBody => ("Overrides let one instance keep its own Java runtime, memory or JVM flags while the rest of the launcher keeps the defaults above.", "逐实例覆盖让某个实例保留自己的 Java 运行时、内存或 JVM 参数,其余实例沿用上面的默认值。"),
SettingsOverridesAdd => ("Add override", "新增覆盖"),
// `Route::Agent` 的回退卡正文(M106:`app/view.rs` 里最后一条硬编码英文)
AgentFallbackBody => ("The assistant page is not built yet. Chat lives in the docked panel once the AI mission lands; this screen is the M68 skeleton fallback.", "助手页还没做。AI 接线落地后对话会出现在右侧停靠面板;这一屏是 M68 的骨架回退。"),
} }