← back to Model Arena
auto-save: 2026-07-27T14:51:27 (3 files) — data/challenges.json yolo/daily-log.jsonl data/artifacts/47d52f832fb5/
88eab1f2445d4f3aae39704a855915a0d8ce3ecd · 2026-07-27 14:51:34 -0700 · Steve Abrams
Files touched
A data/artifacts/47d52f832fb5/gemma3-12b.htmlA data/artifacts/47d52f832fb5/gemma3-12b.pngA data/artifacts/47d52f832fb5/hermes3-8b.htmlA data/artifacts/47d52f832fb5/hermes3-8b.pngA data/artifacts/47d52f832fb5/qwen25-7b.htmlA data/artifacts/47d52f832fb5/qwen25-7b.pngA data/artifacts/47d52f832fb5/qwen3-14b.htmlA data/artifacts/47d52f832fb5/qwen3-14b.pngM data/challenges.jsonM yolo/daily-log.jsonl
Diff
commit 88eab1f2445d4f3aae39704a855915a0d8ce3ecd
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jul 27 14:51:34 2026 -0700
auto-save: 2026-07-27T14:51:27 (3 files) — data/challenges.json yolo/daily-log.jsonl data/artifacts/47d52f832fb5/
---
data/artifacts/47d52f832fb5/gemma3-12b.html | 98 +++++++++++++++++++++++
data/artifacts/47d52f832fb5/gemma3-12b.png | Bin 0 -> 9242 bytes
data/artifacts/47d52f832fb5/hermes3-8b.html | 84 ++++++++++++++++++++
data/artifacts/47d52f832fb5/hermes3-8b.png | Bin 0 -> 3298 bytes
data/artifacts/47d52f832fb5/qwen25-7b.html | 79 +++++++++++++++++++
data/artifacts/47d52f832fb5/qwen25-7b.png | Bin 0 -> 3250 bytes
data/artifacts/47d52f832fb5/qwen3-14b.html | 118 ++++++++++++++++++++++++++++
data/artifacts/47d52f832fb5/qwen3-14b.png | Bin 0 -> 23176 bytes
data/challenges.json | 90 +++++++++++++++++++++
yolo/daily-log.jsonl | 1 +
10 files changed, 470 insertions(+)
diff --git a/data/artifacts/47d52f832fb5/gemma3-12b.html b/data/artifacts/47d52f832fb5/gemma3-12b.html
new file mode 100644
index 0000000..e77dd66
--- /dev/null
+++ b/data/artifacts/47d52f832fb5/gemma3-12b.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Starfield Warp</title>
+<style>
+body { margin: 0; overflow: hidden; background-color: black; }
+canvas { display: block; }
+#controls { position: absolute; top: 10px; left: 10px; color: white; font-family: sans-serif; }
+</style>
+</head>
+<body>
+
+<div id="controls">
+ Speed: <input type="range" id="speedSlider" min="1" max="10" value="5" step="0.5">
+</div>
+
+<canvas id="starfieldCanvas"></canvas>
+
+<script>
+const canvas = document.getElementById('starfieldCanvas');
+const ctx = canvas.getContext('2d');
+const speedSlider = document.getElementById('speedSlider');
+
+canvas.width = window.innerWidth;
+canvas.height = window.innerHeight;
+
+let stars = [];
+let warpDirectionX = 0;
+let warpDirectionY = 0;
+let warpSpeed = 5;
+
+// Generate initial stars
+for (let i = 0; i < 200; i++) {
+ stars.push({
+ x: Math.random() * canvas.width,
+ y: Math.random() * canvas.height,
+ z: Math.random() * 100, // Depth for parallax effect
+ });
+}
+
+speedSlider.addEventListener('input', function() {
+ warpSpeed = parseFloat(this.value);
+});
+
+
+function drawStars() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ for (let i = 0; i < stars.length; i++) {
+ const star = stars[i];
+
+ // Parallax effect based on depth
+ let xOffset = warpDirectionX * star.z / 100;
+ let yOffset = warpDirectionY * star.z / 100;
+
+ ctx.fillStyle = 'white'; // Adjust color for different star brightness
+ ctx.fillRect(star.x + xOffset, star.y + yOffset, 1, 1); // Tiny dots
+ }
+}
+
+
+function update() {
+ warpDirectionX *= 0.95;
+ warpDirectionY *= 0.95;
+
+ if (mousePosition) {
+ const dx = mousePosition.x - canvas.width / 2;
+ const dy = mousePosition.y - canvas.height / 2;
+ let angle = Math.atan2(dy, dx); // Angle in radians
+
+ warpDirectionX = Math.cos(angle) * 0.15;
+ warpDirectionY = Math.sin(angle) * 0.15;
+ }
+
+
+ drawStars();
+
+ requestAnimationFrame(update);
+}
+
+
+
+let mousePosition = null;
+canvas.addEventListener('mousemove', function(event) {
+ mousePosition = { x: event.clientX, y: event.clientY };
+});
+
+window.addEventListener('resize', () => {
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+});
+
+
+update();
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/47d52f832fb5/gemma3-12b.png b/data/artifacts/47d52f832fb5/gemma3-12b.png
new file mode 100644
index 0000000..d5be0b0
Binary files /dev/null and b/data/artifacts/47d52f832fb5/gemma3-12b.png differ
diff --git a/data/artifacts/47d52f832fb5/hermes3-8b.html b/data/artifacts/47d52f832fb5/hermes3-8b.html
new file mode 100644
index 0000000..d2930a1
--- /dev/null
+++ b/data/artifacts/47d52f832fb5/hermes3-8b.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Starfield Warp Effect</title>
+ <style>
+ body {
+ margin: 0;
+ overflow: hidden;
+ }
+
+ canvas {
+ display: block;
+ }
+
+ #speedSlider {
+ width: 200px;
+ }
+ </style>
+</head>
+<body>
+ <canvas id="starfield"></canvas>
+ <input type="range" id="speedSlider" min="1" max="10" value="5">
+
+ <script>
+ const canvas = document.getElementById('starfield');
+ const ctx = canvas.getContext('2d');
+
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+
+ let stars = [];
+ for(let i=0; i<200; i++) {
+ stars.push({x: Math.random()*canvas.width, y: Math.random()*canvas.height, size: Math.random()*3+1});
+ }
+
+ function drawStars() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ for(let i=0; i<stars.length; i++) {
+ const star = stars[i];
+ ctx.fillStyle = 'white';
+ ctx.beginPath();
+ ctx.arc(star.x, star.y, star.size, 0, Math.PI*2);
+ ctx.fill();
+
+ star.x += (Math.random() - 0.5) * 4;
+ star.y += (Math.random() - 0.5) * 4;
+
+ if(star.x < 0 || star.x > canvas.width || star.y < 0 || star.y > canvas.height)
+ stars[i] = {x: Math.random()*canvas.width, y: Math.random()*canvas.height, size: star.size};
+ }
+ }
+
+ function warpEffect(event) {
+ const x = event.clientX;
+ const y = event.clientY;
+
+ for(let i=0; i<stars.length; i++) {
+ if(Math.abs(stars[i].x - x) < 50 && Math.abs(stars[i].y - y) < 50)
+ stars[i].size *= 1.2;
+ else
+ stars[i].size = Math.random()*3+1;
+ }
+ }
+
+ function updateSpeed() {
+ const speed = document.getElementById('speedSlider').value;
+ canvas.width += (window.innerWidth - canvas.width) / speed;
+ canvas.height += (window.innerHeight - canvas.height) / speed;
+
+ stars = [];
+ for(let i=0; i<200; i++) {
+ stars.push({x: Math.random()*canvas.width, y: Math.random()*canvas.height, size: Math.random()*3+1});
+ }
+ }
+
+ setInterval(drawStars, 30);
+ canvas.addEventListener('mousemove', warpEffect);
+ document.getElementById('speedSlider').addEventListener('input', updateSpeed);
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/47d52f832fb5/hermes3-8b.png b/data/artifacts/47d52f832fb5/hermes3-8b.png
new file mode 100644
index 0000000..bc8cf4e
Binary files /dev/null and b/data/artifacts/47d52f832fb5/hermes3-8b.png differ
diff --git a/data/artifacts/47d52f832fb5/qwen25-7b.html b/data/artifacts/47d52f832fb5/qwen25-7b.html
new file mode 100644
index 0000000..12fb3fc
--- /dev/null
+++ b/data/artifacts/47d52f832fb5/qwen25-7b.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Starfield Warp Effect</title>
+ <style>
+ body {
+ margin: 0;
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ background-color: #000;
+ }
+ canvas {
+ border: 1px solid #fff;
+ }
+ </style>
+</head>
+<body>
+ <canvas id="starfield" width="800" height="600"></canvas>
+ <input type="range" min="1" max="20" value="5" oninput="setSpeed(this.value)" id="speedSlider">
+ <script>
+ const canvas = document.getElementById('starfield');
+ const ctx = canvas.getContext('2d');
+ const speedSlider = document.getElementById('speedSlider');
+
+ let stars = [];
+ for (let i = 0; i < 500; i++) {
+ stars.push({
+ x: Math.random() * canvas.width,
+ y: Math.random() * canvas.height
+ });
+ }
+
+ function drawStar(x, y) {
+ ctx.beginPath();
+ ctx.arc(x, y, 2, 0, Math.PI * 2);
+ ctx.fillStyle = 'white';
+ ctx.fill();
+ }
+
+ function animate() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ const mousePos = { x: event.clientX - canvas.offsetLeft, y: event.clientY - canvas.offsetTop };
+ let directionX = (mousePos.x / canvas.width) * 2 - 1;
+ let directionY = -(mousePos.y / canvas.height) * 2 + 1;
+
+ for (let i = 0; i < stars.length; i++) {
+ const star = stars[i];
+ star.x += (directionX - star.x) * 0.05 * speedSlider.value;
+ star.y += (directionY - star.y) * 0.05 * speedSlider.value;
+
+ if (star.x > canvas.width || star.x < 0) {
+ star.x = mousePos.x + Math.random() * 20 - 10;
+ }
+ if (star.y > canvas.height || star.y < 0) {
+ star.y = mousePos.y + Math.random() * 20 - 10;
+ }
+
+ drawStar(star.x, star.y);
+ }
+
+ requestAnimationFrame(animate);
+ }
+
+ speedSlider.oninput = function () {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ };
+
+ canvas.addEventListener('mousemove', animate);
+
+ setSpeed(speedSlider.value);
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/47d52f832fb5/qwen25-7b.png b/data/artifacts/47d52f832fb5/qwen25-7b.png
new file mode 100644
index 0000000..544ea62
Binary files /dev/null and b/data/artifacts/47d52f832fb5/qwen25-7b.png differ
diff --git a/data/artifacts/47d52f832fb5/qwen3-14b.html b/data/artifacts/47d52f832fb5/qwen3-14b.html
new file mode 100644
index 0000000..c1077af
--- /dev/null
+++ b/data/artifacts/47d52f832fb5/qwen3-14b.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>Animated Starfield Warp</title>
+ <style>
+ html, body {
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ background: black;
+ height: 100%;
+ width: 100%;
+ }
+ canvas {
+ display: block;
+ }
+ #controls {
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ color: white;
+ font-family: Arial, sans-serif;
+ background: rgba(0,0,0,0.5);
+ padding: 10px;
+ border-radius: 5px;
+ }
+ input[type="range"] {
+ width: 200px;
+ }
+ </style>
+</head>
+<body>
+<canvas id="starfield"></canvas>
+<div id="controls">
+ <label for="speed">Warp Speed:</label>
+ <input type="range" id="speed" min="0.1" max="5" step="0.1" value="1">
+</div>
+<script>
+ const canvas = document.getElementById('starfield');
+ const ctx = canvas.getContext('2d');
+ const controls = document.getElementById('controls');
+
+ let width, height;
+ let stars = [];
+ let mouse = { x: 0, y: 0 };
+ let speed = 1;
+
+ function resize() {
+ width = canvas.width = window.innerWidth;
+ height = canvas.height = window.innerHeight;
+ }
+
+ window.addEventListener('resize', resize);
+ window.addEventListener('mousemove', e => {
+ mouse.x = e.clientX / width;
+ mouse.y = e.clientY / height;
+ });
+
+ document.getElementById('speed').addEventListener('input', e => {
+ speed = parseFloat(e.target.value);
+ });
+
+ function createStars(count) {
+ stars = [];
+ for (let i = 0; i < count; i++) {
+ stars.push({
+ x: Math.random() * width,
+ y: Math.random() * height,
+ z: Math.random() * 100 + 10
+ });
+ }
+ }
+
+ function draw() {
+ ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
+ ctx.fillRect(0, 0, width, height);
+
+ ctx.save();
+ ctx.translate(width / 2, height / 2);
+ const angle = Math.atan2(mouse.y - 0.5, mouse.x - 0.5);
+ ctx.rotate(angle);
+ ctx.translate(-width / 2, -height / 2);
+
+ for (let star of stars) {
+ let size = (star.z / 100) * 2 + 1;
+ ctx.fillStyle = 'white';
+ ctx.beginPath();
+ ctx.arc(star.x, star.y, size, 0, Math.PI * 2);
+ ctx.fill();
+ }
+
+ ctx.restore();
+ }
+
+ function update() {
+ for (let star of stars) {
+ star.z -= speed;
+ if (star.z < 0) {
+ star.z = 100 + Math.random() * 100;
+ star.x = Math.random() * width;
+ star.y = Math.random() * height;
+ }
+ }
+ }
+
+ function animate() {
+ update();
+ draw();
+ requestAnimationFrame(animate);
+ }
+
+ resize();
+ createStars(200);
+ animate();
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/47d52f832fb5/qwen3-14b.png b/data/artifacts/47d52f832fb5/qwen3-14b.png
new file mode 100644
index 0000000..17d110a
Binary files /dev/null and b/data/artifacts/47d52f832fb5/qwen3-14b.png differ
diff --git a/data/challenges.json b/data/challenges.json
index 2d31851..861e008 100644
--- a/data/challenges.json
+++ b/data/challenges.json
@@ -30644,5 +30644,95 @@
"judging": false,
"aiPick": "gemma3-12b",
"judged_at": "2026-07-26T01:21:21.026Z"
+ },
+ {
+ "id": "47d52f832fb5",
+ "title": "Daily: Starfield Warp",
+ "prompt": "Single-file HTML animated starfield warp effect on canvas; mouse position steers the warp direction; a slider controls speed.",
+ "category": "Games",
+ "designTools": false,
+ "created_at": "2026-07-27T21:22:01.972Z",
+ "winner": null,
+ "runs": [
+ {
+ "model": "qwen3-14b",
+ "status": "done",
+ "error": null,
+ "seconds": 112,
+ "cost": 0,
+ "started_at": "2026-07-27T21:22:02.017Z",
+ "finished_at": "2026-07-27T21:23:53.530Z",
+ "queued_at": "2026-07-27T21:22:01.982Z",
+ "bytes": 2956,
+ "thumb": true,
+ "aiScore": 6.8,
+ "aiReason": "The effect is visually appealing and fulfills the requirements of a starfield warp animation. However, it lacks interactivity as there's no visible mouse or slider control.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 6.5
+ },
+ "aiSpread": 0.5
+ },
+ {
+ "model": "gemma3-12b",
+ "status": "done",
+ "error": null,
+ "seconds": 78,
+ "cost": 0,
+ "started_at": "2026-07-27T21:23:53.547Z",
+ "finished_at": "2026-07-27T21:25:11.434Z",
+ "queued_at": "2026-07-27T21:22:01.993Z",
+ "bytes": 2248,
+ "thumb": true,
+ "aiScore": 6.8,
+ "aiReason": "The effect is visually appealing but lacks interactivity and the speed control slider is not functional.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 6.5
+ },
+ "aiSpread": 0.5
+ },
+ {
+ "model": "hermes3-8b",
+ "status": "done",
+ "error": null,
+ "seconds": 43,
+ "cost": 0,
+ "started_at": "2026-07-27T21:25:11.452Z",
+ "finished_at": "2026-07-27T21:25:54.656Z",
+ "queued_at": "2026-07-27T21:22:02.003Z",
+ "bytes": 2345,
+ "thumb": true,
+ "aiScore": 5.3,
+ "aiReason": "The effect is present but lacks the starfield and mouse steering as described.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 3.5
+ },
+ "aiSpread": 3.5
+ },
+ {
+ "model": "qwen25-7b",
+ "status": "done",
+ "error": null,
+ "seconds": 20,
+ "cost": 0,
+ "started_at": "2026-07-27T21:22:02.022Z",
+ "finished_at": "2026-07-27T21:22:21.634Z",
+ "queued_at": "2026-07-27T21:22:02.011Z",
+ "bytes": 2491,
+ "thumb": true,
+ "aiScore": 5.3,
+ "aiReason": "The effect is functional but lacks visual appeal and detail.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 3.5
+ },
+ "aiSpread": 3.5
+ }
+ ],
+ "judging": false,
+ "aiPick": "qwen3-14b",
+ "judged_at": "2026-07-27T21:27:25.083Z"
}
]
\ No newline at end of file
diff --git a/yolo/daily-log.jsonl b/yolo/daily-log.jsonl
index f4e7d92..ad8e992 100644
--- a/yolo/daily-log.jsonl
+++ b/yolo/daily-log.jsonl
@@ -1 +1,2 @@
{"ts":"2026-07-23T06:44:54.850Z","id":"08d1c975f6db","title":"Daily: Bouncing Balls","done":3,"aiPick":"gemma3-12b"}
+{"ts":"2026-07-27T21:27:30.065Z","id":"47d52f832fb5","title":"Daily: Starfield Warp","done":4,"aiPick":"qwen3-14b"}
← 53e7842 Add silent-failure alerting wrapper to daily-challenge launc
·
back to Model Arena
·
auto-save: 2026-07-28T07:28:16 (3 files) — data/challenges.j 3bcf2d3 →