Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
5.4 KiB
5.4 KiB
进度:组件库修复第 3 轮(issue #111,Claude 直接执行,2026-10-27)
- 修复清单:
TASK-ui-kit-onboarding-fix-20261026.md末尾「第 2 轮验收」第 1~7 条,加 U11 第 2、3 项。 - 产品决定(#111,2026-10-27):由 Claude 来修;首屏 +7.54% 接受;为 U11 第 2、3 项允许多读一次已算好的盘。
- 分支
codex/ui-kit-fix3-20261027,从codex/ui-kit-onboarding-fix-20261026(365a623fc)开出,先合并origin/staging(9ca933968,含 #112)。 - BUG 编号:#112 已占 1444~1447。#111 分支原来的 1444~1450 合并时顺延为 1448~1454,本轮新增 1455~1459。
逐条
| # | 内容 | 结果 | BUG |
|---|---|---|---|
| 1 | 建档后整页退回「正在载入账户」 | 建档改用 refreshSubjectCatalog():旧名单保留到新名单到;重读失败保留原来的完整名单。换账户仍用 invalidateSubjectCatalog() |
1455 |
| 2 | 对话右栏拖不动 | 右栏不再用分栏组,左缘换成 useDragWidth 把手;拖到最窄以下收起。聊天列仍在右栏外,不重挂 |
1456 |
| 3 | 侧栏把手没有键盘 | 侧栏和右栏共用 useDragWidth:左右方向键 16px、Home / End,键盘不收起;role="separator" 带宽度 |
1457 |
| 4 | 删减断言没写三栏 | 「关闭导出」点按补回;选盘型的源码守卫补回;旧校正组件那条删除补写三栏 | — |
| 5 | 为测试改了线上登录代码 | modules/identity/client.ts、email-otp-login.tsx 改回合并基线原样。测试替身放进 login-code-entry.test.tsx:加载钩子把 next/image 换成组件本身;先装好 fetch 替身再动态导入登录页 |
— |
| 6 | 清单揭幕后才冒出来 | 新增 OnboardingChecklistSlot:胶囊不等弹层代码;读启程状态期间用本机上次的胶囊占位 |
1458 |
| 7 | 无用样式 | 删除旧校正组件独有的 30 个类的规则(globals.css、birth-time-choice.css),逐个确认 src/ 无引用、测试无断言 |
— |
| U11-2 | 起步第一问「只有月亮」档 | 没有今日星语时读一次星盘页同一份结果;上升只在 lagnaPrecheck.state === "fixed" 时用 |
1459 |
| U11-3 | 别人的天空过场上升句 | 过场开始时为别人读同一份结果;上升会换或读不到就不写这句 | 1459 |
改动的既有断言(原值 / 新值 / 原因)
| 文件 | 原值 | 新值 | 原因 |
|---|---|---|---|
tests/chat-chart-panel-state.test.ts |
split 里要有 ResizablePanelGroup、collapsible |
split 用 useDragWidth(,onCollapse 调 onOpenChange(false) |
组里只剩一个面板时把手拖不动;聊天列不能进组(BUG-1448),改成不依赖分组的把手 |
tests/class-name-definition-contract.test.ts |
白名单含 chat-chart-resize-handle |
删掉这一项 | 这个类现在有自己的样式规则 |
tests/onboarding-checklist-20261022.test.ts |
首页 <OnboardingChecklistEntry />,page.tsx 里 dynamic 引入且不给占位 |
首页 <OnboardingChecklistSlot />;dynamic 引入在 slot 文件里,带 loading |
不给占位导致揭幕后才冒出来(第 6 条) |
tests/report-export-drawer.test.tsx |
(365a623fc)没有「关闭导出」点按 | 补回,点了再关一次 | 按钮还在,是最常用的关法 |
tests/chart-type-picker.test.tsx |
(365a623fc)没有源码守卫 | 补回 doesNotMatch(/<dialog|<button|ToggleGroup|role="tablist"/) |
点按测试拦不住退回手写控件 |
tests/birth-time-guided-review-fixes.test.ts |
(365a623fc)整条删除,没写说明 | 补写三栏注释 | 四个旧校正组件已删除,见注释 |
tests/onboarding-hint-observer.test.tsx、tests/onboarding-motion-gate.test.tsx |
夹具没有新字段 | 加 checklistPending: false、userId: "" |
类型新增字段;断言不变 |
验收数字(Linux,Node 22)
| 检查 | 结果 |
|---|---|
tsc --noEmit |
0 错(构建前后各一次) |
npm run lint |
0 error,122 warning(与 staging 相同) |
npm test 全量 |
5219 项,通过 5143,失败 25,取消 0。25 条与 staging 已知名单逐条同名,没有新增 |
next build |
/ 仍 ○ Static。第一次构建在本机内存紧张时报「Failed to type check.」且没有任何类型错误,单独重跑通过 |
| 首屏 gzip-9 | 699,664。产品已接受的新基线 694,941(+0.68%);当前 staging 727,735(−3.9%) |
隐私标记 tests/test_repo_privacy_markers.py |
通过 |
| 数据库 / Python 快速门 | 本轮没动表、没改 scripts/** 与根目录 tests/**,未跑 |
首屏多出来的约 4.7 KB:合并了 staging 的 #112 页头一句,清单胶囊(进度圈)和拖宽钩子现在在首屏。读星盘那段代码用到时才载入,不在首屏。
留给真机
浏览器手感(拖宽、方向键、清单胶囊不跳、建档不退回加载、月亮问句和别人的上升句)写在 docs/testing/ui-kit-migration-20261023.md「第 3 轮修复」。
复验补修(Claude 独立复验,2026-10-27)
- 起步问句读盘原本在「今日星语」还没回来时就发起:有出生分钟的新用户每次进首页都会多读一次盘。改为只在今日星语已经结束、却没带星座(没有出生分钟或请求失败)时才读(
StarterQuestions的chartSignsFallback,页面传dailyStarlanguage.kind === "unavailable",不新增状态)。BUG-1459 补记。测试:starter-chart-signs-20261027.test.ts锁住这道门。