Skip to content

1.0.0

Latest

Choose a tag to compare

@doccy-doc doccy-doc released this 16 Apr 07:34
· 10 commits to master since this release
59ca67b

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: egs is 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 EGSPFX and EGSDEBUG envars 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.txt renamed to accounts.state to deter user editing.
    • config.txt moved 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, and list now work if dependencies are missing.
  • Atomic State Management: Account switching now uses isolated temporary files in $XDG_CACHE_HOME with a strict EXIT trap to guarantee cleanup.
  • Stateless Database: The underlying accounts.state file no longer requires an active account (*) to function safely.

🐛 Bug Fixes

  • Fixed a critical recursion bug where cmd_new calling cmd_save could inadvertently trigger a recursion loop.
  • Fixed init_egs_env failing to apply WINEPREFIX environment variables when recovering from an invalid prefix path.
  • Fixed validate_prefix mutating global state, which caused config file overwrite when using an invalid override EGSPFX path.