[object Object]

← 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

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 →