Files
Ferrous-Solitaire/assets/cards/faces/classic/QS_BUG.md
T
funman300 9623bdeede fix(engine): wire FiraMono to Android corner label and add CardImageSet tests
Bug #1 (QS wrong watermark): extracted card_face_asset_path() pure helper so
the (Rank, Suit) → filename mapping is tested in isolation. 6 new unit tests
confirm all 52 keys are unique and each suit resolves to its correct letter.
QS.png has the wrong artwork baked in (confirmed via MD5); QS_BUG.md documents
the required asset replacement.

Bug #2/#3 (red square / invisible black suit on Android): add_android_corner_label
used TextFont { ..default() } which gives Bevy's built-in font — that font
lacks U+2660–U+2666, so suit glyphs rendered as a colored missing-glyph
rectangle. Threaded Option<&Handle<Font>> from sync_cards_startup/on_change →
sync_cards → spawn/update_card_entity → add_android_corner_label, which now
passes FiraMono explicitly. Non-Android builds silence the unused param with
let _ = font_handle.

Bug #4 (waste pile): static analysis found no z or fan-offset bug; two new
tests (waste_pile_cards_have_strictly_increasing_z, _draw_one_cards_have_distinct_z)
pin the invariant for future changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:12:02 -07:00

755 B
Raw Blame History

QS.png — Asset Content Bug

Status: Needs manual fix — replace QS.png with correct artwork.

Symptom: The Queen of Spades card renders with a diamond watermark baked into the PNG artwork, while the top-left Android overlay correctly shows "Q♠".

Diagnosis:

  • The code-side mapping (card_face_asset_path(Rank::Queen, Suit::Spades)) correctly returns "cards/faces/classic/QS.png" — confirmed by unit test.
  • QS.png and QD.png have distinct MD5 hashes, so they are not the same file. The bug is in the pixel content of QS.png itself.

Fix: Replace QS.png with a correctly-drawn Queen of Spades image (spade watermark, not diamond). The image should be 120×168 px to match every other card face in this directory.