Skip to content

feat(art): troca os 18 icones de tipo pela v2, e a paleta segue junto - #27

Merged
mcsscalabrin merged 2 commits into
mainfrom
feat/icones-de-tipo-v2
Aug 14, 2026
Merged

feat(art): troca os 18 icones de tipo pela v2, e a paleta segue junto#27
mcsscalabrin merged 2 commits into
mainfrom
feat/icones-de-tipo-v2

Conversation

@mcsscalabrin

Copy link
Copy Markdown
Owner

What changed, and why

Second pass on the 18 type icons. They arrived as SVGs with the same filenames, so
scripts/assets/types/ — the build input, the only hand-authored art in the project — was swapped
in place and npm run assets did the rest.

Two things the diff cannot show.

The palette had to follow. palette.json documents that each base is extracted from the
icon's coloured disc
, and the reason is stated in the file itself: so the frame and the icon can
never diverge, by construction rather than by discipline. The v2 discs are much more saturated —
fire went from #E4613E to #FF3B14, grass from #439837 to #14C445. Keeping the old
palette would have broken that rule in all 18 types at once and shipped a bright icon sitting on a
muted frame. So the palette was re-extracted from the new discs with the same fixed derivation as
always (45% black, 78% white, 80% black), and the frames regenerated. The card follows the icons
because the rule says it must, and that is the whole point of the rule.

A trap in the build. The v2 SVGs declare width/viewBox of 64; v1 declared 256. emit()
rasterised at whatever size the file happened to carry, so public/assets/energy/*.png would have
silently dropped from 256px to 64px — a 4× resolution loss inside the card, invisible until you
looked at a pip up close. The side is now pinned at ENERGY_PX on the call, so the next art
revision can arrive at any size without moving the output.

Provenance correction. The glyph inside each disc comes from Lucide under
the ISC licence — fire is Lucide's flame path verbatim. The disc itself (flat colour, radial
highlight, vertical shade, 22% white rim) is still original. The README claimed in two places that
all type and energy art was original, and CONTRIBUTING said the same; all three are corrected and
the Lucide copyright notice is now in the Copyright section. This is the only third-party art in
the project.

docs/assets-brief.md gets a "Revisão v2" section recording the provenance and both consequences
above, and docs/design-system.md gets the new hex list.

What you saw

The rarity ladder is regenerated from the new assets and is in the diff — .github/assets/rarity-ladder.png:

rarity ladder

The type strip in the README, also regenerated at the same 1390×64 geometry as before:

type strip

What I checked on the cards: the energy pips beside each attack, the weakness/resistance/retreat
row, and the type badge all pick up the new glyphs at the right size; the frame red now agrees with
the disc red instead of sitting a shade behind it; the gold and silver metals still read as metal
against the more saturated face. Rendered rare, special_illustration_rare and ultra_rare
because those are the three the ladder shows and the two ends of the foil range.

One deploy note, not a defect: CARD_VERSION keys the cached card data, not the rendered PNG,
so the new art applies as soon as this is live. The browser's max-age=3600 on the image route is
what will keep an old PNG on screen for up to an hour — reload with ?bust=<now> before suspecting
the build.

Checks

  • npm run lint
  • npm run typecheck
  • npm test — 161/161
  • Touched the card's shape (new field, removed enum value)? Bumped CARD_VERSION in lib/cards/index.ts — n/a, art only, no change to the data format
  • Touched a scoring formula? Updated RFC 6.1/6.2 in this same PR, with the reason — n/a
  • Added an i18n key? It exists in both pt and en — n/a

Os icones novos chegaram como SVG, um por tipo, com os mesmos nomes dos
antigos. O disco continua original; o glifo dentro dele agora vem do Lucide,
sob licenca ISC. Era a unica arte de terceiros do projeto e o README dizia o
contrario em dois lugares -- corrigido, com o aviso de copyright junto.

A paleta acompanhou. `palette.json` documenta que cada `base` e EXTRAIDO do
disco do icone, justamente para moldura e icone nunca divergirem; os discos da
v2 sao bem mais saturados (fire foi de #E4613E para #FF3B14), entao manter a
paleta velha teria quebrado essa regra nos 18 tipos de uma vez. Reextraida do
disco, com a mesma derivacao fixa de sempre (45% preto, 78% branco, 80% preto),
e as molduras regeradas -- a carta inteira acompanha a troca por construcao,
nao por disciplina.

Uma armadilha achada no caminho: os SVGs da v2 vem em 64px, a v1 vinha em 256,
e o `emit` rasterizava no tamanho que estivesse no arquivo. O PNG de energia
teria encolhido 4x sem ninguem notar ate olhar a carta de perto. O lado agora e
fixado em ENERGY_PX na chamada, entao a proxima revisao de arte pode chegar em
qualquer tamanho.

As duas imagens do README foram regeradas dos assets novos: a fita dos 18 tipos
e a escada de raridade, que mostra moldura e por isso tambem mudou de cor.
@mcsscalabrin mcsscalabrin self-assigned this Aug 14, 2026
@mcsscalabrin mcsscalabrin added documentation Improvements or additions to documentation enhancement New feature or request labels Aug 14, 2026
@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

@mcsscalabrin
mcsscalabrin merged commit b83bc9f into main Aug 14, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant