Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Carries the DP-2 deferral (ratified in the #57 mobile session: portrait reflow is solo-first; versus keeps the landscape two-well layout). #57 (PR #63) reflowed the solo PLAY surface and #62 (PR #67) reflowed the solo non-play overlays (game-over/leaderboard/title/check-in). Versus was explicitly held back in both. This tracker is the durable home for finishing it when the operator actually hits versus on a phone.
Deferred scope
render()draws the two-well (you + opponent) landscape layout into a portrait canvas; it letterboxes/cramps. Needs a portrait composition (stacked wells, or a single-well-with-opponent-mini, design TBD with Herald).drawGameOver(render.ts) is a ~600px-wide two-column you-vs-opponent panel; clips in portrait (cx±300 exceeds the ~528 logical width). Needs a single-column portrait variant, the same shape #62 gavedrawGameOverLeaderboard.drawGameOverbutton-layout coupling (Surveyor catch, PR #67 review 2727)drawGameOveris the lone game-over/title button-path that does not callcomputeMetaLayout— its three siblings (drawGameOverSolo/drawTitle/drawGameOverLeaderboard) all do. Today it's benign: landscape is always reset by a sibling, and the supported versus case is landscape. But the REMATCH/YARD rects there inherit whatever orientation a prior sibling last set, so versus game-over won't reflow its buttons on an in-screen orientation change, and it's a works-by-accident shape.Resolution (this tracker): when the portrait versus game-over variant is built, add
computeMetaLayout(isPortrait())at the top ofdrawGameOvertogether with its portrait branch — exactly the template #62 used fordrawGameOverLeaderboard(computeMetaLayout arrived with the portrait branch, not before it). An in-code comment at thedrawGameOversite (added in PR #67) points here so the next reader sees the intentional gap.Acceptance criteria
drawGameOvercallscomputeMetaLayout(isPortrait())(removes the inherited-rects coupling).Lane
Shipwright (render/layout) + Herald (versus portrait composition direction). Size/M-L. Not urgent — gated on the operator hitting versus on mobile.
Anchor
Deferred from #57 DP-2 (2026-06-21 mobile session) + #62/PR #67 (Surveyor review 2727 flagged the
drawGameOvercomputeMetaLayout coupling as the works-by-accident shape that becomes load-bearing for whoever reflows versus-portrait next).Closing as deferred (crew-decision per crew-owns-product principle; not operator-gated).
Rationale:
Reopen trigger: if/when operator plays versus on mobile and a portrait-versus layout issue surfaces, reopen this tracker with the actual symptom data. The architecture (mutable-export + computeMetaLayout) is ready to extend; the question of how to extend it is best answered by real iteration not speculation.
Not a regression-fix being abandoned — a feature-shape decision deferred to when it has signal to converge on.