Skip to content

新增 ColorPicker,重构 UI 样式与测试 - #543

Merged
joesdu merged 4 commits into
mainfrom
dev
Oct 1, 2026
Merged

joesdu merged 4 commits into
mainfrom
dev

Conversation

@joesdu

@joesdu joesdu commented Oct 1, 2026

Copy link
Copy Markdown
Owner

这个 PR 做了什么

为什么这么改

Closes #

改动类型

  • Bug 修复
  • 新功能
  • 重构(行为不变)
  • 性能优化
  • 文档
  • 构建 / 流水线
  • 其他:

怎么验证的

  • dotnet build VelaShell.slnx —— 零警告零错误
  • dotnet test VelaShell.slnx —— 全绿
  • 新增/修改的行为有对应测试(或说明为什么不需要)
  • 界面改动已在应用里实际跑过

实测环境:

测试结果:

<!-- 贴 dotnet test 的结果摘要 -->

同步检查

  • 新增了界面文案 → 五份 resx 都已补齐(Strings / zh-Hans / zh-Hant / ja / ko),没有硬编码字符串
  • 新增或改动了快捷键 → 已登记进 ShortcutCatalog,velashell-docs zh/host/快捷键参考.md 已同步
  • 改了文档 → 文档在 velashell-docs,zh/ 与 en/ 两侧都改了(另开 PR)
  • 改了 README → README.md 与 README.en.md 两侧都改了
  • 改了公开 API → XML 文档注释已补(缺注释会出编译警告)
  • 新增了跨层引用 → 符合 velashell-docs zh/host/architecture.md 的依赖方向,没有反向依赖
  • 新增了 NuGet 依赖 → 已在 Issue 里讨论过必要性,版本写进 Directory.Packages.props

界面改动的前后对比

改动前 改动后

补充说明


  • 我已阅读 CONTRIBUTING.md,并同意本贡献以 AGPL-3.0 授权、且授予版权方在商业许可下再许可的权利

joesdu added 4 commits October 1, 2026 21:14
对若干文件做了样式/初始化语法重构以提高可读性与现代 C# 一致性:
- RemoteIdentityResolver.cs:使用更简洁的字典构造/初始化语法(类型推断/更紧凑的初始化),未改动解析逻辑。
- ColorPickerField.axaml.cs:将若干局部显式类型(Hsv/Color)改为 var。
- ConnectionAccent.cs:用 var 简化 Color[] 的声明与初始化书写。
- MainWindow.axaml.cs:移除 ISshKeyService 的完全限定名,且把 OpenPluginManager 的赋值并入对象初始化器,同时做了少量格式与注释调整。

这些变更仅为代码风格/可读性改进,不改变业务逻辑或运行行为。
在 RecordingPlayerTitleBarUiTests.cs 的 RecordingPlayerTitleBarUiTests 中,将原先使用
Assert.IsTrue(actions.GetVisualAncestors().OfType<Border>().Any(b => b.Classes.Contains("window-titlebar")));
的断言替换为
Assert.Contains(b => b.Classes.Contains("window-titlebar"), actions.GetVisualAncestors().OfType<Border>());
目的在于直接用谓词在集合上断言存在满足条件的元素,语义更明确并有助于提升失败信息的可读性。其余测试代码未变动。
引入 ColorPickerField 替换外观页和连接对话框的颜色输入,新增相关 resx 文案键及文档/README,保留 ANSI16 色为只读色块。新增 ColorPicker 的单元与 UI 测试(ColorPickerPartsTests、ColorPickerFieldUiTests),并在深/浅色主题下用 headless 截图验证交互、回显、提交语义及键盘/拖拽行为。

调整 AuditLogView 样式:加入 filter-bar 类、统一控件高度(28px)与 VelaOutlineButtonTheme,新增 UI 测试验证工具栏高度一致性并截图比对。

大规模现代化测试断言与 API:把旧式 CollectionAssert/StringAssert 等替换为 Assert.*(AreSequenceEqual/Contains/HasCount/ContainsSingle 等),使用更简洁的 C# 语法与显式化顺序/无序检查,提升可读性与稳定性。

整理命名空间与引用:简化部分命名空间前缀并修正 XML 注释引用路径,统一类型引用风格。

若干实现与 API 修正:AesCtrHmacCipherSuite.Xor 使用 Vector 类型与硬件加速判断;改用 BinaryPrimitives.WriteUInt16BigEndian;ProcessDuplexStream 调用 PeerText.Sanitize;DonatePage.SetCurrentValue 使用 ContentProperty 常量;XWindow.VisibilityCache 签名调整以引用 Region;TestSshServer 与测试帮助类改用更短的 Ssh.* 类型路径;若干注释/remarks 与拼写修正。

其它:多处样式/拼写/注释、小幅重命名与可读性改进,补充测试覆盖与 UI 验证。总体目标为提升 UI 一致性、可维护性与行为确定性。
断言改成 MSTest 新式写法后:
- Assert.IsLessThan / IsGreaterThan / IsGreaterThanOrEqualTo 的上下界是 int 字面量、被比较的值是 uint,
  泛型参数推断不出来(CS0411)。字面量改成 uint(100u / 8u / 248u),语义不变。
- Assert.AreSequenceEqual 的第二个实参已把 T 定成 string,期望值上的 (string[]) 强转成了多余(IDE0004),去掉。
@joesdu
joesdu merged commit a96dba9 into main Oct 1, 2026
4 of 5 checks passed
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.

1 participant