Skip to content

feat(ui): 实现 UI 字体可配置化及全局布局自适应#151

Merged
zerx-lab merged 4 commits into
zerx-lab:mainfrom
logiche:feature/configurable-ui-font
May 24, 2026
Merged

feat(ui): 实现 UI 字体可配置化及全局布局自适应#151
zerx-lab merged 4 commits into
zerx-lab:mainfrom
logiche:feature/configurable-ui-font

Conversation

@logiche
Copy link
Copy Markdown

@logiche logiche commented May 23, 2026

Description 实现 UI 字体的字体族和字号可配置化,并确保所有 UI 组件在字号变化时自动适配布局。 数据模型: - Appearance 新增 ui_font_size 字段和 AppearanceEvent::UiFontSizeChanged 事件 - 新增 10 个语义化字号方法(ui_font_overline/ui_font_footnote/ui_font_body/ui_font_subheading/ui_font_heading _3/ui_font_heading_2/ui_font_heading_1/ui_font_display/ui_font_hero),全部基于 ui_font_size 按比例缩放 - 新增 dropdown_top_bar_height() 统一高度计算方法 设置 UI: - 外观设置 Text 区域新增 UI 字体族下拉框和字号输入框 - 字号范围 8.0~20.0,默认 12.0,直接输入 组件级自适应(根因修复,非逐个实例): - Dropdown/FilterableDropdowntop_bar_height 改为 Option<f32>,render 时自动从 Appearance 计算动态高度 — 覆盖全部 67 个实例 - SubmittableTextInput 的按钮尺寸和 padding 改为基于字号的动态值 硬编码字号迁移: - 替换 settings_page.rsai_page.rsmcp_servers/style.rsexecution_profile_view.rs 等文件中的全部硬编码字号常量为 appearance 语义方法 - 设置页面输入框的 padding/width 全部动态化 - working_directory.rs/startup_shell.rs 的 TextInput 固定高度改为动态

Description 实现 UI 字体的字体族和字号可配置化,并确保所有 UI 组件在字号变化时自动适配布局。 数据模型: - Appearance 新增 ui_font_size 字段和 AppearanceEvent::UiFontSizeChanged 事件 - 新增 10 个语义化字号方法(ui_font_overline/ui_font_footnote/ui_font_body/ui_font_subheading/ui_font_heading_3/ui_font_heading_2/ui_font_heading_1/ui_font_display/ui_font_hero),全部基于 ui_font_size 按比例缩放 - 新增 dropdown_top_bar_height() 统一高度计算方法 设置 UI: - 外观设置 Text 区域新增 UI 字体族下拉框和字号输入框 - 字号范围 8.0~20.0,默认 12.0,直接输入 组件级自适应(根因修复,非逐个实例): - Dropdown/FilterableDropdowntop_bar_height 改为 Option<f32>,render 时自动从 Appearance 计算动态高度 — 覆盖全部 67 个实例 - SubmittableTextInput 的按钮尺寸和 padding 改为基于字号的动态值 硬编码字号迁移: - 替换 settings_page.rsai_page.rsmcp_servers/style.rsexecution_profile_view.rs 等文件中的全部硬编码字号常量为 appearance 语义方法 - 设置页面输入框的 padding/width 全部动态化 - working_directory.rs/startup_shell.rs 的 TextInput 固定高度改为动态 Bug 修复: - 修复 UI 字号输入框数字消失的问题:宽度动态化 + 避免不必要的 set_buffer_text 清空 ## Testing - crates/warp_core/src/ui/appearance_tests.rs:11 个单元测试覆盖语义化字号方法、比例缩放、层级排序、dropdown 高度计算 - cargo check -p warp 编译通过,零错误零警告

Agent Mode - [x] Zap Agent Mode - This PR was created via Zap's AI Agent Mode ## Changelog Entries for Stable CHANGELOG-NEW-FEATURE: UI 字体可配置化 — 支持自定义 UI 字体族和字号(8~20),所有界面元素自动适配 CHANGELOG-IMPROVEMENT: 所有下拉框、输入框和文本元素自动跟随 UI 字号缩放

logiche added 3 commits May 22, 2026 16:37
- 新增 UI 字体名称和字号配置项(外观设置 Text 区域)
- 字号范围 8.0~20.0,默认 12.0,支持直接输入
- Appearance 新增 10 个语义化字号方法(overline/footnote/body/subheading/heading 等)
- Dropdown/FilterableDropdown 组件高度自动跟随字号缩放
- SubmittableTextInput 按钮和 padding 动态适配字号
- 替换全部硬编码字号常量为 appearance 语义方法
- 设置页面输入框 padding/width 全部动态化
- 新增 dropdown_top_bar_height() 统一高度计算
- 修复字号输入框数字消失的问题(宽度动态化 + 避免不必要 buffer 重写)
@zerx-lab
Copy link
Copy Markdown
Owner

@claude review this pr

- UI 字号输入框在 Enter/Blur 时立即提交,与其他字号 editor 行为一致
  (Finding 1: appearance_page.rs handle_ui_font_size_editor_event)
- UI_FONT_SIZE_MIN/MAX/DEFAULT_UI_FONT_SIZE 收敛到 warp_core::ui::appearance,
  app/src/settings/font.rs 改为 pub use 重导出
  (Finding 2 + 3: 去除硬编码 8.0/20.0 与常量重复定义)
- 给 ui_font_overline 添加文档注释,说明与 overline_font_size 等价关系
  (Finding 4)
@zerx-lab zerx-lab merged commit 40aca0b into zerx-lab:main May 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants