Files
Jyotisha/docs/tasks/PROGRESS-account-dialog-inert-20260918.md
T
jesse-ux bdf027a063
Independent Staging Quality Gate / validate (push) Successful in 12m8s
Independent Staging Quality Gate / publish (push) Successful in 8m40s
docs(bugs): 回填 BUG-968/969 修复版本 824ecff0
2026-09-18 19:16:34 +08:00

2.6 KiB
Raw Blame History

PROGRESS · 账户弹窗 inert + 校正快照不再静默(2026-09-18)

工作树:.worktrees/account-dialog-inert-20260918
分支:codex/account-dialog-inert-20260918
基线:origin/staging @ e760b1d6(任务书写 1061514f,开工时 staging 已快进到此)
合入提交:824ecff0
任务书:docs/tasks/TASK-account-dialog-inert-20260918.md

任务状态

任务 状态 说明
3.1 BUG-968 弹窗移出 inert 完成 选 (a) createPortal(..., document.body)。账户弹窗与 onboarding 付费墙都挂到 document.body。SidebarInset 的 inert={modalOpen} 保留,移动端抽屉分支不动。
3.2.1 GET 非 200 记 warn 完成 warnRectificationCaseGet:401/400/409/404/503 及 supabase 配置失败都打 JSON(event / case_id / status / code / reason),不含用户资料。
3.2.2 客户端失败不静默 完成 loadCaseSnapshot 非 2xx / 网络错误写入 snapshotFailure;校正面「这一问还没读到。」+「重新读取」。hydrate 带 failure.status。refreshRectificationCase 失败走 composer notice。Abort 不当失败。
3.2.3 确定性回复带题干 完成 下一题是可渲染选择题时,persistApplied 与 persistCollectDenialTurn 用 composeCollectSpokenAssistantText 追加题干并随流发出。口述采集仍只 stream ack(BUG-525)。attachQuestionsToTurns 去重。

方案选择(3.1)

选 (a) createPortal 到 document.body,不选 (b) 把节点交给 AppShell。

原因:现有 overlay 的 DOM、焦点圈禁(overlayRef + keepFocusWithin)、Esc 关闭都不用改;不必扩展 registerShellControls。SSR 走 typeof document === "undefined" 的原树,现有 renderToString 合同继续看见 dialog。

让步

无。3.1 与 3.2 的 1→2→3 都做完。BUG-969 快照失败的根因仍未由线上日志证实,状态写 mitigated,不得写 resolved。

测试

项 结果
tsc --noEmit 0 错
npm run lint 0 error / 120 warning(未顺手修 warning)
定向 account-dialog-inert-20260918 4/4;overlay / surface-state / surface-contract / collect-stall / question-in-message / membership / sidebar-contract / a11y / home-shell-growth / answer-choice 全绿
全量 npm test 3480 条,3402 绿,78 红。失败清单是 Windows 无 Docker / skill symlink EPERM / Unix 部署脚本,与本机近期口径一致;新增 4 条全绿,被改过的 discriminator 断言已按三栏改完。Linux 门禁基线仍是 31 红。
Home() 冻结 useState / useRef 未增长