Skip to content

新建连接对话框改为左侧协议栏 + 右侧分页表单 - #540

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

主要改动

按设计稿 VelaShell-zh.pen「新建连接 v2」重构新建 / 编辑连接对话框(ConnectionProfileView)。原先是 508 宽的一列到底表单,页脚一个「高级选项」开关管着其余一切:SSH 展开后有三十来行,窗口被钳在 768 高里只能一路滚;横排的协议页签在插件协议一多时挤出窗口;「连接」按钮是实心强调色,与 DESIGN.md §5.1 不符。

  • 布局:卡片 760×664 定高(XAML 按 Windows 口径 792×696),标题栏 / 主体 / 反馈条 / 页脚四行;主体左边是协议栏,右边是分页页签 + 表单,只有表单区滚动。矮屏上照旧按 min(768, 工作区 − 48) 钳高。
  • 协议栏:「内置」SSH / SFTP / FTP(小字标终端 / 文件)+「插件」一组(数量 + 清单声明的协议,不装载程序集)。底部「获取更多协议…」调主窗口注入的 ConnectionProfileViewModel.OpenPluginManager 打开插件管理器(非模态,在那边启用的协议经注册表 Changed 当场补进来);没注入时不出现。
  • 分页:新增 ConnectionProfileSection(常规 / 终端 / SSH 选项 / 转发 / 高级)。终端与转发只对 SSH,SSH 选项对 SSH 与 SFTP,高级对 FTP(默认打开路径)与声明了 IsAdvanced 字段的插件协议。换协议后当前页不存在就落回常规。选中下划线沿用原先协议页签的滑动实现。
  • 删除「高级选项」开关(IsAdvancedVisible / ToggleAdvancedCommand):插件字段按「属于当前页且显示条件成立」下发可见性,常规与高级两页共用一个 PluginFieldRow 模板;AdvancedBadge 改为高级页签上的字段数。原先「编辑时有非默认值就自动展开」改为页签旁的圆点(Is*SectionModified)。
  • 常规页分节:连接目标(Host/Port、跳板 —— 说明收进 ⓘ)、身份验证(认证方式由下拉改为分段按钮,新增 SelectAuthMethodCommand;FTP 在那一格放加密方式)、插件常用字段、整理(名称 / 分组 / 标签三栏)。标签颜色加色块预览;允许老算法、agent 转发标题旁加警示标签;说明文字由 TextMuted 换成对比度够的 TextTertiary。
  • 页脚:左边新增连接目标预览 EndpointPreview(user@host:port,SFTP / FTP 带 scheme,IPv6 加方括号,匿名 FTP 不带用户名);测试 / 保存改 VelaOutlineButtonTheme,连接改 VelaAccentPillButtonTheme,同高 28。
  • 样式:协议项、分页页签、认证分段各一个窗口内的 ControlTheme,焦点只在 :focus-visible 时画;原先给协议页签手工挂焦点装饰器的代码后置删掉。
  • 文案:新增 16 个键,五份 resx 齐;Profile_AdvancedOptions、Profile_SshFeatures 改短作页签名,四个认证方式键改短作分段按钮(只有这里用)。

与设计稿的两处出入:FTP 加密方式沿用原位置(用户名旁);插件字段仍一行一个、说明在下方(字段由插件声明,宿主判断不了哪两项适合并排)。

测试

  • 新增 ConnectionProfileSectionsTests(18 例):各协议有哪几页、换协议落回常规 / 页还在就不动、切到插件协议离开 SSH 专属页、选不进不存在的页、圆点在已存配置 / 新建 / 编辑时的亮灭与通知、预览的六种写法与通知、分段按钮、插件管理器入口。
  • ConnectionProfileViewModelTests 里依赖折叠开关的 5 条改写成分页口径,新增「最后一个高级字段消失时落回常规」。
  • UI:新增 SectionTabIndicator_SlidesToSelectedSection(取代协议页签那条)与 OnlyTheSelectedSectionIsShown;Todo2PixelRegressionTests 改为按协议栏 SFTP 项的实际边界采样(原先写死的坐标落到了标题栏上)。
  • 变异:去掉 ConnectionType 变化时的落回 → 切插件协议那条变红;下划线把「转发」错映射到「常规」→ 指示条用例变红。
  • headless 截了七帧(SSH 四页、证书认证测试失败、明文 FTP、亮色)与设计稿对照。

编译 0 警告。dotnet test VelaShell.slnx:VelaShell.Tests 1646 通过 / 8 跳过,VelaShell.Core.Tests 616 通过 / 10 跳过 / 1 失败,其余全过。唯一的失败 X11_RefusedByServer_KeepsAgentForwardingAndWarnsOnce 与本 PR 无关(#539 里记过:本机 velashell-test-shells 镜像过旧,重建即可)。

⚠️ 「获取更多协议…」在模态对话框开着时打开插件管理器,只在 Windows 上按逻辑确认过,macOS / Linux 未实机验证。

文档

涉及文档修改。

joesdu added 2 commits October 1, 2026 15:14
- 卡片 760×664 定高,只有表单区滚动;左侧协议栏(内置 + 插件两组,底部「获取更多协议…」打开插件管理器)
- 分页:常规 / 终端 / SSH 选项 / 转发 / 高级,按协议出现;换协议后当前页不存在就落回常规
- 删除「高级选项」折叠开关:插件 IsAdvanced 字段放到「高级」页,页签上报字段数;
  原先编辑时自动展开改为页签旁的「有非默认值」圆点
- 认证方式改为分段按钮;标签颜色加色块预览;老算法与 agent 转发加警示标签
- 页脚新增连接目标预览;测试 / 保存改描边按钮,连接改强调药丸(DESIGN.md §5.1)
- 新增 16 个文案键,五份 resx 齐;DESIGN.md §6.1 改为协议栏与分页页签的动效口径
joesdu added a commit to VelaShellLabs/velashell-docs that referenced this pull request Oct 1, 2026
…sign

docs(host): 新建连接对话框改为左侧协议栏 + 右侧分页表单(joesdu/VelaShell#540)
@joesdu
joesdu merged commit 65f3599 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