Repository navigation
💄 安装页桌面端主操作移入身份卡,滚出后吸底;本会话允许收进下拉 - #1817
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Checklist / 检查清单
N/A — 第一项:来自用户反馈,没有对应 issue。
背景
有用户反馈,桌面端安装页的安装按钮在右下角,不够明显,容易被忽略。原因是正文限宽 864px 居中,而吸底操作栏是整屏宽,按钮又被
md:ml-auto推到窗口最右(InstallLayout.tsx、InstallActions.tsx)。按布局推算,1600 宽时主按钮比内容列右缘多出约 340px,1920 宽时约 500px。另外,外部接入更新请求里的「本会话允许」按钮是灰底蓝字,和旁边的描边、实心按钮混排,观感不协调,放进信息卡后还会挤压标题。方案对比过四种 mockup:操作栏对齐内容列、放进信息卡右上、信息卡底部操作条、悬浮操作坞。维护者选定了「信息卡右上」,并让「本会话允许」收进下拉菜单。
本次改动
install-primary。wrap-anywhere,脚本页和 Skill 页都改了。按钮挪到标题旁边后,没有空格的超长英文标题会直接盖住安装按钮;作者名和描述里的超长链接原来就会溢出、出现横向滚动条,属于同一原因,一起修了。实现考虑
InstallLayout改为按位置渲染按钮组(actions(placement),位置分 card / footer / sticky),信息卡通过identity(slots)接收按钮组、失败提示和说明文字三个插槽。失败提示改由InstallLayout根据failure自己渲染,这样才能保证只有一份。IntersectionObserver观察信息卡里的按钮组,观察区域是正文滚动区。回调取同一批记录里的最后一条;切换到手机布局时丢弃旧的可见状态;吸底栏退出动画的 200ms 内设为inert,期间不可点击。autoFocus,不抢焦点。tests/mockIntersectionObserver.ts原本没有任何地方使用,这次改成可以手动推送可见 / 不可见事件的版本。已知限制
vitest在main上本来就不稳定,见「验证」。建议审查重点
InstallLayout.tsx:可见状态的切换,包括跨断点切换和退出动画期间的处理。App.tsx/SkillInstallView.tsx迁移到新接口后,各场景下按钮组合是否和原来一致:普通、更新、回收站、监听文件、外部接入。验证
本 PR 基于
maine88d0eb6,头为8c335cdc。npx vitest run …86/86 通过;tsc --noEmit、eslint、pnpm run check:i18n均通过。npx vitest run:exit 1。失败文件数每次都不一样:main上观察到 140 和 271 个,本分支上为 79 到 217 个。本分支改动的文件都不在失败列表里,失败文件单独跑都能通过。疑似原因是 ui / fast 项目关闭了文件间隔离(isolate:false),而有些测试文件会调用vi.unstubAllGlobals,连带撤掉了全局初始化注入的chrome等对象。未在本 PR 处理。pnpm run build+e2e/session.mjs无头会话),对照 spec 的 13 条要求全部成立:[368,1232])。edit请求:点「更新并本会话允许」后脚本更新成功,下一次编辑无需确认、自动通过。中止 sctl 客户端(操作作废)后再点更新,得到真实的失败:提示条只有一份并跟随按钮组,没有重试按钮。1eb2992f;变基后与它相比只多了上游的package.json/pnpm-lock.yaml,src和tests完全一致。8c335cdc):纯排版问题,happy-dom 不做布局,按测试文档的例外规则,在构建产物上对照修复前后。样例包括中文长标题、无空格英文长标题、带空格英文长标题、超长作者名、描述里的超长链接、Skill 长名称和长描述,各测 1600 和 800 宽。修复前,无空格英文标题与操作组重叠,作者名溢出所在列,描述和 Skill 页出现横向滚动;修复后所有样例都没有重叠、卡片没有溢出、页面没有横向滚动,吸底栏里的名字仍然截断。相关测试文件 53/53 通过,tsc和eslint通过。Screenshots / 截图
桌面 1600×900 首屏:按钮组在信息卡右上,说明文字在卡片底部,没有吸底栏
桌面滚出后(暗色,1600×600):与内容列同宽的紧凑吸底栏
外部接入更新请求(真实 sctl 触发):「更新并本会话允许」在主按钮下拉首项
手机端 390 宽:布局不变