7 Commits
Author SHA1 Message Date
molluskandClaude Opus 4.7 4494fe979c Bump pkgver to r44.3e5a554
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 20:06:01 -04:00
mollusk 3e5a554a59 Merge branch 'feature/api-key-domain-clarity' 2026-05-09 20:05:22 -04:00
molluskandClaude Opus 4.7 dc69aa7d30 Clarify Steam API key domain field is not validated
Adds a visible callout in the settings dialog and a "Don't have a
domain?" note + common-failure list in the README, so users (and the
friends they share the app with) don't bounce off the registration
page thinking they need to own a real domain.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 20:05:19 -04:00
molluskandClaude Opus 4.7 f8f8e9ab18 Release v0.2.0
Highlights since v0.1.0:
- Store Page button next to Play
- Opt-in store-price label with four format styles, 15-min in-memory cache
- Updated README and screenshot

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 19:55:32 -04:00
molluskandClaude Opus 4.7 e28646ad1a Bump pkgver to r40.7b5e777
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 19:52:16 -04:00
mollusk 7b5e777277 Merge branch 'feature/readme-store-features' 2026-05-09 19:51:55 -04:00
molluskandClaude Opus 4.7 a7db5c8bc0 Update README + screenshot for Store Page button and price label
Adds bullets covering the new Store Page action, opt-in store-price
label, and the settings entry that controls them. Refreshes the
screenshot to show the current layout (Balatro on sale, formatted
in full strike+sale+% style).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 19:51:51 -04:00
4 changed files with 28 additions and 9 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Mollusk <silvernode@gmail.com>
pkgname=steam-dice-git
_pkgname=steam-dice
pkgver=r37.052b6d4
pkgver=r44.3e5a554
pkgrel=1
pkgdesc="A PyQt6 desktop app that picks a random game from your Steam library"
arch=('any')
+15 -4
View File
@@ -13,6 +13,8 @@ A small desktop app that picks a random game from your Steam library and lets yo
- **Tags** — multi-select popup with a search box; a game must carry every selected tag to survive
- **Friends** — multi-select popup; picks games every selected friend also owns, perfect for "what should we play tonight?"
- **Play** button launches the selected game immediately via Steam
- **Store Page** button opens the rolled game's Steam store page in your browser — handy for checking screenshots, reviews, or gifting it to a friend
- **Optional store-price label** (off by default) shows the current store price under the title, with a configurable format (final only, with discount %, strikethrough original, or full strike + sale + %) — useful for spotting sales when picking a gift
- Settings dialog for your API key and Steam ID, persisted across sessions (API key kept in your system keyring)
- Refresh button with a 60-second cooldown to avoid hammering the Steam API; refreshing also re-fetches selected friends' libraries
- Clean Steam-themed dark UI built with PyQt6
@@ -51,9 +53,17 @@ pacman -S python-steam
You need a free Steam Web API key to fetch your library.
1. Go to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) and log in.
2. Enter any domain name (e.g. `localhost`) and click **Register**.
3. Copy the 32-character key shown on the page.
1. Go to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) and log in with your Steam account.
2. In the **Domain Name** field, type any string and click **Register**.
3. Copy the 32-character key shown on the next page — paste it into Steam Dice's settings dialog.
> **Don't have a domain?** You don't need one. Steam's "Domain Name" field is **not validated** — `localhost`, your name, `personal`, or any other text works. It's just a label Steam stores alongside your key; it doesn't have to be a real domain you own.
If the page refuses to issue a key, the usual causes are:
- Your Steam account has spent **less than $5** lifetime on Steam (Valve's anti-spam threshold for API access).
- Your account is **limited** (new account with no purchases) or has an unverified email.
- You're signed into the wrong Steam account in your browser.
### 2. Steam ID (64-bit)
@@ -84,8 +94,9 @@ Once loaded:
- **Tags ▾** — opens a popup with a search box and checkboxes; selected tags are AND'd, so a game must carry every checked tag
- **Friends ▾** — opens a popup listing your Steam friends; check any number to keep only games every selected friend also owns
- Click **Play** to launch the rolled game via Steam
- Click **Store Page** to open the rolled game's Steam store page in your browser
- Click ⟳ to re-fetch your library (60s cooldown applies); selected friends' libraries refresh too
- Click ⚙ to update your credentials at any time
- Click ⚙ to update your credentials, toggle the store-price label, or change its format
### Friends filter prerequisites
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

+12 -4
View File
@@ -19,7 +19,7 @@ from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QH
from PyQt6.QtCore import Qt, QPoint, QSettings, QThread, QTimer, pyqtSignal
from PyQt6.QtGui import QPixmap, QFont, QIcon
VERSION = "v0.1.0"
VERSION = "v0.2.0"
def _get_version():
try:
@@ -965,12 +965,20 @@ class SettingsDialog(QDialog):
key_help = QLabel(
'Get your free key at '
'<a href="https://steamcommunity.com/dev/apikey">steamcommunity.com/dev/apikey</a>.'
'<br>Log in with Steam, enter any domain name (e.g. <i>localhost</i>), and copy the key shown.'
'<a href="https://steamcommunity.com/dev/apikey">steamcommunity.com/dev/apikey</a>. '
'Log in with Steam, then copy the 32-character key shown after registering.'
'<br><br>'
'<b>Don\'t have a domain?</b> You don\'t need one. The <i>Domain Name</i> field '
'on Steam\'s page is <b>not validated</b> — type literally anything '
'(<i>localhost</i>, your name, <i>personal</i>) and click <b>Register</b>.'
)
key_help.setOpenExternalLinks(True)
key_help.setWordWrap(True)
key_help.setStyleSheet("color: #8f98a0; font-size: 9pt; padding-bottom: 10px;")
key_help.setStyleSheet(
"color: #c7d5e0; font-size: 9pt; "
"background-color: #1f2a36; border: 1px solid #2a475e; border-radius: 4px; "
"padding: 8px 10px; margin-bottom: 10px;"
)
layout.addWidget(key_help)
# --- Steam ID ---