Commit Graph
538 Commits
Author SHA1 Message Date
agwandClaude Opus 5.5 d6a4bb0b52 tts_warm: forvarm menuens intro-replikker først i --budget-køen
Introen pr. spil (navn, tagline og trin, standardstemmen) er præcis den
tekst, /host/intro/<spil> sender til tts.synth, så cache-nøglen passer.
Den står først i budget-køen før Tegn og Gæts replikker og følger
--budget, --reserve og --only (kun det valgte spils intro). Uden --budget
siger kommandoen, hvor mange der mangler; --dry-run tæller dem.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:45:01 +02:00
agwandClaude Opus 5.5 8440be6f84 Skift spil i samme rum: "Vælg andet spil" efter podiet
Podiet har nu "Spil igen" og "Vælg andet spil". Det sidste går til menuen
med rummets kode (/host/?code=ABCD); menuen viser rummet og hvor mange der
venter, og Start sender koden med.

Sømmen ligger i rooms.add_room: får et nyt rum en kode, der allerede kører,
overtager det nye rum spillerne og forbindelserne (BaseRoom.take_over), og
det gamle lukkes (timere og stemmekø). Spillerne joines i det nye spil i den
rækkefølge de kom, med samme navn og token; dem over det nye spils max
bliver publikum. Hver forbindelses room og member_id peges om, så ingen
consumer hænger fast i det gamle rum, og telefonerne får det nye spils
lobby med det samme uden at joine igen. En telefon, der genindlæser, kommer
ind med sit gamle token.

Test (WebSocket): et helt Fup og Fakta-spil til podiet, skift til Tegn og
Gæt i samme rum, og et helt Tegn og Gæt-spil på de samme forbindelser; og
10 spillere til Fup og Fakta (8 spiller, resten er publikum).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:43:24 +02:00
agwandClaude Opus 5.5 0800736b9e Spilmenu på /host/: kort pr. spil og intro med speaker
/host/ er nu en menu bygget af registret (menu.js): et kort pr. spil med
navn, tagline, ikon, antal spillere og ca. varighed. Vælges et spil, kommer
introen med trinene, spillets egne indstillinger (Fup og Fakta's pakker inkl.
arbejde og fest, Tegn og Gæts regler til/fra), Start og Tilbage.

- Fjernbetjening og tastatur: pilene flytter fokus til det nærmeste valgbare
  i den retning, Enter/OK vælger, Escape/Backspace/TV'ets Tilbage og
  browserens tilbage går til menuen. Alt er knapper, også indstillingerne,
  så Enter altid gælder det fokuserede (fejlen fra 64aac36 kan ikke komme
  igen ad den vej). Mus og touch virker som før.
- Speakeren læser introen op: /host/intro/<spil> giver lyden til den faste
  tekst (navn, tagline og trin) med standardstemmen, {} uden stemme.
- Uden JavaScript: én startknap pr. spil fra registret.
- Den gamle pakke-formular og dens CSS er væk.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:36:55 +02:00
agwandClaude Opus 5.5 900e6af20d Spilregister: party/games.py, ét sted for alle spil
Hvert spil registrerer nøgle, navn, tagline, min/max spillere, ca. minutter,
trin, SVG-ikon, sine egne skærme (JS), sine indstillinger og en funktion, der
laver rummet. Views, consumers, host.js og play.js slår op i registret i
stedet for at spørge efter det enkelte spil:

- /host/new laver rummet via registret; indstillingerne renses mod spillets
  egne (ukendt spil giver 400).
- Rummets tilstand har altid "game" (= rummets kind), også Fup og Fakta's.
- Telefonens handlinger går til rummets play_action (Fup og Fakta's er flyttet
  fra consumeren til rummet, uændrede).
- host.js og play.js finder spillets skærme i window.WPPGameUI[nøgle];
  tegn.js melder sig der. Storskærmens navn, fanetitlen og pladsholderen før
  første tilstand kommer fra rummets spil, ikke fra et standardspil.
- Telefonens join-side viser rummets spil, når koden er kendt, og lobbyen
  siger "Vi spiller ...".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:29:27 +02:00
agwandClaude Opus 5.5 64aac361cd Værtsside: hvert spil er sin egen startknap
Fejl: spillet blev valgt med radioknapper, hvor Fup og Fakta var afkrydset
som standard. En TV-fjernbetjening flytter fokus uden at afkrydse, og
Enter/OK på en radio sender formularen med den afkrydsede radio, ikke den
fokuserede. Så "Tegn og Gæt" + OK gav game=fof og et Fup og Fakta-rum.

Nu er hvert spil en submit-knap med name="game", så den knap, man trykker
på, er det spil, der startes. Testen fejler på den gamle skabelon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:12:21 +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 53027a1ed9 Tegn og Gæt: ord, gæt og tal starter ikke en sætning i replikkerne
Tre replikker satte et indsat ord eller tal først i en sætning, så det
fik lille forbogstav på skærmen. Testen fanger det nu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:45:49 +02:00
agwandClaude Opus 5.5 26537f685a tts_warm: Tegn og Gæt under --budget og --reserve
Tegn og Gæts replikker står nu først i budget-køen i stedet for at blive
lavet før budget-tjekket, så forvarmningen ikke bruger af reserven.
Uden --budget laves ingen nye, og kommandoen siger det. Fup og Fakta's
faste replikker og budget-køens rækkefølge er som før.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:24:22 +02:00
agwandClaude Opus 5.5 45a146f548 tts_warm: forvarm også Tegn og Gæt (--only, --dry-run)
Tegn og Gæts faste replikker, reglerne, {tema}-replikkerne for alle
temaer og spillets start for 3-10 spillere laves først, med den
almindelige speaker; derefter Fup og Fakta som før. Teksterne kommer
fra samme Narrator-kode, som rummet bruger, så cache-nøglen er den
samme. --only fof|tegn vælger ét spil, og --dry-run tæller klip og
tegn uden at kalde ElevenLabs (også uden nøgle).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:19:38 +02:00
agwandClaude Opus 5.5 d885ecb9dc Tegn og Gæt: spillets start uden tal først i en sætning
"Så kører vi. tre kunstnere" fik lille forbogstav på skærmen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:19:37 +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 9b0f604a69 Tegn og Gæt: speakerens replikker i afsløringen kun til storskærmen
Replikken til kædens slutning nævner sidste gæt, så telefonerne får
planen uden audio.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:01:31 +02:00
agwandClaude Opus 5.5 4071a78bb0 Tegn og Gæt: ingen tankestreg i tegn.js
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:46:42 +02:00
agwandClaude Opus 5.5 ef1acfbdac Docs: Tegn og Gæt i protokollen og README
Nye beskeder, snapshot-felter, tegningernes format og grænser,
afsløringens tidslinje, point og priser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:34:15 +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
agwandClaude Opus 5.5 6c60d56409 Dev-harness: Tegn og Gæts skærme med ?game=tegn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:33:07 +02:00
agwandClaude Opus 5.5 d8c4836e65 Tegn og Gæt: tegning på telefonen og afsløring på storskærmen
tegn.js: lærred med touch, fire farver, to penselstørrelser, fortryd
og ryd; strøgene gemmes som vektorer og sendes som kladde undervejs.
Storskærmen viser temaer, trin og afsløringen kæde for kæde, hvor
tegningerne tegnes frem. host.js og play.js kalder hertil, når rummet
kører Tegn og Gæt; lobby, regler og podium deles med Fup og Fakta.
Speakerens replikker bruger ikke genitiv af navne (Sus' kæde).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:33:07 +02:00
agwandClaude Opus 5.5 d991279196 Tegn og Gæt: telefonerne ser kun det, storskærmen har vist
Under afsløringen får telefonerne kun de bidrag, der allerede er vist
(og om kæden overlevede, når slutningen er vist). Rummet sender et
nyt snapshot, hver gang et trin begynder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:11:58 +02:00
agwandClaude Opus 5.5 ab7ab1e8f1 Tegn og Gæt: rum, WebSocket og valg af spil
TegnRoom ved siden af Fup og Fakta-rummet; værten vælger spil på
/host/new (Fup og Fakta er standard). Storskærmen får tegningerne i
én besked pr. afsløring. WebSocket-test af et helt spil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:05:22 +02:00
agwandClaude Opus 5.5 e2862d6200 Rum: fælles BaseRoom til timer, udsendelse og speaker
Det, der ikke handler om Fup og Fakta, flytter op i BaseRoom, så et
andet spil kan bruge det. Speakeren kan få sin egen lines.json.
Fup og Fakta opfører sig som før.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:05:22 +02:00
agwandClaude Opus 5.5 dd07843db1 Tegn og Gæt: spring kæde over flytter også deadline
Efter at værten sprang en kæde over, stod storskærmen stille til den
oprindelige deadline. Færre end 3 spillere tilbage, når kæderne skal
starte, sender rummet tilbage til lobbyen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:05:22 +02:00
agwandClaude Opus 5.5 151ec52cf0 Tegn og Gæt: spilmotor, temaer og speakerens replikker
Ny app tegnoggaet med en ren motor i samme stil som Fup og Fakta:
kæder der går bordet rundt (ord, tegn, gæt ...), timere, kladder ved
timeout, validering af tegninger som vektorstrøg, afsløringens plan,
hjerter, point og priser. Temaer i data/themes.json og speakerens
replikker i narrator/lines.json, med tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:00:01 +02:00
agw 760e094017 Spørgsmål: de mest kendte er skiftet ud med nichede
CI / test (push) Successful in 45s
113 af de 232 gamle spørgsmål var velkendte fun facts eller kunne regnes
ud af sætningen. De er erstattet af webverificerede, mere nichede fakta i
samme kategori, så ikke alle kender svaret på forhånd.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-20 17:10:00 +02:00
agw 16007fc493 Historie: Danmarks historie, Politisk historie og flere nichede historiespørgsmål
CI / test (push) Successful in 1m24s
63 nye, webverificerede spørgsmål med vægt på det, de færreste kender:
"Danmarks historie" (22, bronzealder til 1928), "Politisk historie"
(21, dansk politik fra 1849) og 20 nye i "Historie" (verdenshistorie
uden for de vante fortællinger). Begge nye kategorier har deres egen
intro-lyd, normaliseret til -20 LUFS som de andre.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-19 17:05:00 +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 87ef9a6ba0 Fest: spørgsmål til unge, zoomer-hjerne og zoomer-drillerier
CI / test (push) Successful in 57s
Fest-pakken handler nu om ungdomskultur: "Fest: slang" (årets ord, slangens
oprindelse, dansk ungdomssprog) og "Fest: internettet" (memes, creators, spil),
ved siden af "Fest: nu". "Fest: retro" er taget ud.

Hjernen får sin egen fest-instruks (zoomer-speaker, tår må nævnes), så
afsløringens replikker og kommentarer også taler zoomer. Telefonens
drillerier har en fest-pulje, og de sidste faste replikker har fået
fest-udgaver.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-18 12:59:29 +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 9f6d134288 Kategorier kan have deres egen oplæserstemme
CI / test (push) Successful in 58s
Spørgsmål og forklaring i en kategori med voice_id læses af den stemme; resten af spillet bruger speakeren. Forvarmningen og cachen følger stemmen.

Claude-Session: https://claude.ai/code/session_01T4tydM7urcwizGC8jeJU1K
2026-10-18 09:37:08 +02:00
agw 347ef68038 Kategorilyd og tænkemusik til Slægtens Stemmer
CI / test (push) Successful in 59s
Claude-Session: https://claude.ai/code/session_01T4tydM7urcwizGC8jeJU1K
2026-10-18 09:28:07 +02:00
agw ba1fa259d9 Forudskrevne kommentarer til oplæsningen og flere faste replikker
CI / test (push) Successful in 53s
- Alle 232 spørgsmål har en kort, overbevisende kommentar til sandheden og
  hver af husets løgne (1.015 i alt, ens tone og lige mange lyd-tags), så
  lyden kan ligge i cachen; hjernen spørges kun om spillernes egne løgne.
  Mangler blot én kommentar, bruges skabelonerne til alle svar, så stilen
  aldrig røber, hvem der har skrevet hvad
- Bemærkninger, når en løgn afleveres, er nu faste replikker med navnet
  (også uden hjerne); hjernens udgave er et tilvalg (BRAIN_PROGRESS)
- Telefonens drillerier bruger en fast pulje på 28 (BRAIN_TEASES slår
  hjernens til)
- Flere varianter til opsummering, oplæsning, velkomst og spil igen
- Én fælles liste over tilladte lyd-tags
- Lukkede forbindelser logges ikke længere som fejl

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 20:12:07 +02:00
agw a611215e3c Lyd-tags fra hjernen, skjult på skærmen
CI / test (push) Successful in 59s
- Hjernen må bruge en fast liste af lyd-tags ([laughs], [whispers] …); andre
  [ord] fjernes, så de ikke læses op
- Tags vises aldrig på skærme og telefoner
- Oplæsningen siger ikke længere svaret to gange, når hjernen gentager det

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 19:58:43 +02:00
agw 51931f3c64 Tænkemusik til hver kategori og kvote-vagt på forvarmningen
CI / test (push) Successful in 56s
- Eget tænkenummer til de ti oprindelige kategorier
- tts_warm --reserve: forvarmningen rører aldrig de sidste credits i perioden

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 19:19:07 +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 319834cb38 Hjernen kalder spillerne ved navn og gætter ikke køn
CI / test (push) Successful in 35s
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 18:32:47 +02:00
agw acafcd1291 Ret: reglernes slå-fra-knap sad på den forkerte klasse
CI / test (push) Successful in 33s
Testene satte selv attributten og skjulte fejlen; nu tjekker de standarden.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 18:26:26 +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 69012bd051 Speakeren hænger ikke længere fast, mere liv i stemmen, flere replikker
CI / test (push) Successful in 34s
Fejl fra første rigtige spil: alle kendte svaret og sendte det igen og
igen. Hver gang kom en ny replik i kø, og da skærmen venter på speakeren,
kom spillet aldrig videre. Nu kommenteres det højst én gang pr. spørgsmål
som en sidebemærkning, der ikke holder skærmen tilbage, og når tiden er
gået, venter skærmen højst tolv sekunder på speakeren.

Stemmen er mere levende (lavere stability, mere style), de hyppigste
begivenheder har fået flere replikker, og spørgsmål som alle finder to
gange, tages ud. Spillet vælger nu de mindst brugte spørgsmål først.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 17:45:35 +02:00
agw 305a59640e Speakeren går klart igennem: normaliseret lyd og ny mixer
CI / test (push) Failing after 31s
Lydfilerne var op til 17 dB højere end speakeren (kategori-lyden -4 LUFS
mod speakerens -21). Alle effekter er nu normaliseret til -20 LUFS og
musikken til -23 LUFS. Speakeren går gennem sin egen kompressor med et
løft, og mens den taler, dykker effekterne og musikken, og musikken får
skåret taleområdet ned. En limiter til sidst forhindrer klipning.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-03 17:25:59 +02:00
agw d149aa323e Udbyder-agnostisk spilhjerne, rummets mikrofon og rigtig musik
CI / test (push) Failing after 39s
Hjernen (party/brain) skriver kommentarer til løgnene, dømmer løgne
(sandheden eller upassende), personlige drillerier og en slut-anmeldelse,
alt i baggrunden med faste replikker som fallback. Udbyderen vælges med
BRAIN_PROVIDER: anthropic (Claude), openai (OpenAI-kompatibel, fx Codex)
eller ollama (fx Gemma). Rummets mikrofon er eksperimentel: storskærmen
sender korte lydstumper til talegenkendelse (STT_PROVIDER), og kun et kort
resumé af latter og udsagn huskes til hjernen. Musikken er nu lavet med
en musikmodel.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:59:50 +02:00
agw 16054a9b67 Skærmen følger speakeren, opsummering, musik, lydeffekter og drillerier
CI / test (push) Successful in 28s
Faseskift venter, til speakeren er færdig med den aktuelle skærm, og
replikker til en skærm, der er væk, afspilles ikke. Ny kategori-intro med
en lyd pr. kategori, musik pr. fase med bløde overgange og lydeffekter til
alt, der flyver over skærmen. Efter afsløringen eksploderer løgne, ingen
valgte, og pointene tæller op. Hjerter gives kun under afsløringen og ses
live på storskærmen. Lyv for mig giver halve point. Narrede spilleres
telefon kan blive drillet med et fjollet billede og et buh. Alle lyd- og
billedfiler serveres med versionerede navne og caches af browseren.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:59:40 +02:00
agw 2da781e361 Speaker: stort begyndelsesbogstav, også når replikken starter med et svar
CI / test (push) Successful in 16s
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:59:10 +02:00
agw 6f8370fb96 Speaker: højst tre samtidige kald til ElevenLabs og nyt forsøg ved 429
CI / test (push) Successful in 24s
Afsløringen bestilte alle trin på én gang og ramte abonnementets loft for
samtidige kald. Forklaringen genereres nu allerede, mens der løjes.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:58:30 +02:00
agw d2dfeafea0 Speaker med stemme: replikker læses op med ElevenLabs
CI / test (push) Successful in 23s
Spilmotoren udsender begivenheder, rummet vælger en replik, indsætter navne
og talord og genererer lyden (cachet på disk ud fra tekst, stemme og
model). Storskærmen afspiller replikkerne i rækkefølge. Afsløringen venter
på lyden og får en længde pr. trin, så stemplet lander, mens speakeren
taler. Uden nøgle eller ved fejl kører spillet som før, bare uden stemme.

Spørgsmålene er gjort familievenlige, og de otte mest kluntede replikker er
skrevet om.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:57:00 +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 2d75c4ce5a Speakerens manuskript: 170 replikker til 28 begivenheder
CI / test (push) Successful in 16s
Klar til oplæsning med ElevenLabs. En test håndhæver reglerne fra
manuskript-prompten: tilladte pladsholdere og lyd-tags pr. begivenhed,
højst 20 ord, ingen tankestreger og tal skrevet med bogstaver.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-01 21:54:37 +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