Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,40 @@ jobs:
npm run version:set -- "${version}"

- name: Build (${{ matrix.tauri_script }})
run: npm run ${{ matrix.tauri_script }}
shell: bash
env:
APPLE_SIGNING_IDENTITY_RAW: ${{ secrets.APPLE_SIGNING_IDENTITY }}
run: |
# macOS: sign the bundle so Gatekeeper doesn't reject downloads as
# "damaged". A completely unsigned .app (the old --no-sign) is
# refused outright on macOS Sequoia 15+ with NO "Open anyway" path;
# an ad-hoc signature (codesign --sign -) restores the open option.
# Use a real Developer ID when the APPLE_SIGNING_IDENTITY secret is
# configured, otherwise fall back to ad-hoc "-". (Mirrors the
# codex-app-transfer release.yml signing path.)
if [[ "${{ runner.os }}" == "macOS" ]]; then
if [[ -n "$APPLE_SIGNING_IDENTITY_RAW" ]]; then
export APPLE_SIGNING_IDENTITY="$APPLE_SIGNING_IDENTITY_RAW"
else
export APPLE_SIGNING_IDENTITY="-"
echo "::notice::macOS: no APPLE_SIGNING_IDENTITY secret — using ad-hoc identity (-)"
fi
fi
npm run ${{ matrix.tauri_script }}

- name: Verify macOS .app is codesigned
if: runner.os == 'macOS'
shell: bash
run: |
# Fail early if the bundle came out unsigned — an unsigned .app is
# exactly what shows "is damaged" on Sequoia with no way to open.
# Mirrors codex-app-transfer release.yml's codesign sanity check.
app="$(find src-tauri/target dist -type d -name 'codex_switch.app' -print -quit 2>/dev/null)"
if [[ -z "$app" ]]; then
echo "::error::no codex_switch.app found to verify"; exit 1
fi
echo "verifying codesign on: $app"
codesign --verify --deep --strict --verbose=2 "$app"

- name: Upload artifacts
uses: actions/upload-artifact@v4
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
## 1.5.12 - 2026-05-29

- Settings → Codex CLI path gains an **Auto-detect** button next to "Change". Unlike the existing path self-check (which trusts the cached / override path), it force-rescans every common install location plus PATH and verifies each candidate is actually runnable via `codex --version`. A lone runnable hit is applied immediately; several open the dialog with the verified candidates to pick from; none falls back to the manual dialog. Targets the two cases the self-check can't: auto-detection landed on a wrong / stale path, or the user doesn't know where to point it. Backed by a new `redetect_codex_cli_path` command that runs on the blocking pool (each candidate probe spawns a child) with a per-candidate timeout so a hung binary can't wedge the scan. macOS + Windows symmetric.
- macOS release builds are now **ad-hoc codesigned** instead of `--no-sign`. `--no-sign` left only the Rust linker's binary-level ad-hoc signature (`flags 0x20002 adhoc,linker-signed`) with no full bundle codesign, so `codesign --verify` reported "code has no resources but signature indicates they must be present" — a mismatched signature that macOS Sequoia 15+ flags as "is damaged" (no "Open anyway") once the download is quarantined. The release workflow now exports `APPLE_SIGNING_IDENTITY` (a real Developer ID when the secret is set, else ad-hoc `-`) so Tauri does a complete bundle codesign, plus a `codesign --verify --deep --strict` gate before upload. Downloads now open via the normal "unverified developer → Open anyway" flow.
- Linux `.deb` / `.AppImage` now actually attach to the release: the asset glob is recursive (`**/*`) so it matches the `bundle/deb/` and `bundle/appimage/` subdirectories the artifact preserves (#46).

## 1.5.11 - 2026-05-16

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"tauri:build:windows:portable": "npm run version:sync && tauri build --target x86_64-pc-windows-msvc --no-bundle",
"tauri:build:macos-dmg": "npm run tauri:build:macos-release",
"tauri:build:macos-app": "npm run version:sync && npm run macos:artifacts:prepare:app && tauri build --bundles app --no-sign && npm run macos:artifacts:finalize:app",
"tauri:build:macos-release": "npm run version:sync && npm run macos:artifacts:prepare:release && tauri build --bundles app,dmg --no-sign && npm run macos:pkg && npm run macos:artifacts:finalize:release"
"tauri:build:macos-release": "npm run version:sync && npm run macos:artifacts:prepare:release && tauri build --bundles app,dmg && npm run macos:pkg && npm run macos:artifacts:finalize:release"
},
"dependencies": {
"@tauri-apps/api": "2.10.1"
Expand Down
Loading