# 进度 · 手机顶栏可点 + 积分块不扁(2026-09-17) 基线:`origin/staging` @ `77e3626a`。 分支:`codex/mobile-viewport-scroll-lock-20260917`。 BUG:920、921。Skill 未 bump。 ## 做了什么 - **T1 / BUG-920**:`viewport-scroll-lock.ts` + `ViewportScrollLock` 挂在 `layout.tsx`,与 `StaleClientRecovery` 并列。`scrollRestoration=manual`,键盘收起后 `window.scrollTo(0,0)`。键盘打开(visualViewport 矮于 innerHeight−100)不动。`focusout` 按让步做 300ms 兜底。未改 `html, body overflow: hidden`,未动 `page.tsx` 状态。 - **T3 / BUG-921**:`.chat-header-actions .credit-button` 与顶栏 `.rectification-board-peek` 共用 40px / 14px / 同圆角。积分去掉 `min-width: 64px`。`::before` −2px 扩到 44px 热区。≤767px 顶栏行从 `64px + safe-area` 收到 `52px + safe-area`(任务书按 46→52 写;手机原先已是 64px 覆盖,现与 52px 对齐)。 - **T2**:BUG_HISTORY / CHANGELOG / DESIGN / 真机清单。 ## 测试 | 项 | 结果 | | --- | --- | | `tsc --noEmit` | 0 错 | | 改动文件 eslint | 0 error | | 本单 + touch-target + 顶栏相关 | **84 passed / 0 fail**(含 BUG-695 触屏热区) | | Python | 未改,不跑快速门 | | `next build` | worktree junction,留给 Gitea | 无 iOS / Chrome,真机清单留给产品。