From 8da3e383133b9889ba2029897aa89c27acb17154 Mon Sep 17 00:00:00 2001
From: wangnov <48670012+Wangnov@users.noreply.github.com>
Date: Fri, 19 Jun 2026 18:56:12 +0800
Subject: [PATCH] chore(release): bump version to 0.1.22
---
docs/releases/v0.1.22.md | 42 +++++++++++++++++++++++++++++++++++++++
package-lock.json | 4 ++--
package.json | 2 +-
src-tauri/Cargo.lock | 2 +-
src-tauri/Cargo.toml | 2 +-
src-tauri/tauri.conf.json | 2 +-
6 files changed, 48 insertions(+), 6 deletions(-)
create mode 100644 docs/releases/v0.1.22.md
diff --git a/docs/releases/v0.1.22.md b/docs/releases/v0.1.22.md
new file mode 100644
index 0000000..abcfc0e
--- /dev/null
+++ b/docs/releases/v0.1.22.md
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+> 这一版修复了应用内更新在老版 Windows curl 和 macOS Gatekeeper 文件句柄耗尽时的失败提示与兼容性。
+> This release fixes in-app update compatibility and messaging when older Windows curl builds or macOS Gatekeeper file limits get in the way.
+
+## 🐛 修复 · Fixes
+
+- **Windows 下载兼容性**:更新器仍优先使用现代 `--no-progress-meter`,但当系统里的老版 curl 明确不支持这个参数时,会自动用兼容参数重试,避免安装/更新在真正联网前就中断。
+ Windows download compatibility: the updater still prefers modern `--no-progress-meter`, but if an older system curl rejects that flag it retries with a compatible silent mode instead of stopping before the download really starts.
+- **macOS 安全校验更稳**:Gatekeeper 校验前会尝试提高当前进程的文件句柄软限制,减少大型 `.app` 校验时遇到 `Too many open files` 的概率。
+ macOS security checks are more resilient: before running Gatekeeper assessment, the app now tries to raise its process file-descriptor soft limit, reducing `Too many open files` failures for larger `.app` bundles.
+- **macOS 失败提示更准确**:如果 Gatekeeper 仍然报文件句柄耗尽,提示会说明是系统校验资源不足且不会替换文件,不再误写成 bundle 本身被拒绝。
+ macOS failure messaging is clearer: if Gatekeeper still reports file-descriptor exhaustion, the error now says the assessment could not complete and no files were replaced, instead of incorrectly saying the bundle was rejected.
+
+## 📦 安装与升级 · Install & Upgrade
+
+**已经安装?** 打开应用即可收到本次更新——macOS 只下载版本间的增量,校验失败自动回滚。
+**Already installed?** The app offers this update in-app — macOS pulls only the delta, with automatic rollback.
+
+| 平台 · Platform | 下载 · Download(国内直连 · China-reachable) |
+| --- | --- |
+| macOS · Apple Silicon | [CodexAppManager_aarch64.dmg](https://codexapp.agentsmirror.com/manager/latest/CodexAppManager_aarch64.dmg) |
+| macOS · Intel | [CodexAppManager_x86_64.dmg](https://codexapp.agentsmirror.com/manager/latest/CodexAppManager_x86_64.dmg) |
+| Windows · x64 | [CodexAppManager_x64-setup.exe](https://codexapp.agentsmirror.com/manager/latest/CodexAppManager_x64-setup.exe) |
+
+**Windows 签名状态:** `CodexAppManager_x64-setup.exe` 当前没有 Authenticode 代码签名,首次运行可能出现 SmartScreen 提示;`.sig` / `latest.json` 里的 Tauri updater 签名只用于应用内自更新的字节校验,不代表 Windows 发行者信任。详情见 [Windows signing and verification](https://github.com/Wangnov/Codex-App-Manager/blob/main/docs/windows-signing.md)。
+**Windows signing status:** `CodexAppManager_x64-setup.exe` is not Authenticode-signed yet, so SmartScreen may warn on first run; the Tauri updater signature in `.sig` / `latest.json` verifies in-app update bytes only and is not Windows publisher trust. See [Windows signing and verification](https://github.com/Wangnov/Codex-App-Manager/blob/main/docs/windows-signing.md).
+
+**核验下载:** 本页 Assets 带有 `SHA256SUMS`;Windows 用 `Get-FileHash .\CodexAppManager_x64-setup.exe -Algorithm SHA256`,macOS 用 `shasum -a 256 CodexAppManager_aarch64.dmg`,再与 `SHA256SUMS` 比对。
+**Verify downloads:** This release includes `SHA256SUMS` in Assets; on Windows run `Get-FileHash .\CodexAppManager_x64-setup.exe -Algorithm SHA256`, and on macOS run `shasum -a 256 CodexAppManager_aarch64.dmg`, then compare with `SHA256SUMS`.
+
+```bash
+# macOS · Homebrew
+brew install --cask wangnov/tap/codex-app-manager
+```
+
+> 镜像直链恒指向**最新**版本;如需本页对应的历史版本,请使用下方 Assets。`.app.tar.gz` / `.sig` / `latest.json` 是自动更新器的工件,手动安装请选 `.dmg` / `.exe`。
+> Mirror permalinks always resolve to the **latest** release — for this exact version use the assets below. `.app.tar.gz` / `.sig` / `latest.json` belong to the auto-updater; pick the `.dmg` / `.exe` for manual installs.
diff --git a/package-lock.json b/package-lock.json
index 2fec8d7..e988914 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "codex-app-manager",
- "version": "0.1.21",
+ "version": "0.1.22",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "codex-app-manager",
- "version": "0.1.21",
+ "version": "0.1.22",
"dependencies": {
"@gsap/react": "^2.1.2",
"@tauri-apps/api": "2.11.0",
diff --git a/package.json b/package.json
index 9ebf3f4..a01c19d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "codex-app-manager",
- "version": "0.1.21",
+ "version": "0.1.22",
"private": true,
"type": "module",
"scripts": {
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 9d9d5d2..4d7df73 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -609,7 +609,7 @@ dependencies = [
[[package]]
name = "codex-app-manager"
-version = "0.1.21"
+version = "0.1.22"
dependencies = [
"codex-mac-engine",
"codex-win-engine",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index ee36e04..0bfcfb3 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -6,7 +6,7 @@ name = "codex-app-manager"
# would otherwise ride along in the production app. default-run is kept
# defensively to pin `cargo run` to the app should another src/bin/* be added.
default-run = "codex-app-manager"
-version = "0.1.21"
+version = "0.1.22"
description = "A cross-platform manager for installing and updating mirrored official Codex desktop app packages."
authors = ["Wangnov"]
edition = "2021"
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 0e34983..e6fdefc 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -2,7 +2,7 @@
"$schema": "https://schema.tauri.app/config/2",
"productName": "Codex App Manager",
"mainBinaryName": "codex-app-manager",
- "version": "0.1.21",
+ "version": "0.1.22",
"identifier": "io.github.wangnov.codexappmanager",
"build": {
"beforeDevCommand": "npm run dev",