pick_sigs view + cursor polarity groups; game kit gear menu; housekeeping
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

roles_revealed WS event removed; select_role last pick now fires _notify_all_roles_filled() + stays in ROLE_SELECT; new pick_sigs view (POST /room/<uuid>/pick-sigs) transitions ROLE_SELECT→SIG_SELECT + broadcasts sig_select_started; room.html shows .pick-sigs-btn when all 6 roles filled; PICK SIGS btn absent during mid-selection; 11 new/modified ITs in SelectRoleViewTest + RoomViewAllRolesFilledTest + PickSigsViewTest

consumer: LEVITY_ROLES {PC/NC/SC} + GRAVITY_ROLES {BC/EC/AC}; connects to per-polarity cursor group (cursors_{id}_levity/gravity); receive_json routes cursor_move to cursor group; new handlers all_roles_filled, sig_select_started, cursor_move; CursorMoveConsumerTest (TransactionTestCase, @tag channels): levity cursor reaches fellow levity player, does not reach gravity player

game kit gear menu: #id_game_kit_menu registered in _applets.scss %applet-menu + fixed-position + landscape offset; id_gk_sections_container added to appletContainerIds in applets.js so OK submit dismisses menu; _game_kit_sections.html sections use entry.applet.grid_cols/grid_rows (was hardcoded 6); %applets-grid applied to #id_gk_sections_container (direct parent of sections, not outer wrapper); FT setUp seeds gk-* applets via get_or_create

drama test reorg: integrated/test_views.py deleted (no drama views); two test classes moved to epic/tests/integrated/test_views.py + GameEvent import added; drama/tests/unit/test_models.py → drama/tests/integrated/test_models.py; unit/ dir removed

login form: position:fixed + vertically centred in base styles across all breakpoints; 24rem width, text-align:center; landscape block reduced to left/right sidebar offsets; alert moved below h2; left-side position indicator slots 3/4/5 column order flipped via CSS data-slot selectors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-04-04 14:33:35 -04:00
parent 188365f412
commit b74f8e1bb1
13 changed files with 313 additions and 111 deletions

View File

@@ -1,7 +1,7 @@
<div id="id_gk_sections_container">
{% for entry in applets %}
{% if entry.applet.slug == 'gk-trinkets' and entry.visible %}
<section id="id_gk_trinkets" style="--applet-cols: 6; --applet-rows: 3;">
<section id="id_gk_trinkets" style="--applet-cols: {{ entry.applet.grid_cols }}; --applet-rows: {{ entry.applet.grid_rows }};">
<h2>Trinkets</h2>
<div class="gk-items">
{% if pass_token %}
@@ -30,7 +30,7 @@
{% endif %}
{% if entry.applet.slug == 'gk-tokens' and entry.visible %}
<section id="id_gk_tokens" style="--applet-cols: 6; --applet-rows: 3;">
<section id="id_gk_tokens" style="--applet-cols: {{ entry.applet.grid_cols }}; --applet-rows: {{ entry.applet.grid_rows }};">
<h2>Tokens</h2>
<div class="gk-items">
{% for token in free_tokens %}
@@ -53,7 +53,7 @@
{% endif %}
{% if entry.applet.slug == 'gk-decks' and entry.visible %}
<section id="id_gk_decks" style="--applet-cols: 6; --applet-rows: 3;">
<section id="id_gk_decks" style="--applet-cols: {{ entry.applet.grid_cols }}; --applet-rows: {{ entry.applet.grid_rows }};">
<h2>Card Decks</h2>
<div class="gk-items">
{% for deck in unlocked_decks %}
@@ -70,7 +70,7 @@
{% endif %}
{% if entry.applet.slug == 'gk-dice' and entry.visible %}
<section id="id_gk_dice" style="--applet-cols: 6; --applet-rows: 3;">
<section id="id_gk_dice" style="--applet-cols: {{ entry.applet.grid_cols }}; --applet-rows: {{ entry.applet.grid_rows }};">
<h2>Dice Sets</h2>
<div class="gk-items">
{% include "core/_partials/_forthcoming.html" %}

View File

@@ -13,15 +13,22 @@
<div class="table-hex-border">
<div class="table-hex">
<div class="table-center">
{% if room.table_status == "ROLE_SELECT" and card_stack_state %}
<div class="card-stack" data-state="{{ card_stack_state }}"
data-starter-roles="{{ starter_roles|join:',' }}"
data-user-slots="{{ user_slots|join:',' }}"
data-active-slot="{{ active_slot }}">
{% if card_stack_state == "ineligible" %}
<i class="fa-solid fa-ban"></i>
{% endif %}
</div>
{% if room.table_status == "ROLE_SELECT" %}
{% if starter_roles|length == 6 %}
<form method="POST" action="{% url 'epic:pick_sigs' room.id %}">
{% csrf_token %}
<button type="submit" class="pick-sigs-btn btn btn-primary btn-xl">PICK SIGS</button>
</form>
{% elif card_stack_state %}
<div class="card-stack" data-state="{{ card_stack_state }}"
data-starter-roles="{{ starter_roles|join:',' }}"
data-user-slots="{{ user_slots|join:',' }}"
data-active-slot="{{ active_slot }}">
{% if card_stack_state == "ineligible" %}
<i class="fa-solid fa-ban"></i>
{% endif %}
</div>
{% endif %}
{% endif %}
</div>
</div>