Skip to content

Commit 032a3f0

Browse files
committed
docs: add mobile settings homepage redesign spec
1 parent a86b09f commit 032a3f0

1 file changed

Lines changed: 362 additions & 0 deletions

File tree

Lines changed: 362 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,362 @@
1+
# 移动端设置首页重做 · 设计文档
2+
3+
> **版本:** 1.0
4+
> **日期:** 2026-05-17
5+
> **状态:** Draft(待评审)
6+
> **作者:** Codex
7+
8+
---
9+
10+
## 0. 文档说明
11+
12+
### 0.1 目标
13+
14+
重做移动端设置首页,修复当前首页混入旧版大圆角卡片语言、版心挤压和层级失衡的问题,让移动端首页重新回到与 PC 端一致的产品语气。
15+
16+
本轮重点不是扩展设置能力,而是把移动端首页从“带说明区的独立大卡片列表”改成“紧凑分组式设置目录页”。
17+
18+
### 0.2 本轮范围
19+
20+
本轮只覆盖移动端设置首页根页面,即用户进入 `/settings` 且尚未进入任何具体分区时的界面。
21+
22+
包含:
23+
24+
- 首页信息重排
25+
- 首页 DOM 结构调整
26+
- 首页视觉语言重做
27+
- 首页回归测试与 UI preview 调整
28+
29+
不包含:
30+
31+
- 任意设置详情页的结构重做
32+
- 设置项业务逻辑变更
33+
- 桌面端设置页结构改动
34+
- 主题 token 体系重构
35+
36+
### 0.3 现状与问题
37+
38+
当前移动端首页主要由以下结构组成:
39+
40+
- `packages/web/src/features/settings/components/settings-page.tsx`
41+
- `renderMobileRoot()``settings-mobile-root-hero + settings-mobile-list + settings-mobile-item` 组成
42+
- `packages/web/src/styles/components.css`
43+
- 移动端首页使用独立大卡片条目、说明型 hero 和较重的圆角/渐变
44+
45+
当前问题集中在四点:
46+
47+
1. 首页视觉语言与 PC 端设置页脱节
48+
2. 每个入口都是独立大卡片,移动端出现旧样式的“泡泡感”
49+
3. 说明型 hero 占用首屏空间,但没有提供真正必要的信息
50+
4. 条目和页边距的组合让页面产生“左窄右挤”的压缩观感
51+
52+
---
53+
54+
## 1. 设计目标与非目标
55+
56+
### 1.1 设计目标
57+
58+
- 去掉移动端首页的旧版大圆角卡片感
59+
- 首页风格向用户确认的 `B` 方向收敛,即更接近原生设置目录页的阅读节奏
60+
- 同时保留当前产品的工具型克制语气,而不是复制系统设置样式
61+
- 通过更紧凑的分组和连续行结构,让移动端与 PC 端设置页共享同一套层级逻辑
62+
- 保持现有导航状态机和设置分区能力不变,降低改动风险
63+
64+
### 1.2 非目标
65+
66+
- 不在本轮引入新的设置分区
67+
- 不在首页增加展开、折叠、搜索、筛选等额外交互
68+
- 不处理详情页的大规模视觉统一
69+
- 不重构 `settings-page.tsx` 的整体导航模型
70+
71+
---
72+
73+
## 2. 方案选择
74+
75+
### 2.1 方案 A:工具面板式扁平入口列表
76+
77+
去掉 hero,把所有入口做成一组扁平行,强调工具页感。
78+
79+
优点:
80+
81+
- 与桌面端语言最接近
82+
- 改造成本较低
83+
84+
缺点:
85+
86+
- 更像压缩版 PC 面板,不够贴近移动端浏览节奏
87+
- 容易做得过于硬朗
88+
89+
### 2.2 方案 B:紧凑分组式目录页
90+
91+
使用移动端原生设置页式的分组目录结构,但控制圆角、边框和密度,使其仍属于当前产品语言。
92+
93+
优点:
94+
95+
- 最符合用户选定方向
96+
- 可读性最好,能直接解决首页挤压和层级混乱
97+
- 便于后续将详情页逐步统一到同一语言
98+
99+
缺点:
100+
101+
- 需要重新组织信息层级
102+
- 需要调整现有测试和 preview 捕获点
103+
104+
### 2.3 方案 C:混合式首页
105+
106+
保留一个高频入口区,再加分组目录列表。
107+
108+
优点:
109+
110+
- 便于突出高频项
111+
112+
缺点:
113+
114+
- 首页会出现双层规则,体系复杂度上升
115+
- 当前只有四个主分区,收益有限
116+
117+
### 2.4 结论
118+
119+
本轮采用 **方案 B:紧凑分组式目录页**
120+
121+
原因:
122+
123+
- 用户已明确选择 `B`
124+
- 当前问题本质是首页被旧卡片样式劫持,而不是缺少视觉强调
125+
- 首页信息量不大,最适合用简洁分组目录承载,而不是继续堆入口卡片
126+
127+
---
128+
129+
## 3. 信息架构
130+
131+
### 3.1 首页层级
132+
133+
移动端设置首页保留三层结构:
134+
135+
1. 系统已有移动端页头
136+
2. 分组标题
137+
3. 分组内连续入口行
138+
139+
移除内容:
140+
141+
- `settings-mobile-root-hero`
142+
- 首页说明型文案区域
143+
- 首页强调型首屏模块
144+
145+
### 3.2 分组与排序
146+
147+
首页分为两个分组:
148+
149+
1. `工作区与运行`
150+
- `通用`
151+
- `Providers`
152+
153+
2. `界面与交互`
154+
- `外观`
155+
- `快捷键`
156+
157+
排序原则:
158+
159+
- 先放功能配置,再放偏个性化和习惯类设置
160+
- 让用户进入设置后的第一屏更偏“操作/运行相关”
161+
162+
### 3.3 文案策略
163+
164+
- 首页条目以主标签为主
165+
- 副文案从“默认展示所有项”调整为“仅在确有必要时显示”
166+
- 本轮默认保留轻量提示,但允许只对信息量更高的项显示副文案
167+
168+
实现上不要求新增文案 key;优先复用现有 `getMobileSectionHintKey()` 返回的提示文案,并根据新布局决定是否对全部分区渲染提示
169+
170+
---
171+
172+
## 4. 视觉与交互设计
173+
174+
### 4.1 页面框架
175+
176+
- 保留现有 `MobilePageHeader`
177+
- 内容区直接进入分组列表
178+
- 内容区左右 gutter 使用统一移动端页面基线,不再额外制造首页专属挤压
179+
180+
结果应表现为:
181+
182+
- 页面外部留白稳定
183+
- 分组之间有呼吸感
184+
- 分组内部连续、紧凑
185+
186+
### 4.2 分组容器
187+
188+
每个分组使用单一连续容器承载,不再把条目渲染成彼此分离的大卡片。
189+
190+
容器规范:
191+
192+
- 轻量底色
193+
- 1 层弱边框
194+
- 中小圆角,建议落在 `10px - 12px`
195+
- 不使用明显浮起阴影
196+
197+
设计意图:
198+
199+
- 保留可识别的“分组块”
200+
- 去掉旧版独立卡片的鼓起感
201+
- 让移动端更接近 PC 的克制面板语言
202+
203+
### 4.3 入口行
204+
205+
每个入口为连续列表中的一行,而不是一张独立卡片。
206+
207+
行项规范:
208+
209+
- 行高建议 `56px - 64px`
210+
- 组内行与行之间使用分隔线
211+
- 行本体不单独描边、不单独做渐变卡面、不单独做阴影
212+
- 点击整行进入详情页
213+
214+
这会替代现有 `.settings-mobile-item` 的大卡片结构。
215+
216+
### 4.4 图标与箭头
217+
218+
- 图标保留,但缩到辅助层级
219+
- 图标底板建议 `32px - 36px`
220+
- 图标底板使用中小圆角,不得回到大软胶囊样式
221+
- 右箭头保留为导航暗示,但视觉权重弱于标题
222+
223+
### 4.5 文本层级
224+
225+
- 标题为主,一行解决
226+
- 副文案弱化为辅助信息
227+
- 如果某项副文案对首页贡献低,可在实现中省略,以保持目录页紧凑度
228+
229+
### 4.6 交互状态
230+
231+
首页只承担目录跳转职责,不新增复杂交互。
232+
233+
状态规范:
234+
235+
- `hover/press` 使用轻量底色或边框变化
236+
- 不使用浮起动画表达按压
237+
- 分组标题不参与交互
238+
- 进入详情页的现有导航行为保持不变
239+
240+
### 4.7 与 PC 对齐的规则
241+
242+
移动端首页需要与 PC 端共享以下语气:
243+
244+
- 不使用说明型 hero
245+
- 不使用旧版大圆角独立卡片
246+
- 不使用重渐变和过强的材质感
247+
- 保留清晰分组、克制边框和明确导航性
248+
249+
这不是把 PC 缩放到手机上,而是让两端在“信息层级和面板语气”上属于同一产品。
250+
251+
---
252+
253+
## 5. 实现设计
254+
255+
### 5.1 涉及文件
256+
257+
- `packages/web/src/features/settings/components/settings-page.tsx`
258+
- `packages/web/src/styles/components.css`
259+
- `packages/web/src/features/settings/components/settings-page.test.tsx`
260+
- `packages/web/src/ui-preview/scenes/page-scenes.tsx`
261+
- `packages/web/src/ui-preview/scene-metadata.ts`
262+
263+
### 5.2 JSX 调整策略
264+
265+
保留当前状态机和跳转逻辑:
266+
267+
- `navigationState`
268+
- `shouldShowMobileRoot`
269+
- `setNavigationState({ kind: "detail", section: id })`
270+
271+
只重写移动端首页根结构:
272+
273+
- 移除 `settings-mobile-root-hero`
274+
- 将单一列表改为带分组的结构
275+
- 继续复用 `availableSections` / section metadata / icon semantic
276+
277+
必要时新增轻量的首页分组映射,但不改变 `SettingsSection` 模型本身。
278+
279+
### 5.3 CSS 调整策略
280+
281+
移除或废弃旧移动端首页视觉规则:
282+
283+
- `.settings-mobile-root-hero`
284+
- `.settings-mobile-root-hero__eyebrow`
285+
- `.settings-mobile-root-hero__body`
286+
- 现有以独立大卡片为核心的 `.settings-mobile-item` 规则
287+
288+
新增规则目标:
289+
290+
- 首页分组容器
291+
- 分组标题
292+
- 连续行列表
293+
- 行项图标、文本和箭头布局
294+
- 更克制的移动端圆角和边框密度
295+
296+
### 5.4 兼容性要求
297+
298+
- 不破坏现有移动端详情页展示
299+
- 不影响桌面端设置页
300+
- 不改变 section id、翻译 key 和跳转逻辑
301+
- 不依赖新的设计 token 才能完成本轮
302+
303+
---
304+
305+
## 6. 测试与回归保护
306+
307+
### 6.1 单元/组件测试
308+
309+
更新或补充 `settings-page.test.tsx`,覆盖以下行为:
310+
311+
- 移动端首页仍渲染全部设置入口
312+
- 首页入口顺序与新分组设计一致
313+
- 点击入口后仍能进入对应详情页
314+
- 旧 hero 结构不再存在
315+
- 新分组结构存在
316+
317+
### 6.2 UI Preview
318+
319+
保留 `settings-mobile-root` scene,用于移动端首页截图回归。
320+
321+
需要同步检查:
322+
323+
- `page-scenes.tsx` 中 scene 是否仍能稳定渲染首页态
324+
- `scene-metadata.ts` 中 capture selector 是否仍指向稳定的首页主体
325+
326+
如果旧 selector 依赖 `.settings-mobile-list`,则应改为新首页根容器或更稳定的分组列表容器。
327+
328+
### 6.3 手工验证重点
329+
330+
- 中文环境下首页文案是否拥挤
331+
- 移动端首页左右 gutter 是否恢复正常
332+
- 分组外层和组内行项的圆角层级是否明显小于当前大卡片风格
333+
- 从首页进入详情页、再返回首页时状态是否正常
334+
335+
---
336+
337+
## 7. 风险与约束
338+
339+
### 7.1 主要风险
340+
341+
- DOM 结构变更可能导致现有测试选择器和 preview 捕获点失效
342+
- 如果副文案保留过多,首页仍可能显得松散
343+
- 如果分组容器和行项圆角没有拉开层级,仍会残留卡片感
344+
345+
### 7.2 风险控制
346+
347+
- 优先保持状态逻辑不变,只改首页结构与样式
348+
- 让“组容器圆角”和“行项自身无卡片化边界”形成明确区分
349+
- 用 scene capture 和组件测试双重保护首页回归
350+
351+
---
352+
353+
## 8. 验收标准
354+
355+
完成后应满足以下标准:
356+
357+
- 移动端设置首页不再出现说明型 hero
358+
- 首页入口不再是独立大圆角大卡片
359+
- 首页视觉密度明显收紧,消除“左窄右挤”的观感
360+
- 首页风格更接近原生设置目录页,但仍与 PC 端工具面板语言一致
361+
- 现有进入详情页和返回逻辑保持正常
362+
- 自动化测试和 UI preview 回归链路完成更新

0 commit comments

Comments
 (0)