project-pn-macos-dmg-package
Package the Project PN macOS desktop app as a Tauri DMG for direct distribution. Use when the user asks to build, package, rebuild, verify, or distribute the macOS .dmg, especially when setting EXPO_PUBLIC_API_BASE_URL to an IP/domain API endpoint and providing the macOS unidentified-developer trust
Install
mkdir -p .claude/skills/project-pn-macos-dmg-package && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15992" && unzip -o skill.zip -d .claude/skills/project-pn-macos-dmg-package && rm skill.zipInstalls to .claude/skills/project-pn-macos-dmg-package
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Package the Project PN macOS desktop app as a Tauri DMG for direct distribution. Use when the user asks to build, package, rebuild, verify, or distribute the macOS .dmg, especially when setting EXPO_PUBLIC_API_BASE_URL to an IP/domain API endpoint and providing the macOS unidentified-developer trust command.About this skill
Project PN macOS DMG Package
Overview
Build the Project PN Expo Web + Tauri macOS app into a .dmg, verify that the bundled frontend points at the intended API base URL, and return the install/trust command for unsigned testing builds.
Workflow
- Work from the repo root:
cd /Users/hyungjuyu/Projects/iOS/Project_PN
- Inspect packaging config before building:
sed -n '1,220p' frontend/package.json
sed -n '1,240p' frontend/src-tauri/tauri.conf.json
sed -n '1,120p' frontend/src/config.ts
- Choose the API base URL.
- Use the URL the user provides.
- If the user says to use the current test IP and gives no newer value, use
http://124.59.225.59:53412. - This URL must match the backend
ALLOWED_ORIGINSpolicy for Tauri. Includetauri://localhostandhttp://tauri.localhoston the backend for desktop builds.
- Build the DMG from
frontend/:
cd frontend
EXPO_PUBLIC_API_BASE_URL=http://124.59.225.59:53412 npm run desktop:build
Replace the URL with the selected API base URL. The command writes frontend/dist and frontend/src-tauri/target.
- If Tauri builds the
.appbut DMG creation fails with:
hdiutil: create failed - Device not configured
rerun only the generated DMG step with escalation, because macOS hdiutil needs disk-image device access outside the sandbox:
src-tauri/target/release/bundle/dmg/bundle_dmg.sh \
--volname 'Project PN' \
--volicon src-tauri/target/release/bundle/dmg/icon.icns \
--icon 'Project PN.app' 128 170 \
--app-drop-link 372 170 \
--no-internet-enable \
'src-tauri/target/release/bundle/dmg/Project PN_1.0.2_aarch64.dmg' \
'src-tauri/target/release/bundle/macos'
Use the actual version/filename from the current build output if it differs from 1.0.2.
- Verify the result:
ls -lh 'src-tauri/target/release/bundle/dmg/Project PN_1.0.2_aarch64.dmg'
shasum -a 256 'src-tauri/target/release/bundle/dmg/Project PN_1.0.2_aarch64.dmg'
rg -n '124\.59\.225\.59|EXPO_PUBLIC_API_BASE_URL' dist 'src-tauri/target/release/bundle/macos/Project PN.app/Contents/Resources'
Adjust the rg pattern to match the selected API host.
- Report the DMG path, API base URL, SHA-256, and install/trust command.
User Install Command
For unsigned/unnotarized testing builds, provide:
sudo xattr -rd com.apple.quarantine "/Applications/Project PN.app"
open "/Applications/Project PN.app"
Do not suggest globally disabling Gatekeeper. Mention that signing and notarization are preferred for public distribution.