Skip to content

Activate Android sessions in 0.20.0 after the compatibility bridge - #18

Merged
timeStarry merged 1 commit into
mainfrom
codex/activate-mobile-production
Sep 16, 2026
Merged

timeStarry merged 1 commit into
mainfrom
codex/activate-mobile-production

Conversation

@timeStarry

@timeStarry timeStarry commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Purpose

启用 Android 内部测试版连接现有共享空间所需的移动登录和版本策略。0.19.3 桥接 PR17 已合并;本 PR 作为独立的 0.20.0 激活版本,使用桥接镜像已经声明兼容的精确 035 迁移。

Changes

  • 将已审 035 SQL 原字节恢复到 canonical migrations,保留桥接 fixture、严格结构检查和旧镜像兼容授权。
  • 恢复 MobileService 与公共 release-policy 接线,提供 PKCE 登录、访问/刷新会话及退出路径。
  • 移动 PostgreSQL 测试使用实际 canonical runner;新增 canonical/fixture 字节一致断言,保留缺少 repository 时安全拒绝测试。
  • 统一 root/Web/CI/环境示例版本为 0.20.0,更新中文发布说明、Echo 指南及部署记录。

Scope And Non-Goals

这是 PR16 已审功能在桥接版本后的部署激活。仅 Workspace 新增五张移动认证相关表,不改变 P2P 内容不落盘约定、已有数据与对象存储归属、成员权限、配额、保留、审计和单一写入者规则。APK 自身仍为 0.1.0 / code 1;不改变签名身份或开启 OTA。

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, fixtures, and diff contain no secrets or private content.
  • API, event, database, storage, and client compatibility were reviewed.

035 SHA-256 为 479d042a0a5f4d07886d3557901b5d8152b8714fe9dfeeceddfba94121e58061。独立复核确认 canonical 与 fixture 一致,全部桥接 policy、结构漂移检查及生产升级守卫保持不变。访问和刷新令牌仅保存哈希,重放和轮换沿用已审事务及审计逻辑。

Validation

  • 独立只读代码复核无阻塞问题。
  • 本地 pnpm test、pnpm lint、pnpm build 全部通过:SDK 8、Web 346、离线工具 20;离线 adapter PostgreSQL 用例未启用。相关 Node 门禁 34/34 通过。
  • Go 1.26.8 / PostgreSQL 17.11 全包 go test -count=1 -race -tags postgres_integration ./... 和 go vet ./... 全部通过;独立临时数据库已按 owner 清理。
  • 最终 head 7bae680ecd635f8f1f3a8e983b76b2d663049782 的四项 CI 全部通过:run 35118197248。
  • 正式 Dockerfile 的三镜像构建通过;实际生产 0.19.3 镜像已按原始 config digest 校验导入,schema proof 为 34→35 / common34 / added1 / removed0 / policyUsed=true。
  • 强制 34→35 的真实完整演练通过:实际线上 dbd41969 / 0.19.3 → 7bae680e / 0.20.0 → 精确线上 bridge Go 回滚 → 最终历史 fixture 恢复。1/1 tests、0 skipped、exit 0,632.775 秒;回滚后独立只读探针确认数据库仍为 35,035 仍应用。

以上合并前门禁均已完成。移动客户端未改动,沿用已经通过的 APK 签名、默认配置、Android 15 冷启动/重启/深色冒烟和 62 项测试证据。

UI/UX Evidence

没有界面布局变更。中文发布资料沿用现有结构,说明 Android 登录、会话保持及版本提示。

Migration, Release, And Rollback

生产 0.19.3 已于 2026-09-17 完整部署成功,commit dbd41969f9952523b1ca570773c7857c2f9b4341,四个应用容器健康,13 项网关检查通过。新 snapshot 为 backups/production/duallane-20260916T160548Z-dbd41969f995.recovery.go-compose.snapshot.json,及三个 sidecar 均 root-owned / 0600 / regular;reader 验证 schema34、版本和 commit。本 PR 必须先完成真实 34→35 升级和精确生产桥接镜像回滚,四项 CI 通过后正常合并。部署从 /home/timestarry/duallane 的干净 main 运行受控脚本,指定完整 expected commit、go-full --go-upgrade 和最新成功 bridge snapshot。数据库及对象存储权威不变,不做 down migration。

生产配置使用已发布 APK 的公开 HTTPS 下载 URL;latest/minimum 均为 0.1.0 / 1,recommendation=none。上线后验证精确镜像、schema35、私有 readiness、网关烟测、release-policy/下载链接和移动 OAuth 开始跳转。实际账号登录和实体设备后台通知不能由这些烟测替代。

APK:内部测试发布,默认服务 https://duallane.tsio.top,用户无需选择。

Merge Authorization

  • 仅 timeStarry 执行最终合并,不绕过分支保护。

维护者已在当前任务授权修复、正常合并、生产部署及 APK 分发,另明确允许本次通过 SSH 进入 server;生产目录、服务器本地 Docker 和部署守卫保持不变。

Completed production activation

2026-09-17 已正常合并并成功部署 0.20.0,线上 commit 为 ce7f1619c61dc515e50c6bc16a6d63cae0369536。受控部署 exit 0,四个应用容器健康且 restartCount=0,13 项网关检查通过;schema35 和快照元数据验证通过,新 snapshot 为 backups/production/duallane-20260916T162556Z-ce7f1619c61d.recovery.go-compose.snapshot.json,本体及三个 sidecar 均 root-owned / 0600 / regular。

额外 HTTPS 检查确认版本策略、APK 下载链接、已安装包兼容性、匿名 Workspace 拒绝、PKCE 开始请求、GitHub 重定向与 HTTPS callback、安全 Cookie 均通过。使用生产域名/SNI 和证书校验经现有 tailnet 网关验证;没有执行真实账号登录。临时下载通道全部停止,所有应用容器确认无构建代理配置,近期日志未发现启动错误。APK 资产尺寸与摘要与已测包一致。

完整上线记录:PR19。后续文档归档无需再次部署。

@timeStarry
timeStarry marked this pull request as ready for review September 16, 2026 16:25
@timeStarry
timeStarry merged commit ce7f161 into main Sep 16, 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