Skip to content

Commit 09482e8

Browse files
joe0731claude
andcommitted
ci: update release workflow for Tauri v2 + Rust build
Replace Flutter build with Node.js + Rust + Tauri. Produces .dmg and .zip for macOS arm64 with SHA-256 checksums. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7e7ea4f commit 09482e8

1 file changed

Lines changed: 42 additions & 28 deletions

File tree

.github/workflows/release.yml

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,54 +15,57 @@ jobs:
1515
- name: Checkout
1616
uses: actions/checkout@v4
1717

18-
- name: Setup Flutter
19-
uses: subosito/flutter-action@v2
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
2020
with:
21-
channel: stable
22-
cache: true
21+
node-version: 20
22+
cache: npm
2323

24-
- name: Enable macOS desktop
25-
run: flutter config --enable-macos-desktop
24+
- name: Setup Rust
25+
uses: dtolnay/rust-toolchain@stable
2626

27-
- name: Install dependencies
28-
run: flutter pub get
29-
30-
- name: Run analyze
31-
run: flutter analyze --no-fatal-infos
27+
- name: Rust cache
28+
uses: swatinem/rust-cache@v2
29+
with:
30+
workspaces: src-tauri
3231

33-
- name: Build macOS release
34-
run: flutter build macos --release
32+
- name: Install frontend dependencies
33+
run: npm ci
3534

3635
- name: Extract version from tag
3736
id: version
3837
run: echo "tag=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
3938

39+
- name: Build Tauri app
40+
run: npx tauri build
41+
4042
- name: Verify build output
4143
run: |
42-
APP_PATH="build/macos/Build/Products/Release/Tapir.app"
44+
APP_PATH="src-tauri/target/release/bundle/macos/Tapir.app"
45+
DMG_PATH="src-tauri/target/release/bundle/dmg"
4346
if [ ! -d "$APP_PATH" ]; then
44-
echo "::error::build output not found at $APP_PATH"
47+
echo "::error::Tapir.app not found at $APP_PATH"
4548
exit 1
4649
fi
47-
echo "build output verified: $APP_PATH"
50+
echo "Tapir.app verified"
4851
ls -lh "$APP_PATH"
52+
ls -lh "$DMG_PATH"/*.dmg || true
4953
50-
- name: Create DMG
54+
- name: Rename DMG with version
5155
run: |
52-
hdiutil create -volname "Tapir" \
53-
-srcfolder build/macos/Build/Products/Release/Tapir.app \
54-
-ov -format UDZO \
55-
Tapir-${{ steps.version.outputs.tag }}.dmg
56+
DMG_SRC=$(ls src-tauri/target/release/bundle/dmg/*.dmg | head -1)
57+
cp "$DMG_SRC" "Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.dmg"
5658
5759
- name: Compress .app as ZIP
5860
run: |
59-
cd build/macos/Build/Products/Release
60-
zip -r -y "$GITHUB_WORKSPACE/Tapir-${{ steps.version.outputs.tag }}-macOS.zip" Tapir.app
61+
cd src-tauri/target/release/bundle/macos
62+
zip -r -y "$GITHUB_WORKSPACE/Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.zip" Tapir.app
6163
6264
- name: Generate checksums
6365
run: |
64-
shasum -a 256 Tapir-${{ steps.version.outputs.tag }}.dmg \
65-
Tapir-${{ steps.version.outputs.tag }}-macOS.zip \
66+
shasum -a 256 \
67+
Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.dmg \
68+
Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.zip \
6669
> checksums-sha256.txt
6770
echo "--- SHA-256 checksums ---"
6871
cat checksums-sha256.txt
@@ -71,8 +74,19 @@ jobs:
7174
uses: softprops/action-gh-release@v2
7275
with:
7376
name: "Tapir ${{ steps.version.outputs.tag }}"
74-
generate_release_notes: true
77+
body: |
78+
## Tapir ${{ steps.version.outputs.tag }}
79+
80+
macOS keyboard automation tool — send automated key events to any target window.
81+
82+
**Built with:** Tauri v2 (Rust) + React + TypeScript
83+
**Requires:** macOS 14.0+ (Sonoma)
84+
**Sandbox:** Enabled (App Store compatible)
85+
86+
### Install
87+
1. Download `.dmg`, open it, drag `Tapir.app` to Applications
88+
2. On first launch: System Settings → Privacy & Security → Accessibility → enable Tapir
7589
files: |
76-
Tapir-${{ steps.version.outputs.tag }}.dmg
77-
Tapir-${{ steps.version.outputs.tag }}-macOS.zip
90+
Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.dmg
91+
Tapir-${{ steps.version.outputs.tag }}-macOS-arm64.zip
7892
checksums-sha256.txt

0 commit comments

Comments
 (0)