Skip to content

feat(packs): square app icons for 30 packs, plus CS2 - #7

Merged
sivert-io merged 1 commit into
mainfrom
feat/app-icons
Sep 25, 2026
Merged

sivert-io merged 1 commit into
mainfrom
feat/app-icons

Conversation

@sivert-io

@sivert-io sivert-io commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

The small game pills in the app ("Popular here", "Your games") showed a cropped sliver of each game's wide Wikidata wordmark ("AGI GEN", "ROC LEA"). This gives every pack that has one the game's own square app icon — the one players see on their phone, desktop or launcher.

What changes

  • New optional pack field appIcon: ../app-icons/<slug>.webp, a path (never a URL) to a square PNG or WebP. Documented in the README; index.json and catalog.json entries carry appIcon as app-icons/<slug>.webp.
  • app-icons/: 128 × 128 WebP, 0.8–9.7 KB each (limit 25 KB), for 30 packs plus CS2 (counter-strike-2.webp, kept for the record; the platform ships it with the CS2 module).
  • app-icons/SOURCES.md: the source URL of every file.
  • The 30 packs that gained an icon move to x.y.2, so installs pick it up.

Sources (public, no API key, nothing behind a login)

Source Games
Steam client icon (256/512 px frame of the .ico) Age of Empires II, Apex Legends, Call of Duty, Counter-Strike 2, Deadlock, Dota 2 (Linux icon zip), EA Sports FC, Guilty Gear -Strive-, Halo Infinite, Marvel Rivals, Mortal Kombat 1, Overwatch 2, PUBG, Rainbow Six Siege, Rocket League, Street Fighter 6, Team Fortress 2, Tekken 8
App Store icon (iTunes Lookup artworkUrl512) Brawl Stars, Clash Royale, Fortnite, Hearthstone, Minecraft, Mobile Legends: Bang Bang, Teamfight Tactics
Nintendo eShop square image Mario Kart 8 Deluxe, Splatoon 3, Super Smash Bros. Ultimate
Microsoft Store square box art Trackmania (Steam only has 32 px)
Epic Games Store icon, V mark on VALORANT red Valorant
Wikimedia Commons (the circle logo is the app icon) osu!

Wikidata has no square-icon statement (P2910) for any of these, and P154 is the wordmark.

No app icon (no square icon from such a source): Battlefield 6, Chess, League of Legends, StarCraft II. The app falls back to the IGDB cover, then the initials.

Merge order

An instance that does not know appIcon refuses it as an unknown field (it then installs the offline copy instead). Merge together with the platform PR that reads the field: Auto-Tournament/auto-tournament#398.

Game icons are trademarks of their owners and are used only to identify the game.

🤖 Generated with Claude Code

The small game pills showed a sliver of each game's wide Wikidata
wordmark ("AGI GEN", "ROC LEA"). A pack can now name the game's own
square app icon with `appIcon` (`../app-icons/<slug>.webp`): 128 x 128
WebP, at most 25 KB, checked by its bytes on import.

Sources, all public and key-free: Steam client icons (256/512 px frames
of the .ico), App Store icons (iTunes Lookup), Nintendo eShop square
images, and one each from the Microsoft Store (Trackmania), the Epic
Games Store (Valorant) and Wikimedia Commons (osu!). Each file's origin
is in app-icons/SOURCES.md. Battlefield 6, Chess, League of Legends and
StarCraft II have no square icon from such a source and get none.

The 30 packs that gained one move to x.y.2, so installs pick it up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sivert-io added a commit to Auto-Tournament/auto-tournament that referenced this pull request Sep 25, 2026
…iver

The 20 px game pills ("Popular here", "Your games") drew the game's
catalogue picture, which for anything that came from Wikidata is the wide
wordmark cropped to a sliver ("AGI GEN", "ROC LEA").

Packs can now carry the game's own square app icon (`appIcon`, a PNG or
WebP beside the pack). It is checked by its bytes on every way in —
upload, community index, catalog feed, bundled snapshot: PNG or WebP,
square, 32-512 px, at most 25 KB — and stored with the pack. It is served
on GET /api/packs/:slug/app-icon (the installed pack's, else the bundled
snapshot's, so popular titles nothing installed runs still have one) and
GET /api/catalog/packs/:slug/app-icon. CS2 ships its own with the module.
Every game summary carries `appIconUrl`.

GameMark now draws, in order: the app icon, the IGDB cover cropped square
from the top, or the initials on a per-game palette tint — never a wide
logo. The picker, profile "Your games", /welcome/games and Home chips use
it; GameThumb (the portrait cover thumb) is gone.

Games saved while search ran on Wikidata kept its wordmark for good once
IGDB was set up. They are now re-resolved against IGDB in the background
(at startup and when IGDB credentials are saved; rate-limited, same slug
or same normalised name only) and gain the IGDB id and cover, keeping
their id and slug.

Bundled packs synced from Auto-Tournament/packs#7 (30 packs at x.y.2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sivert-io added a commit to Auto-Tournament/auto-tournament that referenced this pull request Sep 25, 2026
…iver (#398)

The 20 px game pills ("Popular here", "Your games") drew the game's
catalogue picture, which for anything that came from Wikidata is the wide
wordmark cropped to a sliver ("AGI GEN", "ROC LEA").

Packs can now carry the game's own square app icon (`appIcon`, a PNG or
WebP beside the pack). It is checked by its bytes on every way in —
upload, community index, catalog feed, bundled snapshot: PNG or WebP,
square, 32-512 px, at most 25 KB — and stored with the pack. It is served
on GET /api/packs/:slug/app-icon (the installed pack's, else the bundled
snapshot's, so popular titles nothing installed runs still have one) and
GET /api/catalog/packs/:slug/app-icon. CS2 ships its own with the module.
Every game summary carries `appIconUrl`.

GameMark now draws, in order: the app icon, the IGDB cover cropped square
from the top, or the initials on a per-game palette tint — never a wide
logo. The picker, profile "Your games", /welcome/games and Home chips use
it; GameThumb (the portrait cover thumb) is gone.

Games saved while search ran on Wikidata kept its wordmark for good once
IGDB was set up. They are now re-resolved against IGDB in the background
(at startup and when IGDB credentials are saved; rate-limited, same slug
or same normalised name only) and gain the IGDB id and cover, keeping
their id and slug.

Bundled packs synced from Auto-Tournament/packs#7 (30 packs at x.y.2).

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@sivert-io
sivert-io merged commit b312336 into main Sep 25, 2026
1 check passed
@sivert-io
sivert-io deleted the feat/app-icons branch September 25, 2026 09:10
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant