Skip to content

Commit d756930

Browse files
committed
Release OpenPet v0.1.1
1 parent 63f9a70 commit d756930

20 files changed

Lines changed: 1404 additions & 51 deletions

.github/workflows/release.yml

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,30 @@ permissions:
1010

1111
jobs:
1212
build:
13-
name: Build ${{ matrix.platform }}
13+
name: Build ${{ matrix.name }}
1414
runs-on: ${{ matrix.platform }}
15+
env:
16+
MACOS_DISTRIBUTION_READY: ${{ secrets.APPLE_CERTIFICATE != '' && secrets.APPLE_CERTIFICATE_PASSWORD != '' && secrets.KEYCHAIN_PASSWORD != '' && secrets.APPLE_ID != '' && secrets.APPLE_PASSWORD != '' && secrets.APPLE_TEAM_ID != '' }}
1517
strategy:
1618
fail-fast: false
1719
matrix:
1820
include:
19-
- platform: ubuntu-22.04
21+
- name: Linux x64
22+
platform: ubuntu-22.04
2023
args: ""
21-
- platform: macos-latest
22-
args: ""
23-
- platform: windows-latest
24+
rust_target: ""
25+
- name: macOS Apple Silicon
26+
platform: macos-latest
27+
args: "--target aarch64-apple-darwin"
28+
rust_target: aarch64-apple-darwin
29+
- name: macOS Intel
30+
platform: macos-latest
31+
args: "--target x86_64-apple-darwin"
32+
rust_target: x86_64-apple-darwin
33+
- name: Windows x64
34+
platform: windows-latest
2435
args: ""
36+
rust_target: ""
2537

2638
steps:
2739
- name: Checkout
@@ -53,17 +65,75 @@ jobs:
5365
- name: Set up Rust
5466
uses: dtolnay/rust-toolchain@stable
5567

68+
- name: Add Rust target
69+
if: matrix.rust_target != ''
70+
run: rustup target add ${{ matrix.rust_target }}
71+
72+
- name: Import Apple Developer ID certificate
73+
if: startsWith(matrix.platform, 'macos') && env.MACOS_DISTRIBUTION_READY == 'true'
74+
env:
75+
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
76+
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
77+
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
78+
run: |
79+
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
80+
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
81+
security default-keychain -s build.keychain
82+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
83+
security set-keychain-settings -t 3600 -u build.keychain
84+
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
85+
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
86+
87+
CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Developer ID Application" | head -n 1 || true)
88+
if [ -z "$CERT_INFO" ]; then
89+
echo "::error::No Developer ID Application certificate found in the imported keychain."
90+
exit 1
91+
fi
92+
93+
CERT_ID=$(echo "$CERT_INFO" | sed -E 's/.*"([^"]+)".*/\1/')
94+
echo "APPLE_SIGNING_IDENTITY=$CERT_ID" >> "$GITHUB_ENV"
95+
96+
- name: Configure Apple notarization credentials
97+
if: startsWith(matrix.platform, 'macos') && env.MACOS_DISTRIBUTION_READY == 'true'
98+
env:
99+
APPLE_ID: ${{ secrets.APPLE_ID }}
100+
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
101+
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
102+
run: |
103+
{
104+
printf 'APPLE_ID=%s\n' "$APPLE_ID"
105+
printf 'APPLE_PASSWORD=%s\n' "$APPLE_PASSWORD"
106+
printf 'APPLE_TEAM_ID=%s\n' "$APPLE_TEAM_ID"
107+
} >> "$GITHUB_ENV"
108+
109+
- name: Configure ad-hoc macOS signing fallback
110+
if: startsWith(matrix.platform, 'macos') && env.MACOS_DISTRIBUTION_READY != 'true'
111+
run: |
112+
echo "APPLE_SIGNING_IDENTITY=-" >> "$GITHUB_ENV"
113+
echo "::warning::macOS Developer ID signing/notarization secrets are incomplete. Building ad-hoc signed CI artifacts that Gatekeeper may block."
114+
56115
- name: Build Tauri bundles
57116
uses: tauri-apps/tauri-action@v0
58117
env:
59118
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
119+
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
120+
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
60121
with:
61122
args: ${{ matrix.args }}
62123
tagName: ${{ github.ref_name }}
63124
releaseName: OpenPet ${{ github.ref_name }}
64125
releaseBody: |
65126
Download the installer or bundle for your platform from the assets below.
66127
67-
Development and manual verification currently happen on Windows. macOS and Linux artifacts are built by CI but have not been manually tested by the developer yet.
128+
Development and manual verification currently happen on Windows.
129+
130+
macOS notes:
131+
- Normal launch of downloaded macOS apps requires Developer ID signing and Apple notarization.
132+
- This workflow produces notarized macOS artifacts only when APPLE_CERTIFICATE, APPLE_CERTIFICATE_PASSWORD, KEYCHAIN_PASSWORD, APPLE_ID, APPLE_PASSWORD, and APPLE_TEAM_ID repository secrets are configured.
133+
- If those secrets are missing, macOS artifacts are ad-hoc signed CI test builds and Gatekeeper may report that OpenPet is damaged or cannot be verified.
134+
- Apple Silicon and Intel builds are separate assets; download the asset matching your Mac.
135+
136+
Linux notes:
137+
- Linux .deb, .rpm, and AppImage artifacts are built by CI but have not been manually runtime-tested by the developer yet.
68138
releaseDraft: true
69139
prerelease: false

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ src-tauri/target/
44
.agents/
55
.codex/
66
.trellis/
7+
.workflow/
78
AGENTS.md
89
.playwright-mcp/
910
codex-pet-runtime-settings-ui*.png

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@ GitHub: <https://github.com/X-T-E-R/OpenPet>
1212

1313
## Quick Start
1414

15-
For most users, install a packaged build for your platform from [GitHub Releases](https://github.com/X-T-E-R/OpenPet/releases) and launch OpenPet. The pet appears on your desktop, can be dragged to the position you want, and can be configured from the pet right-click menu or the app tray/menu.
15+
For most Windows users, install a packaged build from [GitHub Releases](https://github.com/X-T-E-R/OpenPet/releases) and launch OpenPet. The pet appears on your desktop, can be dragged to the position you want, and can be configured from the pet right-click menu or the app tray/menu.
1616

1717
Release builds are generated for Windows, macOS, and Linux. Development and manual verification currently happen on Windows; macOS and Linux packages are built by CI but have not been manually tested by the developer yet.
1818

19+
### Platform Status
20+
21+
- Windows: primary manually verified platform.
22+
- macOS: CI builds Apple Silicon and Intel artifacts separately. Normal launch of a downloaded macOS app requires Apple Developer ID signing and notarization; if the release was built without those credentials, Gatekeeper may show that OpenPet is damaged or cannot be verified. Treat unsigned macOS artifacts as tester builds, not production-ready distribution.
23+
- Linux: CI builds `.deb`, `.rpm`, and `.AppImage` artifacts on Ubuntu, but runtime behavior has not been manually verified yet.
24+
1925
To run from source:
2026

2127
```powershell
@@ -153,6 +159,8 @@ pnpm release:check
153159
pnpm release:bundle
154160
```
155161

162+
macOS release distribution needs Apple Developer ID signing and notarization. Configure `APPLE_CERTIFICATE`, `APPLE_CERTIFICATE_PASSWORD`, `KEYCHAIN_PASSWORD`, `APPLE_ID`, `APPLE_PASSWORD`, and `APPLE_TEAM_ID` repository secrets before publishing macOS artifacts for normal end users; otherwise the workflow falls back to ad-hoc signed CI artifacts that Gatekeeper may block.
163+
156164
## Safety And Rights
157165

158166
- The control API defaults to `127.0.0.1` and is intended for tools running on the same machine. Use `0.0.0.0` only for trusted local-network workflows.

README.zh-CN.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@ GitHub:<https://github.com/X-T-E-R/OpenPet>
1212

1313
## 快速开始
1414

15-
普通用户可以从 [GitHub Releases](https://github.com/X-T-E-R/OpenPet/releases) 下载对应平台的打包版本后直接启动 OpenPet。桌宠会显示在桌面上,可以拖到你想要的位置,设置页可以从桌宠右键菜单或应用托盘 / 菜单打开。
15+
Windows 普通用户可以从 [GitHub Releases](https://github.com/X-T-E-R/OpenPet/releases) 下载打包版本后直接启动 OpenPet。桌宠会显示在桌面上,可以拖到你想要的位置,设置页可以从桌宠右键菜单或应用托盘 / 菜单打开。
1616

1717
Release 会为 Windows、macOS 和 Linux 生成构建产物。当前开发与手动验证主要在 Windows 环境完成;macOS 和 Linux 包由 CI 构建,但开发者尚未手动测试。
1818

19+
### 平台状态
20+
21+
- Windows:当前主要手动验证平台。
22+
- macOS:CI 会分别构建 Apple Silicon 和 Intel 产物。macOS 从网络下载的应用要正常打开,需要 Apple Developer ID 签名和 Apple 公证;如果 release 构建时没有这些凭据,Gatekeeper 可能提示 OpenPet 已损坏或无法验证。
23+
- Linux:CI 会在 Ubuntu 上构建 `.deb``.rpm``.AppImage`,但运行行为尚未由开发者手动验证。
24+
1925
从源码运行:
2026

2127
```powershell
@@ -153,6 +159,8 @@ pnpm release:check
153159
pnpm release:bundle
154160
```
155161

162+
macOS 正式分发需要 Apple Developer ID 签名和公证。发布面向普通用户的 macOS 产物前,需要在仓库 secrets 配置 `APPLE_CERTIFICATE``APPLE_CERTIFICATE_PASSWORD``KEYCHAIN_PASSWORD``APPLE_ID``APPLE_PASSWORD``APPLE_TEAM_ID`;否则 workflow 会退回到 ad-hoc signed CI 测试产物,Gatekeeper 仍可能拦截。
163+
156164
## 安全与权利提醒
157165

158166
- 控制 API 默认绑定 `127.0.0.1`,适合由同一台机器上的工具调用。只有受信任的本地网络工作流需要时才使用 `0.0.0.0`

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openpet",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"private": true,
55
"type": "module",
66
"description": "OpenPet desktop runtime for Codex-compatible pet companions.",
@@ -19,6 +19,8 @@
1919
"dependencies": {
2020
"@tauri-apps/api": "^2.11.0",
2121
"@tauri-apps/plugin-dialog": "~2.7.1",
22+
"@tauri-apps/plugin-process": "^2.3.1",
23+
"@tauri-apps/plugin-updater": "^2.10.1",
2224
"react": "^19.2.5",
2325
"react-dom": "^19.2.5"
2426
},

pnpm-lock.yaml

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)