diff --git a/flatpak/app.yaak.desktop.metainfo.xml b/flatpak/app.yaak.desktop.metainfo.xml new file mode 100644 index 00000000..00d8c118 --- /dev/null +++ b/flatpak/app.yaak.desktop.metainfo.xml @@ -0,0 +1,69 @@ + + + app.yaak.desktop + + Yaak + Play with APIs, intuitively + + + Yaak + + + MIT + MIT + + https://yaak.app + https://github.com/mountain-loop/yaak/issues + https://github.com/mountain-loop/yaak + + +

+ Yaak is a cross-platform desktop app for interacting with REST, GraphQL, + and gRPC APIs. It provides an intuitive interface for crafting requests, + organizing projects, and managing environments. +

+

Features include:

+ +
+ + app.yaak.desktop.desktop + + + #6e56cf + #7c66dc + + + + + + pointing + keyboard + + + + 768 + + + + + + Crafting an API request + https://yaak.app/static/screenshots/flatpak-main.png + + + + + + +
diff --git a/flatpak/app.yaak.desktop.yml b/flatpak/app.yaak.desktop.yml new file mode 100644 index 00000000..2769846c --- /dev/null +++ b/flatpak/app.yaak.desktop.yml @@ -0,0 +1,79 @@ +# Flatpak manifest for Yaak +# +# To build and test locally: +# flatpak install flathub org.gnome.Platform//47 org.gnome.Sdk//47 +# flatpak-builder --force-clean --user --install-deps-from=flathub --repo=flatpak-repo build flatpak/app.yaak.desktop.yml +# flatpak --user remote-add --if-not-exists yaak-local flatpak-repo +# flatpak --user install yaak-local app.yaak.desktop +# flatpak run app.yaak.desktop + +id: app.yaak.desktop +runtime: org.gnome.Platform +runtime-version: "47" +sdk: org.gnome.Sdk +command: yaak-app + +finish-args: + # Display (Wayland + X11 fallback) + - --socket=wayland + - --socket=fallback-x11 + - --share=ipc + # GPU rendering (WebKitGTK) + - --device=dri + # Network access (required — Yaak is an API client) + - --share=network + # File access for importing/exporting and Git project directories + - --filesystem=home + +modules: + - name: yaak + buildsystem: simple + build-commands: + # Extract the deb package + - ar -x yaak.deb + - tar -xf data.tar.gz + + # Install the binary + - install -Dm755 usr/bin/yaak-app /app/bin/yaak-app + + # Install bundled resources (plugins, node runtime, protoc, etc.) + - cp -r usr/lib/yaak /app/lib/yaak + + # Install desktop file, updating Exec and Icon to match Flatpak conventions + - install -Dm644 usr/share/applications/yaak.desktop /app/share/applications/app.yaak.desktop.desktop + - desktop-file-edit --set-key=Exec --set-value=yaak-app /app/share/applications/app.yaak.desktop.desktop + - desktop-file-edit --set-icon=app.yaak.desktop /app/share/applications/app.yaak.desktop.desktop + - desktop-file-edit --set-key=StartupWMClass --set-value=yaak-app /app/share/applications/app.yaak.desktop.desktop + + # Install icons from deb (small sizes) and from this repo (large sizes) + - install -Dm644 usr/share/icons/hicolor/32x32/apps/yaak-app.png /app/share/icons/hicolor/32x32/apps/app.yaak.desktop.png + - install -Dm644 usr/share/icons/hicolor/128x128/apps/yaak-app.png /app/share/icons/hicolor/128x128/apps/app.yaak.desktop.png + - install -Dm644 icons/256x256/app.yaak.desktop.png /app/share/icons/hicolor/256x256/apps/app.yaak.desktop.png + - install -Dm644 icons/512x512/app.yaak.desktop.png /app/share/icons/hicolor/512x512/apps/app.yaak.desktop.png + + # Install AppStream metainfo + - install -Dm644 app.yaak.desktop.metainfo.xml /app/share/metainfo/app.yaak.desktop.metainfo.xml + + sources: + # The deb package from GitHub releases + # Update the URL and sha256 for each release + - type: file + dest-filename: yaak.deb + url: https://github.com/mountain-loop/yaak/releases/download/v2026.2.0-beta.10/yaak_2026.2.0-beta.10_amd64.deb + sha256: "FILL_IN_SHA256_HASH" + only-arches: + - x86_64 + - type: file + dest-filename: yaak.deb + url: https://github.com/mountain-loop/yaak/releases/download/v2026.2.0-beta.10/yaak_2026.2.0-beta.10_arm64.deb + sha256: "FILL_IN_SHA256_HASH" + only-arches: + - aarch64 + + # Icons (from this repo) + - type: dir + path: icons + + # AppStream metainfo (from this repo) + - type: file + path: app.yaak.desktop.metainfo.xml diff --git a/flatpak/icons/128x128/app.yaak.desktop.png b/flatpak/icons/128x128/app.yaak.desktop.png new file mode 100644 index 00000000..00e312d6 Binary files /dev/null and b/flatpak/icons/128x128/app.yaak.desktop.png differ diff --git a/flatpak/icons/256x256/app.yaak.desktop.png b/flatpak/icons/256x256/app.yaak.desktop.png new file mode 100644 index 00000000..2e65f9cb Binary files /dev/null and b/flatpak/icons/256x256/app.yaak.desktop.png differ diff --git a/flatpak/icons/512x512/app.yaak.desktop.png b/flatpak/icons/512x512/app.yaak.desktop.png new file mode 100644 index 00000000..657459de Binary files /dev/null and b/flatpak/icons/512x512/app.yaak.desktop.png differ diff --git a/flatpak/update-manifest.sh b/flatpak/update-manifest.sh new file mode 100755 index 00000000..584ce1a7 --- /dev/null +++ b/flatpak/update-manifest.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +# +# Update the Flatpak manifest with URLs and SHA256 hashes for a given release. +# +# Usage: +# ./flatpak/update-manifest.sh v2026.2.0 +# +# This script: +# 1. Downloads the x86_64 and aarch64 .deb files from the GitHub release +# 2. Computes their SHA256 checksums +# 3. Updates the manifest YAML with the correct URLs and hashes +# 4. Updates the metainfo.xml with a new entry + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +MANIFEST="$SCRIPT_DIR/app.yaak.desktop.yml" +METAINFO="$SCRIPT_DIR/app.yaak.desktop.metainfo.xml" + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + echo "Example: $0 v2026.2.0" + exit 1 +fi + +VERSION_TAG="$1" +VERSION="${VERSION_TAG#v}" +REPO="mountain-loop/yaak" +BASE_URL="https://github.com/$REPO/releases/download/$VERSION_TAG" + +DEB_AMD64="yaak_${VERSION}_amd64.deb" +DEB_ARM64="yaak_${VERSION}_arm64.deb" + +TMPDIR=$(mktemp -d) +trap 'rm -rf "$TMPDIR"' EXIT + +echo "Downloading $DEB_AMD64..." +curl -fSL "$BASE_URL/$DEB_AMD64" -o "$TMPDIR/$DEB_AMD64" +SHA_AMD64=$(sha256sum "$TMPDIR/$DEB_AMD64" | cut -d' ' -f1) +echo " SHA256: $SHA_AMD64" + +echo "Downloading $DEB_ARM64..." +curl -fSL "$BASE_URL/$DEB_ARM64" -o "$TMPDIR/$DEB_ARM64" +SHA_ARM64=$(sha256sum "$TMPDIR/$DEB_ARM64" | cut -d' ' -f1) +echo " SHA256: $SHA_ARM64" + +echo "" +echo "Updating manifest: $MANIFEST" + +# Use Python for reliable YAML-like replacement (avoids sed edge cases) +python3 << PYEOF +import re + +with open("$MANIFEST", "r") as f: + content = f.read() + +# Replace x86_64 source block +content = re.sub( + r'(dest-filename: yaak\.deb\n\s+url: )https://.*?\.deb(\n\s+sha256: )"[^"]*"(\n\s+only-arches:\n\s+- x86_64)', + rf'\g<1>${BASE_URL}/${DEB_AMD64}\2"${SHA_AMD64}"\3', + content, +) + +# Replace aarch64 source block +content = re.sub( + r'(dest-filename: yaak\.deb\n\s+url: )https://.*?\.deb(\n\s+sha256: )"[^"]*"(\n\s+only-arches:\n\s+- aarch64)', + rf'\g<1>${BASE_URL}/${DEB_ARM64}\2"${SHA_ARM64}"\3', + content, +) + +with open("$MANIFEST", "w") as f: + f.write(content) + +print(" Manifest updated.") +PYEOF + +echo "Updating metainfo: $METAINFO" + +TODAY=$(date +%Y-%m-%d) + +python3 << PYEOF +import re + +with open("$METAINFO", "r") as f: + content = f.read() + +release_entry = f' \n ' + +# Replace existing block opening (add new release at the top) +content = re.sub( + r' \n(\s+