Shop¶
The launcher's Shop tab (/launcher/shop) only renders when
siteInfo.shop_enabled is true. It mirrors the public web portal
storefront with the launcher chrome.
Layout¶
- Left column (
col-md-3): pinned categories list (search field on top, scrollable nav below). Categories load from/api/v1/shop/categoriesand respect the operator's i18n labels per locale. - Right column (
col-md-9): pinned heading with category title + visible-item count, scrolling RcScroll item grid. Cards stretch to equal height per row and full column width.
The dual scroll surfaces (categories + items) keep the headings visible while the user browses, mirroring the home page's two-pane layout.
Source of truth¶
- Categories:
shop.categories(key, label, label_i18n JSONB, sort_order). Editable by admins via PUT/api/v1/admin/shop/categories/:key. - Items:
shop.itemswith fields for price (Splintertokens), enabled, hidden, applies_to_game_ids[], featured, payload JSONB.
Token balance¶
The token pill in the launcher toolbar (only with tokens_enabled)
reads /api/v1/shop/balance. Click jumps to the shop. After redeeming a
keycode in the title-bar dropdown the balance refreshes immediately.
Redeem code¶
A keycode redeems via POST /api/v1/me/redeem. The launcher account
dropdown opens a small RcScroll dialog with a single XXXX-XXXX-XXXX-XXXX
input; on success it shows the credited days / tokens / etc.