Repository navigation
Issue 127 Validation
- Issue:https://github.com/ShaoClean/Alune/issues/127
- 设计:Issue-127(2026-09-30 用户确认;包含输入框统一为 34px)
- PR:https://github.com/ShaoClean/Alune/pull/134
- 日期:2026-09-30
- 实现代码:
7c0290b;截图前基线:9c55f65 - 环境:macOS 15.5 arm64,Node.js 25.5.0、npm 11.8.0、Electron 44.2.0;Ego 浏览器(Chromium)。
- 数据:Web 使用内存 fixture;桌面使用隔离配置目录、临时本地仓库和本机 SSH fixture。截图只含演示主机、路径与模型,不含真实凭据。
| 范围 | 实现和实际结果 |
|---|---|
| 共用外壳 | 保留同一个 .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深色网络代理 |
|---|---|
![]() |
![]() |
| 改造后浅色全分类 | 改造后320px深色全分类 |
|---|---|
![]() |
![]() |
| 场景 | 浅色 | 深色 |
|---|---|---|
| 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记录需独立维护。
设计文档首页 · Alune 品牌说明 · 维护约定 · 代码仓库



