commit f76519fe2f8018c4033b00a729dc6ade447cb313 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Oct 12 12:57:27 2026 +0000 Build from 25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION-android b/VERSION-android new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION-android @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION-ios b/VERSION-ios new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION-ios @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION-linux b/VERSION-linux new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION-linux @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION-macos b/VERSION-macos new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION-macos @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/VERSION-windows b/VERSION-windows new file mode 100644 index 0000000..377aa29 --- /dev/null +++ b/VERSION-windows @@ -0,0 +1 @@ +25567891c0ec9f5a74a2fdd7a71ca607155c1826 diff --git a/graduately-android.apk b/graduately-android.apk new file mode 100644 index 0000000..b571264 Binary files /dev/null and b/graduately-android.apk differ diff --git a/graduately-installer-android.zip b/graduately-installer-android.zip new file mode 100644 index 0000000..f9ddd7f Binary files /dev/null and b/graduately-installer-android.zip differ diff --git a/graduately-installer-ios.zip b/graduately-installer-ios.zip new file mode 100644 index 0000000..cdafa4d Binary files /dev/null and b/graduately-installer-ios.zip differ diff --git a/graduately-installer-linux.sh b/graduately-installer-linux.sh new file mode 100755 index 0000000..e6b2a12 --- /dev/null +++ b/graduately-installer-linux.sh @@ -0,0 +1,95 @@ +#!/bin/sh +# Graduately installer for Linux. +# +# Carries no application of its own. Fastly caches branch-named URLs on +# raw.githubusercontent.com, so this script looks up the tip of `builds` +# and downloads that commit — not a stale AppImage from the last five minutes. +# +# Double-click the file (or run: sh graduately-installer-linux.sh). +# The app updates itself from then on. + +set -eu + +REPO="pepaskopec-blip/Graduately" +BRANCH="builds" +ASSET="graduately-linux-x86_64.AppImage" + +DEST_DIR="$HOME/Applications" +DEST="$DEST_DIR/graduately.AppImage" +DESKTOP_DIR="$HOME/.local/share/applications" +ICON_DIR="$HOME/.local/share/icons/hicolor/512x512/apps" + +say() { printf '%s\n' "$*"; } +die() { + printf '\nError: %s\n' "$*" >&2 + printf 'Press Enter to close. ' + read -r _ || true + exit 1 +} + +builds_sha() { + curl -fsSL --max-time 20 \ + "https://github.com/$REPO/commits/$BRANCH.atom" | + sed -n 's/.*Commit\/\([0-9a-f]\{40\}\).*/\1/p' | + head -n 1 +} + +say "Installing Graduately" +say "---------------------" + +arch=$(uname -m) +if [ "$arch" != "x86_64" ]; then + die "only x86_64 builds are published, but this machine reports '$arch'. +Build from source instead: https://github.com/$REPO" +fi + +command -v curl >/dev/null 2>&1 || die "curl was not found. Install it first." + +mkdir -p "$DEST_DIR" + +tmp=$(mktemp -d) +trap 'rm -rf "$tmp"' EXIT INT TERM + +say "Looking up the latest build..." +sha=$(builds_sha) +[ ${#sha} -eq 40 ] || die "could not find the latest build on GitHub." +URL="https://raw.githubusercontent.com/$REPO/$sha/$ASSET" +LEGACY_URL="https://raw.githubusercontent.com/$REPO/$sha/maturita-linux-x86_64.AppImage" + +say "Downloading build $(printf '%.7s' "$sha")..." +if ! curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL"; then + curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$LEGACY_URL" || + die "the download failed. Check your internet connection." +fi + +say "Installing to $DEST" +chmod +x "$tmp/$ASSET" +mv -f "$tmp/$ASSET" "$DEST" || die "could not write to $DEST_DIR." + +if (cd "$tmp" && "$DEST" --appimage-extract \ + 'usr/share/icons/hicolor/512x512/apps/maturita.png' >/dev/null 2>&1); then + icon="$tmp/squashfs-root/usr/share/icons/hicolor/512x512/apps/maturita.png" + if [ -f "$icon" ]; then + mkdir -p "$ICON_DIR" + cp -f "$icon" "$ICON_DIR/maturita.png" + fi +fi + +mkdir -p "$DESKTOP_DIR" +cat > "$DESKTOP_DIR/maturita.desktop" </dev/null 2>&1 && + update-desktop-database "$DESKTOP_DIR" >/dev/null 2>&1 || true + +say "" +say "Done. Starting the app..." +"$DEST" >/dev/null 2>&1 & diff --git a/graduately-installer-linux.zip b/graduately-installer-linux.zip new file mode 100644 index 0000000..e8682c2 Binary files /dev/null and b/graduately-installer-linux.zip differ diff --git a/graduately-installer-macos.zip b/graduately-installer-macos.zip new file mode 100644 index 0000000..b298a3f Binary files /dev/null and b/graduately-installer-macos.zip differ diff --git a/graduately-installer-windows.cmd b/graduately-installer-windows.cmd new file mode 100644 index 0000000..057574b --- /dev/null +++ b/graduately-installer-windows.cmd @@ -0,0 +1,84 @@ +@echo off +rem Graduately installer for Windows. +rem +rem Carries no application of its own. Fastly caches branch-named URLs on +rem raw.githubusercontent.com, so this script looks up the tip of `builds` +rem and downloads that commit — not a stale zip from the last five minutes. +rem +rem Double-click the file to run it. The app updates itself from then on. + +setlocal EnableDelayedExpansion +set "REPO=pepaskopec-blip/Graduately" +set "BRANCH=builds" +set "ASSET=graduately-windows-x64.zip" +set "DEST=%LOCALAPPDATA%\Programs\Graduately" + +echo Installing Graduately +echo --------------------- + +where curl >nul 2>&1 || goto :no_tools +where tar >nul 2>&1 || goto :no_tools + +set "TMP_DIR=%TEMP%\graduately-installer" +rmdir /s /q "%TMP_DIR%" 2>nul +mkdir "%TMP_DIR%" || goto :fail_tmp + +echo Looking up the latest build... +set "SHA=" +for /f "usebackq delims=" %%S in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "$r = & curl.exe -fsSL --max-time 20 'https://github.com/%REPO%/commits/%BRANCH%.atom'; if ($r -match 'Commit/([0-9a-f]{40})') { $Matches[1] }"`) do set "SHA=%%S" +if not defined SHA goto :fail_download +set "URL=https://raw.githubusercontent.com/%REPO%/%SHA%/%ASSET%" +set "LEGACY_URL=https://raw.githubusercontent.com/%REPO%/%SHA%/maturita-windows-x64.zip" + +echo Downloading build %SHA:~0,7%... +curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%URL%" +if errorlevel 1 curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%LEGACY_URL%" || goto :fail_download + +echo Installing to %DEST% +if not exist "%DEST%" mkdir "%DEST%" || goto :fail_dest + +tar -xf "%TMP_DIR%\%ASSET%" -C "%DEST%" || goto :fail_extract + +set "LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Graduately.lnk" +powershell -NoProfile -ExecutionPolicy Bypass -Command ^ + "$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%LNK%');" ^ + "$s.TargetPath='%DEST%\graduately.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1 + +rmdir /s /q "%TMP_DIR%" 2>nul + +echo. +echo Done. Starting the app... +start "" "%DEST%\graduately.exe" +exit /b 0 + +:no_tools +echo. +echo Error: this installer needs curl and tar, which come with Windows 10 +echo version 1803 and later. Please update Windows, or download the zip +echo manually from https://github.com/%REPO%/tree/%BRANCH% +pause +exit /b 1 + +:fail_tmp +echo. +echo Error: could not create a temporary folder in %TEMP%. +pause +exit /b 1 + +:fail_download +echo. +echo Error: the download failed. Check your internet connection. +pause +exit /b 1 + +:fail_dest +echo. +echo Error: could not create %DEST%. +pause +exit /b 1 + +:fail_extract +echo. +echo Error: the archive could not be unpacked. +pause +exit /b 1 diff --git a/graduately-installer-windows.zip b/graduately-installer-windows.zip new file mode 100644 index 0000000..6ae9ad3 Binary files /dev/null and b/graduately-installer-windows.zip differ diff --git a/graduately-ios.ipa b/graduately-ios.ipa new file mode 100644 index 0000000..573f605 Binary files /dev/null and b/graduately-ios.ipa differ diff --git a/graduately-linux-x86_64.AppImage b/graduately-linux-x86_64.AppImage new file mode 100644 index 0000000..707d47e Binary files /dev/null and b/graduately-linux-x86_64.AppImage differ diff --git a/graduately-macos-arm64.zip b/graduately-macos-arm64.zip new file mode 100644 index 0000000..8244109 Binary files /dev/null and b/graduately-macos-arm64.zip differ diff --git a/graduately-windows-x64.zip b/graduately-windows-x64.zip new file mode 100644 index 0000000..ef50bd1 Binary files /dev/null and b/graduately-windows-x64.zip differ diff --git a/maturita-android.apk b/maturita-android.apk new file mode 100644 index 0000000..b571264 Binary files /dev/null and b/maturita-android.apk differ diff --git a/maturita-installer-android.zip b/maturita-installer-android.zip new file mode 100644 index 0000000..a38e7d9 Binary files /dev/null and b/maturita-installer-android.zip differ diff --git a/maturita-installer-ios.zip b/maturita-installer-ios.zip new file mode 100644 index 0000000..ec608cd Binary files /dev/null and b/maturita-installer-ios.zip differ diff --git a/maturita-installer-linux.sh b/maturita-installer-linux.sh new file mode 100755 index 0000000..b31c863 --- /dev/null +++ b/maturita-installer-linux.sh @@ -0,0 +1,92 @@ +#!/bin/sh +# Graduately installer for Linux. +# +# Carries no application of its own. Fastly caches branch-named URLs on +# raw.githubusercontent.com, so this script looks up the tip of `builds` +# and downloads that commit — not a stale AppImage from the last five minutes. +# +# Double-click the file (or run: sh maturita-installer-linux.sh). +# The app updates itself from then on. + +set -eu + +REPO="pepaskopec-blip/Graduately" +BRANCH="builds" +ASSET="maturita-linux-x86_64.AppImage" + +DEST_DIR="$HOME/Applications" +DEST="$DEST_DIR/maturita.AppImage" +DESKTOP_DIR="$HOME/.local/share/applications" +ICON_DIR="$HOME/.local/share/icons/hicolor/512x512/apps" + +say() { printf '%s\n' "$*"; } +die() { + printf '\nError: %s\n' "$*" >&2 + printf 'Press Enter to close. ' + read -r _ || true + exit 1 +} + +builds_sha() { + curl -fsSL --max-time 20 \ + "https://github.com/$REPO/commits/$BRANCH.atom" | + sed -n 's/.*Commit\/\([0-9a-f]\{40\}\).*/\1/p' | + head -n 1 +} + +say "Installing Graduately" +say "---------------------" + +arch=$(uname -m) +if [ "$arch" != "x86_64" ]; then + die "only x86_64 builds are published, but this machine reports '$arch'. +Build from source instead: https://github.com/$REPO" +fi + +command -v curl >/dev/null 2>&1 || die "curl was not found. Install it first." + +mkdir -p "$DEST_DIR" + +tmp=$(mktemp -d) +trap 'rm -rf "$tmp"' EXIT INT TERM + +say "Looking up the latest build..." +sha=$(builds_sha) +[ ${#sha} -eq 40 ] || die "could not find the latest build on GitHub." +URL="https://raw.githubusercontent.com/$REPO/$sha/$ASSET" + +say "Downloading build $(printf '%.7s' "$sha")..." +curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL" || + die "the download failed. Check your internet connection." + +say "Installing to $DEST" +chmod +x "$tmp/$ASSET" +mv -f "$tmp/$ASSET" "$DEST" || die "could not write to $DEST_DIR." + +if (cd "$tmp" && "$DEST" --appimage-extract \ + 'usr/share/icons/hicolor/512x512/apps/maturita.png' >/dev/null 2>&1); then + icon="$tmp/squashfs-root/usr/share/icons/hicolor/512x512/apps/maturita.png" + if [ -f "$icon" ]; then + mkdir -p "$ICON_DIR" + cp -f "$icon" "$ICON_DIR/maturita.png" + fi +fi + +mkdir -p "$DESKTOP_DIR" +cat > "$DESKTOP_DIR/maturita.desktop" </dev/null 2>&1 && + update-desktop-database "$DESKTOP_DIR" >/dev/null 2>&1 || true + +say "" +say "Done. Starting the app..." +"$DEST" >/dev/null 2>&1 & diff --git a/maturita-installer-linux.zip b/maturita-installer-linux.zip new file mode 100644 index 0000000..af483b4 Binary files /dev/null and b/maturita-installer-linux.zip differ diff --git a/maturita-installer-macos.zip b/maturita-installer-macos.zip new file mode 100644 index 0000000..28c6e79 Binary files /dev/null and b/maturita-installer-macos.zip differ diff --git a/maturita-installer-windows.cmd b/maturita-installer-windows.cmd new file mode 100644 index 0000000..9a185e5 --- /dev/null +++ b/maturita-installer-windows.cmd @@ -0,0 +1,82 @@ +@echo off +rem Graduately installer for Windows. +rem +rem Carries no application of its own. Fastly caches branch-named URLs on +rem raw.githubusercontent.com, so this script looks up the tip of `builds` +rem and downloads that commit — not a stale zip from the last five minutes. +rem +rem Double-click the file to run it. The app updates itself from then on. + +setlocal EnableDelayedExpansion +set "REPO=pepaskopec-blip/Graduately" +set "BRANCH=builds" +set "ASSET=maturita-windows-x64.zip" +set "DEST=%LOCALAPPDATA%\Programs\Graduately" + +echo Installing Graduately +echo --------------------- + +where curl >nul 2>&1 || goto :no_tools +where tar >nul 2>&1 || goto :no_tools + +set "TMP_DIR=%TEMP%\maturita-installer" +rmdir /s /q "%TMP_DIR%" 2>nul +mkdir "%TMP_DIR%" || goto :fail_tmp + +echo Looking up the latest build... +set "SHA=" +for /f "usebackq delims=" %%S in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "$r = & curl.exe -fsSL --max-time 20 'https://github.com/%REPO%/commits/%BRANCH%.atom'; if ($r -match 'Commit/([0-9a-f]{40})') { $Matches[1] }"`) do set "SHA=%%S" +if not defined SHA goto :fail_download +set "URL=https://raw.githubusercontent.com/%REPO%/%SHA%/%ASSET%" + +echo Downloading build %SHA:~0,7%... +curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%URL%" || goto :fail_download + +echo Installing to %DEST% +if not exist "%DEST%" mkdir "%DEST%" || goto :fail_dest + +tar -xf "%TMP_DIR%\%ASSET%" -C "%DEST%" || goto :fail_extract + +set "LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Graduately.lnk" +powershell -NoProfile -ExecutionPolicy Bypass -Command ^ + "$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%LNK%');" ^ + "$s.TargetPath='%DEST%\maturita.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1 + +rmdir /s /q "%TMP_DIR%" 2>nul + +echo. +echo Done. Starting the app... +start "" "%DEST%\maturita.exe" +exit /b 0 + +:no_tools +echo. +echo Error: this installer needs curl and tar, which come with Windows 10 +echo version 1803 and later. Please update Windows, or download the zip +echo manually from https://github.com/%REPO%/tree/%BRANCH% +pause +exit /b 1 + +:fail_tmp +echo. +echo Error: could not create a temporary folder in %TEMP%. +pause +exit /b 1 + +:fail_download +echo. +echo Error: the download failed. Check your internet connection. +pause +exit /b 1 + +:fail_dest +echo. +echo Error: could not create %DEST%. +pause +exit /b 1 + +:fail_extract +echo. +echo Error: the archive could not be unpacked. +pause +exit /b 1 diff --git a/maturita-installer-windows.zip b/maturita-installer-windows.zip new file mode 100644 index 0000000..5ef36d9 Binary files /dev/null and b/maturita-installer-windows.zip differ diff --git a/maturita-ios.ipa b/maturita-ios.ipa new file mode 100644 index 0000000..573f605 Binary files /dev/null and b/maturita-ios.ipa differ diff --git a/maturita-linux-x86_64.AppImage b/maturita-linux-x86_64.AppImage new file mode 100644 index 0000000..707d47e Binary files /dev/null and b/maturita-linux-x86_64.AppImage differ diff --git a/maturita-macos-arm64.zip b/maturita-macos-arm64.zip new file mode 100644 index 0000000..8244109 Binary files /dev/null and b/maturita-macos-arm64.zip differ diff --git a/maturita-windows-x64.zip b/maturita-windows-x64.zip new file mode 100644 index 0000000..ef50bd1 Binary files /dev/null and b/maturita-windows-x64.zip differ