• v1.0.0 b9b22abc4e

    v1.0.0
    All checks were successful
    Build and Publish / build (push) Successful in 12s
    Stable

    midas released this 2026-04-10 21:56:26 +02:00 | 0 commits to main since this release

    pwnfoil v1.0.0

    First release. A self-hosted game download manager that scrapes ROM sources,
    unrestricts hoster links via a debrid service, queues resumable downloads
    with live progress, and auto-unpacks the archives into a clean,
    emulator-ready folder tree.

    All ten planned phases from the initial roadmap are delivered and running in
    production, smoke-tested end-to-end against real Real-Debrid traffic and real
    nswgame.com releases (including RAR5).

    What's in the box

    • Import by URL — paste a source page, the scraper pulls title, cover,
      description, and download links in one go.
    • Real-Debrid unrestricting — wired up and live-tested; the DebridProvider
      interface is ready for TorBox next.
    • Resumable downloads — HTTP/2 Range resume on .part files, retries with
      exponential backoff on transient network errors, and zombie-task recovery on
      restart so a JVM crash mid-download doesn't strand anything.
    • Live progress via SSE — per-task speed and ETA streamed to the UI,
      auto-reconnecting EventSource with a 10s polling fallback.
    • Post-download extraction — single 7z CLI shell-out handles zip / 7z / rar
      (incl. RAR5, multi-part, solid) / tar / gz / bz2 / xz. Per-task cancel,
      optional archive cleanup after success.
    • Organised on disk — files land at ///…
      using human-readable platform names.
    • Svelte 5 SPA — library with search, game detail with per-link download
      status, downloads queue with tabs, settings with debrid health check.
    • Safety — path-traversal checks on both the download target and the
      extractor.

    Stack

    Kotlin · Spring Boot 3.4 · Java 21 · PostgreSQL 16 · Liquibase · Svelte 5
    (runes) · Vite · nginx · Docker Compose · Forgejo CI.

    Backend test coverage: 44 tests (5 skipped locally without 7z on PATH, run in
    CI).

    Run it

    cp .env.example .env

    fill in REALDEBRID_API_KEY

    docker compose -f docker-compose.prod.yml up -d --build

    Images are published to the Forgejo container registry on every push to main:

    • git.midasvo.nl/midas/pwnfoil-backend:latest
    • git.midasvo.nl/midas/pwnfoil-frontend:latest

    Known limits (explicitly out of scope for v1)

    Single source (nswgame.com), single debrid (Real-Debrid), single user, no
    notifications, no metadata enrichment from IGDB/MobyGames. See the post-v1
    backlog in initial-plan.md for what comes next.

    Downloads