VibesOS upload-dmg
Upload the latest desktop DMG and update artifacts to install.vibesos.com. Use when the user says "upload the DMG", "update install link", "push new DMG", or "release desktop app".
install
source · Clone the upstream repo
git clone https://github.com/popmechanic/VibesOS
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/popmechanic/VibesOS "$T" && mkdir -p ~/.claude/skills && cp -r "$T/vibes-desktop/build/stable-macos-arm64/VibesOS.app/Contents/Resources/vibes-plugin/skills/upload-dmg" ~/.claude/skills/popmechanic-vibesos-upload-dmg && rm -rf "$T"
manifest:
vibes-desktop/build/stable-macos-arm64/VibesOS.app/Contents/Resources/vibes-plugin/skills/upload-dmg/SKILL.mdsource content
Upload DMG and Update Artifacts to install.vibesos.com
Upload the latest built DMG and auto-updater artifacts to the install worker's R2 bucket.
Steps
- Read the version from plugin.json:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}" VERSION=$(jq -r .version "$VIBES_ROOT/.claude-plugin/plugin.json") echo "Version: $VERSION"
- Verify the DMG and update artifacts exist:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}" ARTIFACTS="$VIBES_ROOT/vibes-desktop/artifacts" DMG_PATH="$ARTIFACTS/stable-macos-arm64-VibesOS.dmg" if [ ! -f "$DMG_PATH" ]; then echo "ERROR: DMG not found at $DMG_PATH — run 'bash scripts/build-desktop.sh' first" exit 1 fi ls -lh "$DMG_PATH" # Check for update artifacts (optional — first build with baseUrl won't have them) UPDATE_JSON="$ARTIFACTS/stable-macos-arm64-update.json" UPDATE_TAR="$ARTIFACTS/stable-macos-arm64-VibesOS.app.tar.zst" [ -f "$UPDATE_JSON" ] && echo "Found: $(basename $UPDATE_JSON)" || echo "No update.json (first build?)" [ -f "$UPDATE_TAR" ] && echo "Found: $(basename $UPDATE_TAR) ($(ls -lh "$UPDATE_TAR" | awk '{print $5}'))" || echo "No .tar.zst (first build?)" PATCH_COUNT=$(ls "$ARTIFACTS"/*.patch 2>/dev/null | wc -l | tr -d ' ') echo "Patch files: $PATCH_COUNT"
- Upload the DMG:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}" VERSION=$(jq -r .version "$VIBES_ROOT/.claude-plugin/plugin.json") DMG_PATH="$VIBES_ROOT/vibes-desktop/artifacts/stable-macos-arm64-VibesOS.dmg" UPLOAD_KEY=$(grep INSTALL_UPLOAD_KEY "$VIBES_ROOT/.env" | cut -d= -f2) curl -X PUT "https://install.vibesos.com/upload?filename=VibesOS-${VERSION}.dmg" \ -H "X-Upload-Key: ${UPLOAD_KEY}" \ --data-binary "@${DMG_PATH}" \ --progress-bar -w "\nHTTP %{http_code}\n"
- Upload update artifacts (update.json and .tar.zst):
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}" ARTIFACTS="$VIBES_ROOT/vibes-desktop/artifacts" UPLOAD_KEY=$(grep INSTALL_UPLOAD_KEY "$VIBES_ROOT/.env" | cut -d= -f2) UPDATE_JSON="$ARTIFACTS/stable-macos-arm64-update.json" UPDATE_TAR="$ARTIFACTS/stable-macos-arm64-VibesOS.app.tar.zst" if [ -f "$UPDATE_JSON" ]; then echo "Uploading update.json..." curl -X PUT "https://install.vibesos.com/upload?filename=updates/stable-macos-arm64-update.json" \ -H "X-Upload-Key: ${UPLOAD_KEY}" \ --data-binary "@${UPDATE_JSON}" \ -s -w "HTTP %{http_code}\n" else echo "Skipping update.json (not found)" fi if [ -f "$UPDATE_TAR" ]; then echo "Uploading .tar.zst..." curl -X PUT "https://install.vibesos.com/upload?filename=updates/stable-macos-arm64-VibesOS.app.tar.zst" \ -H "X-Upload-Key: ${UPLOAD_KEY}" \ --data-binary "@${UPDATE_TAR}" \ --progress-bar -w "\nHTTP %{http_code}\n" else echo "Skipping .tar.zst (not found)" fi
- Upload patch files (if any):
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}" ARTIFACTS="$VIBES_ROOT/vibes-desktop/artifacts" UPLOAD_KEY=$(grep INSTALL_UPLOAD_KEY "$VIBES_ROOT/.env" | cut -d= -f2) PATCHES=$(ls "$ARTIFACTS"/*.patch 2>/dev/null) if [ -n "$PATCHES" ]; then for PATCH in $PATCHES; do BASENAME=$(basename "$PATCH") echo "Uploading patch: $BASENAME..." curl -X PUT "https://install.vibesos.com/upload?filename=updates/${BASENAME}" \ -H "X-Upload-Key: ${UPLOAD_KEY}" \ --data-binary "@${PATCH}" \ -s -w "HTTP %{http_code}\n" done else echo "No patch files to upload" fi
- Confirm the upload by reporting the version and download URL:
Uploaded VibesOS-{VERSION}.dmg + update artifacts Download: https://install.vibesos.com Update check: https://install.vibesos.com/updates/stable-macos-arm64-update.json