diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f8e5c02..3174fcd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,6 @@ name: release -# Build the GAMEMAX LCD AppImage from source and attach it to a GitHub release. +# Build the GAMEMAX LCD AppImage from source and attach it to a Gitea release. # Trigger: push a tag like v1.0.0 (or run manually from the Actions tab). on: @@ -29,7 +29,7 @@ jobs: - name: Build AppImage env: APPIMAGE_EXTRACT_AND_RUN: "1" - UPDATE_INFO_URL: https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/GAMEMAX-LCD-x86_64.AppImage.zsync + UPDATE_INFO_URL: ${{ github.server_url }}/${{ github.repository }}/releases/download/${{ github.ref_name }}/GAMEMAX-LCD-x86_64.AppImage.zsync run: bash packaging/build_appimage.sh - name: Smoke test the bundle (no display) @@ -43,7 +43,7 @@ jobs: run: | cd dist sha256sum GAMEMAX-LCD-x86_64.AppImage > GAMEMAX-LCD-x86_64.AppImage.sha256 - zsyncmake -u "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/GAMEMAX-LCD-x86_64.AppImage" \ + zsyncmake -u "${{ github.server_url }}/${{ github.repository }}/releases/download/${{ github.ref_name }}/GAMEMAX-LCD-x86_64.AppImage" \ -o GAMEMAX-LCD-x86_64.AppImage.zsync GAMEMAX-LCD-x86_64.AppImage cat GAMEMAX-LCD-x86_64.AppImage.sha256 ls -l diff --git a/README.md b/README.md index d58fc8c..c7615dc 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ Reverse engineered independently from the Windows vendor software (`PcInfoMonitorPro.exe` / "IceBurg Digital Software"); the protocol notes are in [`docs/reverse-engineering.md`](docs/reverse-engineering.md) (Indonesian). -[![Release](https://img.shields.io/github/v/release/oxpoe/Gamemax-linux-apps?color=def750&label=release)](https://github.com/oxpoe/Gamemax-linux-apps/releases) -[![Release build](https://github.com/oxpoe/Gamemax-linux-apps/actions/workflows/release.yml/badge.svg)](https://github.com/oxpoe/Gamemax-linux-apps/actions/workflows/release.yml) +[![Release](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgitea.oxpoe.qzz.io%2Fapi%2Fv1%2Frepos%2Foxpoe%2FGamemax-linux-apps%2Freleases%2Flatest&query=%24.tag_name&label=release&color=def750&logo=gitea)](https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps/releases) +[![Release build](https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps/actions/workflows/release.yml/badge.svg)](https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps/actions/workflows/release.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-def750)](LICENSE) [![Platform: Linux](https://img.shields.io/badge/platform-Linux-def750)](#compatibility) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-def750)](src/gamemax_report.py) @@ -133,7 +133,7 @@ One command (downloads the latest release, verifies its SHA-256, installs the ap systemd user unit, the menu entry and the udev rule): ```bash -curl -fsSL https://raw.githubusercontent.com/oxpoe/Gamemax-linux-apps/main/install.sh | bash +curl -fsSL https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps/raw/branch/main/install.sh | bash # uninstall: bash install.sh --uninstall (add --remove-data to drop settings too) ``` diff --git a/install.sh b/install.sh index 55ac1b7..00ff713 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # GAMEMAX LCD — pemasangan / pelepasan satu perintah. # -# curl -fsSL https://raw.githubusercontent.com/oxpoe/Gamemax-linux-apps/main/install.sh | bash +# curl -fsSL https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps/raw/branch/main/install.sh | bash # # Opsi: # --uninstall lepaskan pemasangan (layanan, aplikasi, config, ikon, entri menu) @@ -15,7 +15,8 @@ set -euo pipefail REPO="oxpoe/Gamemax-linux-apps" ASSET="GAMEMAX-LCD-x86_64.AppImage" -RAW="https://raw.githubusercontent.com/$REPO/main" +INSTANCE="https://gitea.oxpoe.qzz.io" +RAW="$INSTANCE/$REPO/raw/branch/main" OPT_DIR="$HOME/.local/opt/gamemax-lcd" APP="$OPT_DIR/GAMEMAX-LCD.AppImage" @@ -76,10 +77,10 @@ need sha256sum command -v systemctl >/dev/null 2>&1 || die "systemd (systemctl) dibutuhkan untuk layanan" if [ "$VERSION" = "latest" ]; then - BASE="https://github.com/$REPO/releases/latest/download" -else - BASE="https://github.com/$REPO/releases/download/$VERSION" + VERSION="$(curl -fsSL "$INSTANCE/api/v1/repos/$REPO/releases/latest" | sed -n 's/.*"tag_name":"\([^"]*\)".*/\1/p')" + [ -n "$VERSION" ] || die "gagal menentukan rilis terbaru di Gitea" fi +BASE="$INSTANCE/$REPO/releases/download/$VERSION" say "== GAMEMAX LCD: pemasangan ($VERSION) ==" mkdir -p "$OPT_DIR" "$DATA_DIR" "$DESKTOP_DIR" "$ICON_DIR" "$HOME/.config/systemd/user" diff --git a/src/gamemax_gui.py b/src/gamemax_gui.py index c8472b4..71aa586 100755 --- a/src/gamemax_gui.py +++ b/src/gamemax_gui.py @@ -36,14 +36,14 @@ from PySide6.QtNetwork import QLocalServer, QLocalSocket APP_VERSION = "1.3.3" APP_NAME = "IceBurg LCD" REPO = "oxpoe/Gamemax-linux-apps" -RELEASES_API = f"https://api.github.com/repos/{REPO}/releases/latest" +RELEASES_API = f"https://gitea.oxpoe.qzz.io/api/v1/repos/{REPO}/releases/latest" UPDATE_ASSET = "GAMEMAX-LCD-x86_64.AppImage" HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, HERE) import gamemax_report as gr # noqa: E402 DONATE_URL = "https://donasi.oxpoe.qzz.io/" -GITHUB_URL = "https://github.com/oxpoe/Gamemax-linux-apps" +REPO_URL = "https://gitea.oxpoe.qzz.io/oxpoe/Gamemax-linux-apps" SERVICE = "gamemax-report.service" CONFIG_PATH = gr.CONFIG_PATH @@ -144,10 +144,10 @@ def verify_sha256(path, sha_url): def latest_release(): - """(tag, url aset) dari rilis terbaru GitHub — dipanggil dari thread pekerja.""" + """(tag, url aset) dari rilis terbaru Gitea — dipanggil dari thread pekerja.""" ensure_ca_bundle() req = urllib.request.Request(RELEASES_API, headers={ - "Accept": "application/vnd.github+json", "User-Agent": "gamemax-lcd"}) + "Accept": "application/json", "User-Agent": "gamemax-lcd"}) with urllib.request.urlopen(req, timeout=10) as resp: data = json.load(resp) asset = next((a for a in data.get("assets", []) if a["name"] == UPDATE_ASSET), None) @@ -502,18 +502,18 @@ class Window(QWidget): donate = QPushButton("❤ Donasi") donate.setToolTip(DONATE_URL) donate.clicked.connect(lambda: open_link(DONATE_URL, self)) - github = QPushButton("GitHub") - github.setToolTip(GITHUB_URL) - github.clicked.connect(lambda: open_link(GITHUB_URL, self)) + repo_btn = QPushButton("Gitea") + repo_btn.setToolTip(REPO_URL) + repo_btn.clicked.connect(lambda: open_link(REPO_URL, self)) links.addWidget(donate) - links.addWidget(github) + links.addWidget(repo_btn) links.addStretch(1) copy_button = QPushButton("Salin report") copy_button.setToolTip("Salin isi report 65 byte ke papan klip (untuk laporan bug)") copy_button.clicked.connect(self.copy_report) links.addWidget(copy_button) self.check_button = QPushButton("Periksa pembaruan") - self.check_button.setToolTip("Bandingkan dengan rilis terbaru di GitHub") + self.check_button.setToolTip("Bandingkan dengan rilis terbaru di Gitea") self.check_button.clicked.connect(lambda: self.start_task("memeriksa pembaruan", self.do_check_update)) links.addWidget(self.check_button) self.update_button = QPushButton("Perbarui") @@ -659,7 +659,7 @@ class Window(QWidget): tag, url = latest_release() self._pending_update = (tag, url) if url and version_tuple(tag) > version_tuple(APP_VERSION) else None if not tag: - return "tidak bisa membaca daftar rilis GitHub" + return "tidak bisa membaca daftar rilis Gitea" if self._pending_update: return f"versi baru tersedia: {tag} (terpasang v{APP_VERSION})" return f"sudah versi terbaru (v{APP_VERSION})" @@ -978,8 +978,8 @@ class Tray: "memeriksa pembaruan", self.window.do_check_update)) donate_action = QAction("❤ Donasi", menu) donate_action.triggered.connect(lambda: open_link(DONATE_URL, self.window)) - github_action = QAction("GitHub", menu) - github_action.triggered.connect(lambda: open_link(GITHUB_URL, self.window)) + repo_action = QAction("Gitea", menu) + repo_action.triggered.connect(lambda: open_link(REPO_URL, self.window)) quit_action = QAction("Keluar", menu) quit_action.triggered.connect(self.quit_app) menu.addAction(show) @@ -988,7 +988,7 @@ class Tray: menu.addSeparator() menu.addAction(check_action) menu.addAction(donate_action) - menu.addAction(github_action) + menu.addAction(repo_action) menu.addSeparator() menu.addAction(quit_action) self.icon.setContextMenu(menu)