From 1477c240a1bb3013461fe4b11ee60212654e8cee Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Wed, 23 Sep 2026 17:41:21 +0000 Subject: [PATCH] Installers for all platforms and related fixes (#1) - Windows portable ZIP remains, but has been fixed so that it isn't poisoned by being a web download - Velopack installer offered on all platforms: Linux AppImage, Windows setup.exe, Mac setup.pkg - Mac updated to Qt6 which has a modern Chromium as opposed to Qt5 that didn't - Application log now shown on settings panel - Automated cross-platform builds via Gitea actions Reviewed-on: https://git.zi.fi/LeoVasanko/mediahive/pulls/1 --- .gitea/workflows/release.yaml | 51 +++ .gitignore | 1 + README.md | 7 +- docs/development.md | 6 +- frontend/src/api.ts | 4 +- frontend/src/components/Header.vue | 86 ++++- frontend/src/main.ts | 33 ++ mediahive/assets/macos-installer-welcome.txt | 7 + mediahive/assets/mediahive.png | Bin 0 -> 201724 bytes mediahive/config.py | 30 +- mediahive/server.py | 78 +++- mediahive/winmain.py | 92 +++-- pyproject.toml | 6 +- scripts/MediaHive.spec | 30 +- scripts/guibuild.py | 356 +++++++++++++++++-- scripts/release.py | 124 +++++-- 16 files changed, 794 insertions(+), 117 deletions(-) create mode 100644 .gitea/workflows/release.yaml create mode 100644 mediahive/assets/macos-installer-welcome.txt create mode 100644 mediahive/assets/mediahive.png diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..e1bd971 --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,51 @@ +name: release + +on: + push: + tags: + - "v*" + +# Runner host prerequisites: git, uv, node/npm, .NET SDK. +jobs: + gui-build: + strategy: + fail-fast: false + matrix: + include: + - os: macos + shell: bash + - os: windows + shell: cmd + - os: linux + shell: bash + runs-on: ${{ matrix.os }} + steps: + # Plain git clone: full history so setuptools_scm sees tags, and both + # shells work. Windows uses cmd: bash resolves to WSL (refuses SYSTEM + # accounts) and powershell hits the script execution policy under SYSTEM. + - name: Checkout + shell: ${{ matrix.shell }} + run: | + git clone "${{ gitea.server_url }}/${{ gitea.repository }}.git" . + git checkout -f "${{ gitea.sha }}" + + - name: Build GUI app and dist packages + shell: ${{ matrix.shell }} + run: uv run --extra gui scripts/guibuild.py + + # Every platform converges on the one release for the tag; release.py + # reuses an existing release and skips already-uploaded assets. + # Only the linux job publishes the wheel/sdist (identical across platforms). + - name: Create Gitea release and upload assets + if: matrix.os == 'linux' + shell: ${{ matrix.shell }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + run: uv run scripts/release.py + + - name: Attach platform artifact to the Gitea release + if: matrix.os != 'linux' + shell: ${{ matrix.shell }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + run: uv run scripts/release.py --no-dist diff --git a/.gitignore b/.gitignore index 74241ef..0dfef6f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ package-lock.json # Dotfiles .* !.gitignore +!.gitea/ diff --git a/README.md b/README.md index c4904e1..062c21b 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,13 @@ Netflix style browsing of your local media archive. Supports keyboard, mouse and gamepad navigation. Uses your favorite movie player. -**[Windows and Mac portable ZIP downloads](https://git.zi.fi/LeoVasanko/mediahive/releases)** +**[Windows, Mac and Linux downloads](https://git.zi.fi/LeoVasanko/mediahive/releases)** ## Getting Started -- Windows and macOS: Download the portable ZIP from the releases page, extract it anywhere, and run `MediaHive`. -- Linux and other platforms: Install [UV](https://docs.astral.sh/uv/getting-started/installation/) and run directly with `uvx --from mediahive[gui] mediahive`. +- Windows: Download `*-win64-setup.exe` from the releases page and run it (no admin needed; auto-updates included). A `-win64-portable.zip` is also available. +- macOS: Download `*-macos-setup.pkg` and install (auto-updates included). +- Linux: Download the `.AppImage`, `chmod +x` it, and run. Alternatively install [UV](https://docs.astral.sh/uv/getting-started/installation/) and run directly with `uvx --from mediahive[gui] mediahive`. ## What It Does diff --git a/docs/development.md b/docs/development.md index 8878e54..ceeff21 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,6 +1,6 @@ # Development -This document covers the developer-facing ways to run MediaHive locally. The main [README.md](../README.md) covers end-user startup across platforms (portable ZIPs on Windows/macOS, `uvx --from mediahive[gui] mediahive` on Linux/other). +This document covers the developer-facing ways to run MediaHive locally. The main [README.md](../README.md) covers end-user startup across platforms (installer/AppImage downloads, `uvx --from mediahive[gui] mediahive` on Linux/other). ## Requirements @@ -44,8 +44,8 @@ This launches the same pywebview-based desktop flow used by the Windows build. The helper scripts are directly executable via their `uv run` shebang (on Windows, run them with `uv run scripts/.py`): -- `./scripts/guibuild.py` builds the PyInstaller desktop app and a versioned portable ZIP under `build/`. -- `./scripts/release.py` publishes a release to the Gitea releases page. +- `./scripts/guibuild.py` builds the PyInstaller desktop app and packages it with Velopack under `build/`: per-user `Setup.exe` (Windows), `.pkg` installer (macOS), `.AppImage` (Linux), plus the update feed in `build/velopack/`. On Windows it also creates a `-win64-portable.zip` (no auto-updates). Requires node/npm and the .NET SDK (>= 10 runtime) installed on the build host; `vpk` and ffmpeg are downloaded once into a persistent user cache (`~/.cache/mediahive-build`, `%LOCALAPPDATA%\mediahive-build` on Windows). +- `./scripts/release.py` publishes a release to the Gitea releases page, uploading the platform artifacts and the Velopack update feed files — installed apps auto-update from the latest release. Python packaging builds the frontend automatically through the hatch build hook `scripts/fastapi-vue/buildhook.py` (see `pyproject.toml`), so wheels and sdists always ship a fresh `mediahive/frontend-build`. diff --git a/frontend/src/api.ts b/frontend/src/api.ts index b155b7c..a07f23e 100644 --- a/frontend/src/api.ts +++ b/frontend/src/api.ts @@ -190,9 +190,7 @@ export async function fetchResumePositions(): Promise = {} - for (const [key, watch] of Object.entries( - rawEpisodes as Record, - )) { + for (const [key, watch] of Object.entries(rawEpisodes as Record)) { if (!watch || typeof watch !== "object") continue const w = watch as { pos?: unknown; done?: unknown } if (typeof w.pos !== "number" || !Number.isFinite(w.pos)) continue diff --git a/frontend/src/components/Header.vue b/frontend/src/components/Header.vue index 44e434e..90eebff 100644 --- a/frontend/src/components/Header.vue +++ b/frontend/src/components/Header.vue @@ -29,7 +29,9 @@ @@ -208,7 +210,9 @@

Preferred Format

-

Preferred format when multiple versions are available.

+

+ Preferred format when multiple versions are available. +

@@ -295,6 +299,16 @@
+ +
+

Diagnostics

+

Application log for troubleshooting.

+ +
+ Application log +
+
{{ appLog }}
+
@@ -302,7 +316,7 @@ @@ -868,4 +921,31 @@ onUnmounted(() => { font-size: 0.8rem; color: #22c55e; } + +.diag-label { + font-size: 0.75rem; + color: var(--text-secondary); +} + +.diag-log-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 6px; +} + +.diag-log { + font-family: ui-monospace, Menlo, Consolas, monospace; + font-size: 0.75rem; + white-space: pre-wrap; + word-break: break-all; + width: 100%; + max-height: 320px; + overflow-y: auto; + margin: 0; + padding: 10px; + background: rgba(255, 255, 255, 0.05); + border-radius: 8px; + color: var(--text-secondary); +} diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 55bb80b..10d20d3 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -6,6 +6,38 @@ import { installKeyboardNavigation } from "./composables/useKeyboardNavigation" import { installGamepadNavigation } from "./composables/useGamepadNavigation" import { installInputModalityTracking } from "./composables/useInputModality" +function postClientError(payload: { + message: string + stack: string | null + source: string | null +}) { + fetch("/api/client-log", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }).catch(() => {}) +} + +function installErrorCapture() { + window.addEventListener("error", (event) => { + const source = + event.filename != null ? `${event.filename}:${event.lineno ?? 0}:${event.colno ?? 0}` : null + postClientError({ + message: event.message || String(event.error ?? "Unknown error"), + stack: event.error?.stack ?? null, + source, + }) + }) + window.addEventListener("unhandledrejection", (event) => { + const reason = event.reason + postClientError({ + message: reason instanceof Error ? reason.message : `Unhandled rejection: ${String(reason)}`, + stack: reason instanceof Error ? (reason.stack ?? null) : null, + source: "unhandledrejection", + }) + }) +} + function installReloadShortcut() { document.addEventListener( "keydown", @@ -27,6 +59,7 @@ installInputModalityTracking() installKeyboardNavigation() installGamepadNavigation() installReloadShortcut() +installErrorCapture() // Unregister any legacy service workers — MediaHive no longer uses a PWA/SW. if ("serviceWorker" in navigator) { diff --git a/mediahive/assets/macos-installer-welcome.txt b/mediahive/assets/macos-installer-welcome.txt new file mode 100644 index 0000000..9a3482d --- /dev/null +++ b/mediahive/assets/macos-installer-welcome.txt @@ -0,0 +1,7 @@ +Welcome to the MediaHive installer. + +During installation and on first launch, macOS may ask you to allow +permissions (for example, access to your media folders or the local +network). Please allow these so MediaHive can find and play your media. + +Click Continue to begin. diff --git a/mediahive/assets/mediahive.png b/mediahive/assets/mediahive.png new file mode 100644 index 0000000000000000000000000000000000000000..c1eef81792056adb3039cbd3d7fc4f26be82b498 GIT binary patch literal 201724 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

UCp*Vf*DrnaTEO<*dGP2L;%@Y5%m{QEHv zUVV~DpDmhJ%IV2-%{HPuOvt3{|CY(gNiUCSygRKZEYP!k4)58=XO4!P%Dnc4(`WVc z6kDsU<~O#?ELD0sDZc+(*Cz8=fsV;5x1_TCEpu2N$6GexvT4cZT$`zzcdGNvaB_$U z?!ERbVP%}=6jo<3q0>iYoTsjl_u5lYy9RFKYaMDZC-v} zL49@i@7vKfHZ}{gqqgL-zhH7m&G}zv^VzDkQkLD;Xzlrjshm-M&3C7G=_#!7?yo!X zyMwXgOysxx7JJUHA5vd0p1LLMe>C7p=f!hXC(iaZR_a!Lf3oTAa=9AAA8t|%tpeN+ zo<6AFynD%H!$sU8-kTJ2|GhnZV218nLk^a+zx6h-t(Hr8D9JF1Y12B#)uPi@+lrl5 zJr&8T$TGup*S#YGFLs?1md#{l39aqyYl(k->llAQ(AMz(lUNiM%sgPbIK6dQU`BN7 zKI4=%8r)~ZjdRSh=ggh|@X;Th+naf(bxXP^GUP6)zx(~dF80lL-##}CRJ+LEQGcgC z*(2fCwbQ4gk~`jt7@wW@@XJTh9Gx~z|8@)ib8+843hh6%PE@@A;C$bOzJEBDimGHE z{&7}oO&E91`E5IP>^kuCsc711(Is1++ZJ$VNf%Tb@Guyj$YhwaJ?YpFA0vjvY7IZm zNiY{I%2!&()o{PinPtM1hAC|~FG;O>U9e+*qM5cLcf$_%>oObe8&_SuIal|TOjn4Q zpzsTJy}3P+TjzDpjOUvC{A!iS`!$iwqB8cirF%pwrW|~8eOmU!a!wVel6jBKo5STB z!YkyCgh}UqeZSZ8X8#hFsjRPN8P3-?h}JQfeLgTubk?%gwBBvmg*kmIc6?%NTD6L4 zGuzg=mN^}!3rs|^H<(39J07xDXgVRb`eKPxyL0#Bjn3C+8gDzb=}6MX16i97eamS+ zTh{wDi!pNgvVW`E-&r4K(0IF*FYvI_ZMDD58p%)gnM74OUby&Gd(}6Am>;ReZYm6# ztfy8T$O%i_I3sc6tmJ3?)oBbu8k`z$xA{L(=oU!c5-h}~pk|<)DLngsutY+`G*}(d!n?z4Sq!J>1$@}9ZnFME?Vq5xr1Sr>_>B+hAFH|CS34&5xF?GTBc97 zY&YBQ+U|9i6(+5CEg802blYv+ZRyg&U-K=QS1~EDt-d$qqV>!D23ZLk9A8Os{9eL* zsoX5%@s<@29|^W>*mP))S-I0^>t#L_pE`QF4E-nO2L<*g=`u7enfd;DvDzw&aQ%Wx z#Y>v0te39L-*{=>*C>I%cjA|GnMLbKs+cT!qOsPpLi7+TTfsucxiemHX9_Os3))clMVP_!TiidD8#$FFX_5gc|K05x!sfo45y@uA z`}=|5hd;u5_waQzWVk!D87~evuu=4!&EfFt3@Wdcjb68HbCF`$FYD-#{nt0* zTf~)flF-x@iY+Y03tv}n(LHl<*_jDuH~J@>OWa@(cwvguGG8MjlHZuRRMo{8iN?5@F^{4D|&e>u-B�KL>&WwT=3S+|?=F7T-Sw|ypS9Ch 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

xlZL;y`Qu4G0l(6-JPjD6}ks~0<-fjNQcVHo0 zrOWa98!KaaZB7owrcAg zujf@X7$wg(rC8eG+>~ElZO850+%38jDmX3(te?}C!*{H2 z%0^@D2iIHoC)rq;&S!sfKloZISMc5AhwjZ+GCdSi%ebH>Y~p?i(7KuEBMd*H4B9dd zPkyk#wCrV%;E!2fWmnhNSVvVX=jb}Ed@ON|{#k>NQzdv^UYbtPJ{-FEtD*J=kjkDP{ z&iZ+s$2@9qi=7~OZ=dq8`>>bNGFKjTMcYT?r<_%AdLR+^K@4n81Gg2lSGy461de1WU z_T-{X*MA?=J^A*R|I6OsuXc)&KjMSc7Wr&StMI(JqVz3KkE>0+-s=e2&--frNc}ne z?8*ljh9(IY+bvQIbK7eCOhT2FT{rGLeE&>UR!M_=^0rSr>P!AVEMVCfuADV{_Z?ex z-`(Fg+4av`I`6erlx6>QnI4}{HC&S=B{J79^*m;l_gr|>Y@a#bKYl;Q(7&czWtmkI zr)HIUobb$op%BQ*qE}R)9u7j{{(lB7-@?K?$Q4f85VRHdI)IE+%~D>*1-<`##6~R`KyiZd`z=< z54qvPmA`3gWx&6zB8k1TUDnO}@b#SYekjYBekZg;XOZFKw2azm;_jth z#~363CjGAPdGlEB{IB_EW4eQ?iW}TpIyxu$-IHx|FJrmlqhSB++PT-aL_*e`W8?1b z(Ufee@kv_D;%XW2r8lPhh^mXT5dX~2!G)jaMlNq`RBEyjst$cvXJQ0 z{j#dw`o}{4w>ITDQ}Xj9y#3Sf+>%xjX|a^Hlf1ao&_U=FBg2fQ@}{F*EC!s4Z!WSl zi3RMCe>wF(*Mcf1emn6vQ-*k!B;JOfbF sI2UG@FG2%LF3o&FS~sIn!Q$D7rel6 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�%$(EflcZ%%8@+975 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 Path: - if sys.platform == "win32": - base = Path(os.environ.get("APPDATA") or Path.home()) - elif sys.platform == "darwin": - base = Path.home() / "Library" / "Application Support" - else: - base = Path(os.environ.get("XDG_CONFIG_HOME") or (Path.home() / ".config")) - return base / "mediahive" + # appauthor=False: avoid the doubled %LOCALAPPDATA%\mediahive\mediahive. + # roaming=False: config is machine-specific state, not something to sync + # across a domain profile. + return user_config_path("mediahive", appauthor=False, roaming=False) + + +def log_dir() -> Path: + # opinion=False: no extra Logs/ subdir; mediahive.log sits beside config. + return user_log_path("mediahive", appauthor=False, opinion=False) def config_path() -> Path: diff --git a/mediahive/server.py b/mediahive/server.py index 00af587..a169ca8 100644 --- a/mediahive/server.py +++ b/mediahive/server.py @@ -9,6 +9,7 @@ from __future__ import annotations import asyncio import ctypes +import importlib.metadata import json import logging import mimetypes @@ -30,11 +31,16 @@ import aiofiles import msgspec from fastapi import FastAPI, HTTPException, Request, WebSocket, WebSocketDisconnect from fastapi.middleware.cors import CORSMiddleware -from fastapi.responses import FileResponse, Response, StreamingResponse +from fastapi.responses import ( + FileResponse, + PlainTextResponse, + Response, + StreamingResponse, +) from fastapi_vue import Frontend from mediahive.__main__ import DEVMODE -from mediahive.config import load_config +from mediahive.config import load_config, log_dir from mediahive.hivescan.images import close_image_client from mediahive.hivescan.scanner import RootScanner from mediahive.hivescan.tmdb_client import close_http_client @@ -1073,6 +1079,74 @@ async def health_check(): return {"status": "ok"} +@app.get("/api/version") +async def get_version(): + """Return the installed MediaHive package version.""" + try: + version = importlib.metadata.version("mediahive") + except importlib.metadata.PackageNotFoundError: + version = "dev" + return {"version": version} + + +def _read_log() -> str: + """Return the full application log file.""" + path = log_dir() / "mediahive.log" + if not path.exists(): + return "" + try: + return path.read_text(encoding="utf-8", errors="replace") + except OSError: + return "" + + +@app.get("/api/log") +async def get_log(): + """Return the full application log file.""" + return PlainTextResponse(_read_log()) + + +@app.websocket("/api/log/ws") +async def ws_log(ws: WebSocket) -> None: + """Stream the application log: full log on connect and on every change.""" + await ws.accept() + last_sent: str | None = None + try: + while True: + current = _read_log() + if current != last_sent: + last_sent = current + await ws.send_text(current) + await asyncio.sleep(1.0) + except WebSocketDisconnect, OSError, RuntimeError: + pass + + +@app.post("/api/client-log", status_code=204) +async def post_client_log(request: Request): + """Append a client-side (webview) error report to client-errors.log.""" + try: + payload = msgspec.json.decode(await request.body()) + except msgspec.DecodeError: + payload = {} + message = str(payload.get("message") or "") + stack = payload.get("stack") + source = payload.get("source") + try: + dirpath = log_dir() + dirpath.mkdir(parents=True, exist_ok=True) + with (dirpath / "client-errors.log").open("a", encoding="utf-8") as f: + timestamp = datetime.now().isoformat(timespec="seconds") + f.write(f"[{timestamp}] {message}\n") + if source: + f.write(f" source: {source}\n") + if stack: + f.write(f" stack: {stack}\n") + except OSError: + pass + return Response(status_code=204) + + @app.get("/api/config") async def get_config(): """Return current server configuration.""" diff --git a/mediahive/winmain.py b/mediahive/winmain.py index e5e30b3..9b0d55e 100644 --- a/mediahive/winmain.py +++ b/mediahive/winmain.py @@ -26,9 +26,13 @@ from pathlib import Path import msgspec.structs import uvicorn +import velopack import webview +from fastapi_vue.logging import patch_log_config +from fastapi_vue.startupbox import print_box +from tracerite.html import html_traceback -from mediahive.config import load_config, save_config +from mediahive.config import load_config, log_dir, save_config from mediahive.volume_control import get_volume, set_volume, volume_max logger = logging.getLogger("mediahive.winmain") @@ -39,6 +43,7 @@ HEALTH_TIMEOUT = 2 # seconds BACKEND_HEALTH_REQUEST_TIMEOUT = 2 # seconds BACKEND_HEALTH_POLL_SECONDS = 0.25 MPC_BE_URL = "http://127.0.0.1:13579" +VELOPACK_REPO_URL = "https://git.zi.fi/LeoVasanko/mediahive" GAMEPAD_REPEAT_SECONDS = 0.008 GAMEPAD_POLL_SECONDS = 0.008 MPC_BE_FRAME_REPEAT_SECONDS = 0.016 @@ -871,18 +876,16 @@ def _wait_for_previous_instance(log_path: Path, timeout: float = 15.0): def _setup_logging() -> Path: - """Redirect stdout/stderr and configure logging to a file in %APPDATA%/mediahive/. + """Redirect stdout/stderr and configure logging to a file in the platform log dir. In a PyInstaller --windowed build there is no console, so any print() or unhandled exception traceback would be lost. This ensures everything ends up in a persistent log file the user can send for bug reports. Returns the path to the log file. """ - from mediahive.config import config_dir - - log_dir = config_dir() - log_dir.mkdir(parents=True, exist_ok=True) - log_path = log_dir / "mediahive.log" + log_directory = log_dir() + log_directory.mkdir(parents=True, exist_ok=True) + log_path = log_directory / "mediahive.log" try: log_file = _rotate_and_open_log(log_path) @@ -899,7 +902,7 @@ def _setup_logging() -> Path: log_file = _wait_for_previous_instance(log_path) if log_file is None: # Never fail startup over logging: fall back to a per-process file. - log_path = log_dir / f"mediahive-{os.getpid()}.log" + log_path = log_directory / f"mediahive-{os.getpid()}.log" with contextlib.suppress(OSError): fd = os.open(log_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC) log_file = os.fdopen(fd, "w", encoding="utf-8", buffering=1) @@ -958,26 +961,53 @@ def _show_fatal_error(exc: BaseException) -> None: Frozen --windowed builds otherwise surface crashes only as PyInstaller's plain-text error dialog (or nothing at all). """ - try: - from tracerite.html import html_traceback - - fragment = str(html_traceback(exc)) - except Exception: # noqa: BLE001 - error reporting must never raise - return + fragment = str(html_traceback(exc)) page = ( "" "MediaHive — Error" f"{fragment}" ) + webview.create_window("MediaHive — Error", html=page, width=1100, height=750) + webview.start(icon=_icon_path(), **_webview_start_kwargs()) + + +def _velopack_startup() -> None: + """Handle Velopack install/update/uninstall hooks and pending updates. + + Must be the first thing at startup: when Velopack launches the app with + --veloapp-* hook arguments (during install/update/uninstall), run() + executes the hook and exits the process, so the GUI never starts. + Applies downloaded-but-pending updates. No-op in development and + portable-ZIP runs. + """ + velopack.App().run() + + +def _check_for_updates() -> None: + """Download available updates in the background. + + Downloaded updates are applied automatically by Velopack on the next app + start (via _velopack_startup), so the running session is never + interrupted. Not a Velopack install (dev/portable) and network failures + are expected and skipped quietly. + """ try: - webview.create_window("MediaHive — Error", html=page, width=1100, height=750) - webview.start(icon=_icon_path(), **_webview_start_kwargs()) - except Exception: - logger.exception("Could not display the error window") + mgr = velopack.UpdateManager(velopack.GiteaSource(VELOPACK_REPO_URL)) + info = mgr.check_for_updates() + if info is None: + logger.info("Velopack: no update available") + return + version = info.TargetFullRelease.Version + logger.info("Velopack: downloading update %s", version) + mgr.download_updates(info) + logger.info("Velopack: update %s staged, applies on next launch", version) + except (RuntimeError, OSError) as exc: + logger.info("Velopack update check skipped: %s", exc) def gui_main() -> None: """Run the GUI, rendering fatal exceptions as a TraceRite HTML window.""" + _velopack_startup() try: winmain() except Exception as exc: @@ -1126,8 +1156,26 @@ def _configure_windows_event_loop_policy() -> None: asyncio.set_event_loop_policy(policy_cls()) +def _strip_mark_of_the_web() -> None: + """Remove Zone.Identifier streams from bundled DLLs (frozen Windows only). + + Files extracted from a downloaded ZIP carry the Mark-of-the-Web, and the + .NET Framework CLR refuses to load such assemblies — pythonnet then fails + with "Failed to resolve Python.Runtime.Loader.Initialize from + .../Python.Runtime.dll". Strip the mark from the bundled DLLs before + pywebview loads the CLR. + """ + if not getattr(sys, "frozen", False) or sys.platform != "win32": + return + meipass = Path(sys._MEIPASS) # type: ignore[attr-defined] + for dll in meipass.rglob("*.dll"): + with contextlib.suppress(OSError): + Path(f"{dll}:Zone.Identifier").unlink() + + def winmain() -> None: _configure_windows_event_loop_policy() + _strip_mark_of_the_web() parser = argparse.ArgumentParser(description="MediaHive") parser.add_argument( @@ -1180,8 +1228,6 @@ def winmain() -> None: # Startup banner, same as fastapi-vue's server.run() prints in CLI mode. # Goes to stderr, which frozen builds redirect to the log file. - from fastapi_vue.startupbox import print_box - try: version = importlib.metadata.version("mediahive") except importlib.metadata.PackageNotFoundError: @@ -1192,8 +1238,6 @@ def winmain() -> None: # log config wires up its access-log middleware, emoji level prefixes and # tracerite tracebacks (colors are auto-disabled when stderr is not a tty, # e.g. redirected to the log file in frozen builds). - from fastapi_vue.logging import patch_log_config - config = uvicorn.Config( "mediahive.server:app", host=BACKEND_HOST, @@ -1228,6 +1272,10 @@ def winmain() -> None: server.should_exit = True raise RuntimeError(f"Backend did not become ready within {HEALTH_TIMEOUT}s") + threading.Thread( + target=_check_for_updates, daemon=True, name="mediahive-update-check" + ).start() + api = JsApi() logger.info("Configured pywebview backend: %s", _selected_webview_backend()) window = webview.create_window( diff --git a/pyproject.toml b/pyproject.toml index ea38a64..fd56f64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ dependencies = [ "httpx[http2]>=0.28.1", "msgspec>=0.19", "parse-torrent-title>=2.8.1", + "platformdirs>=4.0", "tomli-w>=1.2.0", "uvicorn[standard]>=0.40.0", ] @@ -50,10 +51,11 @@ parse-torrent-title = { git = "https://github.com/platelminto/parse-torrent-titl [project.optional-dependencies] gui = [ + # pywebview's qt extra is Qt6-only (QtPy + PyQt6 + PyQt6-WebEngine); + # Qt5 would come from its separate qt5 extra, which we do not use. "pywebview[qt]>=6.2.1; platform_system != 'Windows'", "pywebview>=6.2.1; platform_system == 'Windows'", - "qtpy>=2.4.1; platform_system == 'Darwin'", - "PyQt5>=5.15.11; platform_system == 'Darwin'", + "velopack>=1.2", "pythonnet>=3.1.0rc0; platform_system == 'Windows' and python_version >= '3.14'", "pyinstaller>=6.0", ] diff --git a/scripts/MediaHive.spec b/scripts/MediaHive.spec index 30ae419..01bc923 100644 --- a/scripts/MediaHive.spec +++ b/scripts/MediaHive.spec @@ -5,7 +5,7 @@ # pyinstaller --noconfirm --clean scripts/MediaHive.spec # # Or use the build script (recommended—handles versioning and packaging): -# uv run scripts/winbuild.py +# uv run scripts/guibuild.py import sys import mediahive.winmain @@ -20,7 +20,15 @@ _frontend_build = _pkg / "frontend-build" _logo_webp = _pkg / "assets" / "mediahive.webp" _icon_win = _pkg / "assets" / "mediahive.ico" _icon_mac = _pkg / "assets" / "mediahive.icns" -_tools_dir = Path(SPECPATH).parent / "build" / "ffmpeg" +# ffmpeg staging lives in the persistent build cache (same logic as +# scripts/guibuild.py); fall back to the legacy build/ffmpeg location. +from platformdirs import user_cache_path + +_tools_dir = ( + user_cache_path("mediahive-build", appauthor=False, opinion=False) / "ffmpeg" +) +if not _tools_dir.exists(): + _tools_dir = Path(SPECPATH).parent / "build" / "ffmpeg" _tool_names = ["ffmpeg.exe"] if sys.platform == "win32" else ["ffmpeg"] _binaries = [] @@ -80,11 +88,12 @@ if sys.platform == "darwin": # pywebview Qt backend selected dynamically via webview.start(gui="qt") "webview.platforms.qt", "qtpy", - "PyQt5", - "PyQt5.QtCore", - "PyQt5.QtGui", - "PyQt5.QtWidgets", - "PyQt5.QtWebEngineWidgets", + "PyQt6", + "PyQt6.QtCore", + "PyQt6.QtGui", + "PyQt6.QtWidgets", + "PyQt6.QtWebEngineCore", + "PyQt6.QtWebEngineWidgets", ] ) @@ -123,6 +132,11 @@ exe = EXE( windowed=True, ) +# UPX breaks .NET assemblies: packing Python.Runtime.dll strips/corrupts its +# CLR metadata and pythonnet then fails with "Failed to resolve +# Python.Runtime.Loader.Initialize from .../Python.Runtime.dll". +_upx_exclude = ["Python.Runtime.dll"] if sys.platform == "win32" else [] + coll = COLLECT( exe, a.binaries, @@ -130,7 +144,7 @@ coll = COLLECT( a.datas, strip=False, upx=True, - upx_exclude=[], + upx_exclude=_upx_exclude, name="MediaHive", ) diff --git a/scripts/guibuild.py b/scripts/guibuild.py index fb1bbfc..1474220 100755 --- a/scripts/guibuild.py +++ b/scripts/guibuild.py @@ -1,8 +1,8 @@ #!/usr/bin/env -S uv run -"""Build the desktop GUI application and package it as a version-numbered ZIP. +"""Build the desktop GUI application and package it with Velopack. Usage: - uv run scripts/winbuild.py + uv run scripts/guibuild.py This runs in the project environment where dependencies are available via pyproject.toml. @@ -10,14 +10,18 @@ are available via pyproject.toml. This script: 1. Reads the version from pyproject.toml 2. Runs `uv build` to produce the wheel/sdist - 3. On Windows, downloads the latest ffmpeg.exe for bundling - 4. On macOS arm64, downloads a prebuilt ffmpeg binary for bundling + 3. On Windows/macOS, downloads the ffmpeg binary for bundling 4. Builds MediaHive using PyInstaller - 5. Creates a ZIP file with the version number + 5. Packages with Velopack: Setup.exe (Windows), .pkg (macOS), + .AppImage (Linux), plus the update feed in build/velopack/ + that release.py uploads for in-app auto-updates + 6. On Windows, also creates a portable ZIP (no auto-updates) """ import io +import os import platform +import re import shutil import stat import subprocess @@ -25,8 +29,10 @@ import sys import urllib.request import zipfile from pathlib import Path +from typing import NamedTuple import setuptools_scm +from platformdirs import user_cache_path # BtbN automated builds always publish a 'latest' tag with this asset. _FFMPEG_URL = ( @@ -36,29 +42,59 @@ _FFMPEG_URL = ( _MACOS_ARM64_TOOL_URLS = { "ffmpeg": "https://www.osxexperts.net/ffmpeg81arm.zip", } -_FFMPEG_STAGING = Path(__file__).parent.parent / "build" / "ffmpeg" _REPO_ROOT = Path(__file__).parent.parent _ASSETS_DIR = _REPO_ROOT / "mediahive" / "assets" -def _platform_zip_suffix() -> str: - machine = platform.machine().lower() - arch = { - "x86_64": "x64", - "amd64": "x64", - "arm64": "arm64", - "aarch64": "arm64", - }.get(machine, machine or "unknown") +def _build_cache_dir() -> Path: + """Return the persistent cross-build cache dir for downloaded tools (CI wipes build/).""" + return user_cache_path("mediahive-build", appauthor=False, opinion=False) + +_FFMPEG_STAGING = _build_cache_dir() / "ffmpeg" + +# Velopack CLI (dotnet tool package). Runs on the machine's .NET runtime; the +# produced Setup.exe/Update.exe are native and need no runtime on end-user +# machines. Pin a version whose tools target an installed .NET major. +_VPK_VERSION = "1.2.158" +_VPK_URL = ( + f"https://api.nuget.org/v3-flatcontainer/vpk/{_VPK_VERSION}" + f"/vpk.{_VPK_VERSION}.nupkg" +) +_VPK_STAGING = _build_cache_dir() / f"vpk-{_VPK_VERSION}" + + +class _Platform(NamedTuple): + """Per-platform naming/packaging constants. + + tag is the release artifact suffix. Only Windows keeps an arch marker + (win64); macOS builds are arm64-only and we ship one Linux flavor. + """ + + tag: str # win64 / macos / linux + channel: str # Velopack update channel: win / osx / linux + rid: str # Velopack runtime id + dist_dir: str # PyInstaller output dir under build/ + icon: str # file in mediahive/assets + main_exe: str + setup_ext: str + + +def _platform() -> _Platform: if sys.platform == "win32": - return "win64" + return _Platform("win64", "win", "win-x64", "MediaHive", "mediahive.ico", "MediaHive.exe", ".exe") if sys.platform == "darwin": - return f"macos-{arch}" - return f"linux-{arch}" + return _Platform("macos", "osx", "osx-arm64", "MediaHive.app", "mediahive.icns", "MediaHive", ".pkg") + return _Platform("linux", "linux", "linux-x64", "MediaHive", "mediahive.png", "MediaHive", ".AppImage") + + +def setup_artifact_name(version: str) -> str: + p = _platform() + return f"MediaHive-{version}-{p.tag}-setup{p.setup_ext}" def fetch_ffmpeg() -> Path: - """Download latest ffmpeg.exe from BtbN builds into build/ffmpeg/.""" + """Download latest ffmpeg.exe from BtbN builds into the persistent build cache.""" dest = _FFMPEG_STAGING / "ffmpeg.exe" if dest.exists(): print(f"ffmpeg already staged at {dest}, skipping download.") @@ -83,7 +119,7 @@ def fetch_ffmpeg() -> Path: def fetch_macos_arm64_binaries() -> dict[str, Path]: - """Download prebuilt macOS arm64 ffmpeg binary into build/ffmpeg/.""" + """Download prebuilt macOS arm64 ffmpeg binary into the persistent build cache.""" if sys.platform != "darwin" or platform.machine().lower() not in { "arm64", "aarch64", @@ -180,6 +216,262 @@ def ensure_macos_icon() -> Path: return icon_icns +_VPK_TFM = "net10.0" +_VPK_REQUIRED_DOTNET_MAJOR = int(re.fullmatch(r"net(\d+)\.0", _VPK_TFM).group(1)) + + +def fetch_vpk() -> Path: + """Download the Velopack CLI package into the persistent build cache. + + Returns the path to vpk.dll, runnable with `dotnet vpk.dll ...`. + """ + vpk_dll = _VPK_STAGING / "tools" / _VPK_TFM / "any" / "vpk.dll" + if vpk_dll.exists(): + print(f"vpk already staged at {_VPK_STAGING}, skipping download.") + return vpk_dll + + _VPK_STAGING.mkdir(parents=True, exist_ok=True) + print(f"Downloading vpk from {_VPK_URL} ...") + with urllib.request.urlopen(_VPK_URL) as resp: + data = resp.read() + + with zipfile.ZipFile(io.BytesIO(data)) as zf: + zf.extractall(_VPK_STAGING) + + if not vpk_dll.exists(): + raise RuntimeError(f"vpk.dll not found in package at {vpk_dll}") + print(f"vpk staged at {_VPK_STAGING}") + return vpk_dll + + +def _dotnet_runtime_major(exe: Path) -> int | None: + """Return the highest installed Microsoft.NETCore.App major version, or None.""" + try: + result = subprocess.run( + [str(exe), "--list-runtimes"], capture_output=True, text=True, timeout=30 + ) + except (OSError, subprocess.TimeoutExpired): + return None + if result.returncode != 0: + return None + majors = [] + for line in result.stdout.splitlines(): + parts = line.split() + if len(parts) >= 2 and parts[0] == "Microsoft.NETCore.App": + try: + majors.append(int(parts[1].split(".")[0])) + except ValueError: + continue + return max(majors, default=None) + + +def fetch_dotnet() -> str: + """Resolve a system dotnet host able to run vpk (needs .NET >= 10). + + The .NET SDK is a build prerequisite installed on the build machine — + downloading a runtime per build is slow and flaky. Several dotnet + installations may coexist (PATH may resolve to a runtime-only .NET 8 + while scoop holds the SDK 10), so probe known locations and pick the + newest runtime rather than the first that runs. + """ + exe_name = "dotnet.exe" if sys.platform == "win32" else "dotnet" + candidates: list[Path] = [] + root = os.environ.get("DOTNET_ROOT") + if root: + candidates.append(Path(root) / exe_name) + which = shutil.which("dotnet") + if which: + candidates.append(Path(which)) + if sys.platform == "win32": + candidates += [ + Path(r"C:\ProgramData\scoop\apps\dotnet-sdk\current") / exe_name, + Path(r"C:\Program Files\dotnet") / exe_name, + ] + elif sys.platform == "darwin": + candidates += [ + Path("/opt/homebrew/bin") / exe_name, + Path("/usr/local/share/dotnet") / exe_name, + ] + else: + candidates += [ + Path("/usr/share/dotnet") / exe_name, + Path("/usr/lib/dotnet") / exe_name, + Path.home() / ".dotnet" / exe_name, + ] + + best: tuple[int, Path] | None = None + for exe in candidates: + if not exe.exists(): + continue + major = _dotnet_runtime_major(exe) + if major is not None and (best is None or major > best[0]): + best = (major, exe) + + if best is not None and best[0] >= _VPK_REQUIRED_DOTNET_MAJOR: + print(f"Using dotnet at {best[1]} (.NET {best[0]})") + return str(best[1]) + + found = f"newest found is .NET {best[0]} at {best[1]}" if best else "none found" + raise RuntimeError( + f"vpk requires Microsoft.NETCore.App >= {_VPK_REQUIRED_DOTNET_MAJOR} ({found}). " + "Install the current .NET SDK on this build machine " + "(Windows: `scoop install dotnet-sdk`; macOS: `brew install dotnet-sdk`; " + "Linux: distro `dotnet-sdk` package or the dotnet-install script)." + ) + + +def build_velopack(version: str) -> Path: + """Build the Velopack installer/bundle for this platform. + + Windows: per-user Setup.exe. macOS: .pkg installer. Linux: .AppImage. + Also produces the update feed (releases..json, *.nupkg) in + build/velopack/ for release.py to upload — in-app auto-updates read it + from the Gitea release. Velopack installs carry no Mark-of-the-Web, so + the .NET CLR loads pythonnet/pywebview assemblies that it refuses from + a downloaded ZIP. + """ + plat = _platform() + dist_folder = _REPO_ROOT / "build" / plat.dist_dir + if not dist_folder.exists(): + raise FileNotFoundError(f"Distribution folder not found: {dist_folder}") + + vpk_dll = fetch_vpk() + releases_dir = _REPO_ROOT / "build" / "velopack" + + cmd = [ + fetch_dotnet(), + str(vpk_dll), + "pack", + "--packId", + "MediaHive", + "--packVersion", + version, + "--packDir", + str(dist_folder), + "--mainExe", + plat.main_exe, + "--packAuthors", + "MediaHive", + "--packTitle", + "MediaHive", + "--icon", + str(_ASSETS_DIR / plat.icon), + "--runtime", + plat.rid, + "--outputDir", + str(releases_dir), + ] + if sys.platform == "darwin": + cmd += ["--instWelcome", str(_ASSETS_DIR / "macos-installer-welcome.txt")] + print(f"Running: {' '.join(cmd)}") + try: + result = subprocess.run(cmd, cwd=_REPO_ROOT, capture_output=True, text=True) + except OSError as exc: + raise RuntimeError(f"vpk failed to start: {exc}") from exc + if result.returncode != 0: + raise RuntimeError( + f"vpk pack failed with exit code {result.returncode}\n" + f"stdout:\n{result.stdout}\nstderr:\n{result.stderr}" + ) + + setup = next(iter(sorted(releases_dir.glob(f"*Setup*{plat.setup_ext}"))), None) + if setup is None: + setup = next(iter(sorted(releases_dir.glob(f"*{plat.setup_ext}"))), None) + if setup is None: + raise RuntimeError(f"vpk produced no *{plat.setup_ext} in {releases_dir}") + if sys.platform == "darwin": + force_macos_user_install(setup) + artifact = _REPO_ROOT / "build" / setup_artifact_name(version) + artifact.unlink(missing_ok=True) + setup.rename(artifact) + rename_feed_package(releases_dir, version, plat.channel) + return artifact + + +def rename_feed_package(releases_dir: Path, version: str, channel: str) -> None: + """Rename this platform's update-feed nupkg in place. + + vpk hardcodes MediaHive-{ver}[-{channel}]-full.nupkg (Windows, the legacy + default channel, gets no marker). Rename all to the uniform + mediahive-{ver}-{channel}-full.nupkg: lowercase groups them with the + wheel/sdist below the capitalized user downloads on the release page, + and every platform carries its channel. releases..json + references the filename, so patch it too. + """ + old_name = f"MediaHive-{version}-full.nupkg" + if not (releases_dir / old_name).exists(): + old_name = f"MediaHive-{version}-{channel}-full.nupkg" + nupkg = releases_dir / old_name + if not nupkg.exists(): + raise RuntimeError(f"vpk produced no {old_name} in {releases_dir}") + + new_name = f"mediahive-{version}-{channel}-full.nupkg" + manifest = releases_dir / f"releases.{channel}.json" + text = manifest.read_text() + if old_name not in text: + raise RuntimeError(f"{manifest.name} does not reference {old_name}") + manifest.write_text(text.replace(old_name, new_name)) + nupkg.rename(nupkg.with_name(new_name)) + + +def force_macos_user_install(pkg: Path) -> None: + """Restrict the Velopack-generated pkg to per-user installs (~/Applications). + + Velopack hardcodes two install domains (currentUserHome + localSystem) in + the distribution XML. System installs land in /Applications, which the + user may not own — Velopack's UpdateMac then cannot replace the .app on + auto-update. With a single domain, macOS Installer skips the Destination + Select page and installs to ~/Applications without admin rights. + + Also drops the `sudo -u "$USER"` prefix from Velopack's postinstall + script: under a per-user install the script already runs as the + installing user, and sudo would fail for lack of a tty. + + NB: only ever use `pkgutil --expand` (which keeps component Payloads + archived) — `--expand-full` flattens payloads to loose files that + `--flatten` cannot repack, producing a pkg that "installs" nothing. + """ + expanded = pkg.with_name(pkg.stem + "-expanded") + shutil.rmtree(expanded, ignore_errors=True) + subprocess.run(["pkgutil", "--expand", str(pkg), str(expanded)], check=True) + + dist_xml = expanded / "Distribution" + xml = dist_xml.read_text() + new_xml, count = re.subn( + r"]*/>", + '', + xml, + ) + if count != 1: + raise RuntimeError("Unexpected distribution.xml: not found") + dist_xml.write_text(new_xml) + + # Edit postinstall inside the component pkg. Depending on the macOS + # version, --expand leaves the component as an archived file (needs a + # nested expand/flatten round) or as an already-expanded directory. + components = list(expanded.glob("*.pkg")) + if len(components) != 1: + contents = sorted(p.name for p in expanded.iterdir()) + raise RuntimeError(f"Unexpected pkg layout: components={components} in {contents}") + component = components[0] + if component.is_dir(): + comp_dir = component + else: + comp_dir = expanded / (component.stem + "-component") + subprocess.run(["pkgutil", "--expand", str(component), str(comp_dir)], check=True) + postinstall = comp_dir / "Scripts" / "postinstall" + script = postinstall.read_text() + if 'sudo -u "$USER" ' not in script: + raise RuntimeError("Unexpected postinstall script: sudo prefix not found") + postinstall.write_text(script.replace('sudo -u "$USER" ', "")) + if comp_dir is not component: + subprocess.run(["pkgutil", "--flatten", str(comp_dir), str(component)], check=True) + shutil.rmtree(comp_dir) + + subprocess.run(["pkgutil", "--flatten", str(expanded), str(pkg)], check=True) + shutil.rmtree(expanded) + + def read_version() -> str: """Read version via setuptools_scm (same logic as hatch-vcs).""" return setuptools_scm.get_version(root=str(_REPO_ROOT)) @@ -217,18 +509,18 @@ def build_executable() -> None: raise RuntimeError(f"PyInstaller failed with exit code {result.returncode}") -def create_zip(version: str) -> Path: - """Create a version-numbered ZIP file of the build/MediaHive folder.""" - repo_root = _REPO_ROOT - dist_folder = repo_root / "build" / "MediaHive" +def create_portable_zip(version: str) -> Path: + """Create the Windows portable ZIP of the build/MediaHive folder. + Velopack-less plain-folder distribution for users who cannot or do not + want to run Setup.exe. No auto-updates; the app strips Mark-of-the-Web + from bundled DLLs at first run instead. + """ + dist_folder = _REPO_ROOT / "build" / "MediaHive" if not dist_folder.exists(): raise FileNotFoundError(f"Distribution folder not found: {dist_folder}") - zip_name = f"MediaHive-{version}-{_platform_zip_suffix()}.zip" - zip_path = repo_root / "build" / zip_name - zip_path.parent.mkdir(parents=True, exist_ok=True) - + zip_path = _REPO_ROOT / "build" / f"MediaHive-{version}-win64-portable.zip" print(f"Creating {zip_path}...") shutil.make_archive( str(zip_path.with_suffix("")), # removes .zip so make_archive can add it @@ -258,10 +550,14 @@ def main() -> None: ) build_wheel() build_executable() - zip_path = create_zip(version) - print(f"✓ Built successfully: {zip_path}") - print(f" Size: {zip_path.stat().st_size / (1024 * 1024):.1f} MB") + artifacts = [build_velopack(version)] + if sys.platform == "win32": + artifacts.append(create_portable_zip(version)) + + for artifact_path in artifacts: + print(f"✓ Built successfully: {artifact_path}") + print(f" Size: {artifact_path.stat().st_size / (1024 * 1024):.1f} MB") except (FileNotFoundError, OSError, RuntimeError, ValueError) as e: print(f"✗ Build failed: {e}", file=sys.stderr) sys.exit(1) diff --git a/scripts/release.py b/scripts/release.py index 053a712..bf4496a 100755 --- a/scripts/release.py +++ b/scripts/release.py @@ -9,10 +9,14 @@ Reads from [project.urls] Repository in pyproject.toml. Token: GITEA_TOKEN environment variable Steps: - 1. Find clean-versioned ZIPs in build/ and matching dist/ wheels/sdists - 2. Abort if any dist files are missing for a found ZIP version - 3. Create a Gitea release for each version and upload all assets + 1. Find clean-versioned platform artifacts in build/ and matching dist/ wheels/sdists + 2. Abort if any dist files are missing for a found artifact version + 3. Create a Gitea release for each version (or reuse the existing one + for the tag, skipping already-uploaded assets) and upload all assets 4. Remind the user to run: uv publish + +Parallel CI platform builds converge on one release per tag; pass --no-dist +on all but one platform so only it uploads the wheel/sdist. """ import argparse @@ -63,17 +67,20 @@ def load_token() -> str: # ZIP + dist helpers # --------------------------------------------------------------------------- -# Matches MediaHive-1.2.3-win64.zip, MediaHive-1.2.3-macos-arm64.zip, etc. -# Rejects dev/dirty versions like MediaHive-1.2.3.dev0+gabcd-win64.zip -_CLEAN_ZIP_RE = re.compile(r"^MediaHive-(\d+(?:\.\d+)*)-([A-Za-z0-9._-]+)\.zip$") +# Matches MediaHive-1.2.3-win64-portable.zip, MediaHive-1.2.3-win64-setup.exe, +# MediaHive-1.2.3-macos-setup.pkg, MediaHive-1.2.3-linux-setup.AppImage, etc. +# Rejects dev/dirty versions like MediaHive-1.2.3.dev0+gabcd-win64-portable.zip +_CLEAN_ARTIFACT_RE = re.compile( + r"^MediaHive-(\d+(?:\.\d+)*)-([A-Za-z0-9._-]+)\.(?:zip|dmg|exe|pkg|AppImage)$" +) -def find_releasable_zips() -> list[tuple[Path, str, str]]: - """Return (path, version, platform_tag) for clean-versioned ZIPs in build/.""" +def find_releasable_artifacts() -> list[tuple[Path, str, str]]: + """Return (path, version, platform_tag) for clean-versioned artifacts in build/.""" build_dir = REPO_ROOT / "build" results = [] - for p in sorted(build_dir.glob("MediaHive-*.zip")): - m = _CLEAN_ZIP_RE.match(p.name) + for p in sorted(build_dir.glob("MediaHive-*")): + m = _CLEAN_ARTIFACT_RE.match(p.name) if m: results.append((p, m.group(1), m.group(2))) return results @@ -108,6 +115,23 @@ def find_dist_files(version: str) -> list[Path]: return [wheel, sdist] +def find_velopack_feed_files() -> list[Path]: + """Velopack update feed files produced by vpk pack in build/velopack/. + + Only what the in-app updater (GiteaSource) reads from the latest + release: this channel's releases..json index and the nupkg + payload it points to. The legacy RELEASES and assets.*.json manifests + (Squirrel compat / setup bootstrap) are not uploaded. + """ + releases_dir = REPO_ROOT / "build" / "velopack" + if not releases_dir.exists(): + return [] + files: list[Path] = [] + for pattern in ("releases.*.json", "*.nupkg"): + files.extend(sorted(releases_dir.glob(pattern))) + return files + + # --------------------------------------------------------------------------- # Gitea API helpers # --------------------------------------------------------------------------- @@ -117,6 +141,18 @@ def gitea_headers(token: str) -> dict: return {"Authorization": f"token {token}", "Accept": "application/json"} +def get_release_by_tag( + client: httpx.Client, base_url: str, repo: str, tag: str +) -> dict | None: + """Return the existing release for a tag, or None.""" + url = f"{base_url}/api/v1/repos/{repo}/releases/tags/{tag}" + resp = client.get(url) + if resp.status_code == 404: + return None + resp.raise_for_status() + return resp.json() + + def create_release( client: httpx.Client, base_url: str, @@ -125,8 +161,12 @@ def create_release( version: str, notes: str, draft: bool, -) -> int: - """Create a Gitea release and return its id.""" +) -> tuple[int, set[str]]: + """Create a Gitea release, or reuse the existing one for the tag. + + Returns (release_id, names of assets already attached), so parallel + platform builds can converge on one release without conflicts. + """ url = f"{base_url}/api/v1/repos/{repo}/releases" payload = { "tag_name": tag, @@ -137,11 +177,17 @@ def create_release( } resp = client.post(url, json=payload) if resp.status_code == 409: - raise RuntimeError(f"A release for tag '{tag}' already exists on Gitea.") + existing = get_release_by_tag(client, base_url, repo, tag) + if existing is None: + raise RuntimeError(f"Release for tag '{tag}' conflicts but cannot be read.") + release_id = existing["id"] + assets = {a["name"] for a in existing.get("assets", [])} + print(f"Release for tag '{tag}' already exists (id={release_id}), reusing it.") + return release_id, assets resp.raise_for_status() release_id = resp.json()["id"] print(f"Created release id={release_id} (draft={draft})") - return release_id + return release_id, set() def upload_asset( @@ -154,7 +200,10 @@ def upload_asset( """Upload a file to the release and return the download URL.""" url = f"{base_url}/api/v1/repos/{repo}/releases/{release_id}/assets" size_mb = path.stat().st_size / (1024 * 1024) - mime = "application/zip" if path.suffix == ".zip" else "application/octet-stream" + mime = { + ".zip": "application/zip", + ".dmg": "application/x-apple-diskimage", + }.get(path.suffix, "application/octet-stream") print(f"Uploading {path.name} ({size_mb:.1f} MB) ...") with Path(path).open("rb") as fh: resp = client.post( @@ -185,16 +234,21 @@ def main() -> None: parser.add_argument( "--notes", default="", metavar="TEXT", help="Release notes body" ) + parser.add_argument( + "--no-dist", + action="store_true", + help="Skip wheel/sdist upload (for parallel platform builds; one job uploads them)", + ) args = parser.parse_args() try: cfg = load_gitea_config() token = load_token() - zips = find_releasable_zips() - if not zips: + artifacts = find_releasable_artifacts() + if not artifacts: print( - "No clean-versioned ZIPs found in build/.\n" + "No clean-versioned platform artifacts found in build/.\n" "Run scripts/guibuild.py first.", file=sys.stderr, ) @@ -202,28 +256,42 @@ def main() -> None: # Validate all dist files exist before touching Gitea dist_files: dict[str, list[Path]] = {} - for _, version, _platform_tag in zips: - dist_files[version] = find_dist_files(version) + if not args.no_dist: + for _, version, _platform_tag in artifacts: + dist_files[version] = find_dist_files(version) base_url = cfg["url"].rstrip("/") repo = cfg["repo"] with httpx.Client(headers=gitea_headers(token)) as client: - release_ids_by_version: dict[str, int] = {} - for zip_path, version, platform_tag in zips: + releases: dict[str, tuple[int, set[str]]] = {} + for artifact_path, version, platform_tag in artifacts: print(f"\nReleasing {version} ...") tag = f"v{version}" - release_id = release_ids_by_version.get(version) - if release_id is None: - release_id = create_release( + if version not in releases: + releases[version] = create_release( client, base_url, repo, tag, version, args.notes, args.draft ) - release_ids_by_version[version] = release_id - for path in dist_files[version]: + release_id, uploaded = releases[version] + for path in dist_files.get(version, []): + if path.name in uploaded: + print(f"Skipping {path.name}, already on the release.") + continue upload_asset(client, base_url, repo, release_id, path) + release_id, uploaded = releases[version] + if artifact_path.name in uploaded: + print(f"Skipping {artifact_path.name}, already on the release.") + continue print(f"Uploading platform artifact: {platform_tag}") - upload_asset(client, base_url, repo, release_id, zip_path) + upload_asset(client, base_url, repo, release_id, artifact_path) + uploaded.add(artifact_path.name) + for feed_file in find_velopack_feed_files(): + if feed_file.name in uploaded: + print(f"Skipping {feed_file.name}, already on the release.") + continue + upload_asset(client, base_url, repo, release_id, feed_file) + uploaded.add(feed_file.name) print(f" ✓ {tag} published") print("\nDone. To publish to PyPI, run:")