完善桌面端界面、发布检查与邮箱域名同步
Client Quality Gates / Shared client and Web (push) Has been cancelled
Client Quality Gates / macOS Desktop (push) Has been cancelled

This commit is contained in:
Cheng Zhou
2026-07-01 10:49:31 +08:00
parent c923f887a0
commit 9cac75e85c
32 changed files with 5392 additions and 2684 deletions
+9 -25
View File
@@ -51,7 +51,7 @@ windows-main
| 生产热修复 | `hotfix/<问题名称>` | `hotfix/login-loop` |
| 文档调整 | `docs/<文档名称>` | `docs/release-sop` |
| 发布准备 | `release-prep/<版本号>` | `release-prep/v1.2.0` |
| 临时集成 | `codex/<任务名称>` | `codex/ctms-desktop` |
| Agent 临时任务 | `codex/<任务名称>` | `codex/desktop-menu-polish` |
分支名称使用小写英文和连字符,不使用个人姓名、日期或模糊名称。
@@ -180,33 +180,17 @@ git push origin --delete feature/<功能名称>
工作树正在使用的分支不能直接删除,应先切换分支或移除对应工作树。
## 五、当前桌面集成分支处理流程
## 五、历史桌面集成分支约束
`codex/ctms-desktop`临时桌面集成分支,不作为长期桌面主线。
`codex/ctms-desktop`第一阶段 Tauri 基线使用过的历史临时集成分支,不作为当前桌面端工作线,也不作为长期桌面主线。
处理步骤
当前约束
```bash
git status
git add <本次桌面端和治理优化相关文件>
git diff --cached --check
git commit -m "refactor(client): 统一网页端和桌面端发布流程"
git fetch origin
git rebase origin/dev
git push origin codex/ctms-desktop
```
创建:
```text
codex/ctms-desktop -> dev
```
合并并验证 `dev` 后:
- 删除远程 `codex/ctms-desktop`
- 不再从该分支继续开发
- 后续桌面功能从最新 `dev` 创建短期 `feature/*` 分支
- 不得继续向 `codex/ctms-desktop` 提交、变基或推送新的桌面端工作。
- 如本地或远程仍保留该分支,只能用于追溯历史或在确认已合入 `dev` 后删除。
- 后续桌面功能、修复、稳定化和发布准备必须从最新 `dev` 创建短期 `feature/*``fix/*``docs/*``release-prep/*``codex/*` 分支。
- Agent 创建分支默认使用 `codex/<任务名称>`,并在任务合入 `dev` 后删除。
- 如果工作区处于 detached HEAD 或包含尚未归属到分支的提交,执行分支切换、提交、推送或变基前必须先确认目标基线和处理方式。
## 六、从 `dev` 晋级到 `main`
+15 -5
View File
@@ -64,6 +64,7 @@ release/security gate before promotion:
```bash
cd frontend
npm run version:check
npm run release:env:check
npm run runtime:check
npm run desktop:release:check
npm run ui:contract
@@ -73,10 +74,12 @@ npm run build
npm run desktop:build:app
```
`release:env:check` verifies build channel and commit metadata, and can be
made strict for signed Desktop builds with `REQUIRE_DESKTOP_SIGNING=true`.
`desktop:release:check` statically verifies the Tauri bundle, updater public
key, CSP, capability scopes, command allowlist, query-token ban, and secure
session token boundary. The full manual release, security, regression, and
Desktop UX checklist lives in
key, CSP, capability scopes, command allowlist, query-token ban, generic system
notification boundary, CI gate coverage, and secure session token boundary. The
full manual release, security, regression, and Desktop UX checklist lives in
`docs/audits/desktop-release-stabilization-checklist.md`.
## Promotion
@@ -120,8 +123,9 @@ The release pipeline must:
3. sign and notarize the macOS app;
4. produce updater artifacts and `.sig` files with the updater private key;
5. generate `latest.json` and a checksum manifest;
6. upload immutable artifacts first;
7. atomically replace `latest.json` last.
6. verify the feed with `npm run desktop:update-feed:check -- --feed <latest.json> --artifacts-dir <artifact-dir>`;
7. upload immutable artifacts first;
8. atomically replace `latest.json` last.
For Universal macOS artifacts, `latest.json` must provide both
`darwin-aarch64` and `darwin-x86_64` entries pointing at the same Universal
@@ -149,6 +153,9 @@ Windows validation must cover:
cd frontend
npm ci
npm run version:check
export VITE_BUILD_CHANNEL=release
export VITE_BUILD_COMMIT="$(git rev-parse HEAD)"
npm run release:env:check
npm run runtime:check
npm run desktop:release:check
npm run ui:contract
@@ -158,7 +165,10 @@ npm run build
npm run desktop:build:app
export TAURI_SIGNING_PRIVATE_KEY="$UPDATER_PRIVATE_KEY"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="$UPDATER_PRIVATE_KEY_PASSWORD"
export REQUIRE_DESKTOP_SIGNING=true
npm run release:env:check
npm run desktop:build -- --bundles app
npm run desktop:update-feed:check -- --feed src-tauri/target/release/bundle/latest.json --artifacts-dir src-tauri/target/release/bundle
```
The Desktop build must run on macOS for the current first-phase target. A signed