Skip to content

[Epic] What's That Card: full-page repass (layout, question content, feed intelligence) #704

Description

@WilfordGrimley

Owner walkthrough finding, verbatim: "I am not satisfied with many elements. We have done a lot of patchwork and not a full repass in a while."

This epic tracks a full-page repass of the "What's That Card" surface (frontend/src/features/questionFeed/QuestionFeed.tsx, frontend/src/features/printingTags/cardPanel.tsx, frontend/src/features/attributeChips/*, frontend/src/components/ArtistSupportLink.tsx, MPCAutofill/cardpicker/question_feed.py), split into three tracks. All nine children below were individually audited against current code and each carries its own code-evidence + verdict.

Track A — Layout / space

Ships as ONE coherent repass, not six separate patches — several of these issues touch the same shared styled-components (cardPanel.tsx's CandidateButton/ArtPlaceholder/ZoomableThumbnail, QuestionFeed.tsx's Btn/ActionGrid/SubjectArtTitle), so fixing them independently would mean multiple diffs churning the same files. Each child issue has its own "Layout-pass coupling" note flagging exactly which other items it shares surface area with.

Track B — Question content

Track C — Feed intelligence

A broader information-gain-ordered question-selection redesign is planned separately and is explicitly out of scope for this epic and its children — #713 is the concrete, immediately-actionable slice of that larger direction, not the redesign itself.

Audited against ProxyPrints/ProxyPrints.github.io@17345a48050cd6734f312d033b6ef1ed4f1af014 (origin/master, 2026-08-05).

Children

  1. What's That: hover-zoom on card/illustration is clipped by its container frame #705 — hover-zoom on card/illustration is clipped by its container frame
  2. What's That: illustration questions render every candidate in a group instead of one representative image (first group also hidden) #706 — illustration questions render every candidate in a group instead of one representative image (first group also hidden)
  3. What's That: chips don't collapse their space when a selection invalidates them #707 — chips don't collapse their space when a selection invalidates them
  4. What's That: reference image title overlays the bottom corner of the image #708 — reference image title overlays the bottom corner of the image
  5. What's That: replace the MTGAC applet with a compact link to the artist's MTGAC page #709 — replace the MTGAC applet with a compact link to the artist's MTGAC page
  6. What's That: reference card should stay visible while scrolling at every viewport; snip page uses vertical space poorly #710 — reference card should stay visible while scrolling at every viewport; page uses vertical space poorly
  7. What's That: answer-row control hierarchy — the Yes button is oversized #711 — answer-row control hierarchy — the Yes button is oversized
  8. What's That: 'Not sure' and 'Skip' are the same action — differentiate and record ambiguity #712 — "Not sure" and "Skip" are the same action — differentiate and record ambiguity
  9. What's That: users are re-asked questions they have already answered on the same image #713 — users are re-asked questions they have already answered on the same image
  10. Make AI-generated art and external-IP human-votable attributes #719 — Make AI-generated art and external-IP human-votable attributes
  11. What's That: the Level 1 Yes button is still visually dominant — block width and accent colour, not font size #740 — the Level 1 Yes button is still visually dominant — block width and accent colour, not font size
  12. What's That: the subject card's title label sits inside the artwork's bounding box, covering its bottom edge #741 — the subject card's title label sits inside the artwork's bounding box, covering its bottom edge
  13. What's That: exclusion-group chip rows stretch to the full panel width, with the Yes/No controls stranded at the far right #742 — exclusion-group chip rows stretch to the full panel width, with the Yes/No controls stranded at the far right
  14. What's That: the attribute chip panel renders two independent exclusion groups as one unlabelled list #743 — the attribute chip panel renders two independent exclusion groups as one unlabelled list
  15. What's That: at Level 1 the pinned subject card has no scroll slack, so sticky never engages #744 — at Level 1 the pinned subject card has no scroll slack, so sticky never engages
  16. What's That: illustration groups at Level 2 stack vertically instead of flowing side by side #745 — illustration groups at Level 2 stack vertically instead of flowing side by side
  17. What's That: illustration and Scryfall artwork render at too small a default size, inside a card-shaped frame that does not match their aspect #746 — illustration and Scryfall artwork render at too small a default size, inside a card-shaped frame that does not match their aspect
  18. What's That: the artist's name appears more than once, and the MTGAC disclosure should live inside the link button #747 — the artist's name appears more than once, and the MTGAC disclosure should live inside the link button
  19. What's That: a rejected Level 1 suggestion is permanently removed from the Level 2 candidate grid #748 — a rejected Level 1 suggestion is permanently removed from the Level 2 candidate grid

Owner decisions (2026-08-05 review)

Owner's strategic framing for the epic:

  1. The redesign is an INVERSION. Derive everything derivable from stored evidence first; route human questions ONLY to where the machine abstained or where channels conflict. The feed's job shifts from "ask about everything" to "ask only where automation couldn't resolve it."
  2. "Resolution" does NOT require identifying an exact printing. Confirming machine-derived data on other high-value fields is equally a resolution. This decouples the confirmation goal from the printing-identification coverage goal — a question that confirms, say, a border/frame/bleed field the machine already leans toward counts as a resolved question in its own right, not merely a step toward identifying a printing.
  3. The 51% consensus gate protects soundness and stays unchanged. No change to the existing threshold mechanics.
  4. Difficulty may be user-selectable or ramp per session. Owner leans undecided between the two; session-ramp (difficulty increases within a session rather than being a persistent user setting) is the working default until decided otherwise.
  5. New children added to this epic (filed 2026-08-05):

Existing spec reconciliation (2026-08-05)

Spec: docs/proposals/mockups/wtc-rebuild/SPEC-wtc-rebuild.md (+ companion wtc-mockup.html
in the same dir). Verdict: CURRENT, and implemented for its own scope — shipped via PR #446
(2026-07-24); the container-first hero (WtcHero/Subject/QPanel, @container hero,
--wtc-* tokens) is still live in QuestionFeed.tsx as of 17345a4 (2026-08-05), and #705/#710's
own code-evidence sections independently cite matching structure. Scope caveat: the spec is a
visual/layout/token rebuild only — it does not address question-content logic (Track B) or
backend feed-intelligence/vote logic (Track C).

Issue Classification Note
#704 (this epic) MIXED Track A (layout) largely ALREADY SPECIFIED; Track B/C largely NOT COVERED — spec never reaches question-content or feed-intelligence logic
#705 NOT COVERED spec's cardPanel.tsx file-change row doesn't address ZoomableThumbnail/overflow clipping
#706 NOT COVERED spec doesn't address illustration-group tile-count rendering
#707 CONFLICTS (sub-symptom A) / NOT COVERED (sub-symptom B) spec §6 checklist keeps AttributeChipPanel "opt-in... behavior-preserved"; owner's 2026-08-05 decision wants it shown automatically by question type
#708 CONFLICTS spec §1c BINDING "subject art title" row prescribes exactly the bottom-gradient overlay #708 reports as a defect
#709 NOT COVERED spec never mentions ArtistSupportLink/MTGAC
#710 CONFLICTS spec §3 "Page scroll model" (WD4) retires sticky/bounded-height in favor of an ordinary scrolling document; issue demands the reference card stay sticky-visible at every viewport. Issue does cite the spec's container-first policy (§185-190/198-206) as the implementation method to use for the eventual fix — agreement on method, conflict on the core mechanism
#711 NOT COVERED spec's .btn.big token exists generically; nothing binds the Level-1 Yes button to combining .big+.block specifically
#712 NOT COVERED spec's §2 "preserved flow" documents current Not-Sure=no-vote behavior as frozen for the visual rebuild's contract, but doesn't forbid a future backend change — out of spec's scope
#713 NOT COVERED spec's Annex A explicitly disclaims backend served-mix/exclusion logic as "not built by this design"
#714 NOT COVERED no mention of reporting/flagging UI
#715 NOT COVERED no mention of double-click/interaction bugs
#716 NOT COVERED no mention of question-selection ranking; Annex A's served-mix seam is adjacent but distinct

Gap found in the other direction: spec's Annex A calls for a backend seam — logging served-mix
composition per session in question_feed.py so click-latency/agreement-rate can be correlated
against a session's easy-question exposure — explicitly "not built by this design." No issue on
this board (#704-#716) tracks that ask.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions