Files
mediahive/docs/development.md
T
LeoVasanko 303aabc181
release / gui-build (linux, bash) (push) Failing after 50s
release / gui-build (macos, bash) (push) Successful in 1m44s
release / gui-build (windows, cmd) (push) Successful in 1m48s
Velopack packaging on all platforms with in-app auto-updates
- macOS: .pkg installer replaces the DMG; Linux: .AppImage replaces the ZIP
- winmain runs velopack.App() first (proper hook handling) and checks for
  updates in the background; downloads are applied on next launch
- release.py uploads the vpk update feed (releases.<channel>.json, nupkgs)
  so GiteaSource finds updates on the latest release
- guibuild.py bootstraps a .NET runtime into build/dotnet when the runner
  host lacks one
2026-09-22 23:50:50 +00:00

2.2 KiB

Development

This document covers the developer-facing ways to run MediaHive locally. The main README.md covers end-user startup across platforms (installer/AppImage downloads, uvx --from mediahive[gui] mediahive on Linux/other).

Requirements

  • Python 3.14+
  • uv
  • Node.js 18+

Install Dependencies

uv sync --extra gui --group dev
cd frontend
npm install

Run The Backend Directly

uv run mediahive /path/to/media/folder

This starts the FastAPI backend and serves the built frontend.

Run Frontend + Backend In Development

uv run scripts/devserver.py /path/to/media/folder

This starts the FastAPI backend with auto-reload plus the Vite frontend dev server.

Run The Desktop App In Development

uv run --extra gui python -m mediahive.winmain /path/to/media/folder

This launches the same pywebview-based desktop flow used by the Windows build.

Building And Releasing

The helper scripts are directly executable via their uv run shebang (on Windows, run them with uv run scripts/<name>.py):

  • ./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). vpk (and a .NET runtime, if the host lacks one) are downloaded into build/ automatically.
  • ./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.

Notes

  • The selected media folder is scanned continuously by the backend.
  • The desktop app remembers the chosen folder between launches.
  • HTTP and WebSocket endpoints are documented in API.md.
  • MPC-BE integration details (Windows only) live in mpc-be.md.
  • Scanner/indexer design notes and the v0.5.0 rescan fixes are reviewed in scanning-review.md.