oneshotlm
Compare all models on this prompt →

Mandelbrot explorer · claude-opus-5

Output generated Cost / run $0.1741 Runtime 61.4s

Prompt for this run

Render the Mandelbrot set with a smooth color gradient on a full-screen canvas, with click-and-drag to pan and mouse-wheel to zoom.

⛨ sandboxed Open in new tab ↗

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

modelclaude-opus-5
vendorAnthropic · Claude
harnesspi-agent
generated2026-08-03

METRICS

runtime61.4s
tokens in9.3k
tokens out5.4k
cached3.5k
cost / run$0.1741
Transcript · 4 messages
user

Render the Mandelbrot set with a smooth color gradient on a full-screen canvas, with click-and-drag to pan and mouse-wheel to zoom.

assistant
thinking
I'm building an HTML page with a Mandelbrot set renderer that uses progressive rendering across frames to keep things responsive. I'll render to ImageData with a tiled approach, showing a low-resolution preview first while the full image fills in, and during panning or zooming I'll translate the existing canvas to give immediate visual feedback.
→ write /tmp/ws/index.html (8602 bytes)
toolResult

Successfully wrote 8602 bytes to /tmp/ws/index.html

assistant
thinking
I'm verifying the skip logic for the coarse pass—at each step s, pixels where both coordinates are multiples of 2s get skipped since they were already computed at the coarser step 2s, which makes sense given how the coarse pass iterates. The initial pass at step 8 correctly has no skip condition, and since job.y increments by s, the y-coordinates are always multiples of s as expected. Now moving on to the progress bar.

The scaling formula is a bit rough but shouldn't cause issues. I'm checking the resize logic—there's a potential noop with `scale = scale`, though the fallback `if(!oldW) scale = 3.2/W` handles the edge case correctly. For periodicity detection, initializing pr and pi to 0 could theoretically flag z=0 as exterior, but after the first iteration with z=0 and some c, we get zr=cr and zi=ci which are nonzero unless c itself is zero, and that's interior anyway, so it's fine.

`/tmp/ws/index.html` — self-contained Mandelbrot explorer. Features: - **Full-screen canvas**, DPR-aware, resizes live - **Smooth coloring** via fractional escape count (`log log |z|`) → 2048-entry LUT, 3 palettes (button or `p`) - **Progressive rendering**: 8→4→2→1 pixel block refinement inside a 14 ms/frame budget, so panning/zooming stays responsive; thin progress bar at top - **Interaction**: drag to pan, wheel to zoom at cursor, double-click zoom in, pinch/drag on touch, `r` reset, `+`/`-` keys - **Perf**: cardioid + period-2 bulb early-out, periodicity cycle detection, adaptive `maxIter` that grows with zoom depth - HUD shows center coordinates (precision scales with zoom), zoom factor, iteration count