Skip to content

Releases: matisseduffield/SAM

test

30 May 07:45
d7496ca

Choose a tag to compare

test

What's Changed

  • Auto-update pipeline: in-process self-updater + workflow maintains latest.txt by @matisseduffield in #8

Full Changelog: v1.5.9331.26726...v1.5.9331.26727

test

30 May 07:30
456744e

Choose a tag to compare

test

What's Changed

  • Consolidate tool actions into Settings → Tools tab (declutter Edit menu) by @matisseduffield in #7

Full Changelog: v1.5.9331.26725...v1.5.9331.26726

QoL batch

30 May 06:42
b68398e

Choose a tag to compare

Summary

Big QoL batch built in one branch for a single phone-merge.

Encryption painless suite

  • Migrate Encryption Key dialog (Edit menu): re-encrypt every Password / SharedSecret with a new key. Includes a "Test old key" button so you don't run a destructive migration with the wrong input. Can generate a random key or take a custom one; can optionally seal the new key via DPAPI (locked to your Windows user) so future rebuilds of SAM never break info.dat again.
  • Sealed-key storage (Core/EncryptionKey.cs): if samsettings.ini has a [System] SealedKey, that's what every encrypt/decrypt uses. Otherwise falls back to the existing "PRIVATE_KEY" literal so old installs still work unchanged.
  • Friendlier crypto errors: StringCipher.Decrypt now replaces "Padding is invalid and cannot be removed" with "Decryption failed — the encryption key does not match… open Settings → Migrate Encryption Key". New CryptoHelper distinguishes wrong-key / not-encrypted / corrupted for callers that want to branch on it.
  • Encrypted Backup / Restore (File → Backup): write a portable .sambackup file (passphrase-encrypted, key-independent) on one machine, restore on another. Restore offers Replace / Merge.
  • Versioned info.dat.bak.{timestamp} kept on every save (default 5, configurable via [Settings] BackupCount). Pre-existing info.dat.bak is preserved on first run.
  • Test API Key (Edit menu): round-trips through ISteamWebAPIUtil/GetSupportedAPIList, shows pass/fail with actionable text.

Account management

  • Find Duplicates (Edit menu): groups accounts by same username and same SteamID; per-row Delete. Solves the paris12345678910 double-entry problem.
  • Group Launch (Edit menu / Ctrl+L): multi-select + filter, configurable inter-login delay (default 8s), sequentially Login()s each.
  • Sort → Last Logged In: Account.LastLoggedIn is stamped every login (and persisted via the existing SerializeAccounts path), sortable most-recent-first.
  • Import → Steam Desktop Authenticator (.maFile) / Folder: bulk-parse SDA .maFiles. For each, fills SharedSecret on the matching Name account or creates a new one. Encrypts with the current eKey.

Profile Info window v2

  • Friends tab populated via ISteamUser/GetFriendList + a batch summaries enrichment pass (persona name, avatar, online status, friend-since).
  • Compare Profiles (Edit menu): two GetProfileInfoAsync calls (cache-shared with Profile Info), side-by-side level / hours / games / top-20-by-hours with delta indicators and library overlap count.
  • Per-account right-click → Compare With... preselects the clicked account on the left side of the compare window.
  • Find Game in Library (Edit menu / Ctrl+F): query-string search across every account with a SteamID; per-account live progress, results show account + game + hours.

UX polish

  • Live window title: FileSystemWatcher on loginusers.vdf re-reads MostRecent whenever Steam writes the file, so the idle title (SAM — PersonaName (accountname)) updates within ms of a Steam account switch. 500ms debounce + silent fall back if no Steam path is set.
  • Keyboard shortcuts via InputBindings (bound through a tiny RelayCommand wrapper):
Shortcut Action
Ctrl+R Reload all accounts
Ctrl+D Find duplicates
Ctrl+F Find game in library
Ctrl+N New account
Ctrl+B Backup (create encrypted)
Ctrl+L Group launch

Files

Status Path Purpose
new Core/EncryptionKey.cs DPAPI-sealed key store
new Core/CryptoHelper.cs Friendly crypto errors
new Core/MaFileImporter.cs SDA .maFile parsing
new Core/RelayCommand.cs Minimal ICommand for keyboard shortcuts
new Views/MigrateKeyWindow.{xaml,xaml.cs} Migration UI
new Views/FindDuplicatesWindow.{xaml,xaml.cs} Duplicate finder
new Views/FindGameWindow.{xaml,xaml.cs} Game library cross-reference
new Views/GroupLaunchWindow.{xaml,xaml.cs} Multi-login sequencer
new Views/CompareProfilesWindow.{xaml,xaml.cs} Side-by-side compare
modified Core/AccountUtils.cs +RotateBackups, +ValidateApiKeyAsync, +FindDuplicates, +GetFriendListAsync, +SerializeBackup/DeserializeBackup, +GetCurrentSteamUser
modified Core/ProfileInfo.cs +FriendInfo + friends slot in orchestrator
modified Core/Account.cs +LastLoggedIn
modified Core/StringCipher.cs +DecryptOrThrow, friendly error in Decrypt
modified Core/SortType.cs +LastLoggedIn
modified Core/SAMSettings.cs, Core/UserSettings.cs +SealedKey, +BackupCount
modified Views/ProfileInfoWindow.{xaml,xaml.cs} Friends tab
modified Views/AccountsWindow.{xaml,xaml.cs} New menus, handlers, dynamic eKey property, LastLoggedIn write, dynamic title, file watcher, keyboard shortcuts, Compare With... in account right-click
modified SAM.csproj System.Security ref + new file entries

What's Changed

  • QoL batch: sealed-key migration, friendly crypto errors, compare profiles, group launch, maFile import, friends tab, backup/restore, live title, keyboard shortcuts by @matisseduffield in #6

Full Changelog: v1.5.9331.26724...v1.5.9331.26725

1.5.9331.26724

30 May 01:26
a5741b8

Choose a tag to compare

What's new

  • Profile Info: right-click an account to see avatar, persona name, Steam level, country, ban badges, full owned games list with icons and hours played, and a "recently played" tab. Results cache for 15 minutes per SteamID. Requires a Steam Web API key in Settings → Steam → ApiKey.
  • Steam Mobile App login: handles the new "Use Steam Mobile App to confirm" prompt and the "Enter a code instead" fallback.
  • Release pipeline: SAM.exe is now built with Costura.Fody assemblies properly embedded (single-file ~4.3 MB binary, no loose DLLs required).

Install: download SAM.exe below and drop it next to your existing samsettings.ini / info.dat.

What's Changed

  • Add Profile Info right-click action (Steam Web API data + 15 min cache) by @matisseduffield in #5

Full Changelog: v1.5.9331.26723...v1.5.9331.26724

Handle Steam Mobile App confirm and 'Enter a code instead' after login

20 May 04:41
88a9f97

Choose a tag to compare

What's Changed

Added handling for "Steam Mobile App Confirm" and "Enter a code instead" prompt after login.

Detects Steam mobile app confirmation screen.
Automatically triggers correct flow if user chooses code input.

credit to @newfebriwisnu