Django Channels role-select sprint: turn_changed, roles_revealed, role_select_start consumer handlers; WS URL changed from room_slug to room_id UUID; TableSeat model - room, gamer, slot_number, role, role_revealed, seat_position fields; Room.table_status field with ROLE_SELECT, SIG_SELECT, IN_GAME choices; migration 0006_table_status_and_table_seat; pick_roles and select_role views; _role_select_context helper; _notify_turn_changed, _notify_roles_revealed, _notify_role_select_start notifiers; all gate-mutation views now call _notify_gate_update; ChannelsFunctionalTest base class with serve_static, screenshot, dump helpers; SQLite TEST NAME set to file path for ChannelsLiveServerTestCase; InMemoryChannelLayer added to test CHANNEL_LAYERS settings; FT 5 and FT 6 now passing - active seat arc and turn advance via WS, no page refresh; room.js, gatekeeper.js, role-select.js added to apps/epic/static; applets.js, game-kit.js, dashboard.js, wallet.js relocated to app-scoped static dirs; room.html: hex table, table-seat arcs, card-stack, inventory panel, role-card hand, WS scripts; _room.scss: room-shell flex layout, .table-hex polygon clip-path, .table-seat and .seat-card-arc, .card-stack eligible/ineligible states, .card flip animation, .inv-role-card stacked hand, .role-select-backdrop; gear btn and room menu always position: fixed; 375 tests, 0 skipped

This commit is contained in:
Disco DeDisco
2026-03-17 00:24:23 -04:00
parent c9defa5a81
commit 01de6e7548
32 changed files with 2148 additions and 63 deletions

View File

@@ -175,9 +175,9 @@
/* Earthman Palette */
// bark
--priBrk: 182, 103, 98;
--secBrk: 132, 78, 68;
--terBrk: 82, 53, 38;
--priBrk: 162, 103, 98;
--secBrk: 117, 78, 68;
--terBrk: 72, 53, 38;
// khaki
--priKhk: 195, 176, 145;
--secKhk: 145, 126, 95;
@@ -396,21 +396,21 @@
/* Monochrome Light Palette */
.palette-monochrome-light {
--priUser: var(--sixAdm); /* 240,240,240 — light gray bg */
--secUser: var(--terNi); /* 100,100,100 — mid-dark text/border */
--secUser: var(--terPer); /* 100,100,100 — mid-dark text/border */
--terUser: var(--priPer); /* 60,60,60 — dark accent */
--quaUser: var(--priAg); /* 30,30,30 — near-black active */
--quiUser: var(--sixAdm); /* 133,133,133 — mid-gray action */
--quiUser: var(--priMst); /* 133,133,133 — mid-gray action */
--sixUser: var(--quiAg); /* 175,175,175 — subtle */
--sepUser: var(--sixAg); /* 240,240,240 — secondary subtle */
--octUser: var(--terNi); /* 93,95,94 — links */
--ninUser: var(--terPer); /* 255,251,246 — warm bright highlight */
--octUser: var(--priNi); /* 93,95,94 — links */
--ninUser: var(--terNi); /* 255,251,246 — warm bright highlight */
--decUser: var(--terPt); /* 189,190,189 — light mid */
}
/* Sepia Palette */
.palette-sepia {
--priUser: var(--priCu); /* 46,24,5 — very dark warm brown bg */
--secUser: var(--quiCu); /* 207,173,143 — warm beige text/border */
--terUser: var(--quiAu); /* 214,186,84 — amber gold accent */
--terUser: var(--priBpk); /* 214,186,84 — amber gold accent */
--quaUser: var(--quaAg); /* 195,176,145 — warm tan interactive */
--quiUser: var(--quaSwp); /* 95,76,45 — deep khaki */
--sixUser: var(--quaCu); /* 171,112,60 — copper mid */