Skip to content

Releases: 3nderXP/elo

v0.6.1

Choose a tag to compare

@3nderXP 3nderXP released this 22 Jul 05:38
883f9c9

Fixed

  • The installer no longer reports the version as main after a fresh
    install from GitHub releases. elo version now correctly shows the
    installed release tag (e.g. v0.6.1) when installed via the README
    curl -fsSL https://github.com/3nderXP/elo/releases/latest/download/install.sh | bash
    command. Pinned installs with an explicit --ref are unaffected.

Docs

  • Documented the PR/release draft workflow and the -rc pre-release
    suffix convention in skills/git-github-workflow.

Upgrade

elo update

What's Changed

  • fix(install): resolve latest release tag when --ref is not explicit by @3nderXP in #22
  • docs(skill): document PR/release draft workflow and rc suffix rule by @3nderXP in #23
  • Release v0.6.1 by @3nderXP in #24

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@3nderXP 3nderXP released this 21 Jul 17:19
ef554dc

This release brings Modrinth modpack support (local and provider-based),
safe Minecraft version migration, native desktop/terminal shortcuts, and a
more transparent update experience — installed version and update checks in
the interactive header, a dedicated elo version command, and self-restart
after updating.

Highlights

  • Import a local Modrinth .mrpack as a new instance, or install a modpack
    project (by ID/slug) from a provider — both through the same validated,
    atomic pipeline (elo instances import, elo addons install).
  • Change an instance's Minecraft version with elo instances version,
    analyzing every managed addon (keep, update, restore, unavailable,
    modified, collision, unmanaged, blocked, external) before confirming, with
    optional guided migration and a timestamped recovery backup.
  • Linux terminal shortcut setup, detecting the user's terminal emulator and
    creating a branded, installer-owned launcher entry.
  • Native macOS Elo.app shortcut under ~/Applications.
  • elo version / elo --version / elo -v prints the installed release.
  • The interactive header shows the installed version (or development
    outside an installer-managed release) in its own small badge, and checks
    GitHub for a newer stable release on every startup, with a 24-hour cache.
  • Updating from the interactive System menu now restarts Elo in place, so a
    newly installed release is active immediately without reopening the
    interface.
  • "Update Elo" gains a "Browse releases" option to pick any published
    version, alongside the latest-stable and exact-version options.
  • Various interactive UI, table, and pagination reliability fixes.

Upgrading

elo update

For a new installation:

curl -fsSL https://raw.githubusercontent.com/3nderXP/elo/v0.6.0/install.sh | bash

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 #16
  • feat(installer): add macOS app shortcut by @3nderXP in #17
  • Feat: Manage modpack instance data and improve UI safety by @3nderXP in #18
  • docs(readme): add badges and update install script URL by @3nderXP in #19
  • Feat: version command, dev-aware header badge, and self-restart after update by @3nderXP in #20
  • Release v0.6.0-rc.3 by @3nderXP in #21

Full Changelog: v0.5.0...v0.6.0

v0.6.0-rc.3

v0.6.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@3nderXP 3nderXP released this 21 Jul 16:41
a6ddeb1

Summary

Release candidate built on v0.6.0-rc.2 (docs-only) / v0.6.0-rc.1. Adds a
generic modpack import path (provider projects, not just local .mrpack
files), a version-aware interactive header with startup update checks, a new
elo version command, and a self-restart after updating from the interactive
interface so the new release is active immediately.

Merged in #20 by @3nderXP.

elo version

elo version
elo --version
elo -v
  • Prints the installed Elo version, or unknown outside an installer-managed
    release.
  • Documented in elo help version / elo version --help.

Generic modpack import

  • elo instances import <name> <id-or-slug> [--provider <provider>] now
    accepts a Modrinth modpack project ID or slug, in addition to a local
    .mrpack file, through a new shared elo_cmd_import dispatcher
    (lib/mrpack.sh).
  • Adding a new provider module (search/search_page/project_type/resolve/ get_dependencies/download) makes it work with import automatically; no
    changes needed in elo_cmd_import itself.
  • instance.conf's MODPACK_SOURCE / MODPACK_SOURCE_VERSION now reflect the
    real origin (modrinth:<id> or local) instead of always local.
  • The interactive "Import modpack" flow asks "Provider project" or "Local
    .mrpack file" up front, matching the existing "Install addon" flow.
  • Installing a modpack into a non-empty instance now shows a proactive yellow
    warning in the UI, before the install-mode prompt (in addition to the
    existing backend warning).

Startup update check

  • Opening the interactive interface (elo with no arguments) checks GitHub
    for a newer stable release, caching the result for 24 hours
    (elo_check_for_updates, update_notice.conf).
  • The header shows an alert when a newer release is available:
    Update available: vX.Y.Z (System > Update Elo).

Version-aware header badge

  • The header now renders the installed version in its own small
    rounded-border badge, top-left, above the main box — instead of a plain
    muted text line.
  • Shows development when the version is unknown, or when it isn't a
    well-formed SemVer tag (e.g. a --source/--ref install tracking a branch
    like main), instead of incorrectly prefixing it with v (vmain).

--source installs record development

  • Installing via ./install.sh --source <dir> now writes
    CURRENT_VERSION=development in install.conf (unless --ref is also
    given explicitly), since a local checkout isn't tied to a published release.
    Previously it inherited the literal default ref (main), which read as a
    real version.

Browse releases (interactive update)

  • "Update Elo" in the System menu gains a "Browse releases" option, listing
    recent GitHub releases (tag, date, stable/pre-release) via
    elo_update_list_releases, alongside the existing "Latest stable release"
    and "Specific version" options.

Self-restart after update

  • Updating from the interactive System menu now restarts Elo in place
    (exec) after a successful update, so the new release's code is active
    immediately without leaving and reopening the session.
  • A cancelled or failed update never restarts the process.
  • Direct CLI elo update behaves as before — it does not restart the
    invoking shell; the next command already runs the new release.

Instances menu cleanup

  • Reordered to match the CLI contract and the existing help submenu order:
    Create, Import, Change version, Activate, Reset, List, Remove, Back.
  • Renamed "Activate or switch instance" to "Activate instance" for
    consistency with the other concise labels.

Tests

  • tests/test_elo.sh: new coverage for version/--version/-v and their
    help text.
  • tests/test_interactive.sh: updated menu label; new coverage asserting
    the interactive update flow restarts on success and does not restart on
    cancellation.

What's Changed

  • Feat: version command, dev-aware header badge, and self-restart after update by @3nderXP in #20

Full Changelog: v0.6.0-rc.2...v0.6.0-rc.3

v0.6.0-rc.2

v0.6.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@3nderXP 3nderXP released this 20 Jul 03:56
b1e9c5d

Summary

Minor release candidate, docs-only. No behavioral changes to the CLI compared to v0.6.0-rc.1.

What's Changed

  • README updated: added badges to the top of the repository (for better at-a-glance visibility into project status) and fixed the install script URL referenced in the docs.

No functional changes to elo itself in this RC; the focus was tidying up the README/docs before stabilizing v0.6.0.


What's Changed

  • docs(readme): add badges and update install script URL by @3nderXP in #19

Full Changelog: v0.6.0-rc.1...v0.6.0-rc.2

v0.6.0-rc.1

v0.6.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@3nderXP 3nderXP released this 19 Jul 10:41
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

v0.5.0

Choose a tag to compare

@3nderXP 3nderXP released this 17 Jul 07:26
97b8f61

This release brings the interactive Gum interface to feature parity with the
direct CLI and significantly improves performance when browsing large addon
collections.

Highlights

  • Complete interactive access to Elo commands and options.
  • Native Gum tables, file selection, inputs, confirmations, and loading
    indicators.
  • Consistent Minecraft-inspired visual theme and branded ASCII headers.
  • First, Previous, Next, and Last navigation for paginated lists.
  • Cursor memory, page caching, and adjacent-page prefetching.
  • Faster installed-addon listings through incremental integrity validation.
  • Modrinth search pagination using the complete result set.
  • Improved shader and resource-pack compatibility handling.
  • Explicit Iris or OptiFine selection when installing shaders.
  • Expanded interactive, provider, installation, and cache test coverage.

Upgrading

elo update

For a new installation:

curl -fsSL https://raw.githubusercontent.com/3nderXP/elo/v0.5.0/install.sh | bash

What's Changed

Full Changelog: v0.4.1...v0.5.0

v0.5.0-rc.1

v0.5.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@3nderXP 3nderXP released this 17 Jul 07:05
cbe8b5c

This release candidate brings the interactive Gum interface to feature parity
with the direct CLI and significantly improves performance when browsing large
addon collections.

As a pre-release, it is intended for real-world testing before v0.5.0.
Feedback about terminal compatibility, addon searches, pagination, and large
local collections is especially welcome.

Highlights

  • Complete interactive access to Elo commands and options.
  • Native Gum tables, file selection, inputs, confirmations, and loading
    indicators.
  • Consistent Minecraft-inspired visual theme and branded ASCII headers.
  • First, Previous, Next, and Last navigation for paginated lists.
  • Cursor memory, page caching, and adjacent-page prefetching.
  • Faster installed-addon listings through incremental integrity validation.
  • Modrinth search pagination using the complete result set.
  • Improved shader and resource-pack compatibility handling.
  • Explicit Iris or OptiFine selection when installing shaders.
  • Expanded interactive, provider, installation, and cache test coverage.

Install this release candidate

Pre-releases are not selected automatically by elo update. Install this
version explicitly:

elo update --version v0.5.0-rc.1

For a new installation:

curl -fsSL \
  https://raw.githubusercontent.com/3nderXP/elo/v0.5.0-rc.1/install.sh |
  bash -s -- --ref v0.5.0-rc.1

Testing notice

Although the automated test suite passes, this release includes extensive
changes to the interactive experience. Please report any unexpected behavior,
particularly with:

  • different terminal sizes and environments;
  • large installed-addon collections;
  • remote search pagination;
  • shader installation and platform selection;
  • page navigation and loading indicators.

What's Changed

  • Feature: interactive command parity by @3nderXP in #14

Full Changelog: v0.4.1...v0.5.0-rc.1

v0.4.1

Choose a tag to compare

@3nderXP 3nderXP released this 12 Jul 06:24
662ea6a

What's Changed

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@3nderXP 3nderXP released this 12 Jul 06:02
d1358d2

Elo v0.4.0

Elo v0.4.0 introduces an interactive terminal interface, reorganizes commands
by context, and adds safe self-uninstallation.

Interactive interface

Run Elo without arguments to open the new Gum-powered interface:

elo

Use the arrow keys to navigate and Enter to select actions. The interface
covers initialization, instance management, addon management, status, updates,
and self-uninstallation.

The installer automatically provisions Gum in Elo's private tools directory.
It does not use sudo, modify the system package manager, or expose Gum as a
global command.

Contextual commands

Instance operations now live under elo instances:

elo instances create fabric-1_21 --version 1.21 --loader fabric
elo instances activate fabric-1_21
elo instances list
elo instances reset
elo instances remove fabric-1_21

Addon and provider operations now live under elo addons:

elo addons search sodium --instance fabric-1_21
elo addons install fabric-1_21 sodium
elo addons list fabric-1_21
elo addons adopt fabric-1_21 mods/manual-addon.jar
elo addons remove fabric-1_21 sodium
elo addons provider set modrinth

Breaking changes

The previous flat commands were removed without compatibility aliases.

Previous command Replacement
elo new elo instances create
elo link, elo switch elo instances activate
elo reset elo instances reset
elo list elo instances list
elo remove elo instances remove
elo search elo addons search
elo install elo addons install
elo addons <instance> elo addons list <instance>
elo adopt elo addons adopt
elo uninstall <instance> ... elo addons remove <instance> ...
elo provider elo addons provider

Scripts using the old command structure must be updated. Unknown legacy
commands now return exit code 2.

Self-uninstallation

Elo can now uninstall itself:

elo uninstall

The command restores original Minecraft directories, removes the installed Elo
releases and command, and preserves instances and downloaded content under
~/.elo.

To permanently remove Elo data as well:

elo uninstall --purge

Unsafe purge paths such as / and $HOME are refused.

Gum isolation and migration

New installations keep Gum private to Elo. Other scripts cannot accidentally
start depending on Elo's copy, and removing Elo cannot affect a system or
package-manager installation of Gum.

Older development installations may have exposed Gum through
~/.local/bin/gum. When Elo detects that legacy symlink during
self-uninstallation, it preserves a standalone executable so existing consumers
continue to work.

What's Changed

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@3nderXP 3nderXP released this 11 Jul 12:58
7bab5d8

Elo can now search, install, inspect, adopt, and remove Minecraft addons while
keeping launcher-compatible instance folders.

Highlights

  • Public Modrinth integration with no account or API token required.
  • Addon search filtered by an instance's Minecraft version and loader.
  • Installation support for mods, resource packs, and shaders.
  • Recursive installation planning for required dependencies.
  • --dry-run previews downloads, verified reuse, existing addons, and
    collisions without changing files.
  • SHA-512 verification for downloaded and reused files.
  • Local addon registry with managed, modified, missing, and external states.
  • adopt registers an existing file without moving or copying it.
  • Exact-file uninstall for external or modified addons.
  • Optional orphan dependency cleanup based on known required-dependency edges.
  • Configurable preferred provider, with Modrinth as the initial default.

Examples

elo search sodium --type mod --instance fabric-1_21
elo install fabric-1_21 sodium --dry-run
elo install fabric-1_21 sodium
elo addons fabric-1_21
elo adopt fabric-1_21 mods/manual-addon.jar
elo uninstall fabric-1_21 sodium
elo provider set modrinth

Requirements

  • Bash on Linux or macOS.
  • curl and jq for provider commands.
  • sha512sum or shasum for addon integrity verification.

Safety

  • Existing files are never overwritten.
  • A matching existing file is reused only after SHA-512 verification.
  • Modified managed files require explicit exact-file removal.
  • External files remain unmanaged until explicitly adopted.
  • Addon filenames and target paths are validated before filesystem changes.

Known limitations

  • Modrinth is the only provider currently implemented.
  • Modpacks (.mrpack) are not supported.
  • Elo does not install Minecraft versions or mod loaders.
  • Orphan cleanup cannot infer optional relationships or usage by external
    addons. Review the proposed list before confirming removal.
  • Search results are filtered by the active or selected instance; unfiltered
    search is not currently available when an instance is active.

What's Changed

  • Feat: Add provider-based management and install planning for addons by @3nderXP in #7
  • Release v0.3.0 by @3nderXP in #8

Full Changelog: v0.2.0...v0.3.0