Skip to content

v0.6.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@3nderXP 3nderXP released this 19 Jul 10:41
· 4 commits to develop since this release
d163eac

Summary

This release candidate contains every change merged into develop since
v0.5.0: Linux terminal shortcuts, a native macOS application shortcut,
Modrinth modpack installation, safe Minecraft version migration, and several
interactive UI and reliability fixes.

Desktop and terminal shortcuts

Linux terminal shortcut (#16)

  • The installer detects supported terminal emulators and lets the user choose
    where Elo should open.

  • Creates an installer-owned desktop application entry under
    ${XDG_DATA_HOME:-$HOME/.local/share}/applications.

  • Adds a branded Elo shortcut icon.

  • Supports Warp, Kitty, GNOME Terminal, Console, Konsole, Xfce Terminal, MATE
    Terminal, Tilix, WezTerm, Alacritty, foot, QTerminal, LXTerminal, XTerm, and
    compatible custom executables.

  • Supports direct, --, and -e custom terminal invocation modes.

  • Uses Warp's launch-configuration URI when Warp is selected.

  • Adds installer options for unattended or repeatable setup:

    --terminal <command>
    --configure-shortcut
    --no-shortcut
  • Persists shortcut configuration in the installation manifest.

  • Reinstall and update flows can reconfigure the selected terminal.

  • Self-uninstall removes only shortcuts carrying Elo ownership markers.

Native macOS shortcut (#17)

  • Creates an installer-managed Elo.app bundle under ~/Applications.
  • Uses Apple Terminal by default.
  • Includes the executable wrapper, Info.plist, ownership marker, and branded
    application icon.
  • Supports a configurable applications directory through
    ELO_APPLICATIONS_DIR.
  • Preserves the same safe reinstall, update, and uninstall ownership rules used
    by Linux shortcuts.

Modrinth modpack support

Added in #18.

Import local .mrpack files

elo instances import potato-edition "./Potato Edition.mrpack"
  • Imports Modrinth format v1 archives as new Elo instances.
  • Validates archive structure, duplicate/root index entries, and every archive
    and index path before extraction.
  • Rejects absolute paths, traversal, unsafe separators, invalid managed paths,
    and unsupported archive layouts.
  • Accepts only documented HTTPS download hosts.
  • Verifies declared file sizes and SHA-512 hashes.
  • Installs supported client files and optional client files.
  • Skips server-only files and server overrides.
  • Applies overrides followed by client-overrides inside Elo-managed paths.
  • Reports and skips override paths that Elo cannot activate safely.
  • Records Minecraft version, loader, pack name/version/source, addon metadata,
    hashes, and required dependency relationships.
  • Publishes the new instance only after validation and downloads complete.
  • Never overwrites an existing instance or colliding file.

Install provider modpacks

elo addons install <instance> <modpack-id-or-slug>
elo addons install <instance> "./local-pack.mrpack"
  • Resolves Modrinth modpack projects by ID or slug.
  • Downloads and verifies the selected .mrpack before using the same safe
    import pipeline as local archives.
  • Warns before installing into a non-empty instance.
  • Adopts pack Minecraft/loader metadata when installing into an empty instance.
  • Shows archive download, indexed-file download, verification, and override
    progress.

Minecraft version migration

Added in #18.

elo instances version <name> <version> [--migrate] \
  [--remove-incompatible] [--dry-run] [--yes]
  • Allows changing the Minecraft version of an existing instance.
  • Classifies the change as an upgrade, downgrade, or opaque version change.
  • Analyzes every managed addon and required dependency against the target
    Minecraft version before confirmation.
  • Reports the following states:
    • keep: installed version already supports the target;
    • update: compatible replacement is available;
    • restore: managed file is missing but can be restored;
    • unavailable: no compatible provider release was found;
    • blocked: a required dependency cannot migrate safely;
    • modified: file differs from its recorded SHA-512;
    • collision: replacement filename already exists;
    • unmanaged: local/provider data cannot be resolved;
    • external: file is not registered with Elo.
  • Supports analysis-only execution through --dry-run.
  • Stages and SHA-512 verifies all compatible replacements before changing the
    instance.
  • Optionally removes selected verified incompatible addons.
  • Never automatically removes modified, colliding, or external files.
  • Updates dependency registry edges after successful migration.
  • Retains replaced files, the previous addon registry, and previous instance
    metadata in a timestamped .elo-migrations recovery backup.
  • Allows changing metadata without migration while clearly warning that addon
    files may no longer match the selected Minecraft version.

Interactive UI and reliability

Added or fixed in #18.

  • Adds Gum flows for local modpack import, provider modpack installation, and
    instance version changes.
  • Uses gum pager for migration reports from large modpacks.
  • Uses searchable gum filter --no-limit multi-select for choosing
    incompatible addons to remove.
  • Keeps long Modrinth/provider slugs complete instead of truncating or shifting
    table columns.
  • Displays No addons found. when a compatibility-filtered search is empty,
    replacing Gum's invalid data provided error.
  • Renders progress glyphs safely across supported terminals.
  • Expands tests for interactive delegation, empty results, long slugs, version
    changes, migration backups, dependency analysis, and modified files.

Documentation and development rules

  • Documents the new CLI, storage, runtime, architecture, testing, release, and
    limitation contracts.
  • Requires behavior changes to update their owning module, user-facing docs or
    CLI specification, and tests together.
  • Adds .mrpack and migration scenarios to release validation.

Before upgrading

This is a release candidate. Back up important worlds and instances before
testing modpack installation or version migration.

Review migration plans carefully when they contain modified, blocked,
collision, unmanaged, or external entries. Elo preserves these files but
cannot guarantee compatibility with the selected Minecraft version.

Known limitations

  • External addons are preserved but cannot yet be identified or migrated
    automatically through provider file hashes.
  • Elo records a modpack's loader but does not install it.
  • .mrpack overrides outside Elo-managed paths are reported and skipped.
  • Recovery data is retained under .elo-migrations, but there is no
    user-facing rollback command yet.
  • Modrinth remains the only supported addon provider.
  • Concurrent-process locking and a transaction journal are not yet available.

Validation

bash -n install.sh elo.sh lib/*.sh tests/*.sh
./tests/test_elo.sh
./tests/test_provider.sh
./tests/test_mrpack.sh
./tests/test_install.sh
./tests/test_interactive.sh

## What's Changed
* feat(installer): add terminal shortcut setup by @3nderXP in https://github.com/3nderXP/elo/pull/16
* feat(installer): add macOS app shortcut by @3nderXP in https://github.com/3nderXP/elo/pull/17
* Feat: Manage modpack instance data and improve UI safety by @3nderXP in https://github.com/3nderXP/elo/pull/18


**Full Changelog**: https://github.com/3nderXP/elo/compare/v0.5.0...v0.6.0-rc.1