claude-sonnet-4-6-thinking @ medium · cursor
cursormedium
- config
- claude-sonnet-4-6-thinking-eff-medium--cli--cursor--dev
- batch
- 2026-07-19--unified
- transport
- cursor-agent-cli-isolated-home
- protocol
- cli · plan
- served model
- claude-4.6-sonnet-medium-thinking
- captured
- Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe

The screenshot is the exact frozen pixels the similarity channels measured. Run live re-executes the raw output in a sandboxed iframe; its rendering depends on your browser and fonts and is not guaranteed to match the measured pixels.
similarity neighbors
nearest
claude-sonnet-4-6-thinking @medium · cursor-xl0.65claude-opus-4-8 @high · kiro0.63claude-opus-4-8 @high · cursor-xl0.62claude-opus-4-8 @medium · kiro0.62claude-fable-5 @low · cursor-xl0.62farthest
north-mini-code-free · api0.47grok-4.6 @high · grok-cli0.48gpt-6-astra · codex0.48gpt-5.6-luna @xhigh · codex-oauth0.48claude-sonnet-4 · cursor0.49within session 2026-07-19--unified
similarity measures convergence within this session — not quality.
Fidelity — does the card show the right data?
- namematch
- conditionmatch
- datematch
- max tempambiguousinsufficient-distinct-temperature-nodes
- min tempambiguousinsufficient-distinct-temperature-nodes
- hourlyambiguouscoverage · 0 match · 0 mismatch · 24 not shown
- request sidematch0 violation(s)
extractor fidelity-extractor-v1+Berlin-2026-07-15
Source — raw model output, one byte unchanged
download card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=1280">
<title>Weather</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body {
width: 1280px;
height: 800px;
overflow: hidden;
}
body {
display: flex;
align-items: center;
justify-content: center;
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif;
background: #09101e;
}
/* ── Background ─────────────────────────────────────── */
#bg {
position: fixed;
inset: 0;
overflow: hidden;
z-index: 0;
}
#bg-grad {
position: absolute;
inset: 0;
transition: background 1.6s ease;
background: linear-gradient(145deg, #09101e 0%, #112038 50%, #0c1930 100%);
}
.orb {
position: absolute;
border-radius: 50%;
filter: blur(96px);
pointer-events: none;
transition: background 1.6s ease;
}
#o1 { width: 580px; height: 580px; top: -160px; right: -100px; animation: fa 13s ease-in-out infinite; }
#o2 { width: 440px; height: 440px; bottom: -90px; left: -90px; animation: fb 10s ease-in-out infinite; }
#o3 { width: 340px; height: 340px; top: 50%; left: 46%;
transform: translate(-50%,-50%); animation: fc 16s ease-in-out infinite; }
@keyframes fa { 0%,100%{transform:translateY(0) scale(1)} 50%{transform:translateY(-40px) scale(1.07)} }
@keyframes fb { 0%,100%{transform:translateY(0) scale(1)} 50%{transform:translateY(28px) scale(0.95)} }
@keyframes fc {
0%,100%{transform:translate(-50%,-50%) scale(1)}
40%{transform:translate(-50%,-62%) scale(1.09)}
80%{transform:translate(-50%,-40%) scale(0.93)}
}
/* ── Root ───────────────────────────────────────────── */
#root {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
/* ── Loading ────────────────────────────────────────── */
#loading {
display: flex;
flex-direction: column;
align-items: center;
gap: 18px;
}
.spin {
width: 42px; height: 42px;
border: 2.5px solid rgba(255,255,255,0.1);
border-top-color: rgba(255,255,255,0.7);
border-radius: 50%;
animation: sp 0.8s linear infinite;
}
@keyframes sp { to { transform: rotate(360deg); } }
.spin-lbl {
font-size: 14px;
color: rgba(255,255,255,0.42);
letter-spacing: 0.05em;
}
/* ── Error ──────────────────────────────────────────── */
#error-view {
display: none;
flex-direction: column;
align-items: center;
gap: 14px;
text-align: center;
max-width: 440px;
}
.err-ico { font-size: 52px; line-height: 1; }
.err-ttl { font-size: 21px; font-weight: 600; color: #fff; letter-spacing: -0.01em; }
.err-msg { font-size: 14px; color: rgba(255,255,255,0.5); line-height: 1.65; }
/* ── Card ───────────────────────────────────────────── */
#weather { display: none; }
.card {
position: relative;
width: 880px;
background: rgba(255,255,255,0.07);
backdrop-filter: blur(44px) saturate(165%);
-webkit-backdrop-filter: blur(44px) saturate(165%);
border-radius: 40px;
border: 1px solid rgba(255,255,255,0.13);
box-shadow:
0 52px 130px rgba(0,0,0,0.42),
inset 0 0 0 0.5px rgba(255,255,255,0.05),
inset 0 1px 0 rgba(255,255,255,0.17);
padding: 50px 60px 46px;
animation: cin 0.65s cubic-bezier(0.16,1,0.3,1) both;
}
@keyframes cin {
from { opacity: 0; transform: translateY(30px) scale(0.964); }
to { opacity: 1; transform: none; }
}
/* Card header */
.ch {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 42px;
}
.loc-wrap {
display: flex;
align-items: center;
gap: 7px;
}
.loc-wrap svg { color: rgba(255,255,255,0.46); flex-shrink: 0; }
.loc-name {
font-size: 12.5px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: rgba(255,255,255,0.66);
}
.date-str {
font-size: 13.5px;
color: rgba(255,255,255,0.4);
letter-spacing: 0.025em;
}
/* Card body */
.cb {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 46px;
gap: 16px;
}
/* Temperature column */
.tc {
flex: 1;
display: flex;
flex-direction: column;
}
.temp-row {
display: flex;
align-items: flex-start;
gap: 2px;
line-height: 1;
}
.tv {
font-size: 112px;
font-weight: 200;
letter-spacing: -6px;
color: #fff;
line-height: 0.87;
}
.tu {
font-size: 38px;
font-weight: 300;
color: rgba(255,255,255,0.56);
margin-top: 11px;
margin-left: 2px;
}
.th-lbl {
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.18em;
text-transform: uppercase;
color: rgba(255,255,255,0.26);
margin-top: 6px;
margin-left: 3px;
}
.cond-badge {
margin-top: 22px;
display: inline-flex;
align-items: center;
background: rgba(255,255,255,0.09);
border: 1px solid rgba(255,255,255,0.13);
border-radius: 100px;
padding: 8px 18px;
font-size: 14px;
font-weight: 500;
color: rgba(255,255,255,0.8);
letter-spacing: 0.01em;
width: fit-content;
}
.lo-row {
margin-top: 16px;
display: flex;
align-items: baseline;
gap: 5px;
}
.lo-arrow {
font-size: 15px;
color: rgba(128,192,255,0.82);
line-height: 1;
}
.lo-val {
font-size: 29px;
font-weight: 300;
color: rgba(128,192,255,0.9);
letter-spacing: -0.5px;
}
.lo-lbl {
font-size: 10px;
font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
color: rgba(255,255,255,0.26);
margin-left: 4px;
padding-bottom: 5px;
}
/* Icon column */
.ic {
width: 210px;
height: 200px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.w-icon {
width: 178px;
height: 178px;
filter: drop-shadow(0 10px 32px rgba(0,0,0,0.3));
animation: wpu 5s ease-in-out infinite;
}
@keyframes wpu {
0%,100% { filter: drop-shadow(0 10px 32px rgba(0,0,0,0.3)) brightness(1); }
50% { filter: drop-shadow(0 16px 44px rgba(0,0,0,0.22)) brightness(1.07); }
}
/* Divider */
.dv {
height: 1px;
background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 25%, rgba(255,255,255,0.1) 75%, transparent 100%);
margin-bottom: 26px;
}
/* Chart */
.chart-lbl {
font-size: 10px;
font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
color: rgba(255,255,255,0.28);
margin-bottom: 10px;
}
#chart {
width: 100%;
height: 108px;
display: block;
}
</style>
</head>
<body>
<div id="bg">
<div id="bg-grad"></div>
<div class="orb" id="o1"></div>
<div class="orb" id="o2"></div>
<div class="orb" id="o3"></div>
</div>
<div id="root">
<div id="loading">
<div class="spin"></div>
<div class="spin-lbl">Loading weather data…</div>
</div>
<div id="error-view">
<div class="err-ico">⛈️</div>
<div class="err-ttl">Weather data unavailable</div>
<div class="err-msg" id="error-msg">Unable to load weather data for this location and date.</div>
</div>
<div id="weather">
<div class="card">
<div class="ch">
<div class="loc-wrap">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0 1 18 0z"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<span class="loc-name" id="loc-name">Berlin</span>
</div>
<div class="date-str" id="date-str">—</div>
</div>
<div class="cb">
<div class="tc">
<div class="temp-row">
<span class="tv" id="hi-val">—</span>
<span class="tu">°C</span>
</div>
<div class="th-lbl">High Temperature</div>
<div class="cond-badge" id="condition">—</div>
<div class="lo-row">
<span class="lo-arrow">↓</span>
<span class="lo-val" id="lo-val">—</span>
<span class="lo-lbl">Low</span>
</div>
</div>
<div class="ic">
<div class="w-icon" id="w-icon"></div>
</div>
</div>
<div class="dv"></div>
<div>
<div class="chart-lbl">24-Hour Temperature</div>
<svg id="chart" viewBox="0 0 760 108" xmlns="http://www.w3.org/2000/svg"></svg>
</div>
</div>
</div>
</div>
<script>
(function () {
'use strict';
/* ── URL params ─────────────────────────────────────────── */
function getParams() {
var p = new URLSearchParams(location.search);
var today = new Date().toISOString().slice(0, 10);
return {
lat: parseFloat(p.get('lat') || '52.52'),
lon: parseFloat(p.get('lon') || '13.405'),
name: p.get('name') || 'Berlin',
date: p.get('date') || today,
};
}
function todayUTC() { return new Date().toISOString().slice(0, 10); }
function isFutureOrToday(d) { return d >= todayUTC(); }
function fmtDate(s) {
var parts = s.split('-').map(Number);
return new Date(Date.UTC(parts[0], parts[1] - 1, parts[2])).toLocaleDateString('en-US', {
weekday: 'long', month: 'long', day: 'numeric', year: 'numeric', timeZone: 'UTC'
});
}
/* ── WMO weather codes ──────────────────────────────────── */
var WMO = {
0: ['Clear Sky', 'sun', 'clear'],
1: ['Mainly Clear', 'sun', 'clear'],
2: ['Partly Cloudy', 'partly', 'partly'],
3: ['Overcast', 'cloud', 'cloudy'],
45: ['Foggy', 'fog', 'fog'],
48: ['Freezing Fog', 'fog', 'fog'],
51: ['Light Drizzle', 'drizzle', 'rain'],
53: ['Drizzle', 'drizzle', 'rain'],
55: ['Dense Drizzle', 'drizzle', 'rain'],
56: ['Icy Drizzle', 'drizzle', 'rain'],
57: ['Heavy Icy Drizzle', 'drizzle', 'rain'],
61: ['Light Rain', 'rain', 'rain'],
63: ['Rain', 'rain', 'rain'],
65: ['Heavy Rain', 'heavyrain', 'storm'],
66: ['Icy Rain', 'rain', 'rain'],
67: ['Heavy Icy Rain', 'heavyrain', 'storm'],
71: ['Light Snow', 'snow', 'snow'],
73: ['Snow', 'snow', 'snow'],
75: ['Heavy Snow', 'snow', 'snow'],
77: ['Snow Grains', 'snow', 'snow'],
80: ['Light Showers', 'rain', 'rain'],
81: ['Showers', 'rain', 'rain'],
82: ['Heavy Showers', 'heavyrain', 'storm'],
85: ['Snow Showers', 'snow', 'snow'],
86: ['Heavy Snow Showers', 'snow', 'snow'],
95: ['Thunderstorm', 'thunder', 'thunder'],
96: ['Thunderstorm', 'thunder', 'thunder'],
99: ['Thunderstorm', 'thunder', 'thunder'],
};
function wmoInfo(code) { return WMO[code] || ['Unknown', 'cloud', 'cloudy']; }
/* ── Themes ─────────────────────────────────────────────── */
var THEMES = {
clear: { bg: 'linear-gradient(145deg,#0c1340 0%,#1a3870 45%,#b06010 100%)',
o1:'rgba(255,178,38,0.65)', o2:'rgba(28,88,200,0.44)', o3:'rgba(255,115,18,0.3)',
ln:'rgba(255,212,80,0.95)', f1:'rgba(255,212,80,0.32)', f2:'rgba(255,212,80,0)' },
partly: { bg: 'linear-gradient(145deg,#0d1b36 0%,#1e4072 50%,#3c6ea5 100%)',
o1:'rgba(198,215,255,0.5)', o2:'rgba(38,98,200,0.44)', o3:'rgba(248,195,78,0.28)',
ln:'rgba(138,210,255,0.95)', f1:'rgba(138,210,255,0.3)', f2:'rgba(138,210,255,0)' },
cloudy: { bg: 'linear-gradient(145deg,#191e2c 0%,#29344e 50%,#435065 100%)',
o1:'rgba(142,155,178,0.48)', o2:'rgba(68,90,130,0.4)', o3:'rgba(98,115,152,0.3)',
ln:'rgba(178,190,208,0.95)', f1:'rgba(178,190,208,0.3)', f2:'rgba(178,190,208,0)' },
fog: { bg: 'linear-gradient(145deg,#1d2332 0%,#374458 50%,#5f7080 100%)',
o1:'rgba(172,186,208,0.42)', o2:'rgba(98,118,145,0.38)', o3:'rgba(145,162,182,0.3)',
ln:'rgba(188,200,216,0.95)', f1:'rgba(188,200,216,0.3)', f2:'rgba(188,200,216,0)' },
rain: { bg: 'linear-gradient(145deg,#08101e 0%,#0c1e3c 45%,#0e3160 100%)',
o1:'rgba(38,115,218,0.55)', o2:'rgba(16,76,175,0.44)', o3:'rgba(55,95,196,0.3)',
ln:'rgba(92,175,255,0.95)', f1:'rgba(92,175,255,0.32)', f2:'rgba(92,175,255,0)' },
storm: { bg: 'linear-gradient(145deg,#040810 0%,#0b1322 45%,#091b38 100%)',
o1:'rgba(16,76,175,0.5)', o2:'rgba(8,38,118,0.44)', o3:'rgba(35,56,138,0.3)',
ln:'rgba(72,145,238,0.95)', f1:'rgba(72,145,238,0.3)', f2:'rgba(72,145,238,0)' },
snow: { bg: 'linear-gradient(145deg,#0c1826 0%,#182d4e 45%,#38577a 100%)',
o1:'rgba(192,216,255,0.5)', o2:'rgba(135,175,228,0.42)', o3:'rgba(175,206,248,0.35)',
ln:'rgba(205,226,255,0.95)', f1:'rgba(205,226,255,0.32)', f2:'rgba(205,226,255,0)' },
thunder: { bg: 'linear-gradient(145deg,#050308 0%,#0f081e 45%,#1a0d3c 100%)',
o1:'rgba(115,52,215,0.58)', o2:'rgba(55,15,145,0.44)', o3:'rgba(195,145,42,0.32)',
ln:'rgba(175,115,255,0.95)', f1:'rgba(175,115,255,0.32)', f2:'rgba(175,115,255,0)' },
};
function applyTheme(name) {
var t = THEMES[name] || THEMES.clear;
document.getElementById('bg-grad').style.background = t.bg;
document.getElementById('o1').style.background = 'radial-gradient(circle,' + t.o1 + ' 0%,transparent 70%)';
document.getElementById('o2').style.background = 'radial-gradient(circle,' + t.o2 + ' 0%,transparent 70%)';
document.getElementById('o3').style.background = 'radial-gradient(circle,' + t.o3 + ' 0%,transparent 70%)';
return t;
}
/* ── SVG icon helpers ───────────────────────────────────── */
function rays(cx, cy, r1, r2, n, sw, col) {
var out = '';
for (var i = 0; i < n; i++) {
var a = i * (360 / n) * Math.PI / 180;
var c = Math.cos(a), s = Math.sin(a);
out += '<line x1="' + (cx + r1*c).toFixed(1) + '" y1="' + (cy + r1*s).toFixed(1) +
'" x2="' + (cx + r2*c).toFixed(1) + '" y2="' + (cy + r2*s).toFixed(1) +
'" stroke="' + col + '" stroke-width="' + sw + '" stroke-linecap="round"/>';
}
return out;
}
function cloudPaths(fill, ex, ey, scale) {
scale = scale || 1;
var s = scale;
return '<ellipse cx="' + (ex+0*s) + '" cy="' + (ey+14*s) + '" rx="' + (30*s) + '" ry="' + (14*s) + '" fill="' + fill + '"/>' +
'<circle cx="' + (ex-14*s) + '" cy="' + (ey+11*s) + '" r="' + (13*s) + '" fill="' + fill + '"/>' +
'<circle cx="' + (ex+2*s) + '" cy="' + (ey+4*s) + '" r="' + (17*s) + '" fill="' + fill + '"/>' +
'<circle cx="' + (ex+17*s) + '" cy="' + (ey+11*s) + '" r="' + (12*s) + '" fill="' + fill + '"/>';
}
var ICONS = {
sun: function () {
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><radialGradient id="sg"><stop offset="0%" stop-color="#FFE966"/>' +
'<stop offset="100%" stop-color="#FF9700"/></radialGradient>' +
'<filter id="gf"><feGaussianBlur stdDeviation="2.8" result="b"/>' +
'<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs>' +
'<g filter="url(#gf)">' + rays(50,50,27,39,8,3.6,'#FFC93A') +
'<circle cx="50" cy="50" r="19" fill="url(#sg)"/></g></svg>';
},
partly: function () {
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><radialGradient id="sg2"><stop offset="0%" stop-color="#FFE966"/>' +
'<stop offset="100%" stop-color="#FF9700"/></radialGradient>' +
'<linearGradient id="cg2" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#D3E9FF"/><stop offset="100%" stop-color="#A4C6E8"/></linearGradient></defs>' +
rays(34,37,20,30,6,3.0,'#FFC93A') +
'<circle cx="34" cy="37" r="14" fill="url(#sg2)" opacity="0.92"/>' +
'<ellipse cx="57" cy="70" rx="23" ry="12" fill="url(#cg2)"/>' +
'<circle cx="44" cy="67" r="11" fill="url(#cg2)"/>' +
'<circle cx="59" cy="61" r="14" fill="url(#cg2)"/>' +
'<circle cx="72" cy="67" r="9" fill="url(#cg2)"/>' +
'</svg>';
},
cloud: function () {
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="cg3" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#BFDBF4"/><stop offset="100%" stop-color="#87AAC8"/></linearGradient>' +
'<filter id="cs"><feDropShadow dx="0" dy="5" stdDeviation="5" flood-color="rgba(0,0,0,0.18)"/></filter></defs>' +
'<g filter="url(#cs)">' + cloudPaths('url(#cg3)', 50, 52, 1) + '</g></svg>';
},
fog: function () {
var lines = [[12,25,76,5.5,0.72],[18,40,64,5.5,0.60],[8,55,78,5.5,0.70],[16,70,68,5.5,0.56]];
var s = '';
for (var i = 0; i < lines.length; i++) {
var l = lines[i];
s += '<rect x="' + l[0] + '" y="' + l[1] + '" width="' + l[2] + '" height="' + l[3] +
'" rx="2.5" fill="rgba(182,198,218,' + l[4] + ')"/>';
}
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + s + '</svg>';
},
drizzle: function () {
var dd = [[35,73],[47,80],[59,73],[71,80],[41,88],[53,95]];
var s = '';
for (var i = 0; i < dd.length; i++) {
s += '<line x1="' + dd[i][0] + '" y1="' + dd[i][1] + '" x2="' + (dd[i][0]-2) + '" y2="' + (dd[i][1]+6) +
'" stroke="rgba(110,174,238,0.75)" stroke-width="2.2" stroke-linecap="round"/>';
}
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="dc" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#9DC0D8"/><stop offset="100%" stop-color="#769FBE"/></linearGradient></defs>' +
'<ellipse cx="50" cy="54" rx="27" ry="12" fill="url(#dc)"/>' +
'<circle cx="38" cy="52" r="11" fill="url(#dc)"/>' +
'<circle cx="52" cy="46" r="15" fill="url(#dc)"/>' +
'<circle cx="65" cy="52" r="10" fill="url(#dc)"/>' + s + '</svg>';
},
rain: function () {
var dd = [[32,72],[43,79],[54,72],[65,79],[76,72],[37,86],[48,93],[59,86],[70,93]];
var s = '';
for (var i = 0; i < dd.length; i++) {
s += '<ellipse cx="' + dd[i][0] + '" cy="' + dd[i][1] + '" rx="2.2" ry="4.5" fill="rgba(90,166,238,0.82)"/>';
}
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="rc" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#7EACC8"/><stop offset="100%" stop-color="#5083A7"/></linearGradient></defs>' +
cloudPaths('url(#rc)', 50, 38, 1) + s + '</svg>';
},
heavyrain: function () {
var dd = [[27,67],[38,74],[49,67],[60,74],[71,67],[32,82],[43,89],[54,82],[65,89],[76,82]];
var s = '';
for (var i = 0; i < dd.length; i++) {
s += '<ellipse cx="' + dd[i][0] + '" cy="' + dd[i][1] + '" rx="2.4" ry="5.5" fill="rgba(70,143,232,0.85)"/>';
}
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="hrc" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#577895"/><stop offset="100%" stop-color="#2F4E65"/></linearGradient></defs>' +
'<ellipse cx="50" cy="45" rx="31" ry="14" fill="url(#hrc)"/>' +
'<circle cx="35" cy="43" r="14" fill="url(#hrc)"/>' +
'<circle cx="52" cy="37" r="17" fill="url(#hrc)"/>' +
'<circle cx="68" cy="43" r="12" fill="url(#hrc)"/>' + s + '</svg>';
},
snow: function () {
var pts = [[33,73],[50,80],[67,73],[41,88],[59,88]];
var s = '';
for (var i = 0; i < pts.length; i++) {
var cx = pts[i][0], cy = pts[i][1];
s += '<line x1="' + cx + '" y1="' + (cy-5.5) + '" x2="' + cx + '" y2="' + (cy+5.5) +
'" stroke="rgba(200,224,255,0.92)" stroke-width="2.2" stroke-linecap="round"/>';
s += '<line x1="' + (cx-5.5) + '" y1="' + cy + '" x2="' + (cx+5.5) + '" y2="' + cy +
'" stroke="rgba(200,224,255,0.92)" stroke-width="2.2" stroke-linecap="round"/>';
s += '<line x1="' + (cx-3.8) + '" y1="' + (cy-3.8) + '" x2="' + (cx+3.8) + '" y2="' + (cy+3.8) +
'" stroke="rgba(200,224,255,0.8)" stroke-width="1.5" stroke-linecap="round"/>';
s += '<line x1="' + (cx+3.8) + '" y1="' + (cy-3.8) + '" x2="' + (cx-3.8) + '" y2="' + (cy+3.8) +
'" stroke="rgba(200,224,255,0.8)" stroke-width="1.5" stroke-linecap="round"/>';
}
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="sc" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#D5EEFF"/><stop offset="100%" stop-color="#A8C9E6"/></linearGradient></defs>' +
'<ellipse cx="50" cy="46" rx="28" ry="13" fill="url(#sc)"/>' +
'<circle cx="36" cy="44" r="12" fill="url(#sc)"/>' +
'<circle cx="52" cy="38" r="16" fill="url(#sc)"/>' +
'<circle cx="65" cy="44" r="10" fill="url(#sc)"/>' + s + '</svg>';
},
thunder: function () {
return '<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' +
'<defs><linearGradient id="tc" x1="0" y1="0" x2="1" y2="1">' +
'<stop offset="0%" stop-color="#374268"/><stop offset="100%" stop-color="#192040"/></linearGradient>' +
'<filter id="bf"><feGaussianBlur stdDeviation="3" result="b"/>' +
'<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs>' +
'<ellipse cx="50" cy="43" rx="30" ry="14" fill="url(#tc)"/>' +
'<circle cx="35" cy="41" r="13" fill="url(#tc)"/>' +
'<circle cx="52" cy="35" r="17" fill="url(#tc)"/>' +
'<circle cx="67" cy="41" r="11" fill="url(#tc)"/>' +
'<path d="M54 56 L43 74 L52 74 L47 89 L62 68 L53 68 Z" fill="#FFDC28" filter="url(#bf)" opacity="0.97"/>' +
'</svg>';
},
};
/* ── Hourly chart ───────────────────────────────────────── */
function drawChart(temps, theme) {
var svg = document.getElementById('chart');
var W = 760, H = 108;
var pl = 4, pr = 4, pt = 18, pb = 24;
var iW = W - pl - pr, iH = H - pt - pb;
var d = temps.slice(0, 24);
if (d.length < 2) return;
var mn = Math.min.apply(null, d) - 0.5;
var mx = Math.max.apply(null, d) + 0.5;
var rng = mx - mn || 1;
var pts = d.map(function (v, i) {
return {
x: pl + (i / (d.length - 1)) * iW,
y: pt + (1 - (v - mn) / rng) * iH,
v: v
};
});
/* Smooth cubic bezier path */
var line = 'M ' + pts[0].x.toFixed(2) + ',' + pts[0].y.toFixed(2);
for (var i = 1; i < pts.length; i++) {
var a = pts[i-1], b = pts[i];
var cx = (a.x + b.x) / 2;
line += ' C ' + cx.toFixed(2) + ',' + a.y.toFixed(2) +
' ' + cx.toFixed(2) + ',' + b.y.toFixed(2) +
' ' + b.x.toFixed(2) + ',' + b.y.toFixed(2);
}
var last = pts[pts.length - 1];
var area = line + ' L ' + last.x.toFixed(2) + ',' + (H - pb) +
' L ' + pts[0].x.toFixed(2) + ',' + (H - pb) + ' Z';
var gid = 'g' + (Math.random() * 1e8 | 0).toString(36);
/* Time labels at 0,3,6,9,12,15,18,21 */
var timeLabels = '';
var tlHours = [0, 3, 6, 9, 12, 15, 18, 21];
for (var ti = 0; ti < tlHours.length; ti++) {
var h = tlHours[ti];
if (h >= pts.length) continue;
var p = pts[h];
var lbl = h === 0 ? '12a' : (h < 12 ? h + 'a' : (h === 12 ? '12p' : (h - 12) + 'p'));
timeLabels += '<text x="' + p.x.toFixed(2) + '" y="' + (H - 6) +
'" text-anchor="middle" fill="rgba(255,255,255,0.34)" font-size="10" font-family="-apple-system,system-ui,sans-serif" font-weight="500">' + lbl + '</text>';
}
/* Temp labels + dots at 6am, 12pm, 6pm */
var markers = '';
var markerHours = [6, 12, 18];
for (var mi = 0; mi < markerHours.length; mi++) {
var mh = markerHours[mi];
if (mh >= pts.length) continue;
var mp = pts[mh];
markers += '<circle cx="' + mp.x.toFixed(2) + '" cy="' + mp.y.toFixed(2) +
'" r="3" fill="' + theme.ln + '" opacity="0.82"/>';
var ly = mp.y <= pt + 11 ? mp.y + 14 : mp.y - 6;
markers += '<text x="' + mp.x.toFixed(2) + '" y="' + ly.toFixed(1) +
'" text-anchor="middle" fill="rgba(255,255,255,0.65)" font-size="9.5" font-family="-apple-system,system-ui,sans-serif" font-weight="600">' +
Math.round(mp.v) + '°</text>';
}
svg.innerHTML =
'<defs><linearGradient id="' + gid + '" x1="0" y1="0" x2="0" y2="1">' +
'<stop offset="0%" stop-color="' + theme.f1 + '"/>' +
'<stop offset="100%" stop-color="' + theme.f2 + '"/>' +
'</linearGradient></defs>' +
'<path d="' + area + '" fill="url(#' + gid + ')"/>' +
'<path d="' + line + '" stroke="' + theme.ln + '" stroke-width="2.2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>' +
markers + timeLabels;
}
/* ── UI ─────────────────────────────────────────────────── */
function showError(msg) {
document.getElementById('loading').style.display = 'none';
var ev = document.getElementById('error-view');
ev.style.display = 'flex';
document.getElementById('error-msg').textContent = msg;
}
function render(data, params) {
try {
var daily = data.daily;
var hourly = data.hourly;
if (!daily || !daily.temperature_2m_max || !daily.temperature_2m_max.length ||
!daily.temperature_2m_min || !daily.temperature_2m_min.length) {
showError('No weather data found for this location and date. The date may be outside the supported range.');
return;
}
var hi = Math.round(daily.temperature_2m_max[0]);
var lo = Math.round(daily.temperature_2m_min[0]);
var code = (daily.weather_code && daily.weather_code[0] != null) ? daily.weather_code[0] : 0;
var info = wmoInfo(code);
var theme = applyTheme(info[2]);
var hourlyTemps = [];
if (hourly && hourly.temperature_2m) {
hourlyTemps = hourly.temperature_2m.slice(0, 24);
}
document.getElementById('loc-name').textContent = params.name;
document.getElementById('date-str').textContent = fmtDate(params.date);
document.getElementById('hi-val').textContent = hi;
document.getElementById('lo-val').textContent = lo + '\u00B0';
document.getElementById('condition').textContent = info[0];
var iconFn = ICONS[info[1]] || ICONS.cloud;
document.getElementById('w-icon').innerHTML = iconFn();
if (hourlyTemps.length >= 2) {
drawChart(hourlyTemps, theme);
}
document.getElementById('loading').style.display = 'none';
document.getElementById('weather').style.display = 'block';
} catch (e) {
showError('Failed to render weather data: ' + e.message);
}
}
/* ── Fetch ──────────────────────────────────────────────── */
async function go() {
var params = getParams();
try {
var endpoint = isFutureOrToday(params.date) ? '/api/om/forecast' : '/api/om/archive';
var url = new URL(endpoint, location.origin);
url.searchParams.set('latitude', params.lat);
url.searchParams.set('longitude', params.lon);
url.searchParams.set('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
url.searchParams.set('hourly', 'temperature_2m');
url.searchParams.set('timezone', 'UTC');
url.searchParams.set('temperature_unit', 'celsius');
url.searchParams.set('start_date', params.date);
url.searchParams.set('end_date', params.date);
var res = await fetch(url.toString());
if (!res.ok) throw new Error('HTTP ' + res.status + ' ' + res.statusText);
var data = await res.json();
if (data.error) throw new Error(data.reason || String(data.error));
render(data, params);
} catch (e) {
showError('Could not load weather data. ' + e.message);
}
}
go();
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 29,267 | html / css / js | 2,125 / 6,683 / 20,459 |
|---|---|---|---|
| dom nodes | 47 | dom depth | 9 |
| css rules | 58 | js present | yes |
| brightness | 41.9 | contrast | 17.1 |
| colorfulness | 40.2 | whitespace | 70.6% |
This slot's telemetry
| prompt tokens | 7 | completion tokens | 12,460 |
|---|---|---|---|
| total tokens | 12,467 | wall | 771.9 s |
| cost | — | request id | — |
config.json620 B
{
"N": 2,
"auth": {
"credential_ref": "WCB_NONE",
"method": "oauth-login"
},
"billing": "plan",
"config_id": "claude-sonnet-4-6-thinking-eff-medium--cli--cursor--dev",
"effort": "medium",
"family": "claude",
"m": {
"min": 2,
"q": 2
},
"model_id": "claude-sonnet-4-6-thinking",
"protocol": "cli",
"served_model": "claude-4.6-sonnet-medium-thinking",
"telemetry": {
"completion_tokens": 68173,
"cost_usd": null,
"prompt_tokens": 25,
"total_tokens": 68198,
"wall_ms": 1557346
},
"transport": "cursor-agent-cli-isolated-home",
"vendor_sanction_ref": null
}send-log2.5 KB
{
"N": 2,
"batch_id": "2026-08-13--cursor-s0",
"config_id": "claude-4.6-sonnet-medium-thinking--cli--cursor--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-12T20:35:48.331484+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T20:34:29.235610+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-12T20:48:44.416560+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T20:35:52.516773+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-12T20:59:19.704884+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T20:48:48.049435+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-08-12T21:00:37.909408+00:00",
"http_status": null,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-08-12T20:59:23.147101+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}