Releases: 3nderXP/elo
Release list
v0.6.1
Fixed
- The installer no longer reports the version as
mainafter a fresh
install from GitHub releases.elo versionnow 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--refare unaffected.
Docs
- Documented the PR/release draft workflow and the
-rcpre-release
suffix convention inskills/git-github-workflow.
Upgrade
elo updateWhat'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
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
.mrpackas 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.appshortcut under~/Applications. elo version/elo --version/elo -vprints 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 updateFor a new installation:
curl -fsSL https://raw.githubusercontent.com/3nderXP/elo/v0.6.0/install.sh | bashKnown 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.
.mrpackoverrides 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.shWhat'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
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.
elo version
elo version
elo --version
elo -v- Prints the installed Elo version, or
unknownoutside 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
.mrpackfile, through a new sharedelo_cmd_importdispatcher
(lib/mrpack.sh).- Adding a new provider module (
search/search_page/project_type/resolve/ get_dependencies/download) makes it work withimportautomatically; no
changes needed inelo_cmd_importitself. instance.conf'sMODPACK_SOURCE/MODPACK_SOURCE_VERSIONnow reflect the
real origin (modrinth:<id>orlocal) instead of alwayslocal.- 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 (
elowith 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
developmentwhen the version is unknown, or when it isn't a
well-formed SemVer tag (e.g. a--source/--refinstall tracking a branch
likemain), instead of incorrectly prefixing it withv(vmain).
--source installs record development
- Installing via
./install.sh --source <dir>now writes
CURRENT_VERSION=developmentininstall.conf(unless--refis 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 updatebehaves 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 forversion/--version/-vand 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
Full Changelog: v0.6.0-rc.2...v0.6.0-rc.3
v0.6.0-rc.2
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
Full Changelog: v0.6.0-rc.1...v0.6.0-rc.2
v0.6.0-rc.1
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-ecustom 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.appbundle 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
overridesfollowed byclient-overridesinside 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
.mrpackbefore 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-migrationsrecovery 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 pagerfor migration reports from large modpacks. - Uses searchable
gum filter --no-limitmulti-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'sinvalid data providederror. - 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
.mrpackand 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.
.mrpackoverrides 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.1v0.5.0
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, andLastnavigation 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 updateFor a new installation:
curl -fsSL https://raw.githubusercontent.com/3nderXP/elo/v0.5.0/install.sh | bashWhat's Changed
Full Changelog: v0.4.1...v0.5.0
v0.5.0-rc.1
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, andLastnavigation 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.1For 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.1Testing 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
Full Changelog: v0.4.1...v0.5.0-rc.1
v0.4.1
v0.4.0
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:
eloUse 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_21Addon 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 modrinthBreaking 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 uninstallThe 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 --purgeUnsafe 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
- feat(cli): add Gum interactive mode by @3nderXP in #9
- feat(cli)!: group commands by context by @3nderXP in #10
- Release v0.4.0 by @3nderXP in #11
Full Changelog: v0.3.0...v0.4.0
v0.3.0
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-runpreviews 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.
adoptregisters 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 modrinthRequirements
- Bash on Linux or macOS.
curlandjqfor provider commands.sha512sumorshasumfor 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