v1.0.0 - The Stable Release
EGSwitcher v1.0.0 marks the first feature complete, production-ready release. This version represents a complete architectural overhaul focused on state safety, strict XDG compliance, and a heavily refined user experience.
🌟 Highlights
- Context-Aware Session Handling: EGSwitcher now intelligently detects if you are logged into an unrecognised account. Instead of failing or overwriting your data, it offers to securely claim the current session.
- Smart Command Routing: Commands now understand context. If you try to save an unrecognised account, EGSwitcher routes you through the new account flow to safely register it.
- True Portability:
egsis now a completely self-healing, single-file executable. Drop it anywhere on any machine, and it will automatically bootstrap its entire XDG directory structure on first run.
✨ New Features
- egs unload: Added a dedicated command to safely wipe the active launcher state and registry keys without needing to swap to a different account. Perfect for testing or fully logging out.
- Interactive Config Wizard: Missing values (like changing your Wine prefix) now trigger a validated input loop instead of throwing errors or forcing you to manually edit text files.
- Environment Variable Overrides: Added support for
EGSPFXandEGSDEBUGenvars for single-run overrides without touching persistent config files.
🔄 Changes
Executable Rename: Binary renamed from epic-switcher to egs for faster CLI interaction.
- File Schema Updates:
accounts.txtrenamed toaccounts.stateto deter user editing.config.txtmoved to$XDG_CONFIG_HOME/egswitcher/EGSwitcher.conf.- Fully separated data, cache, and config directories according to the XDG Base Directory Specification.
🛡️ Under the Hood (Architecture)
- Defensive Validation: Strictly separated pure check functions from fatal state checks to prevent logic loops and ensure predictable behaviour.
- Lazy Dependency Loading: Moved dependency checks out of the global scope.
--help,--version, andlistnow work if dependencies are missing. - Atomic State Management: Account switching now uses isolated temporary files in
$XDG_CACHE_HOMEwith a strictEXITtrap to guarantee cleanup. - Stateless Database: The underlying
accounts.statefile no longer requires an active account (*) to function safely.
🐛 Bug Fixes
- Fixed a critical recursion bug where
cmd_newcallingcmd_savecould inadvertently trigger a recursion loop. - Fixed
init_egs_envfailing to applyWINEPREFIXenvironment variables when recovering from an invalid prefix path. - Fixed
validate_prefixmutating global state, which caused config file overwrite when using an invalid overrideEGSPFXpath.