Skip to content

Feature set 132. - #59

Merged
jackfperryjr merged 1 commit into
mainfrom
features-132
Aug 5, 2026
Merged

Feature set 132.#59
jackfperryjr merged 1 commit into
mainfrom
features-132

Conversation

@jackfperryjr

Copy link
Copy Markdown
Owner

Games get artwork — a full logo and a square thumbnail

Games were the one catalogue entity with no picture. They now carry two, and both are editable, uploadable and served.

Two crops, not two sizes. The full logo is the wide lockup with the title text; the thumbnail is the square emblem, artwork alone. Resizing one into the other doesn't work — the full lockup is mostly text, which is illegible and badly proportioned wherever a square is wanted. So they're separate columns, and clients pick by shape rather than by resolution.

imageUrl full logo → games/{id}.webp
thumbnailUrl square emblem → thumb/games/{id}.webp

Keys follow the bucket layout already in use, so thumb/games/7.webp sits beside gen/monsters/12.webp.

No generated slot

Generation selects monsters and characters only. Art parked at gen/games/{id}.webp would be promoted by nothing and served by nothing, so the API refuses that combination outright rather than accepting an upload into a dead column.

Enforcing it turned the upload endpoint's flat Resources and Slots lists into a per-resource map — characters and monsters take original|generated, games take original|thumbnail. My first pass was a shared list plus an if (resource == "games" && slot == "generated") exception; that was going to rot at the next shape, so it's a map now.

The dashboard had the same problem in three places: the art panel, the zoom modal, and the create-form's hidden inputs all assumed exactly two fixed slots. Slots are now per tab, and a tab marks which one the table thumbnail should prefer — the square one for games, the generated one for everything else, which preserves existing behaviour.

Migration

One clean AddGameImages adding three nullable columns. The AddGameImage from the previous round never shipped, so it's regenerated rather than stacked. Migrations apply on startup, so the deploy handles the schema.

Notes

  • 324/324 pass, dotnet format clean.
  • X-2 and XIII-2 have no game rows. The catalogue is I–XVI; uploads are addressed by row id, so those need creating in the dashboard first. They'd land at ids 17/18.
  • Adding those two would also make "all 16 mainline titles" wrong in the README. Left alone deliberately — that's a catalogue-scope decision, not part of this change.

🤖 Generated with Claude Code

Give games artwork: a full logo and a square thumbnail.

Games were the one catalogue entity with no picture. They now carry two,
because the full logo and the square emblem are different crops rather than
two sizes of the same image -- the full lockup is wide and mostly title
text, which is illegible and badly proportioned wherever a square is
wanted. Both are editable and uploadable, and both are served by
/api/games and /api/games/{id}.

No generated slot, unlike characters and monsters. The generation stage
selects those two only, so art parked at gen/games/{id}.webp would be
promoted by nothing and served by nothing.

Enforcing that turned the upload endpoint's flat resource and slot lists
into a per-resource map: characters and monsters take original or
generated, games take original or thumbnail. A shared list plus an
exception for games would have rotted at the next shape. Keys follow the
bucket layout already in use -- thumb/games/7.webp sits beside
gen/monsters/12.webp.

The dashboard's art panel was likewise hardcoded to two fixed slots in
three places. Slots are now per tab, and a tab marks which one the table
thumbnail should prefer -- the square one for games, the generated one for
everything else, which is what it already did.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jackfperryjr jackfperryjr added enhancement New feature or request release:minor labels Aug 5, 2026
@jackfperryjr
jackfperryjr merged commit 49606f2 into main Aug 5, 2026
1 check passed
@jackfperryjr
jackfperryjr deleted the features-132 branch August 5, 2026 03:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request release:minor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant