Skip to content

Commit 9aa3174

Browse files
authored
chore(release): prepare v2.4.2 (#572)
* chore(release): prepare v2.4.2 版本号 bump 2.4.1 → 2.4.2(tauri.conf.json / Cargo.toml / README 中英)。 CHANGELOG 补 v2.4.2 条目: - #571 WorkBuddy 多账号池 + 配额守护 + 反应式失败转移 + 每账号独立指纹 - merge 收尾移除 e5(build .app 步骤) 搭车 AGENTS.md e5 移除(从 merge 收尾流程永久删除 build .app + 转主仓 dist/mac 步骤)。 * chore(release): 补 release-notes/v2.4.2.md review thread PRRT_kwDOSRcxvM6NVlqU:release.yml 需 release-notes/v<version>.md 否则 check_release_notes_present.py fail。 * chore(release): 完善 release-notes/v2.4.2.md + AGENTS.md 补发版流程 release-notes/v2.4.2.md: 按标杆格式重写(2995 字符,禁粗体/中文引号, 中英双语单 ### 主题 + bullets + 验证段)。 AGENTS.md: 新增「5. 发版流程」段落(a 预发布微 PR / b dispatch release.yml / c draft release → publish),参考 Claude memory 里的 完整发版 SOP 整合,涵盖版本号 bump 全盘扫描、release-notes CI 门禁 (MOC-66)、CHANGELOG、dispatch workflow、draft release 注入 notes、 等用户显式 publish。
1 parent 622eca8 commit 9aa3174

8 files changed

Lines changed: 57 additions & 6 deletions

File tree

AGENTS.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,24 @@
3636
- **e2. Merge + 远端 silent delete verify**`gh pr merge <PR#> --squash --delete-branch` 后必须验证远端 ref 真删 —— **不能直接看 `git ls-remote` 的 exit code**(连接成功即 0,跟 ref 存不存在无关),改用 `git ls-remote --heads --exit-code origin <branch>`(ref 不存在时 exit 2)**** `[ "$(git ls-remote --heads origin <branch> | wc -l)" -eq 0 ]`(stdout 0 行 = ref 不存在);残留时手动 `git push origin --delete <branch>`(worktree 锁本地分支时 gh 也 skip remote delete,silent failure)。
3737
- **e3. 本地清理**`git worktree remove <path>``git branch -D <branch>``git worktree prune` → 清理 `src-tauri/target/release/bundle/macos/` 等 build 残留。
3838
- **e4. 回归 main + 同步**`git checkout main``git pull --ff-only origin main`
39-
- **e5. `.app` build + 转主仓 `dist/mac/`(必须 `test ` 前缀)**:主仓 main 跑 `make mac-app` 输出 `dist/mac/Codex App Transfer.app` → rename 为 `dist/mac/test Codex App Transfer.app``test ` 前缀避免跟 `/Applications/Codex App Transfer.app` 用户正式版同名,Dock / Cmd-Tab 可区分)→ `pkill -f "Codex App Transfer"` 强 kill 旧 instance → `open "dist/mac/test Codex App Transfer.app"`(不 pkill 看的是旧 binary)。**绝不**擅动 `/Applications/Codex App Transfer.app`(用户正式版)。
4039
- **e6. 关联 issue + Linear followup 更新**`gh issue view <ISSUE#> --json state,closedByPullRequestsReferences` 验证是否被 PR `Closes #N` 自动关,否则手动 `gh issue close <N>`**Linear followup(workspace Mochance / team Mochance / label Improvement)跟 GitHub issue 是两套独立系统**:本次 PR 实施掉的 Linear issue(MOC-N)用 `mcp__linear__save_issue``state=Done`,并在 issue body 末尾追加 resolved PR 链接。(历史 `docs/followup-tracker.md` 制度 2026-05-24 起停用,新工作流不再写本地 .md。`docs/` 整目录已 gitignored。)
4140

41+
5. **发版流程**
42+
43+
**a. 预发布微 PR(版本号 bump + release notes + CHANGELOG)**
44+
- 用户说「发版」/「trigger workflow」/「发 vX.Y.Z」时,新版本号默认 patch +1(如 2.4.1 → 2.4.2);用户没显式指明 bump 档位时****按 feat 数量自行推 minor/major,只有用户明说(如「发 2.5.0」「升 minor」)才用更大档位。
45+
- 在 sibling worktree 开 `chore/release-vX.Y.Z` 分支,三件事同 PR:
46+
- **A. 全盘扫描更新版本号**`rg -l "\b<OLD>\b" --type-not lock` 确认没漏。必改 `src-tauri/Cargo.toml` `[package].version` + `src-tauri/tauri.conf.json` top-level `"version"``Cargo.lock``cargo check -p codex-app-transfer` 自动 sync);可能要改 `README.md` / `README.en.md` 版本行。改完跑 `cargo check -p codex-app-transfer` 让 Cargo.lock 同步。
47+
- **B. 撰写 release notes**:创建 `release-notes/vX.Y.Z.md`(MOC-66 CI 门禁强制,`scripts/check_release_notes_present.py` 校验,缺文件 release.yml 直接 fail)。格式参照 `release-notes/v2.1.7.md` 标杆:`# Codex App Transfer vX.Y.Z` 标题 + `## 中文` / `## English` 两段,每段单 `###` 主题 + bullets + 验证段;2500-3200 字符;禁粗体 / 删除线 / 中文引号(「」『』);允许 inline code。
48+
- **C. CHANGELOG 补条目**`CHANGELOG.md` 顶部(`## v<上一个版本>` 之前)插入 `## vX.Y.Z` 段,中英双语概述本版改动(参照既有格式)。
49+
- 微 PR 不立即开 —— 可攒到下一个 feature PR 搭车(同 merge 收尾 d 规则),或累 ≥ 5 条微改动起 `chore: misc micro-fixes` PR。但**发版触发时必须独立开 PR**(release notes 文件 + 版本号必须在 main 上才能 dispatch release.yml)。
50+
- PR title:`chore(release): prepare vX.Y.Z`。merge 走标准 merge 收尾流程(e0-e4 + e6)。
51+
52+
**b. dispatch release.yml**
53+
- 预发布 PR merge 进 main 后,触发 `release.yml` workflow dispatch(`gh workflow run release.yml -f version=X.Y.Z` 或 GitHub Actions UI 手动 dispatch)。dispatch 前确认 main 已含版本号 bump + release-notes 文件。
54+
- release.yml 跑 `check_release_notes_present.py` 门禁 → 打包 macOS .app/.dmg → 创建 draft release。
55+
56+
**c. draft release → 注入 notes → 等用户 publish**
57+
- release.yml 创建的 draft release 用 `release-notes/vX.Y.Z.md` 全文作为 body(不走 GitHub 默认「What's Changed」footer)。
58+
- 等 release.yml 全绿、draft release 创建成功后,向用户汇报 release URL + 打包产物,**等用户显式声明 publish** 才点 publish(禁止自动 publish)。
59+
- publish 后打 tag `vX.Y.Z`(release.yml 自动打),验证 `gh release view vX.Y.Z` 状态为 published。

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
逐版本要点。
44

5+
## v2.4.2
6+
7+
**WorkBuddy 单 provider 多账号池 + 配额守护自动切换 + 每账号独立指纹(#571)**:`workbuddy-login` provider 下可登录多个账号组成池,每账号**独立设备指纹**(`X-Device-Id` per-account,避免网关风控关联);账号列表显示脱敏手机号(如 `183****5600`)替代不可读 uid,可手动「设为当前」/「移除」。**配额守护**:后台每 ≥60s 查各账号 `get-user-resource` 剩余积分,某账号总剩余 < 阈值(默认 20,设置项可调)即标记耗尽、自动 sticky 切到下一个有额度账号,对 Codex 透明(独立于额度面板开关)。**反应式失败转移**:选中账号 refresh token 被网关拒或凭证丢失时,标记 5min 退避并重试池里下一个账号;配额守护遇 401/403(auth 失效)标记 1h 退避 —— 两条路径共同闭环,单账号失效不再撞死整个池。老单文件 `workbuddy-oauth.json` + 全局 `workbuddy-device-id` 首次启动自动迁移为池首账号(无缝)。/ **WorkBuddy single-provider multi-account pool + quota-guard auto-switch + per-account fingerprint (#571)**: under one `workbuddy-login` provider you can log into multiple accounts forming a pool, each with an **independent device fingerprint** (per-account `X-Device-Id` to avoid gateway risk-control correlation); the account list shows masked phone numbers (e.g. `183****5600`) instead of unreadable uids, with manual "set active" / "remove". **Quota guard**: a background task (≥60s throttle) queries each account's `get-user-resource` remaining credits; when an account's total remaining drops below the threshold (default 20, configurable) it is marked exhausted and the sticky selector auto-switches — transparent to Codex (independent of the quota-panel toggle). **Reactive failover**: when the selected account's refresh token is rejected or its credential is lost, it is marked with a 5min backoff and the next pool account is tried; the quota guard marks 1h backoff on 401/403 (auth failure) — both paths close the loop so a single dead account no longer stalls the whole pool. The legacy single-file `workbuddy-oauth.json` + global `workbuddy-device-id` auto-migrate into the pool's first account on first launch (seamless).
8+
9+
**流程**:merge 收尾移除 e5(build `.app` + 转主仓 `dist/mac/` 步骤),发版不再自动 build。/ **Process**: the merge wrap-up drops step e5 (build `.app` + copy to `dist/mac/`); releases no longer auto-build.
10+
511
## v2.4.1
612

713
**Antigravity 接入 superpowers 强约束插件(#555 / #556)**:把 obra/superpowers(强约束 skill 方法论,现为正式 Codex 插件)完整接入 Antigravity(Gemini)灰色提供商 —— vendored 插件落 `~/.codex/plugins` + 个人 marketplace.json + `config.toml [plugins] enabled`,SessionStart hook 做 bootstrap,目的是强约束 Antigravity / Gemini 做 coding agent 时易超范围 / 假完成 / 乱猜的行为。隐藏高级开关 `antigravitySuperpowersEnabled`(随显示灰色提供商一起出现、默认开;检测到用户已自行安装则默认关)。含 codex review 的 3 条 P2 修复。/ **Antigravity gains the superpowers constraint plugin (#555 / #556)**: fully integrates obra/superpowers (the strong-constraint skill methodology, now a first-class Codex plugin) into the Antigravity (Gemini) gray provider — the plugin is vendored into `~/.codex/plugins` with a personal marketplace.json + `config.toml [plugins] enabled`, bootstrapped by a SessionStart hook, to rein in Antigravity / Gemini's tendency to exceed scope / fake completion / guess when acting as a coding agent. A hidden advanced toggle `antigravitySuperpowersEnabled` (shown with gray providers, on by default; off if a user install is detected) gates it. Includes 3 P2 fixes from codex review.

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Codex App Transfer is a lightweight desktop config + forwarding tool for the **O
2828

2929
After starting forwarding, Codex App talks to this tool at `127.0.0.1:18080`. Closing the window minimizes the app to the system tray; right-click the tray icon and choose "Exit" to fully quit.
3030

31-
Current version **v2.4.1** (see [Changelog](CHANGELOG.md) and [Releases](https://github.com/Cmochance/codex-app-transfer/releases)).
31+
Current version **v2.4.2** (see [Changelog](CHANGELOG.md) and [Releases](https://github.com/Cmochance/codex-app-transfer/releases)).
3232

3333
## Preview
3434

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Codex App Transfer 是一个面向 **OpenAI Codex APP** 的轻量桌面配置 +
2828

2929
启动转发后,Codex APP 通过本机 `127.0.0.1:18080` 与本工具通信。关闭窗口会缩到系统托盘继续运行,右键托盘"退出"才完全退出。
3030

31-
当前版本 **v2.4.1**(详见 [Changelog](CHANGELOG.md)[Releases](https://github.com/Cmochance/codex-app-transfer/releases))。
31+
当前版本 **v2.4.2**(详见 [Changelog](CHANGELOG.md)[Releases](https://github.com/Cmochance/codex-app-transfer/releases))。
3232

3333
## 界面预览
3434

release-notes/v2.4.2.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Codex App Transfer v2.4.2
2+
3+
## 中文
4+
5+
### WorkBuddy 多账号池 + 配额守护自动切换 + 反应式失败转移
6+
7+
`workbuddy-login` provider 增加多账号池能力:单 provider 下登录多个账号,配额守护自动切换,每账号独立设备指纹隔离风控,对 Codex 透明。
8+
9+
- 多账号池:同一 `workbuddy-login` provider 下登录多个账号组成池,每账号独立 `X-Device-Id`(避免网关风控关联多账号同设备);账号列表显示脱敏手机号(如 `183****5600`)替代不可读 uid,可手动设为当前 / 移除。
10+
- 配额守护:后台每 ≥60s 查各账号 `get-user-resource` 剩余积分,某账号总剩余低于阈值(默认 20,设置项可调)即标记耗尽、自动 sticky 切到下一个有额度账号;独立于额度面板开关,面板关也跑;全耗尽兜底选最快解禁账号。
11+
- 反应式失败转移:选中账号 refresh token 被网关拒或凭证丢失时,标记 5min 退避并重试池里下一个账号;配额守护遇 401/403 标记 1h 退避。两条路径闭环,单账号失效不再撞死整个池。
12+
- 迁移:老单文件 `workbuddy-oauth.json` + 全局 `workbuddy-device-id` 首次启动自动迁移为池首账号,无缝。
13+
14+
验证:`cargo test` gemini_oauth 147 + src-tauri 292 全绿;`vue-tsc --noEmit` 0 错;CI 全绿;3 轮 code review 意见全部 resolved。
15+
16+
## English
17+
18+
### WorkBuddy multi-account pool + quota-guard auto-switch + reactive failover
19+
20+
Adds multi-account pool support for `workbuddy-login`: multiple accounts under one provider, automatic quota-guard switching, per-account device-fingerprint isolation, transparent to Codex.
21+
22+
- Multi-account pool: log into multiple accounts under one `workbuddy-login` provider, each with an independent `X-Device-Id` (avoids gateway risk-control correlating accounts on the same device); the account list shows masked phone numbers (e.g. `183****5600`) instead of unreadable uids, with manual set-active / remove.
23+
- Quota guard: a background task (≥60s throttle) queries each account's `get-user-resource` remaining credits; when an account's total remaining drops below the threshold (default 20, configurable) it is marked exhausted and the sticky selector auto-switches to the next account with quota; independent of the quota-panel toggle, runs even when the panel is off; when all are exhausted it falls back to the soonest-unblocking account.
24+
- Reactive failover: when the selected account's refresh token is rejected or its credential is lost, it is marked with a 5min backoff and the next pool account is tried; the quota guard marks 1h backoff on 401/403. Both paths close the loop so a single dead account no longer stalls the whole pool.
25+
- Migration: the legacy single-file `workbuddy-oauth.json` + global `workbuddy-device-id` auto-migrate into the pool's first account on first launch, seamlessly.
26+
27+
Verification: `cargo test` gemini_oauth 147 + src-tauri 292 all green; `vue-tsc --noEmit` 0 errors; CI all green; 3 rounds of code review all resolved.

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "codex-app-transfer"
3-
version = "2.4.1"
3+
version = "2.4.2"
44
description = "Codex App Transfer - Tauri 2 shell"
55
edition.workspace = true
66
rust-version.workspace = true

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "Codex App Transfer",
4-
"version": "2.4.1",
4+
"version": "2.4.2",
55
"identifier": "store.alyse.codex-app-transfer",
66
"build": {
77
"frontendDist": "../frontend/dist",

0 commit comments

Comments
 (0)