Skip to content

design(achievements): add artwork (game cartridge) - #247

Merged
JumpLink merged 2 commits into
mainfrom
design/achievements
Oct 15, 2026
Merged

JumpLink merged 2 commits into
mainfrom
design/achievements

Conversation

@JumpLink

@JumpLink JumpLink commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

What this is

Draft artwork for app achievements — five pieces, each as an earned and a locked SVG, under
packages/app-gnome/data/achievements/ next to the app icon. Nothing is wired into the app's logic:
there is no achievement engine, no storage, no unlock condition. This PR is here to look at.

The first round used one seal for all three apps, only recoloured. That was rejected for good
reason, so this is a different approach: every app gets its own object world, and only the frame
is shared.

comparison sheet

The object: a game cartridge

A cartridge shell with an edge connector and its pins on the left, grip ridges on the right, and a
framed label in the middle. What changes per achievement is only the motif on the label — the same
way a cartridge collection looks on a shelf.

Piece Motif Meaning
open-source branch every open-source build earns it
supporter heart awarded to everyone who supports the app
first-chapter book the first tutorial chapter finished (optional)
first-program chip your own assembly program assembled (optional)
game-played d-pad a program run in the emulator with the gamepad (optional)

The three marked optional are a proposal, not a commitment — they need app-side state that does
not exist yet. open-source and supporter need nothing but purchased().

The shared frame (this is the reusable part, gjsify#2233)

Every piece is a 192 × 96 SVG (2:1 landscape) on a 2 px grid, drawn for raster heights 48 and 96
logical px
, and exists twice: earned, plus a locked state that keeps the same geometry as a muted
silhouette in a rest of the app's own hue, so a locked row still reads as this app.

Titles and descriptions are not in the SVG — they come from gettext and are drawn by the widget
in the text column next to the artwork, which is also why the frame is landscape: the piece sits
left, the text right. No raster images, no filters, no baked shadows, no <text>; gradients and
clip paths only.

How "Supporter" stands out

It is meant to be the piece you want: a gold shell instead of the blue one, a holographic foil
stripe running across the label, and two sparkles on the shell. open-source is deliberately the
plain, friendly starter piece — same cartridge, brand colours, no foil.

What I would like reviewed

  • Does the cartridge read as a cartridge at h48, or does it turn into a grey box?
  • Is the gold piece clearly more desirable without looking like a different product?
  • Are the three optional pieces worth building the state for?

@JumpLink JumpLink changed the title design: achievement artwork drafts Draft: achievement artwork (round two, game cartridge) Oct 15, 2026
@JumpLink JumpLink changed the title Draft: achievement artwork (round two, game cartridge) design(achievements): add artwork (game cartridge) Oct 15, 2026
@JumpLink
JumpLink marked this pull request as ready for review October 15, 2026 15:25
@JumpLink
JumpLink merged commit d1f3b41 into main Oct 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant