- Store API key in system keyring instead of plaintext QSettings
- Migrate away from plaintext api_key on first save
- Redact API key from error messages emitted to the UI
- Validate API key (32 hex chars) and Steam ID (17 digits) before use
- Apply refresh cooldown when settings dialog triggers a fetch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes hardcoded credentials. Users enter their Steam API key and Steam ID
via a gear-icon settings dialog. Help text in the dialog explains how to
obtain each value with clickable links. Settings persist to
~/.config/butter/steam-dice.conf via QSettings. Dialog auto-opens on first
launch if credentials are not yet configured.
Scans libraryfolders.vdf and all steamapps directories at load time to
build the installed appid set. Dropdown filters the roll pool between
All games, Installed, and Not installed. Re-scans on each library refresh.
Uses steam://rungameid/{appid} with xdg-open to hand off to the local
Steam client. Button appears below the game image after a roll and hides
again when the dice is rolled next.
Adds a view-refresh icon button in the top-right corner to re-fetch the
Steam library. A countdown label appears below it during the cooldown and
hides when the timer expires, preventing API spam.
- Set QT_QPA_PLATFORM=wayland when WAYLAND_DISPLAY is present so the
app runs natively instead of via XWayland
- Show version string (v0.1.0-<git short hash>) in bottom-left corner