← back to Model Arena
night-loop: cycle 23:39 — judged=e85044630905 · FIRED idx=3/16 id=d99ffc7b0cde title=Designer Wallcoverings — Pattern Tile Match
435b51f84febd10815a115f9a2e8099c4e507344 · 2026-07-24 23:39:07 -0700 · Steve Abrams
Files touched
M data/challenges.jsonA data/landings/0cb3fc06b069-claude-code.htmlM data/votes.jsonlM idea-run/.dw-aa-pointer
Diff
commit 435b51f84febd10815a115f9a2e8099c4e507344
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Jul 24 23:39:07 2026 -0700
night-loop: cycle 23:39 — judged=e85044630905 · FIRED idx=3/16 id=d99ffc7b0cde title=Designer Wallcoverings — Pattern Tile Match
---
data/challenges.json | 77 +++++++-
data/landings/0cb3fc06b069-claude-code.html | 274 ++++++++++++++++++++++++++++
data/votes.jsonl | 1 +
idea-run/.dw-aa-pointer | 2 +-
4 files changed, 350 insertions(+), 4 deletions(-)
diff --git a/data/challenges.json b/data/challenges.json
index c25b90b..64ef055 100644
--- a/data/challenges.json
+++ b/data/challenges.json
@@ -7353,7 +7353,7 @@
"thumb": true
}
],
- "judging": false,
+ "judging": true,
"judged_at": null
},
{
@@ -9572,7 +9572,7 @@
"category": "Games",
"designTools": false,
"created_at": "2026-07-23T18:40:48.585Z",
- "winner": "qwen3-14b",
+ "winner": "claude-code",
"runs": [
{
"model": "qwen3-14b",
@@ -9692,7 +9692,7 @@
"judging": false,
"judged_at": "2026-07-23T18:43:45.849Z",
"aiPick": "qwen3-14b",
- "voted_at": "2026-07-23T18:43:49.240Z"
+ "voted_at": "2026-07-25T06:34:44.276Z"
},
{
"id": "1d4944290382",
@@ -11678,5 +11678,76 @@
"judging": false,
"aiPick": "claude-code",
"judged_at": "2026-07-25T06:30:54.919Z"
+ },
+ {
+ "id": "d99ffc7b0cde",
+ "title": "Designer Wallcoverings — Pattern Tile Match",
+ "prompt": "Build a single self-contained HTML file: a relaxing tile-matching puzzle where the player swaps adjacent wallpaper-swatch tiles (elegant damask/floral/geometric CSS-drawn patterns) to make rows of 3+; matches clear with a shimmer and add score. 6x6 grid, mouse/touch swap, move counter, restart. Luxury muted palette (oatmeal, sage, blush, charcoal). Output ONLY the HTML.",
+ "category": "Real Work",
+ "designTools": false,
+ "created_at": "2026-07-25T06:39:07.837Z",
+ "winner": null,
+ "runs": [
+ {
+ "model": "qwen3-14b",
+ "status": "queued",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": null,
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.845Z"
+ },
+ {
+ "model": "gemma3-12b",
+ "status": "queued",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": null,
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.851Z"
+ },
+ {
+ "model": "hermes3-8b",
+ "status": "queued",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": null,
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.857Z"
+ },
+ {
+ "model": "qwen25-7b",
+ "status": "running",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": "2026-07-25T06:39:07.872Z",
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.862Z"
+ },
+ {
+ "model": "hf-qwen-coder-32b",
+ "status": "queued",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": null,
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.866Z"
+ },
+ {
+ "model": "claude-code",
+ "status": "running",
+ "error": null,
+ "seconds": null,
+ "cost": null,
+ "started_at": "2026-07-25T06:39:07.875Z",
+ "finished_at": null,
+ "queued_at": "2026-07-25T06:39:07.869Z"
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/data/landings/0cb3fc06b069-claude-code.html b/data/landings/0cb3fc06b069-claude-code.html
new file mode 100644
index 0000000..1a6bad5
--- /dev/null
+++ b/data/landings/0cb3fc06b069-claude-code.html
@@ -0,0 +1,274 @@
+<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Free-Roster — Particle Text — built by Claude Opus (Max plan) · Model Arena</title>
+<style>*{box-sizing:border-box}html,body{margin:0;height:100%;background:#0b0d10;color:#e6ecf2;font:14px/1.5 ui-monospace,Menlo,monospace}
+header{display:flex;align-items:center;gap:14px;padding:13px 20px;border-bottom:1px solid #1c2430;background:#0e1116}
+header .k{color:#7cf;font-weight:700;letter-spacing:2px;text-transform:uppercase;font-size:12px;white-space:nowrap}
+header h1{font-size:15px;margin:0;font-weight:600}header .by{color:#8a93a0;font-size:12px;margin-left:auto;white-space:nowrap}
+.wrap{height:calc(100% - 51px)}iframe{width:100%;height:100%;border:0;background:#000;display:block}</style></head><body>
+<header><span class="k">⚔ Model Arena</span><h1>Free-Roster — Particle Text</h1><span class="by">built by <b>Claude Opus (Max plan)</b></span></header>
+<div class="wrap"><iframe sandbox="allow-scripts allow-pointer-lock" srcdoc="<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Particle Text</title>
+<style>
+ * { margin: 0; padding: 0; box-sizing: border-box; }
+ html, body { height: 100%; overflow: hidden; background: #05060a; }
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
+ display: flex; flex-direction: column;
+ color: #e8ecf4;
+ }
+ #stage { position: fixed; inset: 0; }
+ canvas { display: block; width: 100%; height: 100%; }
+
+ .ui {
+ position: fixed; left: 50%; bottom: 34px; transform: translateX(-50%);
+ display: flex; gap: 10px; align-items: center;
+ padding: 10px 12px;
+ background: rgba(18, 22, 34, 0.55);
+ border: 1px solid rgba(255,255,255,0.10);
+ border-radius: 16px;
+ backdrop-filter: blur(14px);
+ -webkit-backdrop-filter: blur(14px);
+ box-shadow: 0 12px 40px rgba(0,0,0,0.45);
+ z-index: 10;
+ max-width: calc(100vw - 28px);
+ }
+ .ui input[type="text"] {
+ width: min(46vw, 320px);
+ padding: 11px 14px;
+ font-size: 15px;
+ color: #fff;
+ background: rgba(255,255,255,0.06);
+ border: 1px solid rgba(255,255,255,0.12);
+ border-radius: 11px;
+ outline: none;
+ transition: border-color .2s, background .2s;
+ }
+ .ui input[type="text"]:focus {
+ border-color: rgba(120,180,255,0.6);
+ background: rgba(255,255,255,0.10);
+ }
+ .ui input::placeholder { color: rgba(255,255,255,0.35); }
+ .ui button {
+ padding: 11px 18px;
+ font-size: 14px; font-weight: 600;
+ color: #071018;
+ background: linear-gradient(135deg, #8fd3ff, #b7a6ff);
+ border: none; border-radius: 11px;
+ cursor: pointer;
+ transition: transform .12s, filter .2s;
+ white-space: nowrap;
+ }
+ .ui button:hover { filter: brightness(1.08); }
+ .ui button:active { transform: scale(0.96); }
+
+ .hint {
+ position: fixed; top: 22px; left: 50%; transform: translateX(-50%);
+ font-size: 12.5px; letter-spacing: .3px;
+ color: rgba(255,255,255,0.42);
+ z-index: 10; text-align: center; pointer-events: none;
+ width: 100%;
+ }
+</style>
+</head>
+<body>
+ <div id="stage"><canvas id="c"></canvas></div>
+ <div class="hint">Type a word &middot; move your mouse through the letters to scatter them</div>
+ <div class="ui">
+ <input id="word" type="text" value="HELLO" maxlength="18" spellcheck="false" autocomplete="off" placeholder="type a word…">
+ <button id="go">Form</button>
+ </div>
+
+<script>
+(function () {
+ "use strict";
+
+ var canvas = document.getElementById("c");
+ var ctx = canvas.getContext("2d", { alpha: false });
+ var input = document.getElementById("word");
+ var button = document.getElementById("go");
+
+ var DPR = Math.min(window.devicePixelRatio || 1, 2);
+ var W = 0, H = 0;
+ var particles = [];
+ var mouse = { x: -9999, y: -9999, active: false, r: 90 };
+
+ // Offscreen canvas for sampling text pixels
+ var sampler = document.createElement("canvas");
+ var sctx = sampler.getContext("2d", { willReadFrequently: true });
+
+ function resize() {
+ W = window.innerWidth;
+ H = window.innerHeight;
+ canvas.width = W * DPR;
+ canvas.height = H * DPR;
+ canvas.style.width = W + "px";
+ canvas.style.height = H + "px";
+ ctx.setTransform(DPR, 0, 0, DPR, 0, 0);
+ mouse.r = Math.max(70, Math.min(W, H) * 0.11);
+ }
+
+ // Sample target points from rendered text
+ function targetsForText(text) {
+ text = (text || "").trim();
+ if (!text) text = " ";
+
+ sampler.width = W;
+ sampler.height = H;
+ sctx.clearRect(0, 0, W, H);
+ sctx.fillStyle = "#fff";
+ sctx.textAlign = "center";
+ sctx.textBaseline = "middle";
+
+ // Fit font size to width
+ var maxW = W * 0.82;
+ var maxH = H * 0.5;
+ var size = Math.min(maxH, 340);
+ sctx.font = "800 " + size + "px -apple-system, 'Segoe UI', Roboto, Arial, sans-serif";
+ var measured = sctx.measureText(text).width;
+ if (measured > maxW) {
+ size = Math.max(28, size * (maxW / measured));
+ sctx.font = "800 " + size + "px -apple-system, 'Segoe UI', Roboto, Arial, sans-serif";
+ }
+ sctx.fillText(text, W / 2, H / 2);
+
+ var img = sctx.getImageData(0, 0, W, H).data;
+ // gap scales so particle count stays reasonable
+ var gap = W * H > 1500000 ? 5 : 4;
+ var pts = [];
+ for (var y = 0; y < H; y += gap) {
+ for (var x = 0; x < W; x += gap) {
+ var alpha = img[(y * W + x) * 4 + 3];
+ if (alpha > 128) {
+ pts.push({ x: x, y: y });
+ }
+ }
+ }
+ return pts;
+ }
+
+ function hueColor(t) {
+ // pleasant cyan->violet gradient based on x position
+ var h = 190 + t * 90;
+ return "hsl(" + h + ", 90%, 66%)";
+ }
+
+ function build(text) {
+ var pts = targetsForText(text);
+
+ // shuffle for organic fly-in
+ for (var i = pts.length - 1; i > 0; i--) {
+ var j = (Math.random() * (i + 1)) | 0;
+ var tmp = pts[i]; pts[i] = pts[j]; pts[j] = tmp;
+ }
+
+ var need = pts.length;
+ // Grow or shrink particle pool
+ while (particles.length < need) {
+ particles.push({
+ x: Math.random() * W,
+ y: Math.random() * H,
+ vx: 0, vy: 0,
+ tx: 0, ty: 0,
+ size: 1.6 + Math.random() * 1.4,
+ color: "#8fd3ff"
+ });
+ }
+ if (particles.length > need) particles.length = need;
+
+ for (var k = 0; k < need; k++) {
+ var p = particles[k];
+ p.tx = pts[k].x;
+ p.ty = pts[k].y;
+ p.color = hueColor(pts[k].x / W);
+ p.size = 1.5 + Math.random() * 1.6;
+ }
+ }
+
+ function tick() {
+ // fade trail
+ ctx.fillStyle = "rgba(5, 6, 10, 0.28)";
+ ctx.fillRect(0, 0, W, H);
+
+ var mr = mouse.r, mr2 = mr * mr;
+ for (var i = 0; i < particles.length; i++) {
+ var p = particles[i];
+
+ // spring toward target
+ var dx = p.tx - p.x;
+ var dy = p.ty - p.y;
+ p.vx += dx * 0.014;
+ p.vy += dy * 0.014;
+
+ // mouse repulsion
+ if (mouse.active) {
+ var mx = p.x - mouse.x;
+ var my = p.y - mouse.y;
+ var d2 = mx * mx + my * my;
+ if (d2 < mr2 && d2 > 0.0001) {
+ var d = Math.sqrt(d2);
+ var force = (mr - d) / mr;
+ var f = force * 5.2;
+ p.vx += (mx / d) * f;
+ p.vy += (my / d) * f;
+ }
+ }
+
+ // friction
+ p.vx *= 0.86;
+ p.vy *= 0.86;
+ p.x += p.vx;
+ p.y += p.vy;
+
+ ctx.fillStyle = p.color;
+ ctx.beginPath();
+ ctx.arc(p.x, p.y, p.size, 0, 6.2832);
+ ctx.fill();
+ }
+
+ requestAnimationFrame(tick);
+ }
+
+ // ---- events ----
+ function moveHandler(x, y) {
+ mouse.x = x; mouse.y = y; mouse.active = true;
+ }
+ window.addEventListener("mousemove", function (e) {
+ moveHandler(e.clientX, e.clientY);
+ });
+ window.addEventListener("mouseout", function () { mouse.active = false; });
+ window.addEventListener("touchmove", function (e) {
+ if (e.touches[0]) {
+ moveHandler(e.touches[0].clientX, e.touches[0].clientY);
+ }
+ }, { passive: true });
+ window.addEventListener("touchend", function () { mouse.active = false; });
+
+ window.addEventListener("resize", function () {
+ resize();
+ build(input.value);
+ });
+
+ function submit() {
+ build(input.value);
+ input.blur();
+ }
+ button.addEventListener("click", submit);
+ input.addEventListener("keydown", function (e) {
+ if (e.key === "Enter") submit();
+ });
+
+ // ---- init ----
+ resize();
+ ctx.fillStyle = "#05060a";
+ ctx.fillRect(0, 0, W, H);
+ build(input.value);
+ requestAnimationFrame(tick);
+})();
+</script>
+</body>
+</html>" title="Free-Roster — Particle Text"></iframe></div>
+</body></html>
\ No newline at end of file
diff --git a/data/votes.jsonl b/data/votes.jsonl
index d626519..9600ba6 100644
--- a/data/votes.jsonl
+++ b/data/votes.jsonl
@@ -51,3 +51,4 @@
{"ts":"2026-07-23T19:16:02.294Z","challenge":"5dbb1c6732ae","title":"Free-Roster — Constellation Clock","winner":"claude-code","field":["qwen3-14b","gemma3-12b","hermes3-8b","qwen25-7b","hf-qwen-coder-32b","claude-code"]}
{"ts":"2026-07-23T19:29:27.315Z","challenge":"65f12bbe7a82","title":"RENTV — Deal Flow Dashboard","winner":"gemma3-12b","field":["qwen3-14b","gemma3-12b","hermes3-8b","qwen25-7b","hf-qwen-coder-32b","claude-code"]}
{"ts":"2026-07-23T19:38:39.865Z","challenge":"86372f82356b","title":"Sublease.com — Space Finder","winner":"qwen25-7b","field":["qwen3-14b","gemma3-12b","hermes3-8b","qwen25-7b","hf-qwen-coder-32b"]}
+{"ts":"2026-07-25T06:34:44.276Z","challenge":"0cb3fc06b069","title":"Free-Roster — Particle Text","winner":"claude-code","field":["qwen3-14b","gemma3-12b","hermes3-8b","qwen25-7b","hf-qwen-coder-32b","claude-code"]}
diff --git a/idea-run/.dw-aa-pointer b/idea-run/.dw-aa-pointer
index 00750ed..b8626c4 100644
--- a/idea-run/.dw-aa-pointer
+++ b/idea-run/.dw-aa-pointer
@@ -1 +1 @@
-3
+4
← 3d2d7af auto-save: 2026-07-24T23:30:18 (21 files) — data/challenges.
·
back to Model Arena
·
ALL MUST WORK: claude-code --append-system-prompt (kills no- aba734c →