diff --git a/src/apps/gameboard/views.py b/src/apps/gameboard/views.py index db5c1b0..f21602c 100644 --- a/src/apps/gameboard/views.py +++ b/src/apps/gameboard/views.py @@ -386,6 +386,9 @@ def my_sea(request): # `.fa-circle-check` on the landing's 1C chair (user-spec 2026-05-29); # a DEL'd row at GATE VIEW (empty hand, no paid credit) reads unseated. "seat1_seated": hand_non_empty or show_paid_draw, + # The owner's landing hex shows present visitors too (2C-6C), not just + # 1C — the same `_my_sea_seats` ring the spectator + broadcast use. + "seats": _my_sea_seats(request.user), "show_picker": show_picker, "show_cont_draw": show_cont_draw, # Sub-btn .active flag for the burger fan — Sea sub-btn lights up diff --git a/src/static_src/scss/_applets.scss b/src/static_src/scss/_applets.scss index 69f73dc..c4e67f7 100644 --- a/src/static_src/scss/_applets.scss +++ b/src/static_src/scss/_applets.scss @@ -86,6 +86,16 @@ #id_billboard_applet_menu { @extend %applet-menu; } #id_billscroll_menu { @extend %applet-menu; } #id_my_sea_menu { @extend %applet-menu; } +// My-Sea gear menu — stack its btns (NVM + BYE) in a COLUMN in portrait, +// matching the room gear menu's vertical feel; flips to a ROW in landscape +// (handled in the landscape block below). The menu itself can't be flexed — +// applets.js force-sets inline `display: block` on open — so this overrides +// the shared `%applet-menu .menu-btns` row to a column (margin-top reset since +// the My-Sea menu has nothing above the btns). 2026-05-30. +#id_my_sea_menu .menu-btns { + flex-direction: column; + margin-top: 0; +} #id_bud_menu { @extend %applet-menu; } // Page-level gear buttons — fixed to viewport bottom-right @@ -163,6 +173,10 @@ bottom: auto; left: auto; } + + // Landscape: the My-Sea gear menu lays its btns out in a ROW (space is + // tight vertically), reverting the portrait column above. + #id_my_sea_menu .menu-btns { flex-direction: row; } } // ── Applet box visual shell (reusable outside the grid) ──── diff --git a/src/static_src/scss/_gameboard.scss b/src/static_src/scss/_gameboard.scss index 7cdc7ec..671858e 100644 --- a/src/static_src/scss/_gameboard.scss +++ b/src/static_src/scss/_gameboard.scss @@ -293,19 +293,14 @@ body.page-gameboard { grid-column: 1; } - // Seated chair (post-FREE DRAW). Visual transition mirrors - // `.table-seat.active .fa-chair` from _room.scss line 626 — - // --terUser color + --ninUser drop-shadow glow — but uses a stable - // `.seated` class (semantically distinct from `.active`: active = - // current turn in a multi-user room; seated = draw-locked occupant - // in this solo-flow). _room.scss line 596 makes the colour change - // a 0.6s ease transition so the chair animates rather than snaps. - // Status icon (.position-status-icon) colour swap fa-ban red → - // fa-circle-check green is handled by _room.scss lines 615-616. - .table-seat.seated .fa-chair { - color: rgba(var(--terUser), 1); - filter: drop-shadow(0 0 4px rgba(var(--ninUser), 1)); - } + // NOTE: the steady seated-chair look is owned by `_room.scss`'s + // `.table-seat.seated .fa-chair` (--secUser, no glow) — the one-shot + // --terUser/--ninUser flare is the transient `.seat-just-seated` + // animation (my-sea-seat-flare, 2s forwards). An earlier `.my-sea-landing` + // override here forced the seated chair to PERMANENT --terUser + glow, + // which snapped back after the flare settled (it out-specified the + // _room.scss settle) — removed 2026-05-29 so a seated chair eases in then + // rests at opaque --secUser as spec'd. } // Picker phase bg — `--duoUser` matches the table hex's interior so diff --git a/src/static_src/scss/_room.scss b/src/static_src/scss/_room.scss index a69f61c..a72b5f0 100644 --- a/src/static_src/scss/_room.scss +++ b/src/static_src/scss/_room.scss @@ -640,9 +640,11 @@ html:has(.gate-backdrop) .position-strip .gate-slot button { pointer-events: aut &.seat-just-seated .fa-chair { animation: my-sea-seat-flare 2s ease forwards; } - // The viewer's own occupied seat on the multi-seat spectator hex — a - // subtle --terUser tint so they can pick themselves out of 2C–6C. - &.table-seat--self .fa-chair { + // The viewer's own occupied seat on the multi-seat spectator hex — tint + // the position LABEL (2C…) --terUser so they can pick themselves out, + // WITHOUT recolouring the chair (which must rest at the steady --secUser + // seated look, not the flare colour). 2026-05-29. + &.table-seat--self .seat-position-label { color: rgba(var(--terUser), 1); } diff --git a/src/templates/apps/gameboard/_partials/_my_sea_gear.html b/src/templates/apps/gameboard/_partials/_my_sea_gear.html index 45a9b88..4111288 100644 --- a/src/templates/apps/gameboard/_partials/_my_sea_gear.html +++ b/src/templates/apps/gameboard/_partials/_my_sea_gear.html @@ -39,18 +39,23 @@ window.mySeaGuardedNav = window.mySeaGuardedNav || function (e, url) { }; {% include "apps/applets/_partials/_gear.html" with menu_id="id_my_sea_menu" %} diff --git a/src/templates/apps/gameboard/my_sea.html b/src/templates/apps/gameboard/my_sea.html index d57c279..54127b7 100644 --- a/src/templates/apps/gameboard/my_sea.html +++ b/src/templates/apps/gameboard/my_sea.html @@ -86,19 +86,26 @@ - {% for n in "123456" %} - {# Chair-position labels (1C-6C). No roles in #} - {# my-sea (this is the solo draw flow); using #} - {# `.seat-position-label` instead of the room's #} - {# `.seat-role-label` to keep the no-role #} - {# semantics clean. `.position-status-icon` + #} - {# `.fa-ban` are unchanged — already role- #} - {# agnostic in _room.scss. #} -
- - {{ n }}C - -
+ {# Owner 1C + present visitors 2C-6C — the shared #} + {# `_my_sea_seats` ring, so the owner sees who's #} + {# seated at her table, not just herself. The FREE #} + {# DRAW client-side transition still targets #} + {# `.table-seat[data-slot="1"]`. `.position-status- #} + {# icon` / `.fa-ban` are role-agnostic in _room.scss. #} + {% for seat in seats %} + {% if seat.present %} +
+ + {{ seat.label }} + +
+ {% else %} +
+ + {{ seat.label }} + +
+ {% endif %} {% endfor %} diff --git a/src/templates/apps/gameboard/my_sea_visit.html b/src/templates/apps/gameboard/my_sea_visit.html index de2ce24..a9be9d0 100644 --- a/src/templates/apps/gameboard/my_sea_visit.html +++ b/src/templates/apps/gameboard/my_sea_visit.html @@ -81,6 +81,10 @@ {% endblock content %} {% block scripts %} + {# room.js's scaleTable() fits the table-hex scene to the aperture — #} + {# same as the owner's my_sea (which loads it too); without it the visit #} + {# hex renders unscaled. #} + {# Voice-affordance glow/pulse machine — keys on the voice sub-btn's #}