Skip to content

Issue 127 Validation

clean edited this page Sep 30, 2026 · 2 revisions

Issue #127:设置共用工作区外壳 — 实现验收

实现与验收覆盖

范围 实现和实际结果
共用外壳 保留同一个 .app-shell、48px 顶栏和 32px 状态栏;进入设置只替换分类导航、标题和正文。桌面断言进入前后的左栏/顶栏/状态栏尺寸、位置、背景和分隔线一致。
左栏、顶栏 共用184–320px宽度、收起状态和快捷键。返回按钮位于标题旁,隐藏左栏时转到顶栏;设置没有仓库标签、工具栏或右栏开关。原品牌和静态页脚已移除。
抽屉 899/741/739/320px通过分类切换后关闭并聚焦顶栏开关;800px手动验证 Shift+Tab 焦点循环、Esc 关闭和焦点恢复。
工作区保留 同一工作区 DOM、提交草稿、查找条件、仓库标签和面板偏好保留;返回恢复原焦点。非零左栏滚动位置实测180px保留,并增加桌面非零断言。恢复焦点使用 preventScroll。
路由与状态栏 仓库详情、连接页、仓库列表进入后可返回;未知设置分类回退服务商。状态栏跳转可用;代理未保存时继续编辑不改变 activeId,放弃后才切换目标仓库。Cmd/Ctrl+, 和菜单再次打开设置保留当前分类。
反馈与后台任务 设置和保留的工作区使用独立 FeedbackScope。桌面回归覆盖通知、更新提示、下载期间离开设置、刷新后继续下载和重启安装入口。使用模拟更新源,没有下载或安装正式版本。
内容规范 普通表单最大760px、宽页面1180px,左对齐并使用工作区正文内边距;单行输入34px,多行提示词保留4行(实测98px)。代理保存栏与状态栏贴合。
服务商响应式 按正文容器宽度≥900 / 600–899 / <600切换210px列表、178px列表和逐级进入。桌面断言1440/1100/560px下同一输入节点及未保存值保留;返回列表恢复选中项焦点。
11个Select 全部迁移为antd,明确关联label/id、可访问名称、空值/占位、禁用和分组;逐项结果见下表。原窄屏分类Select由抽屉取代。
主题和动态效果 深浅两套截图;减少动态效果开关使 reducedMotion=true、面板按钮 transitionDuration=0s;没有新增动效。键盘和可访问树检查通过,未使用独立读屏软件做端到端朗读。
现有设置能力 桌面回归覆盖AI配置/密钥/测试模型、令牌、布局/外观/自定义代码主题/字体的进程重启持久化,以及更新模拟流程;代理离开确认和保存栏通过。后端配置结构与凭据生命周期未改。

下拉交互检查

所有11个控件均检查字段标题点击聚焦正确输入,并使用鼠标或方向键/Enter选择。配置依赖仍按原规则处理。

控件 结果
默认服务商 选择成功;清空显示“选择服务商”,同时清空默认模型。
默认模型 选择成功;空值显示“选择模型”。
输出语言 ArrowDown/Enter切换为English。
提交格式 键盘切换为自然语言。
服务商接口协议 自定义服务商键盘选择Anthropic。
测试模型 空字符串选项“仅测试模型列表接口”可实际选中;编辑未保存后禁用。
代理类型 键盘选择HTTPS。
测试SSH服务器 选择目标服务器,保留占位与可清空行为。
测试远端Git仓库 选择服务器关联的仓库,保留占位与可清空行为。
代码主题 “内置主题”分组正常,深色模式的Latte被禁用,键盘切换Macchiato;aria-describedby保留。桌面测试还覆盖已安装主题的选择与持久化。
示例语言 键盘切换Python并更新预览。

命令与结果

命令 / 场景 结果
基线 npm test -w web、npm run build -w web 194项测试通过,构建通过。首次旧shared产物导致构建失败,重新构建shared后通过,无源代码补丁。
最终 npm test -w web 196项通过,0失败。
最终 npm run build -w web 通过;存在原有大chunk提示。
npm run desktop:build 通过;包含后端、shared、Web及Electron原生依赖构建。
npm run desktop:test 45项单元测试、Electron write/restore两阶段冒烟全部通过,包含新增设置外壳测试。
补充本地/SSH代码阅读验收 本地通过;SSH失败:ssh2 SFTP通道关闭抛出 No response from server。使用改造前Web产物和原始测试脚本复跑,得到相同异常;确认本环境基线同样失败,不计为本次通过项。
PR CI(同一提交) 测试工作流和commitlint全部通过:Web/desktop/server/ssh-client单元测试,macOS/Windows/Linux本地Git与网络代理检查。这些服务测试不代表Windows/Linux原生窗口验收。
git diff --check 通过。改动的TS/TSX格式检查通过;workspace-layout.css原基线存在格式差异,本次未批量格式化。

过程中的失败保留:截图检查发现多行输入被压成34px、代理保存栏底部留白、窄屏开关与文字间距不足,修复后重新截图并运行桌面回归;新增非零滚动测试首次受窗口680px最小高度限制,测试临时解除限制并在finally恢复,重跑通过。额外代码阅读测试首次沿用原生Select定位,更新为antd后本地场景通过,SSH场景曾在60/120秒整体时限内超时;进一步采样定位为Electron未捕获异常弹窗阻塞,测试启动器现将异常写入日志并退出;使用原Web产物/原始脚本复验也出现相同SFTP异常,见上表。

截图与尺寸

224张前后对照 = 2版本 × 2主题 × 7宽度 ×(工作区 + 7分类)。1440宽使用900高,其余使用800高;另有14张分栏、抽屉、折叠、最窄侧栏及Select截图。所有after截图的页面/设置正文均无横向溢出,顶栏48px、状态栏32px。普通分类正文左缘相同(1440/1280宽x=266;901宽x=258;899宽x=22;741/739宽x=14;320宽x=10)。服务商内容另含内部列表。

改造前:1440深色网络代理 改造后:1440深色网络代理
Alune改造前网络代理 Alune改造后网络代理
改造后浅色全分类 改造后320px深色全分类
Alune浅色设置总览 Alune320px深色设置总览

额外场景

场景 浅色 深色
1440折叠侧栏和顶栏返回 查看 查看
184px最窄侧栏 查看 查看
800px设置分类抽屉 查看 查看
1100px服务商双栏 查看 查看
560px服务商列表 查看 查看
560px服务商详情 查看 查看
代码主题分组及禁用选项 查看 查看

完整前后对照索引

每格分别链接改造前、改造后的原图。

浅色

宽度 工作区 服务商 提交生成 访问令牌 布局 外观 网络代理 版本更新
1440 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
1280 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
901 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
899 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
741 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
739 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
320 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后

深色

宽度 工作区 服务商 提交生成 访问令牌 布局 外观 网络代理 版本更新
1440 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
1280 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
901 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
899 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
741 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
739 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后
320 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后 前 / 后

复验与边界

Web截图流程:npm run build -w web 后用 ALUNE_SETTINGS_FIXTURE=1 node apps/web/tests/workspace-fixture.mjs 启动内存数据,再进入仓库并用Cmd/Ctrl+,打开设置,以保留工作区上下文。通过外观单选按钮切换主题;在各视口选择七个分类。桌面完整回归:npm run desktop:build && npm run desktop:test。

未验证Windows/Linux原生窗口、真实读屏软件、正式更新安装和真实第三方AI/代理服务。截图fixture仅用于界面,不作为远程服务连通性证明;桌面使用隔离配置与本机SSH,不读写用户实际仓库或凭据。没有数据迁移;回退该代码提交即可恢复旧外壳,Wiki记录需独立维护。

Clone this wiki locally