oneshotlm
Compare all models on this prompt →

Animated loader · grok-build-0.1

Using the pre-provided gsap.min.js (global gsap), create a looping animated loading sequence on a dark background: morphing rounded shapes and a staggered row of dots orchestrated on a GSAP timeline with smooth easing.

⛨ sandboxed Open in new tab ↗
transcript · 10 messages
user

Using the pre-provided gsap.min.js (global gsap), create a looping animated loading sequence on a dark background: morphing rounded shapes and a staggered row of dots orchestrated on a GSAP timeline with smooth easing.

assistant
thinking
The task is: "Build a single-page web app and write it ALL into one self-contained file named index.html in the current directory: CSS in a <style> tag, JS in a <script> tag, inline — do not create se...
bash {"command":"ls -la"}
toolResult

total 72 drwxr-sr-x. 2 node node 25 Aug 1 20:10 . drwxrwsrwx. 3 root node 16 Aug 1 20:10 .. -rw-r--r--. 1 node node 72214 Aug 1 20:10 gsap.min.js

assistant
thinking
The task is: Build a single-page web app and write it ALL into one self-contained file named index.html in the current directory. CSS in a <style> tag, JS in a <script> tag, inline — do not create sep...The task is to create an index.html file that uses gsap.min.js which is already in the current directory, and create a looping animated loading sequence on a dark background with morphing rounded shapes and a staggered row of dots on a GSAP timeline with smooth easing. It has to be self-contained, no external resources no network.

I need to write the entire HTML with CSS in <style>, JS in <script>, including <script src="gsap.min.js"></script>.

Dark background, say body { background: #000; color: white; } or something.

For morphing rounded shapes: since gsap.min.js is 3.x probably, it has MorphSVGPlugin but I think the provided is core, wait the name is gsap.min.js, likely the main one, but to use morph, might need to assume or not use it.

The problem says "gsap.min.js (global gsap)", so use gsap from window or global.

To avoid plugin, use CSS border-radius on divs and animate them with GSAP.

Yes, that's easier, no need for plugin.

Plan:

- Body with bg #111

- Centered container div

- Inside: a few divs representing shapes, with border-radius, background colors.

- 5-6 dots in a row, small divs with border-radius 50%.

- Use GSAP timeline to animate their positions, scales, border-radii, etc.

- Loop the timeline.

For example:

Shapes: one big blob that grows and shrinks, changes radius from 50% to 20% 50% etc.

Another shape offset, rotates.

Dots: each scales up and down staggered.

Timeline:

tl.to(shape1, {borderRadius: "50%", scale:1.2, duration:1, ease:"power2.inOut"})

tl.to(shape2, {borderRadius:"20%", x: 50, duration:0.8, ease:"back.out"})

tl.to(dots, {stagger: {each:0.2, scale:1.5}, duration:0.5})

Then reverse or something, but for loop, use repeat and yoyo or chain.

Better: tl.to(... 3s sequence), then tl.to reverse or use repeat:-1 with yoyo:true for smooth loop.

For seamless loop, make the animation go forth and back.

Let's code it in mind.

HTML:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Loading Animation</title <style>

body {

  margin: 0;

  height: 100vh;

  display: flex;

  justify-content: center;

  align-items: center;

  background: #0a0a0a;

  font-family: Arial, sans-serif;

  color: #fff;

}

.container {

 text-align: center;

}

.shape {

  width: 100px;

  height: 100px;

  background: #4f46e5;

  border-radius: 50%;

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, - 50%);

}

.shape2 {

  width: 60px;

  height: 60px;

  background: #a855f7;

  border-radius: 50%;

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50% ) scale(0.6);

}

.dots {

  display: flex;

  justify-content: center;

  gap: 10px;

  margin-top: 50px;

}

.dot {

  width: 10px;

  height: 10px;

  background: #6b7280;

  border-radius: 50%;

}

</style>

</head>

<body>

<div class="container">

  <div class="shapes">

    <div class="shape"></div>

    <div class="shape2"></div>

  </div>

  <div class="dots">

    <div class="dot"></ 5 dots

  </div>

</div>

<script src="gsap.min.js"></script>

<script>

const shape = document.querySelector('.shape');

const shape2 = document.querySelector('.shape2');

const dots = document.querySelectorAll('.dot');

const tl = gsap.timeline({repeat: -1, yoyo: true, ease: "power2.inOut"});

tl.to(shape, {duration: 1.5, scale: 1.5, borderRadius: "40%", backgroundColor: "#6366f1"})

.to(shape2, {duration: 1.5, scale:  1.2, x: 20, borderRadius: "30%"}, "-=1")

.to(dots, {duration: 0.8, stagger: 0.2, scale: 1.5, y: -20, ease: "bounce.out"}, "-=1")

.
write index.html (6356 bytes)
toolResult

Successfully wrote 6356 bytes to index.html

assistant
thinking
The task is complete. I wrote the full self-contained index.html with GSAP usage for a looping animated loading sequence.
bash {"command":"ls -la && head -n 30 index.html"}
toolResult

total 80 drwxr-sr-x. 2 node node 43 Aug 1 20:10 . drwxrwsrwx. 3 root node 16 Aug 1 20:10 .. -rw-r--r--. 1 node node 72214 Aug 1 20:10 gsap.min.js -rw-r--r--. 1 node node 6356 Aug 1 20:10 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GSAP Loader</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { min-height: 100vh; background: #0b0f1a; display: flex; align-items: center; justify-content: center; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overflow: hidden; color: #64748b; } .container { display: flex; flex-direction: column; align-items: center; gap: 28px; }

assistant
thinking
The file is created successfully. The user wanted a single self-contained index.html with the GSAP loader using the pre-provided gsap.min.js.
bash {"command":"wc -l index.html && echo \"---\" && tail -c 200 index.html"}
toolResult

292 index.html --- overwrite: false }); } // Boot if (document.readyState === "complete") { init(); } else { window.addEventListener("load", init); } </script> </body> </html>

assistant
thinking
The file is complete and self-contained. It uses the local gsap.min.js via a plain script tag. All CSS and JS are inline. Dark background (#0b0f1a). Features:

Done. `index.html` is complete and self-contained — dark background, morphing shapes + staggered dots all driven by a single looping GSAP timeline using the local `gsap.min.js`.

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelgrok-build-0.1
vendorxAI · Grok
harnesspi-agent
generated2026-08-01

EVALUATION

3/5 working

Simple looping animation of morphing overlapping circles and a staggered dot row on dark background; no reaction to inputs (as expected, non-interactive).

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion0.6%
on click1.4%
on drag1.8%
on wheel1.4%
on enter + space1.4%
on arrow keys1.5%
on w/a/s/d1.6%
frame spread13.6 / 255
console errors0
js errors none

METRICS

runtime57.8s
tokens in7.3k
tokens out8.2k
cached7.8k
cost / run$0.0253