Skip to content

hopper 0.2.0

Choose a tag to compare

@ptMuta ptMuta released this 03 Oct 14:23
· 15 commits to main since this release

Hopper 0.2.0

Hopper now manages explicit named Minecraft server instances with mandatory systemd
services, native GregTech: New Horizons support, and verified existing-world onboarding.

Breaking changes and migration

  • Linux with systemd 247 or newer is required. Installs create a stopped, disabled
    service; hopper start NAME enables and starts it.
  • Select sources explicitly with --provider and the provider's pack/collection/file
    options. Bare pack names, cf: shorthand, implicit directory updates, and optional
    service installation are no longer supported. Bare hopper prints help.
  • User scope is always the default, including under sudo. System installs require
    explicit --scope system and use a dedicated unprivileged service account.
  • Adopt a stopped existing installation with hopper onboard NAME --provider … --from PATH. This creates a verified private backup, preserves the installed
    baseline, world, edited configs, custom files and disabled mods, and moves the
    installation only after successful verification and service setup. An unmanaged
    baseline needs an explicit installed version and, for GTNH, Java selection.
  • Starts are rejected while any .new conflict remains, including launcher conflicts.
    Review and merge or deliberately reject each change, then remove its sidecar.
    The systemd pre-launch guard also covers boot-time and direct systemd starts.
    Refresh existing generated units with hopper repair NAME --scope user or
    sudo hopper repair NAME --scope system while the server is stopped.

New features

  • Native GTNH stable/testing releases and daily/experimental snapshots, with explicit
    version pinning and version-matched modern Java bootstrap components.
  • Graceful scheduled restarts and updates: stage before shutdown, warn through RCON,
    save the world, stop, apply changes, and restart only previously running servers.
    Operator stop cancels pending maintenance. Updates that produce .new conflicts
    leave the server stopped for review.
  • Hardened system services and unprivileged pack workers, private credentials, and
    explicit RCON firewall acknowledgement. User services support lingering.
  • Verified backups, interrupted-install/adoption recovery, safe port allocation,
    protected world paths, and service removal/reattachment without deleting data.
  • Hosting/performance guidance for GTNH and other packs in docs/hosting.md.

Upgrade cautions

Testing/nightly packs are not automatically safe for production worlds. Major GTNH
upgrades can require merging incoming configs and explicit Forge world-remapping
consent. Hopper does not automatically approve potentially destructive conversions.
Keep a verified backup and follow the pack's upgrade instructions.

Verification

  • 598 automated tests; Clippy and formatting checks pass.
  • Disposable Debian Incus verification covered GTNH 2.8.4 stable and 2.9.0-RC-1
    testing on GraalVM 25, real user/system services and scheduled restarts, live system
    hardening, onboarding preservation and RCON secret rotation, interrupted-install
    recovery, service reattachment, and operator-stop cancellation. The testing world
    required an operator-reviewed config change and explicit remapping consent.
  • The verification container and temporary helper were removed afterward.
  • Daily/experimental discovery was verified; those branches and authenticated
    CurseForge downloads were not boot-tested in that container.