chore: add release script + use 16:10 aspect ratio for plugin screenshots

release.sh: build, package ZIP, tag, and create GitHub release in one command.
Screenshot slots now use 16:10 (matches Steam Deck's 1280x800 screen) with
object-contain so full-screen Deck captures fit without cropping.
This commit is contained in:
2026-06-28 23:01:34 +08:00
parent 4958220c55
commit 48758f4704
3 changed files with 156 additions and 2 deletions
+1 -1
View File
@@ -379,7 +379,7 @@ export function PluginPageClient() {
transition={{ delay: i * 0.05 }} transition={{ delay: i * 0.05 }}
className="rounded-xl border border-border bg-text/2 overflow-hidden flex flex-col" className="rounded-xl border border-border bg-text/2 overflow-hidden flex flex-col"
> >
<div className="relative aspect-video bg-gradient-to-br from-text/5 to-text/10 flex items-center justify-center"> <div className="relative aspect-[16/10] bg-gradient-to-br from-text/5 to-text/10 flex items-center justify-center">
{HAS_SCREENSHOT[shot.id] ? ( {HAS_SCREENSHOT[shot.id] ? (
// eslint-disable-next-line @next/next/no-img-element // eslint-disable-next-line @next/next/no-img-element
<img <img
+2 -1
View File
@@ -7,7 +7,8 @@
"build": "rollup -c", "build": "rollup -c",
"watch": "rollup -c -w", "watch": "rollup -c -w",
"build:zip": "rollup -c && ./scripts/build-zip.sh --no-build", "build:zip": "rollup -c && ./scripts/build-zip.sh --no-build",
"zip": "./scripts/build-zip.sh" "zip": "./scripts/build-zip.sh",
"release": "./scripts/release.sh"
}, },
"dependencies": { "dependencies": {
"@decky/api": "^1.1.3", "@decky/api": "^1.1.3",
+153
View File
@@ -0,0 +1,153 @@
#!/usr/bin/env bash
# Create a GitHub release for the DeckyVault Decky plugin with the
# installable ZIP attached.
#
# Usage:
# ./scripts/release.sh # uses version from package.json
# ./scripts/release.sh 1.1.0 # override version (also bumps package.json)
# ./scripts/release.sh --prerelease # mark as pre-release
# ./scripts/release.sh 1.1.0 --prerelease
#
# Prerequisites:
# - gh CLI installed and authenticated (gh auth login)
# - on the branch you want to tag (usually prod)
#
# What it does:
# 1. (optional) bumps plugins/decky-vault/package.json version
# 2. builds the plugin with rollup
# 3. packages the ZIP via scripts/build-zip.sh
# 4. creates a git tag vX.Y.Z (if missing) and pushes it
# 5. creates a GitHub release with release notes + the ZIP attached
set -euo pipefail
cd "$(dirname "$0")/.."
PLUGIN_DIR="$(pwd)"
VERSION=""
PRERELEASE=0
# ── Parse args ───────────────────────────────────────────────
for arg in "$@"; do
case "$arg" in
--prerelease) PRERELEASE=1 ;;
--help|-h)
sed -n '2,20p' "$0" | sed 's/^# \{0,1\}//'
exit 0 ;;
*)
if [[ -z "$VERSION" ]]; then
VERSION="$arg"
fi
;;
esac
done
# ── Resolve version ──────────────────────────────────────────
if [[ -z "$VERSION" ]]; then
VERSION=$(node -p "require('./package.json').version")
fi
echo " Releasing DeckyVault plugin v${VERSION}"
# ── Bump package.json if version differs ─────────────────────
CURRENT=$(node -p "require('./package.json').version")
if [[ "$VERSION" != "$CURRENT" ]]; then
echo " Bumping package.json ${CURRENT}${VERSION}"
node -e "
const fs = require('fs');
const p = JSON.parse(fs.readFileSync('package.json','utf8'));
p.version = '${VERSION}';
fs.writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n');
"
git add package.json
git commit -m "chore: bump plugin version to ${VERSION}" >/dev/null
echo " committed version bump"
fi
# ── Build + package ──────────────────────────────────────────
echo " Building plugin…"
bun run build >/dev/null 2>&1
echo " Packaging ZIP…"
./scripts/build-zip.sh --no-build >/dev/null
ZIP_NAME="plugin-v${VERSION}.zip"
ZIP_PATH="releases/${ZIP_NAME}"
if [[ ! -f "$ZIP_PATH" ]]; then
echo "✗ ZIP not found at $ZIP_PATH" >&2
exit 1
fi
echo " $(du -h "$ZIP_PATH" | cut -f1)$ZIP_PATH"
# ── Git tag ──────────────────────────────────────────────────
TAG="v${VERSION}"
if git rev-parse "$TAG" >/dev/null 2>&1; then
echo " Tag $TAG already exists (reusing)"
else
echo " Creating tag $TAG"
git tag "$TAG"
git push origin "$TAG" >/dev/null 2>&1
fi
# ── Release notes ────────────────────────────────────────────
NOTES_FILE="$(mktemp -t dv-release-notes)"
trap 'rm -f "$NOTES_FILE"' EXIT
cat > "$NOTES_FILE" <<EOF
# DeckyVault Plugin v${VERSION}
Record Steam Deck performance metrics with MangoHud and upload them straight to [DeckyVault](https://deckyvault.xyz) from the Quick Access Menu.
## Install
### From ZIP
1. Install [Decky Loader](https://github.com/SteamDeckHomebrew/decky-loader) on your Steam Deck
2. Download \`${ZIP_NAME}\` below
3. Decky → Plugin Browser → **⋮** → **Install Plugin from ZIP File** → pick the zip
### From URL
1. Decky → Plugin Browser → **⋮** → **Install Plugin from URL**
2. Paste: \`https://github.com/AdrianBonpin/deckyvault/releases/download/${TAG}/${ZIP_NAME}\`
## Setup
1. Open the plugin (QAM → DeckyVault) → **Account** → **Pair with Phone**
2. Scan the QR code with your phone and confirm on deckyvault.xyz
3. In **MangoHud Setup**, tap **Write Config** and add the launch option to your game:
\`\`\`
~/deckyvault-mangohud.sh %command%
\`\`\`
4. Launch the game, press **Start Recording** once in-game, then **Stop** when done
5. Review the stats and **Upload to DeckyVault**
Full guide: https://deckyvault.xyz/plugin
EOF
# ── Create release ───────────────────────────────────────────
RELEASE_ARGS=(
"$TAG"
"$ZIP_PATH"
--title "DeckyVault Plugin v${VERSION}"
--notes-file "$NOTES_FILE"
--target "$(git rev-parse --abbrev-ref HEAD)"
)
if [[ "$PRERELEASE" -eq 1 ]]; then
RELEASE_ARGS+=(--prerelease)
fi
if gh release view "$TAG" >/dev/null 2>&1; then
echo " Release $TAG exists — updating asset + notes"
gh release upload "$TAG" "$ZIP_PATH" --clobber >/dev/null
gh release edit "$TAG" --title "DeckyVault Plugin v${VERSION}" --notes-file "$NOTES_FILE" >/dev/null
else
echo " Creating GitHub release $TAG"
gh release create "${RELEASE_ARGS[@]}"
fi
echo
echo "✓ Released v${VERSION}"
echo " Release: https://github.com/AdrianBonpin/deckyvault/releases/tag/${TAG}"
echo " ZIP URL: https://github.com/AdrianBonpin/deckyvault/releases/download/${TAG}/${ZIP_NAME}"
echo
echo "Use the ZIP URL above with Decky's 'Install Plugin from URL'."