github Matteo842/SaveState v2.6
SaveState v2.6

8 hours ago

SaveState v2.6 - The Controller Update

This is one of the biggest updates yet. SaveState is now fully navigable with a controller, making it a first-class citizen on Windows and Linux handhelds (Steam Deck, ROG Ally, Legion Go, and more). On top of that, this release brings launcher script generation for Heroic and Playnite, a smarter save path finder, and several quality-of-life improvements.

Changelog:

🎮 Controller Support

SaveState can now be controlled ~90% with a gamepad, with seamless switching between mouse and controller at any time.

  • Full navigation: Use the D-pad or left stick to navigate the profile list, and mapped buttons to trigger actions (Backup, Restore, Manage Backups, Delete, and more).
  • Fully remappable: Every button can be reassigned from the dedicated Controller Settings panel, accessible directly from the title bar.
  • Section focus mode: Hold LT to toggle focus between the Actions and General sections, with visual dimming to indicate the active area.
  • LT+RT combo: Press both analog triggers together to trigger Backup All — perfect for a quick full save before a session.
  • Context menu via controller: Press Start to open the right-click context menu for the selected profile, without touching the mouse.
  • Cloud panel navigation: Controller navigation and actions are fully supported inside the Cloud Sync panel as well.
  • Cross-platform backend: Uses XInput on Windows and SDL2 GameController on Linux/SteamOS for broad device compatibility.
  • Visual badges: Floating button badges (A / X / Y) appear on the main action buttons when a controller is connected, so you always know what each button does.
  • Smart input gating: Controller input is ignored when the app is in the background or a dialog is open, preventing accidental actions. On first use (e.g. on a handheld where the app starts unfocused), the window auto-activates.
immagine

⌨️ Controller Shortcut Macros

A dedicated Shortcuts tab in the Controller Settings panel lets you define up to 3 custom button combos (2 or 3 buttons pressed simultaneously) and map them to any action.

  • Shortcuts can be set to trigger even when the app is minimized to the system tray — on both Windows and Linux.
  • This means you can back up a save, restore, or run any mapped action without leaving your game, just by pressing your combo.
  • Tray notifications appear when a background shortcut completes, so you always know the action ran successfully.
immagine

🚀 Heroic & Playnite Script Generation

For users who launch games through Heroic Games Launcher or Playnite, SaveState can now generate a ready-to-use integration script directly from the profile context menu.

  • Heroic: Generates a .bat (Windows) or .sh (Linux) script that can be set as a pre/post-launch command in Heroic, triggering a backup automatically.
  • Playnite: Generates a PowerShell command that runs silently in the background (-WindowStyle Hidden), ready to paste into Playnite's game scripts.
  • Scripts are saved under <backup_dir>/.savestate/scripts and the dialog provides copy and open-folder buttons for convenience.
immagine

🔍 Smarter Save Path Detection

The automatic save path finder received several improvements to reduce false negatives when detecting game save folders:

  • Acronym + word matching: Now correctly matches compact names like ACMirage to Assassin's Creed Mirage or GTA5 to Grand Theft Auto 5.
  • Reverse abbreviation matching: Detects when a folder name is an abbreviation of the full game title, and vice versa.
  • Cached path computations: Normalized paths (Documents, Saved Games, Steam userdata, etc.) are now precomputed once per search instead of recalculated per folder, improving performance on large libraries.

🔒 Stable Backup Folder Names

Profile backup folders are now tied to a stable internal name (backup_folder_name) that does not change when a profile is renamed.

  • Previously, renaming a profile could cause SaveState to lose track of the associated backup folder.
  • Existing profiles are automatically migrated on first launch — no manual action needed.

🛠️ Fixes & Internals

  • Playnite DB lock handling: If Playnite is running and its database is locked, SaveState now shows a clear warning instead of crashing on drag-and-drop.
  • Controller input on inactive window: Input is now properly ignored when the app loses focus, with a clean re-activation path for handheld use cases.
  • Cloud panel selection styling: Added a themed selection delegate for the cloud backup table for consistent dark/light mode visuals.

Don't miss a new SaveState release

NewReleases is sending notifications on new releases.