Creative ideas + design notes
Commits with substantial prose (β₯120 chars) β the rationale behind each move.
75a84ba Β· 2026-08-24 Β· feat: procedural Web Audio battle sound + mute toggle (v1.2.0)
Zero-asset, zero-cost SFX engine (public/sound.js) synthesized from oscillators
+ noise: charge horn + galloping hooves, lance clash, arrow thwip, trebuchet
boom, sword clang, dragon roar, victory fanfare / draw chime. Fired once-per-
event from the bouts (battles.js) and on outcome (app.js). Audio unlocks on the
Begin gesture (autoplay policy); persisted π/π mute toggle in the header.
Serves the brief's 'make benchmarks feel like games people want to watch.'
Verified: loads, inits, plays, mutes β zero console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8b56730 Β· 2026-08-24 Β· chore: lint, refactor, v1.1.0 (session close)
- fix: /api/battle resolves from allChampions() so custom champions can battle
- guard: boot() catches champions-fetch failure; vote buttons null-safe
- refactor: drop dead node:process import, optional chaining, ternary cleanup
- version 1.0.0 β 1.1.0
cb1a8df Β· 2026-08-24 Β· 5x verification: six-way core 6/6 PASS; add sweep report
M1 HTTP + M2 render + M3 E2E + Chrome/Safari/Firefox all green. The only
click-through fails are a proven harness artifact (hidden-tab #addProvider,
verified operable when its tab is active), not app defects β no fabricated fix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bdc0862 Β· 2026-08-24 Β· Composite Stable Diffusion sprites into every bout
The combatants are now SDXL art, not vector shapes. gen-sprites.mjs generates
5 transparent-PNG sprites (SDXL β 851-labs background-remover, ~$0.09):
mounted knight, archer, swordsman, dragon boss, trebuchet.
battles.js rewritten to composite the sprites over the scene backdrops with a
drawSprite() transform helper (scale/mirror/rotate/alpha/glow):
- Joust: two knights charge and one is unhorsed (rotate + fall + fade).
- Archery: real archers loose arrows at a scoring target.
- Siege: two trebuchets trade flaming volleys; castle-integrity health bars.
- Duel: two swordsmen clash at center with health bars.
- Dragon: the SDXL dragon boss shakes/reddens/fades as both race to slay it.
Champion-colored auras + pennants carry identity on the neutral sprites;
vector fallback if a sprite hasn't loaded. All 5 modes verified, zero errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
a979f43 Β· 2026-08-24 Β· Redo graphics with Stable Diffusion (SDXL) + fix contrarian findings
Graphics (Stable Diffusion XL via Replicate, ~$0.12 total, 11 images):
- 6 cinematic AAA champion portraits (armored fantasy champions per model)
shown in fighter cards + King's Table avatars.
- 5 cinematic battle backdrops (joust/archery/siege/duel/dragon) drawn behind
the canvas bouts, replacing the empty gradient stage.
- gen-art.mjs regenerates them from prompts.
Fixes from the contrarian red-team:
- Integrity: a judge failure in LIVE mode no longer falls through to fabricated
hash scores that moved the persistent ELO ladder β outcome is decided on
MEASURED speed alone and labeled 'no AI judge'; three honest score modes
(judge / simulated / measured-only) with distinct SIMULATED labels.
- Custom champions now merge into the roster server-side (allChampions) so a
summoned champion actually appears in selectors and can battle.
- Ladder writes serialized through a mutex (no last-write-wins corruption).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
e2b346c Β· 2026-08-24 Β· MODEL WARS β real API battles, AI judges, medieval ELO ladder
Full rebuild of the Qwen2.5 stub into a working project:
- Express backend with streaming provider adapters (OpenAI/Anthropic/Google/
xAI/DeepSeek/Groq), true time-to-first-token, token+cost accounting, AI judge,
persistent ELO ladder (K=32) with per-category/streak/cost-efficiency stats.
- 2026 liquid-glass UI: embers, cursor torchlight, parallax castle.
- Five cinematic canvas bouts: Joust, Archery, Castle Siege, Duel, Dragon.
- Honest by design: measured metrics vs AI-judge opinions kept distinct;
People's Choice tallied separately; no-key champions run clearly-labeled
Exhibition sims that never touch the persistent ladder.
- Dynamic champion registration; View The Evidence; animated crown on #1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>