4.3 KiB
服务器只读详情与编辑 sheet
日期:2026-10-06。交互决策与实现范围已确认。本文件记录本次任务规格,不代表当前代码现状。
已确认交互
- 详情显示已保存资料,采用分区标题与标签/值排版,不使用禁用表单控件。顶部显示名称、来源与活动目标标记;连接信息显示地址、端口和加密方式,文本可选择复制;插件区显示插件名称、可用性及参数;已知阻塞问题独立呈现。详情移除密码、保存与重置操作。
- 插件参数沿用只读 table 的“参数名/值/类型”列,保留顺序、重复参数、开关与空值的区别。保留“参数列表/原始文本”切换,长值可从原始文本完整查看;不可解析时显示原始文本。未知或未安装插件仍显示已保存参数。
- 详情不读取密码。参数在进入详情及当前服务器保存或对应订阅刷新成功后加载;读取失败仅影响参数区,提供“重新加载”,其他信息继续展示。切换服务器时不得显示上一服务器的参数。
- 工具栏增加
pencil图标编辑按钮,仅选中手动服务器时可用;手动服务器右键菜单增加“编辑…”,作用于被点击的服务器。订阅服务器工具栏编辑禁用,菜单省略编辑项。已知有阻塞问题的手动服务器仍可编辑。 - 编辑 sheet 共用新建表单的字段布局、草稿映射与校验。底部为“取消/重置/保存”;有修改且成功装载可编辑服务器时才允许保存;重置恢复已保存值。保留已有凭据加载失败提示、重载和保存门禁。
- 新建与编辑共用的表单滚动内容留出 8pt padding,避免焦点框被裁切;sheet 最小宽度为 580pt、建议宽度为 640pt,为参数列表留出更多空间。插件可用性分支与警告文案共用一份映射,未知引用的操作说明由各视图保留。
- 保存成功关闭 sheet 并更新详情;失败保留草稿。提交期间禁止重复提交、重置和关闭。
- 新建与编辑统一处理未保存修改:取消或 Escape 在有修改时显示“放弃更改?”,按钮为“继续编辑/放弃更改”;无修改直接关闭。其他可关闭 sheet 的路径采用相同放弃规则。
- 编辑目标在打开时固定。每次重新打开读取最新保存值,关闭后不保留草稿;目录更新不覆盖当前编辑内容。目标被删除时禁止保存并提示。
Module 与 seam
只读详情与编辑表单具有独立生命周期。详情从已提交配置获取展示事实,通过单独的参数读取 interface 获取已保存插件参数;参数读取失败不阻断普通事实展示。不得用读取完整 ServerEditForm 的方式满足详情需求。
新建与编辑共用 ServerFormFields 和字段栅格;共用 sheet 的布局、提交门禁与放弃修改行为,创建/更新命令保持各自意图。sheet 在 ServersView 中持有固定的编辑身份,工具栏和右键菜单调用同一个编辑入口。避免为两种操作各复制一套校验和关闭规则,也避免建立仅转发既有命令的 adapter。
只读参数视图复用解析与呈现能力,不复用编辑动作;保留旧数据的无损表示。参数明文仅在当前详情会话中持有,不加入非秘密投影或持久快照。
验证范围
验证详情不读取密码、参数独立加载及失败隔离、未知插件参数可见、切换服务器与订阅刷新行为。验证编辑目标固定、手动/订阅资格、草稿保留与重载、创建/保存成功关闭、失败保留以及放弃修改行为。按仓库要求执行格式、lint、相关 hostless 测试和构建;原生布局、table、sheet 与 Escape 交互需单独验证,不能以 hostless 测试代替。
本次验证记录
2026-10-06:格式化、lint 与 diff 检查完成;lint 有长度和复杂度等非阻断警告。全量 arm64 hostless 测试通过 958 个测试、1,038 次执行,零失败、零跳过;两组离线规则转换检查共 21 个测试通过。ad-hoc 应用构建通过。
原生详情布局、table、sheet、Escape 与其他关闭路径尚未人工验证;上述测试与构建结果不等于原生 UI 或真实系统代理行为验证。本次不涉及 sslocal 运行契约调整,未运行 smoke。