058630f542
- The "Punktfunk" shortcut is no longer hidden: it now ships committed
artwork (grid/wide/hero/logo/icon, generated by scripts/gen-steam-art.py
— a pure-stdlib SDF renderer drawing the lens mark + a monoline
"punktfunk" wordmark) applied via SetCustomArtworkForApp /
SetShortcutIcon. Existing installs are unhidden and re-arted once per
ART_VERSION; relaunching the library entry streams to the last host.
- Updates cover the flatpak CLIENT too: check_update compares the
user-scope installed commit against its remote, applyUpdate runs
`flatpak update --user` first (awaited) and the plugin reinstall —
which reloads the panel — last; docs spell out the sudo-less --user
update ("sudo flatpak update" silently skips per-user installs).
- Fullscreen page: DialogButton stretches to 100% width in the gamepad
UI, so the Stream/Pair/Refresh/… actions filled whole rows — sized to
content + right-aligned now; the header drops its Update button (About
tab + QAM banner keep the flow) and the back button gets a real 40px
hit target.
- Settings: the disable-Steam-Input note also shows for Automatic — on a
Deck that now forwards the built-in controller as a Steam Deck pad
(paddles/trackpads/gyro), which needs Steam Input off for the shortcut.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
45 lines
2.0 KiB
Bash
Executable File
45 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Assemble the Decky plugin into the canonical store/sideload layout:
|
|
#
|
|
# out/punktfunk-v<version>.zip -> punktfunk/{dist/index.js,main.py,plugin.json,
|
|
# package.json,decky.pyi,LICENSE,README.md}
|
|
# out/punktfunk/ (the same tree, unzipped — rsync this with scripts/deploy.sh)
|
|
#
|
|
# Decky extracts the zip with --strip-components=1, so the single top-level dir MUST equal
|
|
# plugin.json "name". Run after `pnpm build` (or use `pnpm run package`). Host-agnostic: needs
|
|
# only bash, python3 and zip.
|
|
set -euo pipefail
|
|
HERE="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$HERE"
|
|
|
|
[ -f dist/index.js ] || { echo "dist/index.js missing — run 'pnpm build' first" >&2; exit 1; }
|
|
[ -f LICENSE ] || { echo "LICENSE missing (required by the Decky store)" >&2; exit 1; }
|
|
|
|
NAME="$(python3 -c 'import json;print(json.load(open("plugin.json"))["name"])')"
|
|
VER="$(python3 -c 'import json;print(json.load(open("package.json"))["version"])')"
|
|
|
|
STAGE="$(mktemp -d)"
|
|
DEST="$STAGE/$NAME"
|
|
mkdir -p "$DEST/dist" "$DEST/bin" "$DEST/assets"
|
|
cp dist/index.js "$DEST/dist/index.js" # ship the bundle only, not the sourcemap
|
|
cp main.py plugin.json package.json LICENSE "$DEST/"
|
|
# The stream-launch wrapper (target of the Steam shortcut) — must stay executable.
|
|
cp bin/punktfunkrun.sh "$DEST/bin/punktfunkrun.sh"
|
|
chmod 0755 "$DEST/bin/punktfunkrun.sh"
|
|
# Steam-shortcut artwork (grid/hero/logo/icon — scripts/gen-steam-art.py, committed).
|
|
cp assets/*.png "$DEST/assets/"
|
|
[ -f decky.pyi ] && cp decky.pyi "$DEST/"
|
|
[ -f README.md ] && cp README.md "$DEST/"
|
|
|
|
OUT="$HERE/out"
|
|
mkdir -p "$OUT"
|
|
ZIP="$OUT/${NAME}-v${VER}.zip"
|
|
rm -f "$ZIP"
|
|
( cd "$STAGE" && zip -r -X "$ZIP" "$NAME" >/dev/null )
|
|
# Leave an unzipped staging tree for the rsync/sudo deploy path (scripts/deploy.sh).
|
|
rm -rf "$OUT/$NAME" && cp -r "$DEST" "$OUT/$NAME"
|
|
rm -rf "$STAGE"
|
|
|
|
echo "built $ZIP"
|
|
echo "staged $OUT/$NAME (deploy with: DECK=deck@<ip> bash scripts/deploy.sh)"
|