Skip to content

修复发送滚动与中栏交互,发布 0.19.2 - #15

Merged
timeStarry merged 3 commits into
mainfrom
codex/refine-conversation-navigation
Sep 12, 2026
Merged

timeStarry merged 3 commits into
mainfrom
codex/refine-conversation-navigation

Conversation

@timeStarry

@timeStarry timeStarry commented Sep 12, 2026 •

Copy link
Copy Markdown
Owner

Purpose

阅读历史时主动发送消息仍停留在旧位置,中栏每行的三点入口占据内容宽度,选中项又与列表背景使用相同色值。此版本让发送后的最新内容立即可见,并补齐中栏的选择与调宽体验。

Changes

  • 私聊、群聊、话题与私密直连在主动提交后回到最新;Workspace 附件进入待发送队列时即滚动,不等待上传完成。历史引用窗口恢复最新时间线,迟到请求按原目标和阅读意图处理。
  • 阅读历史期间收到对方消息继续保留位置。上传或发送回执不能清空新草稿,也不能拉动新选择的会话。
  • 会话中栏去掉每行三点按钮,保留原有右键、长按、Shift+F10/菜单键动作;打开或取消菜单不会切换会话。
  • 正式 WorkspaceShell 管理中栏右边缘拖动与键盘调宽,本机记忆,双击/Enter 恢复默认。宽度随窗口和详情栏收敛,为正文保留空间;取消拖动恢复原值。
  • 中栏会话和话题选中底色、摘要文字与悬停态分别使用主题派生变量,保留原有细指示条。五主题明暗下验证小字对比度至少 4.5:1。
  • 修复共享菜单在历史布局补偿后锚点移出视口时仍可能越界的问题;按可见锚点计算可用空间并限制最终位置,保留原有操作对象、焦点和主动滚动关闭规则。
  • 长按打开后继续按住再松手,不应让浏览器的兼容点击误关闭面板;该手势的生命周期与下一次独立操作分开处理。
  • 同步最终 UI/UX 规范、根/Web 0.19.2 版本、公开更新记录、Echo 指南及版本契约测试。

Scope And Non-Goals

界面布局与会话滚动状态,覆盖 P2P 私密通道及 Workspace 的呈现层。没有 API、消息协议、schema、权限、配额、存储或审计变更;没有修改表情资源、SDK 或离线工具版本。本机新增存储只有中栏宽度,不包含消息或身份数据。

Risk Review

  • P2P plaintext and files remain unpersisted by the server.
  • Workspace remains disabled unless WORKSPACE_ENABLED=true exactly.
  • Authentication and resource-level authorization are preserved.
  • Quota, retention, idempotency/concurrency, and audit behavior were reviewed.
  • Logs, errors, screenshots, fixtures, and the diff contain no secrets or unnecessary private content.
  • API, event, database, storage, and client compatibility were reviewed.
  • Not applicable items are explained below.

Risk notes: 本次不改变服务端写入或访问边界;沿用既有授权查询恢复最新时间线。重点风险是发送、历史定位、上传回执和切换会话间的竞争,以及 PointerCapture 取消和响应式断点。测试使用合成身份与可丢弃数据库,证据保留在忽略目录。

Validation

  • 中栏真实 App / 合成 HTTP+WebSocket Playwright:5/5;包含拖动、键盘、取消、拖动中切手机、禁用存储、刷新恢复、详情展开、长按与键盘操作、五套明暗主题及 4.5:1 对比度。
  • corepack pnpm test:最终 Web 346/346、SDK 8/8、离线工具 20 通过 / 1 个 PostgreSQL 专项跳过。
  • corepack pnpm lint。
  • corepack pnpm build;保留既有 >500 kB bundle 提示。
  • Web release/config 25/25、CI 版本守卫 1/1、Go Echo release 单元测试。
  • node docs/design/ui-ux-rewrite/verify-docs.mjs:32 份文档,521 处本地链接/章节引用通过;git diff --check 通过。
  • 发送专项 6/6;窗口合并单测 26/26。覆盖提交后立即滚底、被动追加保位、先后颠倒的 GET/POST、确认消息保留、迟到跨会话回执及话题引用定位竞争。
  • 完整浏览器门禁 66/66(Workspace 58、P2P/IME 8,6.3 分钟):使用正式 Workspace motion / P2P reduced motion、显式可丢弃 PostgreSQL 和随机 schema、私有隔离端口,零失败/跳过/重试;包含新版 Echo 引导和 0.19.1 表情回复避让回归。自有测试容器与进程已清理。
  • node apps/web/src/ui/patterns/verify-workspace-history.mjs:历史前插、菜单与阅读锚点、历史请求期间新的阅读位置、迟到其他会话响应均通过。
  • 共享浮层 14 项单测、新真实菜单 fixture:程序化历史滚动使锚点越界、300px 高视口内滚动与 End/Home/点击、对象失效和焦点恢复、390/320 手机 sheet 均通过。此前正常滚动关闭策略保持不变。
  • 菜单补丁后原双用户 Go 流程 1/1 通过;对象作用域 fixture 通过。工作台 Chromium 40 组和触控/Select 流程完成。
  • 最终长按独立回归 9 组通过:0.5/1.6/10 秒持按后的释放与焦点、后续触摸/鼠标/键盘、切出页面、移动/取消/多指、对象移除与替换、StrictMode 清理。390/320px CI 用例新增 1.7 秒持按,2/2 通过。
  • 最终提交 915fe79 的真实 Go 专项 7/7(2.2 分钟)及完整 Workspace 58/58(6.4 分钟),零失败/跳过/重试;含原双用户流程、六项表情面板与新增中栏持按场景。
  • 最终 915fe7966f7d77df9510e95b7a568c834676b698 的 CI 34687222841 四项门禁全部通过,包括 Go race/analysis/PostgreSQL、构建及 Docker、P2P 隐私传输、完整 Workspace 浏览器。

CI 发现并补充的回归:首轮 Workspace 门禁 57/58,旧双用户流程打开 history-26 的“设为常驻消息”时菜单项位于视口外。原流程在本地首次复跑通过;独立真实组件用相同的程序化历史滚动确定复现了菜单 bottom 1028 超出 900px 视口,几何单测也复现了偏移视口内的越界。修复共享定位逻辑并补充确定性边界与交互测试,不修改旧用例的点击方式、超时或断言。

7daaf39 的四项 CI 已通过。该版本地追加的完整 Workspace 为 57/58:唯一失败是 390px 群聊长消息长按打开面板后,松手产生兼容点击而关闭面板。相同正式组件与真实触摸的受控复现证实,500ms 持按正常,1600ms 持按会超过从打开时起算的 900ms 抑制窗口;该触控 sheet 不经过刚修复的桌面定位分支。原失败证据保留,继续修复并在最终版本验证,不以重试替代修复。

PostgreSQL schema、Docker 和部署配置没有修改;生产仍由既有 Go guarded coordinator 构建与验证候选镜像,保留数据权威。

UI/UX Evidence

已检查 1440px 桌面、390×844 手机与 320px 触控截图,确认选中项与背景分离、长按面板可达、文字图标居中且无横向溢出。自动化覆盖 1101/1100/761/760 断点、原色/苔原/暮色/米色/极简明暗、小字对比度、焦点与草稿 DOM 保留。截图仅为合成数据,保留于私有测试目录;原生设备和读屏未新增实机验收。

额外验证限制:整个工作台脚本在可选引擎的 harness 导航阶段超时,原日志没有引擎标签,不能报告整脚本或完整跨浏览器通过。独立小烟测中 Firefox 导航和渲染正常;Windows WebKit 可独立复现相同的 load 等待超时,超时后页面已 complete 且标题渲染,无 pageerror/requestfailed。未修改产品或放宽原脚本超时来消除此结果。

Migration, Release, And Rollback

发布 0.19.2,无数据迁移。按维护者本任务已有指令,在 CI 全部通过并合并后,以精确 origin/main SHA 在生产 checkout 执行既有 guarded Go-to-Go 升级。生产预检确认 0.19.1 / 512b661bace1181b937ce2ae1354427ae9b63000 四服务健康,原镜像、私有恢复快照、外部配置和卷权威完整。回退使用该版本已验证镜像及当前数据权威,不回退数据库或启动退休 Node 服务。

Merge Authorization

  • GitHub 身份 timeStarry 执行最终合并;维护者已在本任务明确授权“检查通过后直接合并部署”。遵守保护分支,不使用管理员绕过。

Production Verification

2026-09-12 已合并并上线 0.19.2,生产提交 182a6bf95b5ec8eba2974852590dd3541ec6ca50。合并树 6338f4cf81a0f352a5d851016aa975f0c882c774 与最终测试树完全一致;主分支 CI 34687703547 四项门禁也全部通过。

  • 生产 owner 执行干净 main 的 ff-only 更新;guarded Go-to-Go coordinator 成功退出,四项服务均为本提交、0.19.2、healthy,Workspace/worker 为 active。
  • 13 项网关检查通过,覆盖主页/静态资源、健康、ICE、未登录边界、私有入口不暴露及 Workspace WebSocket。
  • 私有备份校验、恢复快照和 sidecar 权限、schema 34、旧版回退镜像、卷与外部配置权威均验证;32 个其他运行容器保持运行,Docker daemon 未重启。
  • 1440px/390px 线上关于页显示 0.19.2,资源加载正常、无横向溢出或页面错误。线上静态资源的中栏交互 5/5 通过,包含调宽、持久化、十种主题配色和 390/320px 长持按;该交互检查的 HTTP/WS 使用合成数据,真实服务流程由最终可丢弃 Go 环境的 58/58 验证。浏览器验收经既有私网网关。
  • 部署后日志检查:四服务错误/警告级记录均为 0,重启计数均为 0。

构建期间 npm 的一个依赖下载连接停滞;确认同一锁定包可正常下载后,仅重置隔离构建网络内属于该 pnpm 安装进程的单条已识别连接,原安装按锁文件恢复重试并完成。生产配置、依赖版本及校验方式保持原样,部署入口未重启或绕过。

@timeStarry
timeStarry marked this pull request as ready for review September 12, 2026 10:09
@timeStarry
timeStarry merged commit 182a6bf into main Sep 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant