Skip to content

fix(client): tapped is a quarter turn again, and the cost goes back in the name band #681

Description

@ninthworld

Part of #652. Implements the §6 corrections merged in #677. Reverses part of #658/#670.

Two card defects, both from the spec being wrong

1. Tapped must be a quarter turn

#670 replaced the rotation with a diagonal hatch. The maintainer, on seeing it: "Why is tap no longer an animation into a 90 degree turn but instead stripes? This is not intuitive."

They are right. The turn is the most universal convention in the game — every player and every client already shares it. A pattern over an upright card is a private language nobody has learnt, and internal consistency does not make it read.

The cost that was traded for it is real — a rotated card takes its text sideways — and it is outweighed: a tapped permanent is one you are not currently reading. You know what it is, and the one bit you want at a glance is exactly what the turn says best. The other argument, that a landscape footprint is a case the row packer would have to model, has expired: pack.ts exists, and reserving the rotated footprint is now ordinary layout rather than a special case bolted onto flow.

2. The mana cost belongs in the name band

§6 moved it to the art's top-right overlay to stop it eating the name. The maintainer: "The mana pips on the cards are overlapping the image rather than being inline with the title. So the mana pips are not where my eyes expect them, and they are getting color-mixed with the background image."

That solved the right problem the wrong way. The name was losing because the band was divided before either part was fitted, and the fix for that is the fitting policy — which now works.

Plan

  1. Restore the rotation, with its animation. prefers-reduced-motion reaches the end state instantly.
  2. The row reserves the turned footprint — whether or not anything is currently tapped. Otherwise the board reflows when a creature attacks, which §5 forbids. This is pack.ts work.
  3. Keep the "Tapped" badge deleted. The turn is the statement; a pill saying the word is the same fact twice (§2.1). The word stays for assistive technology, which perceives neither a turn nor a mark.
  4. At the chip tier there is no turn — a 96×30 chip is already landscape, so rotating it says nothing. There, and only there, tapped is a mark, and it must be a pattern or a glyph rather than a tint alone.
  5. Move the cost back into the name band, at its trailing edge.
  6. Fit the band in priority order: the name first, against the width the cost would leave; and if that would push the name below its floor, the cost goes — never the name. Identity outranks reference — §2's tier ordering applied inside one band. Below the chip threshold the cost is gone regardless.
  7. Re-check RelationOverlay: feat(client): tapped is a mark on an upright card, not a quarter turn #670 deleted its transitionend re-measure because nothing moved any more. With rotation back, a card does move — decide deliberately whether the listener returns, and state the reasoning either way.

Guard rails

  • Tapped is a fact the server states. Nothing here infers it.
  • Not colour alone — every fact survives greyscale.
  • Dropping the cost is a drawing decision. The client still computes no affordability.
  • The complete name and complete rules text reach assistive technology regardless of what is drawn.

Acceptance criteria

  • A tapped permanent is rotated 90°, with an animation, and does not collide with its neighbours.
  • The board does not reflow when a permanent taps or untaps.
  • Chips mark tapped without rotation and without relying on colour.
  • The cost renders in the name band at every presentation that draws it.
  • No card in the hand abbreviates its name — the cost yields first, at every viewport.
  • Tapped state still reaches assistive technology as a word.

Done when

Tapping looks like tapping, and the cost is where a printed card puts it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions