Commit Graph
16 Commits
Author SHA1 Message Date
agwandClaude Opus 5.5 5b24404eac Spionen: rettelser fra review og QA, og bots
Replikker:
- To spioner siges i flertal ("Spionerne var ..."), også i den generiske
  udgave; fanges den ene, og den anden slipper, er det en halv sejr
  ("Den ene spion er fanget, men den anden slap væk"), ikke "Agenterne
  vinder". Storskærmens overskrift følger med.
- Er spionen gået i løbet af runden, siges "Spionen forlod missionen", og
  navnet står stadig i afsløringen (motoren husker spionernes navne fra
  rundens start; storskærmen viser dem uden farve).
- Fire små replikker skrevet om (vedkommende, "Måske er det ansigtet",
  skarpeste øje = flest rigtige stemmer, vinderen gentog ikke den faste).

Ord: Spionen bruger ikke ord under tre bogstaver ("is", "fe"); de står inde
i for mange andre ord (isvaffel), til at stikordene kan holdes fri af dem.
Mad har 17 ord, Eventyr 15.

Test: speaker-testen kører uden rigtige ventetider (37 s til 4 s for hele
filen); skift-testen venter på det nye spils lobby i stedet for at gætte
på tiden.

deploy/bots.py --game spion: tilfældige stikord (prøver et andet, hvis det
afvises), tilfældige stemmer og gæt; værten forkorter snakken. En stemme,
der kommer et øjeblik efter, at fasen sluttede, er ikke en fejl.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:59:54 +02:00
agwandClaude Opus 5.5 cf6d484422 Speaker: forvarmede generiske replikker, når stemmen ikke kan laves live
WPP_TTS_LIVE (settings.TTS_LIVE): auto (standard) eller off.

Én søm i BaseRoom._synth: kan en replik hverken findes i cachen eller laves
live, og kender den en generisk afløser (narrator.Line), siges en af de
generiske, der ligger i cachen. Rummets kø, afsløringens og oplæsningens
tidslinjer og drillerierne går alle igennem den, og storskærmen (og
telefonens drilleri) viser det, der faktisk siges. Et nyt spil får det ved
at bruge Narrator med sin egen generic.json.

tts:
- enabled() = der er en stemme (cachede klip kan spilles uden nøgle);
  can_fetch() = nøgle og stemme (tts_warm og nye klip).
- off: kun cachen, aldrig et kald.
- auto: efter 401, 402, 429 eller timeout holdes der pause med live-kald i
  fem minutter; saldoen tjekkes højst hvert femte minut i baggrunden, og
  under LIVE_MIN_CREDITS laves intet live. Et spil venter aldrig på det.

Hjernen: dens replikker caches aldrig. Kan de ikke siges, siges den faste
replik, hjernen erstattede (hvis den er cachet), ellers dens generiske
udgave; drillerier falder tilbage til de faste drillerier. Hjernen selv
kaldes som før. Tegn og Gæt: afsløringens intro plus første kæde har en
generisk afløser med samme intro.

Tavse, når de ikke er forvarmet: oplæsningen af spørgsmålet og dets note,
oplæsningen af spillernes svar og hjernens slutanmeldelse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:59:18 +02:00
agwandClaude Opus 5.5 7367b72505 Bots: vent op til 20 minutter på et helt spil
CI / test (push) Successful in 1m10s
Tegn og Gæt med 10 spillere tog 8 m 48 s, tæt på den gamle grænse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:46:49 +02:00
agwandClaude Opus 5.5 f9066bf6af Bots: navne nok til 10 spillere i Tegn og Gæt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:45:49 +02:00
agwandClaude Opus 5.5 0ef58bdfce Bots: to blanke linjer før main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:13:32 +02:00
agwandClaude Opus 5.5 5a98917864 Bots: Tegn og Gæt-bots sover kun før en handling
Under afsløringen kom snapshots hurtigere, end en bot med en pause
efter hver besked kunne læse dem, og forbindelsen faldt (ping-timeout).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:01:31 +02:00
agwandClaude Opus 5.5 a3310c2325 Bots: --game tegn spiller et helt Tegn og Gæt
Bots tegner tilfældige streger, gætter tilfældige ord, bruger af og
til forslaget og giver hjerter under afsløringen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:33:07 +02:00
agw c3f9a5c8b4 Fest-Z: eget emoji-sæt og nyt navn
CI / test (push) Successful in 1m32s
Fest-spillet hedder nu Fest-Z (kategorierne "Fest-Z: …"), og telefonerne
får zoomer-emojis (💀 😭 🧢 🗿 💅 🍻) i stedet for familie-sættet. Serveren
sender sættet i tilstanden, så klienten altid viser det, spillet tager imod.
Reglerne og speakeren taler om slang og memes frem for pop-sladder.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-18 13:17:26 +02:00
agw a40243ed23 Fest: 18+-pakke med pop-sladder, tår og egen speaker
CI / test (push) Successful in 39s
Ny spørgsmålspakke "fest" (aldrig med i "Alle"): 43 faktatjekkede
spørgsmål om dansk pop i to kategorier, Fest: retro og Fest: nu.

Et fest-spil tæller tår ved siden af point: narret giver en tår,
ingen fandt sandheden giver alle en tår, gange rundens faktor
(finalen er en shot). Afsløringen, opsummeringen, stillingen og
telefonen viser tårene, og der er en pris til aftenens tørstigste.
Speakeren bruger zoomer-replikker (<begivenhed>_fest), egne regler
og FEST_VOICE_ID til alt.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-18 10:20:40 +02:00
agw 554c924097 Nørdespørgsmål, spørgsmålspakker, flere lydvarianter og natlig forvarmning
CI / test (push) Successful in 53s
- 87 nye spørgsmål med kilder: Star Wars (inkl. Legends), Harry Potter,
  Ringenes Herre, Lægevidenskab, E-faktura, IT-sikkerhed, Computerhistorie
- Spørgsmålspakker pr. kategori (familie, nørd, arbejde); værten vælger
  Alle/Familie/Nørd, og arbejdspakken kun under "Flere valg"
- Lydeffekter i flere udgaver, der vælges tilfældigt (aldrig samme to gange
  i træk); jingles og tænkemusik til de nye kategorier; ekstra tænke- og
  afsløringsmusik
- Musik hentes og afkodes først, når den skal spilles, og slippes igen
- tts_warm --budget: forvarmer spørgsmål, forklaringer og kategori-replikker
  (de næste spørgsmål først) inden for et tegnbudget

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 18:58:31 +02:00
agw fc76356f56 Oplæsningsrunde, emoji-reaktioner, regler og renere løgne
CI / test (push) Successful in 1m4s
- Runde 2 og finalen: speakeren læser svarene op ét ad gangen (med hjernen
  en overbevisende kommentar pr. svar), i samme takt på storskærm og telefoner
- Emoji-reaktioner fra telefonerne, der må spammes; de flyver op på storskærmen
  og tælles på svaret i fokus
- Opsummeringen følger speakeren: "lad os rydde op", eksplosioner, så pointene
- Speakeren kommenterer, hvordan løgnene skrider frem, uden at røbe indhold,
  og driller dem, der falder for svage løgne
- Reglerne forklares med kort og stemme før rummets første spil
- "Lyv for mig" låser forslaget i feltet (halve point), og feltet bliver ikke
  længere kæmpestort
- Svar vises med versaler, og spillernes løgne gemmes med små bogstaver, så
  store forbogstaver ikke afslører dem
- Løgne og navne renses: kun bogstaver, tal og lidt tegnsætning
- Valgfrit workspace-id til Anthropic-brugernøgler

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 18:18:38 +02:00
agw 0573f867c9 Generisk driftsbeskrivelse i stedet for konkret opsætning
CI / test (push) Successful in 33s
Deploy-script og systemd-unit beskrev én bestemt installation og hører ikke
hjemme i et offentligt repo. README beskriver nu kravene til proxy og
headere generelt, og eksempelmiljøet bruger neutrale værdier.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:56:00 +02:00
agw ec9758ada0 Bots kan fylde et eksisterende spil op (--code)
CI / test (push) Successful in 19s
Så kan et spil testes alene: vær vært og VIP selv, og lad bots være de
andre spillere.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 20:53:55 +02:00
agw 09d56eb8db Bot-test virker mod drift, CI kører testene, protokol opdateret
CI / test (push) Successful in 20s
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 20:37:34 +02:00
agw 10652ee219 Storskærm og telefon-UI, 147 danske spørgsmål og drift
Vanilla JS uden build-trin: én WebSocket pr. skærm med automatisk
genforbindelse, tegner altid fra seneste snapshot. Storskærmen viser kode,
QR, nedtælling og en animeret afsløring; telefonen er bygget til store
knapper og genoptager sin plads efter genindlæsning. dev.html viser alle
faser uden server. deploy/ har systemd-unit, deploy-script og en bot-test,
der spiller et helt spil mod en kørende server.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 20:25:49 +02:00
agw 9a53d8fe04 Start forfra: server-autoritativ spilmotor over WebSocket
Den tidligere version (Angular-SPA, REST og polling) er gemt på branchen
legacy. Denne version samler alle regler i en ren Python-spilmotor
(fupogfakta/engine.py), holder rummene i hukommelsen i én proces og sender
hele spiltilstanden pr. rolle over én WebSocket. Vært-login sker via
Authentik forward-auth i NPMplus.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 20:40:00 +02:00