Skip to content

questionFeed: WTC design repass rules 1/2/3/5/6 - uniform buttons, tap guard, landscape art frame, chip pruning, shared artist credit (#704) - #758

Merged
WilfordGrimley merged 1 commit into
masterfrom
feat/wtc-design-intent-repass
Aug 9, 2026
Merged

questionFeed: WTC design repass rules 1/2/3/5/6 - uniform buttons, tap guard, landscape art frame, chip pruning, shared artist credit (#704)#758
WilfordGrimley merged 1 commit into
masterfrom
feat/wtc-design-intent-repass

Conversation

@WilfordGrimley

Copy link
Copy Markdown

Summary

Implements WTC design repass rules 1, 2, 3, 5, 6 (governing doc docs/proposals/mockups/wtc-rebuild/DESIGN-REPASS-2026-08.md, epic #704) on the question-feed surface:

  1. Rule 1 (What's That: answer-row control hierarchy — the Yes button is oversized #711) — uniform button geometry. Drop the oversized .big modifier on Btn (used by the Level 3 confirm action) so every primary decision/action button in the answer rows shares identical sizing, padding, and typography metrics.
  2. Rule 2 (What's That: some controls require two clicks to register #715) — zero-latency interaction. Add touch-action: manipulation to Btn and TriStateChip (opt out of the mobile double-tap-zoom gesture that swallows fast single taps). Add a synchronous voteInFlightRef guard read at the top of every vote/advance handler and set at entry, closing the React-batch window that let a double-click cast a vote twice. Vote handlers release it in .finally; advance-only handlers (skip, Not sure) hold it until the next item lands via the fetch effect.
  3. Rule 3 (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) — normalized image proportions. SubjectArtImage renders the artist-question subject slot (a harvested Scryfall illustration crop, landscape 584/444) at ILLUSTRATION_CROP_ASPECT_RATIO instead of the portrait card frame that cropped it; $landscape={item.type === "artist"} selects the ratio. Card scans keep the portrait CARD_ASPECT_RATIO.
  4. Rule 5 — context-dependent disqualification. New isChipContradicted(chip, chipStates) in attributeChips.ts mirrors the deeper grid logic: an untouched exclusion-group sibling whose group already carries a positive vote is contradicted. AttributeChipPanel takes pruneContradicted and drops those chips from the render (the positive stays; standalone chips are untouched); QuestionFeed wires it to the filter panel. A retracted positive restores the hidden siblings.
  5. Rule 6 — universal MTGAC artist attribution. Extract shared ArtistCredit (the 220px cap that the illustration cluster credit always used) and apply it to the post-answer artist-support banner too, so the ArtistSupportLink applet renders identically under both surfaces instead of one tidy line and one full-width button.

Test plan

  • Added unit tests: isChipContradicted group-consistency, standalone-untouched, retract-restores (attributeChips.test.ts)
  • Added panel tests: contradicted siblings pruned, positive persists, standalone chips stay, retract restores siblings, dimming path (no prune) unchanged (AttributeChipPanel.test.tsx)
  • Added feed-level wiring test: exclusion-group sibling pruned from the filter panel after a positive (QuestionFeed.test.tsx)
  • Ran npx jest full suite: 664/664 tests pass across 70 suites; 3 suites fail on a pre-existing module-resolution error in keyrune.ts (missing generated codepoints JSON) — verified identical on the base commit via git stash
  • Ran npx tsc --noEmit: no errors in touched files (4 pre-existing errors in keyrune.ts / ReportCardPanel.test.tsx, present on base)
  • Pre-commit hooks on touched files: prettier + eslint pass (eslint emits only pre-existing no-img-element warnings)
  • CI — not watched by this session per dispatch convention

…p guard, landscape art frame, chip pruning, shared artist credit (#704)
@WilfordGrimley
WilfordGrimley merged commit 863b752 into master Aug 9, 2026
12 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