Compare commits

..

1 Commits

Author SHA1 Message Date
cottongin
c24223be5c feat: add TMP3 support and fix shard probe lifecycle bug
Add Trivia Murder Party 3 (Playtest) ticker and seed data. Bind-mount
tickers.json in docker-compose so ticker changes take effect on restart
without image rebuilds.

Fix shard monitor probe poisoning game lifecycle state — the player-count
probe no longer sets gameFinished, which was preventing the main WS from
processing room/lock and room/exit for games like TMP3 that don't send
entity updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 12:45:59 -04:00
5 changed files with 9 additions and 3 deletions

View File

@@ -8,6 +8,7 @@
"FBG4": "Fibbage 4", "FBG4": "Fibbage 4",
"TMP1": "Trivia Murder Party", "TMP1": "Trivia Murder Party",
"TMP2": "Trivia Murder Party 2", "TMP2": "Trivia Murder Party 2",
"TMP3": "Trivia Murder Party 3 (Playtest)",
"DRWF": "Drawful", "DRWF": "Drawful",
"DRWA": "Drawful Animate", "DRWA": "Drawful Animate",
"DD": "Dirty Drawful", "DD": "Dirty Drawful",

View File

@@ -172,8 +172,9 @@ class EcastShardClient {
this.playerCount = playerCount; this.playerCount = playerCount;
this.playerNames = playerNames; this.playerNames = playerNames;
} }
} else if (msg.opcode === 'error' && msg.result?.code === 2027) { } else if (msg.opcode === 'error') {
this.gameFinished = true; // Probe errors are transient — lifecycle is managed
// by the main connection and reconnect logic
} }
} catch (_) {} } catch (_) {}
clearTimeout(timeout); clearTimeout(timeout);
@@ -562,6 +563,8 @@ class EcastShardClient {
finalPlayerCount: this.playerCount, finalPlayerCount: this.playerCount,
}); });
activeShards.delete(`${this.sessionId}-${this.gameId}`); activeShards.delete(`${this.sessionId}-${this.gameId}`);
this.gameFinished = true;
this.disconnect();
return false; return false;
} finally { } finally {
this.reconnecting = false; this.reconnecting = false;

View File

@@ -17,6 +17,7 @@ services:
- jackbox-data:/app/data - jackbox-data:/app/data
- ./games-list.csv:/app/games-list.csv:ro,z - ./games-list.csv:/app/games-list.csv:ro,z
- ./backend/config/admins.json:/app/config/admins.json:ro,z - ./backend/config/admins.json:/app/config/admins.json:ro,z
- ./backend/config/tickers.json:/app/config/tickers.json:ro,z
ports: ports:
- "5000:5000" - "5000:5000"
networks: networks:

View File

@@ -2,7 +2,7 @@ export const branding = {
app: { app: {
name: 'HSO Jackbox Game Picker', name: 'HSO Jackbox Game Picker',
shortName: 'Jackbox Game Picker', shortName: 'Jackbox Game Picker',
version: '0.7.12 - Pokémon-Go-To-The-Polls Edition', version: '0.7.13 - Pokémon-Go-To-The-Polls Edition',
description: 'Spicing up Hyper Spaceout game nights!', description: 'Spicing up Hyper Spaceout game nights!',
}, },
meta: { meta: {

View File

@@ -58,3 +58,4 @@ Jackbox Naughty Pack,Fakin It All Night Long,3,8,????,?,No,?,?
Jackbox Naughty Pack,Dirty Drawful,3,8,????,?,No,?,? Jackbox Naughty Pack,Dirty Drawful,3,8,????,?,No,?,?
Jackbox Naughty Pack,Let Me Finish,3,8,????,?,No,?,? Jackbox Naughty Pack,Let Me Finish,3,8,????,?,No,?,?
Jackbox Party Pack,Survey Scramble,2,10,????,Yes,Yes,?,? Jackbox Party Pack,Survey Scramble,2,10,????,Yes,Yes,?,?
Jackbox Party Pack Playtests,Trivia Murder Party 3 (Playtest),1,8,????,?,No,Trivia,
1 Game Pack Game Title Min. Players Max. Players Length Audience Family Friendly? Game Type Secondary Type
58 Jackbox Naughty Pack Dirty Drawful 3 8 ???? ? No ? ?
59 Jackbox Naughty Pack Let Me Finish 3 8 ???? ? No ? ?
60 Jackbox Party Pack Survey Scramble 2 10 ???? Yes Yes ? ?
61 Jackbox Party Pack Playtests Trivia Murder Party 3 (Playtest) 1 8 ???? ? No Trivia