Skip to content

Consolidate tool actions into Settings → Tools tab (declutter Edit menu)#7

Merged
matisseduffield merged 3 commits into
masterfrom
claude/qol-improvements-batch
May 30, 2026
Merged

Consolidate tool actions into Settings → Tools tab (declutter Edit menu)#7
matisseduffield merged 3 commits into
masterfrom
claude/qol-improvements-batch

Conversation

@matisseduffield

Copy link
Copy Markdown
Owner

Summary

Cleans up the Edit menu, which got crowded with 7 tool entries from PR #6.

Before

Edit menu:

  • Login All Missing
  • Refresh Window
  • Reload Accounts
  • Find Duplicates
  • Find Game in Library
  • Compare Profiles
  • Group Launch
  • Migrate Encryption Key
  • Test API Key
  • Settings
  • Sort

After

Edit menu (back to compact):

  • Login All Missing
  • Refresh Window
  • Reload Accounts
  • Settings
  • Sort

The 6 tool actions plus Create / Restore Backup live on a new Settings → Tools tab as a 4×2 button grid. Click any → settings get saved, dialog closes, action runs.

How it works

  • SettingsWindow exposes RequestedAction (enum) and a RaiseTool(action) helper that fires SaveSettings() then DialogResult=true; Close().
  • AccountsWindow.SettingsButton_Click reads RequestedAction after the dialog closes and dispatches to the same handlers that previously hung off the Edit menu (they're still in the file, just no longer wired to MenuItems directly).
  • Keyboard shortcuts (Ctrl+R / D / F / N / B / L) still work — they bind through RelayCommand directly to the handlers, independent of the menu structure.
  • File → Backup submenu kept intact as a secondary entry point.

Test plan

  • Open Edit menu → only Login All Missing / Refresh Window / Reload Accounts / Settings / Sort visible
  • Edit → Settings → Tools tab → 8 buttons in 4×2 grid render correctly
  • Click any Tools button → settings dialog closes → the corresponding tool window opens
  • Change API key in Steam tab → click Tools → Test API Key → key change persisted (validation uses the new value)
  • Ctrl+D still opens Find Duplicates (keyboard shortcuts unaffected)

Generated by Claude Code

claude added 3 commits May 30, 2026 06:54
Edit menu was crowded with 7 new items (Find Duplicates, Find Game,
Compare Profiles, Group Launch, Migrate Key, Test API Key, plus
Backup submenu). Consolidates them into a new Settings → Tools tab
with a 4×2 button grid:

  Find Duplicates       | Find Game in Library
  Compare Profiles      | Group Launch
  Migrate Encryption Key| Test API Key
  Create Backup...      | Restore Backup...

SettingsWindow exposes a SettingsToolAction enum and a
RequestedAction property; tool buttons set it, save in-progress
settings via SaveSettings(), then close. AccountsWindow's existing
SettingsButton_Click reads RequestedAction after the dialog closes
and dispatches to the same handlers that previously sat on the Edit
menu.

Edit menu now back to a clean 5 items: Login All Missing, Refresh
Window, Reload Accounts, Settings, Sort. Keyboard shortcuts
(Ctrl+R/D/F/N/B/L) still work since they bind through RelayCommand
directly to the handlers, not through the removed menu items.

File → Backup submenu kept as an additional entry point for
discoverability — duplication is intentional.
…ing flow

Two bug fixes:

1. Profile Info now distinguishes "all 0 hours = playtime hidden by
   privacy" from "user actually hasn't played anything". Steam's
   GetOwnedGames endpoint returns the games list even when the profile
   has Game Details set to Private/Friends-only — but every game comes
   back with playtime_forever=0. Without this, the UI showed "246
   games • 0.0h total" with every row "Never played" for a 14-year-old
   account, which was misleading.

   - ProfileInfo.PlaytimeLikelyHidden: true when >=5 games returned
     but every playtime_forever and playtime_2weeks is 0.
   - Games tab now shows a blue info banner above the list when this
     state is detected.
   - Footer text becomes "N games • playtime hidden by privacy"
     instead of the misleading "N games • 0.0h total".
   - OwnedGame.PlaytimeDisplay returns "—" instead of "Never played"
     for 0-minute rows so the list itself is neutral about the cause.

2. Login All Missing: skipped per-login SerializeAccounts during the
   bulk loginAllSequence and persist once at the end via new
   PersistAfterBulkLogin helper. With 24 accounts the per-login
   serialize-with-backup-rotation was racing against the spawned
   login threads' file I/O and Steam's own loginusers.vdf writes.
   Also added a final summary MessageBox showing how many were
   processed, replacing the bare "Done!".
If every account already has a SteamID, the previous flow would pop
the confirmation dialog, then disable the UI for a foreach loop that
found zero work and exited silently. From the user's perspective:
"I clicked it and nothing happened."

Now: count missing-SteamID accounts up front. If zero, show
"Every account already has a SteamID — nothing to do." with an
explanation of what the action is for, and return without touching
the UI state. If >0, the confirmation dialog now also tells you
exactly how many accounts will be processed.
@matisseduffield matisseduffield marked this pull request as ready for review May 30, 2026 07:28
@matisseduffield matisseduffield merged commit 456744e into master May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants