Skip to content

release: prepare DualLane 0.19.0 UI/UX rollout - #13

Merged
timeStarry merged 3 commits into
mainfrom
codex/release-0190
Sep 11, 2026
Merged

timeStarry merged 3 commits into
mainfrom
codex/release-0190

Conversation

@timeStarry

@timeStarry timeStarry commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

Purpose

为已合并的 UI/UX 重构 #12 准备 0.19.0 正式发布。升级基线为 0.18.0,部署协调器要求新版本号;本 PR 补齐应用内更新历史、Echo 功能引导与发布校验。0.19.0 已于 2026-09-12 00:18:49 +08:00 激活并完成独立核验,证据见下方上线记录。

Changes

  • 根与 Web 版本、示例和 CI 镜像标签统一为 0.19.0。
  • 增加“清晰双轨,全新一致体验”更新历史与 Echo 引导,覆盖五主题、完整话题消息、导航/设置、对象操作及已有内容兼容。引导指向真实功能位置。
  • 更新版本一致性和当前发布目录回归;CI 标签与 package.json 校验,读取兼容 CRLF/LF,避免硬编码旧版本。
  • IME 回归中先点击编辑器、真实键入 @ 并确认文本,再验证候选确认不会误发消息或插入提及。保留原有全部断言、超时和零重试配置。
  • 增加发布记录,明确已验证生产基线、恢复快照、最终提交和受保护的激活/回退流程。

Scope And Non-Goals

本 PR 只调整发布元数据、用户引导、测试与发布记录。UI/UX 和话题消息实现已在 #12 合并;没有修改产品输入法实现、数据库 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.

本 PR 不修改上述数据路径;schema 保持 34。正式协调器将已验证的版本和提交注入运行镜像;Echo 目录随 Workspace/worker 镜像更新,目录更新本身不向生产成员广播通知。

Validation

  • Focused regression tests

  • pnpm test

  • pnpm lint

  • pnpm build

  • PostgreSQL integration tests, when required

  • docker compose config and affected image build, when required

  • Playwright flow, when required

  • Web 43 文件/333 项、SDK 8 项、离线兼容 20 项通过;离线包原 PostgreSQL 项 1 项按配置跳过。lint/build 通过,主包体积提示保留。

  • Go 发布目录、配置与 Workspace 启动专项通过;Echo PostgreSQL race 通过。

  • 真实 Go 新版 Echo 引导与公开关于页 2/2 通过;1440px/390px 关于页截图已人工查看,无横向溢出。

  • Linux Node 22.23.2/Compose 2.40.3 发布契约 34/34、后端工具检查 57/57,通过且无跳过。Windows 环境缺少原生 Docker/Bash 的首次失败已转到 Linux 原样验证,未放宽断言。

  • 文档 505 处本地链接与章节引用、git diff --check 通过。

  • 最小 IME 测试调整在全新 Linux 数据库、Chromium、trace/screenshot/video 关闭、零重试下连续 3 次通过;Windows 真实 Go 关闭记录、零重试连续 2 次通过;最新工作树 lint 通过。最终 CI 状态随下方发布记录补充。

CI 诊断边界:原 IME 用例在 Linux CI 两次均停在发送后 fill("@") 的提及面板前置条件,其他 41 项通过;原样本地、CPU 降速、Linux、新数据库及前序组合未复现。Playwright 的 fill 使用分开的 DOM 选择与 insertText 路径,本次改为测试目标对应的真实键入。未确认产品根因,不宣称修复了产品丢字或光标问题;没有通过提高重试、等待时间或移除断言掩盖失败。私有诊断未上传,临时诊断代码已清理。

真机软键盘、安全区域、辅助技术和完整性能基准仍遵循 #12 披露的验证边界。

UI/UX Evidence

本 PR 更新用户说明文字,不更改布局。正式 UI/UX 的唯一规范入口是 docs/design/ui-ux-rewrite/README.md,后续反馈覆盖见其规范和验收映射。公开关于页与移动端 Echo 新版引导已在真实 Go 环境验证。

Migration, Release, And Rollback

无数据库迁移。生产预检证明 0.18.0 四个运行 owner 健康、镜像匹配上一成功快照,固定回退镜像存在;私有快照 sidecars、外部配置指纹和实际数据卷归属验证通过。

按维护者本次明确授权,代理检查最终 head 的全部 CI 通过后,以 timeStarry 身份合并,不绕过分支保护。在生产检出由所有者执行 git pull --ff-only,验证干净 main 与精确 origin/main,再把最终完整 SHA 交给受保护的 Go-to-Go 升级协调器。协调器负责逻辑备份、不可变镜像、只读候选、authority、旧 owner 停写与 drain,再激活服务并最后切换网关。

失败按固定上一版 Go 镜像恢复,保持现有数据库与对象存储,不恢复旧数据库、不反向迁移、不恢复退休 Node。最终版本/提交、健康、静态资源、鉴权边界、实际部署页面和私有恢复产物须在激活后核对。维护者已说明公开域名的自动化 TLS 重置为预期现象,本次忽略该外网自动化项。

准备阶段记录见 docs/backend/work-items/2026-09-11-ui-0190-release.md;此 PR 的最终上线记录补充实际激活证据。合并本身不等于已上线。

Merge Authorization

  • Only GitHub user timeStarry performs the final merge. The maintainer explicitly authorized this task's agent to check CI, then merge and deploy PR release: prepare DualLane 0.19.0 UI/UX rollout #13 using that identity; no admin bypass or failed-check override is permitted.

Production Activation — Verified

最终合并/部署提交:625f8671d010e555495bde8724e2cdc5fc9d2baa。PR 最终 head 2a70bb5 的四组 CI 全通过后,以 timeStarry 身份按精确 head 合并;合并提交与该 head 的 tree 相同。合并后的 main CI 四组也全部通过。Workspace 为 42/42,其中调整后的 IME 用例通过。

由检出所有者完成生产 git pull --ff-only,确认干净 main/origin/main/预期 SHA 一致,再运行正式 Go-to-Go 协调器。成功运行于 2026-09-12 00:18:49 +08:00 以 exit 0 结束,候选验证、旧 owner fence/drain、激活和网关检查全部完成。

运行服务 已核对的生产镜像 ID
P2P sha256:e2a5110f59a2f82a7221d4a89a0ce5ae581eb89387c37990303aa523d6b70745
Workspace、worker、migrate sha256:3f608fa04f1f10b1a7aaa259073bf720e6fddc6d0f1f41da6d054bc0935156e8
Web sha256:a50e3ed7f205901523403531b780a2cbe3723d3a1b9c74a6eaf9d34615dcaf3e
  • 四个常驻服务均健康,版本/revision 标签一致,重启策略 always,restart count 为 0;Workspace 与 worker 的 active readiness 通过。
  • 正式本地网关只读 smoke 13/13:首页、5 个静态资源、0.19.0 健康、ICE、Workspace 鉴权边界、3 个私有端点未公开、未认证 Workspace WebSocket 边界均通过。
  • 从实际生产网关加载关于页,1440px/390px 均显示 0.19.0 和新说明,无水平溢出或浏览器 pageerror;两张完整页面截图已人工查看,未上传私人截图。
  • schema 仍为 34。新旧快照之间的数据卷归属、外部文件指纹验证通过;上一版固定恢复镜像仍在。
  • Docker daemon 未重启;原有其他 32 个容器 ID 仍处于运行状态。Git index 仍由检出所有者持有。启动后日志未见 error/warn 级记录;P2P/Workspace 的该时间段没有日志,不能据此代替健康检查。

新的恢复产物位于生产私有备份目录,均已核对为 root 持有的普通 0600 文件:

duallane-20260911T161353Z-625f8671d010.dump
duallane-20260911T161353Z-625f8671d010.dump.sha256
duallane-20260911T161353Z-625f8671d010.recovery.go-compose.snapshot.json
duallane-20260911T161353Z-625f8671d010.recovery.go-compose.snapshot.json.compose.json
duallane-20260911T161353Z-625f8671d010.recovery.go-compose.snapshot.json.external.json
duallane-20260911T161353Z-625f8671d010.recovery.go-compose.snapshot.json.volumes.json

逻辑备份 SHA-256 校验通过。原 0.18.0 恢复快照和镜像保留;无数据库恢复、反向迁移或退休 Node 复活,也未向真实成员广播 Echo 更新通知。

部署环境记录:首次构建因默认 proxy.golang.org 超时,在迁移和切换前停止,旧版仍健康。验证公开镜像源可达后,第二次仅以进程参数使用仓库已有的 DUALLANE_GO_BUILD_PROXY=https://goproxy.cn,direct 和 DUALLANE_DEBIAN_BUILD_MIRROR=https://mirrors.ustc.edu.cn。没有修改生产 .env、依赖版本、TLS/Go checksum/APT 签名验证或 Docker daemon 配置。协调器清理其构建缓存后磁盘可用约 7.4 GiB。

人工真机和完整性能基准边界保持不变;本次线上浏览器使用无登录的公开页面,登录后功能证据来自相同代码的真实 Go 隔离回归,未把测试数据写入生产。

@timeStarry
timeStarry merged commit 625f867 into main Sep 11, 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