github Matteo842/SaveState v2.5.0
SaveState v2.5

3 days ago

SaveState v2.5 - Notes, Git & Ares Update

This update adds three highly requested features — per-profile notes, a Git storage provider, and support for the ares multi-system emulator — alongside a set of performance and reliability improvements under the hood.

Changelog:

📝 Per-Profile Notes

  • Add, edit, and persist text notes on any individual profile directly from the UI.
  • Notes appear as a hoverable icon overlay on the profile list, with an inline popup for quick preview and editing.
  • Notes are also accessible via the right-click context menu for both groups and individual profiles.
  • Data is stored in profile_notes.json with safe fallbacks and automatic pruning of stale entries.
immagine

🌿 New Provider: Git

  • SaveState now supports a local Git repository as a storage backend, with optional push/pull to any standard remote (GitHub, Gitea, self-hosted, etc.).
  • Configure the repo path, remote, branch, and auto-sync behavior via a dedicated setup dialog.
  • Supports upload, download, list, and delete operations. Requires Git installed on the host.

🎮 New Emulator: ares

  • SaveState now detects saves from the ares multi-system emulator.
  • A two-step import dialog lets you first pick a system (console), then select the specific game/profile to import.
  • If the Saves path is not configured in ares, SaveState shows a clear warning pointing to Settings → Paths → Saves.

⚡ UI Performance

  • Icon caching: UI assets (icons, checkmarks) are preloaded once at startup and reused across all profile rows, eliminating per-row disk I/O.
  • Debounced table repopulation: Profile list rebuilds are now debounced with a 50ms timer and batch UI updates are suppressed during repopulation, resulting in a noticeably smoother experience with large profile lists.

⏹️ Cancellable Backups

  • Multi-profile backups can now be cancelled mid-run: the current profile completes before stopping, and the summary reports how many profiles were processed.
  • The backup button switches to a cancel mode (with updated icon and style) while a batch backup is running.

🛠️ Fixes & Internals

  • Improved Nuitka detection: Refactored is_nuitka(), is_pyinstaller(), and is_packaged() helpers for more reliable detection across packaged and onefile builds.
  • Shortcut fix: Nuitka onefile builds now correctly use sys.argv[0] as the executable path when creating shortcuts (instead of the temporary extraction directory).
  • Deferred PySide6 imports: Qt imports are now delayed until GUI runtime, preventing silent failures in headless (--backup) and pythonw.exe contexts.

🤝 Community Credits:

  • Special thanks to @Mored4u for suggesting the Notes feature! 📝
  • Special thanks to @Aijokey for suggesting Git sync support! 🌿
  • Special thanks to @dafluteneko for suggesting cancellable backups! ⏹️

Don't miss a new SaveState release

NewReleases is sending notifications on new releases.