amitpatole commited on
Commit
b1c645e
Β·
verified Β·
1 Parent(s): be156d9

Landing: retrofit to Warm Paper design system (cyan); bump version copy to 0.9.1

Browse files
Files changed (1) hide show
  1. index.html +87 -87
index.html CHANGED
@@ -1,102 +1,101 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
  <meta charset="UTF-8"/>
5
  <meta name="viewport" content="width=device-width,initial-scale=1.0"/>
6
  <title>AgentVision β€” Eyes for AI Agents</title>
7
  <style>
 
8
  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
9
- :root{--bg:#0a0e17;--surface:#111827;--surface2:#1a2332;--border:#1e2d3d;--accent:#00d4ff;--accent2:#39d353;--warn:#f0b429;--fail:#ff5555;--text:#e2e8f0;--muted:#64748b;--code:#0f1923}
 
 
 
10
  html{scroll-behavior:smooth}
11
- body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.65;overflow-x:hidden}
12
- a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
13
- #pts{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
14
- .pt{position:absolute;width:1px;height:1px;background:var(--accent);border-radius:50%;opacity:0;animation:float var(--d,8s) var(--delay,0s) infinite ease-in-out}
15
- @keyframes float{0%,100%{opacity:0;transform:translateY(0) scale(1)}10%{opacity:.5}50%{opacity:.15;transform:translateY(-60vh) scale(.4)}90%{opacity:0}}
16
- nav{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:.9rem 2.5rem;background:rgba(10,14,23,.88);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}
17
- .brand{display:flex;align-items:center;gap:.6rem;font-size:1.1rem;font-weight:800;letter-spacing:-.02em}
18
- .eye-ball{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,rgba(0,212,255,.15),rgba(124,58,237,.15));border:1.5px solid var(--accent);display:flex;align-items:center;justify-content:center;font-size:.9rem;animation:glow 3s infinite}
19
- @keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(0,212,255,.4)}50%{box-shadow:0 0 0 7px rgba(0,212,255,0)}}
20
- .brand-name{background:linear-gradient(135deg,var(--accent),#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
21
- .nav-links{display:flex;align-items:center;gap:1.75rem;font-size:.875rem}
22
  .nav-links a{color:var(--muted);transition:color .2s}.nav-links a:hover{color:var(--text);text-decoration:none}
23
- .vbadge{background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:.7rem;padding:.2rem .55rem;border-radius:999px}
24
- .btn-star{background:linear-gradient(135deg,var(--accent),#0099cc);color:#000!important;font-weight:700;padding:.45rem 1.1rem;border-radius:8px;font-size:.8rem}
25
- .btn-star:hover{opacity:.9;text-decoration:none!important}
26
- .hero{position:relative;text-align:center;padding:7rem 2rem 5rem;max-width:860px;margin:0 auto;z-index:1}
27
- .eyebrow{display:inline-flex;align-items:center;gap:.5rem;background:linear-gradient(135deg,rgba(0,212,255,.08),rgba(124,58,237,.08));border:1px solid rgba(0,212,255,.2);border-radius:999px;padding:.4rem 1rem;font-size:.78rem;color:var(--accent);font-weight:600;letter-spacing:.05em;margin-bottom:1.75rem}
28
- .dot-live{width:7px;height:7px;background:var(--accent2);border-radius:50%;display:inline-block;animation:blink 1.5s infinite}
29
- @keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
30
- h1{font-size:clamp(2.4rem,5.5vw,3.9rem);font-weight:900;line-height:1.1;letter-spacing:-.04em;margin-bottom:1.25rem}
31
- .w-agents{background:linear-gradient(135deg,var(--accent),#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
32
- .w-blind{color:var(--fail);text-decoration:line-through;text-decoration-color:rgba(255,85,85,.6)}
33
- .hero-sub{font-size:1.12rem;color:var(--muted);max-width:580px;margin:0 auto 2.25rem;line-height:1.7}
34
  .hero-sub strong{color:var(--text)}
35
  .hero-btns{display:flex;gap:.9rem;justify-content:center;flex-wrap:wrap;margin-bottom:2.5rem}
36
- .btn{display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.5rem;border-radius:10px;font-size:.9rem;font-weight:700;transition:all .2s;cursor:pointer;border:none}
37
  .btn:hover{transform:translateY(-1px);text-decoration:none}
38
- .btn-prim{background:linear-gradient(135deg,var(--accent),#0099cc);color:#000}
39
- .btn-prim:hover{box-shadow:0 0 24px rgba(0,212,255,.4)}
40
- .btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}
41
- .btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
42
- .pip-box{background:var(--code);border:1px solid var(--border);border-radius:10px;padding:1rem 1.5rem;font-family:"SFMono-Regular",Consolas,monospace;font-size:.9rem;display:inline-flex;align-items:center;gap:.75rem}
43
- .dol{color:var(--muted)}.cmd{color:var(--accent2)}.pkg{color:var(--warn)}
44
  .loop-wrap{position:relative;z-index:1;max-width:900px;margin:0 auto 5rem;padding:0 2rem;text-align:center}
45
- .sec-chip{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);background:rgba(0,212,255,.07);border:1px solid rgba(0,212,255,.2);padding:.3rem .8rem;border-radius:999px;margin-bottom:.9rem}
46
- .sec-title{font-size:1.75rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.55rem}
47
- .sec-sub{color:var(--muted);font-size:.93rem;margin-bottom:2rem}
48
- .loop-rail{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem;padding:2rem;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:1.5rem;position:relative;overflow:hidden}
49
- .loop-rail::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,212,255,.06),rgba(124,58,237,.06));pointer-events:none}
50
- .lnode{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:.65rem 1.1rem;font-size:.83rem;font-weight:700;white-space:nowrap;position:relative;z-index:1}
51
- .larr{color:var(--accent);opacity:.7;position:relative;z-index:1;font-size:1.1rem}
52
  .verdicts{display:flex;justify-content:center;gap:1.25rem;flex-wrap:wrap}
53
- .verd{padding:.4rem 1.1rem;border-radius:999px;font-size:.8rem;font-weight:800;letter-spacing:.04em}
54
- .v-pass{background:rgba(57,211,83,.1);color:var(--accent2);border:1.5px solid var(--accent2)}
55
- .v-warn{background:rgba(240,180,41,.1);color:var(--warn);border:1.5px solid var(--warn)}
56
- .v-fail{background:rgba(255,85,85,.1);color:var(--fail);border:1.5px solid var(--fail)}
57
  .sec{position:relative;z-index:1;max-width:1060px;margin:0 auto 5rem;padding:0 2rem}
58
  .feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:1.1rem}
59
- .feat{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.6rem;transition:all .25s;position:relative;overflow:hidden}
60
- .feat::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,212,255,.06),rgba(124,58,237,.06));opacity:0;transition:opacity .25s}
61
- .feat:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 32px rgba(0,212,255,.08)}
62
- .feat:hover::before{opacity:1}
63
- .fi{font-size:1.75rem;margin-bottom:.85rem;position:relative}
64
- .feat h3{font-size:.95rem;font-weight:700;margin-bottom:.4rem;position:relative}
65
- .feat p{font-size:.84rem;color:var(--muted);line-height:1.6;position:relative}
66
- .feat code,.ic{background:var(--code);padding:.1rem .35rem;border-radius:4px;font-size:.8rem;color:var(--accent)}
67
- .tbl-wrap{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden}
68
- table{width:100%;border-collapse:collapse;font-size:.875rem}
69
- th{text-align:left;padding:.8rem 1.25rem;background:var(--surface2);color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border)}
70
  td{padding:.85rem 1.25rem;border-bottom:1px solid var(--border);vertical-align:middle}
71
- tr:last-child td{border-bottom:none}tr:hover td{background:rgba(255,255,255,.02)}
72
- .tag{display:inline-block;font-size:.72rem;font-weight:700;padding:.2rem .5rem;border-radius:5px;background:rgba(0,212,255,.1);color:var(--accent);border:1px solid rgba(0,212,255,.25)}
73
- .tc{font-size:.8rem;color:#94a3b8}
74
  .bg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
75
- .bg-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem;text-align:center;transition:all .2s}
76
  .bg-card:hover{border-color:var(--accent);transform:translateY(-2px)}
77
- .bgi{font-size:2rem;margin-bottom:.7rem}
78
- .bg-card h4{font-size:.95rem;font-weight:700;margin-bottom:.35rem}
79
  .bg-card p{font-size:.8rem;color:var(--muted);line-height:1.5}
80
  .ig{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
81
  @media(max-width:680px){.ig{grid-template-columns:1fr}}
82
- .cc{background:var(--code);border:1px solid var(--border);border-radius:12px;overflow:hidden}
83
- .cc-hdr{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--surface2);border-bottom:1px solid var(--border)}
84
- .cc-title{font-size:.72rem;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
85
  .dots{display:flex;gap:.35rem}.dot{width:10px;height:10px;border-radius:50%}
86
- .d1{background:#ff5f57}.d2{background:#febc2e}.d3{background:#28c840}
87
- pre{padding:1.1rem 1.25rem;font-family:"SFMono-Regular",Consolas,monospace;font-size:.79rem;line-height:1.8;overflow-x:auto}
88
- .c{color:#6e7681}.g{color:var(--accent2)}.a{color:var(--warn)}.b{color:var(--accent)}
89
- .honesty-box{background:var(--surface);border:1px solid rgba(240,180,41,.25);border-radius:14px;padding:1.75rem 2rem;position:relative;overflow:hidden}
90
- .honesty-box::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--warn)}
91
- .honesty-box h3{font-size:1rem;font-weight:700;color:var(--warn);margin-bottom:1rem}
92
  .honesty-box ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem}
93
  @media(max-width:580px){.honesty-box ul{grid-template-columns:1fr}}
94
- .honesty-box li{font-size:.84rem;color:var(--muted);display:flex;align-items:baseline;gap:.5rem}
95
- .honesty-box li::before{content:"Γ—";color:var(--fail);font-weight:700;flex-shrink:0}
96
  footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:2.5rem 2rem;text-align:center;color:var(--muted);font-size:.85rem;margin-top:2rem}
97
  .ft-links{display:flex;justify-content:center;gap:2rem;margin-bottom:1rem;flex-wrap:wrap}
98
  .ft-links a{color:var(--muted);transition:color .2s}.ft-links a:hover{color:var(--text);text-decoration:none}
99
- @media(max-width:640px){nav{padding:.75rem 1.25rem}.nav-links{gap:1rem}.hero{padding:5rem 1.25rem 3.5rem}.loop-rail{padding:1.25rem}.lnode{font-size:.78rem;padding:.5rem .75rem}.sec{padding:0 1.25rem}.sec-title{font-size:1.4rem}td,th{padding:.65rem .85rem}}
 
100
  </style>
101
  </head>
102
  <body>
@@ -106,25 +105,25 @@ footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:2.
106
  </script>
107
 
108
  <nav>
109
- <div class="brand"><div class="eye-ball">πŸ‘</div><span class="brand-name">AgentVision</span></div>
110
  <div class="nav-links">
111
  <a href="#features">Features</a>
112
  <a href="#surfaces">Surfaces</a>
113
  <a href="#install">Install</a>
114
  <a href="https://github.com/amitpatole/agent-vision" target="_blank">GitHub</a>
115
- <a href="https://pypi.org/project/agentvision/" target="_blank" class="vbadge">v0.6.0</a>
116
  <a href="https://github.com/amitpatole/agent-vision" target="_blank" class="btn btn-star">β˜… Star</a>
117
  </div>
118
  </nav>
119
 
120
  <section class="hero">
121
- <div class="eyebrow"><span class="dot-live"></span>AgentVision v0.6.0 is live on PyPI</div>
122
  <h1>Coding <span class="w-agents">agents</span> are <span class="w-blind">blind</span>.<br>Now they can see.</h1>
123
  <p class="hero-sub">Closes the visual feedback loop for AI coding agents:<br><strong>render β†’ perceive β†’ report β†’ fix</strong> β€” before claiming done.</p>
124
  <div class="hero-btns">
125
- <a class="btn btn-prim" href="https://github.com/amitpatole/agent-vision" target="_blank">πŸ“– View on GitHub</a>
126
- <a class="btn btn-ghost" href="https://pypi.org/project/agentvision/" target="_blank">πŸ“¦ PyPI Package</a>
127
- <a class="btn btn-ghost" href="https://amitpatole.github.io/agent-vision/" target="_blank">πŸ“š Docs</a>
128
  </div>
129
  <div class="pip-box"><span class="dol">$</span><span class="cmd">pip install</span><span class="pkg">"agentvision[render]"</span></div>
130
  </section>
@@ -134,12 +133,12 @@ footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:2.
134
  <h2 class="sec-title">The Self-Correcting Visual Loop</h2>
135
  <p class="sec-sub">A machine-graded cycle the agent consumes to catch and fix visual bugs autonomously.</p>
136
  <div class="loop-rail">
137
- <div class="lnode">πŸ–₯ Render</div><div class="larr">β†’</div>
138
- <div class="lnode">πŸ‘ Perceive</div><div class="larr">β†’</div>
139
- <div class="lnode">πŸ“‹ Report</div><div class="larr">β†’</div>
140
- <div class="lnode">πŸ”§ Agent Fixes</div><div class="larr">β†’</div>
141
- <div class="lnode">πŸ” Re-render</div><div class="larr">β†’</div>
142
- <div class="lnode">πŸ“Š Diff</div>
143
  </div>
144
  <div class="verdicts">
145
  <span class="verd v-pass">βœ“ PASS</span>
@@ -174,7 +173,7 @@ footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:2.
174
  <h2 class="sec-title">The eyes for a brain that decides</h2>
175
  <p class="sec-sub">AgentVision is the <strong>eyes</strong>. Pair it with <a href="https://huggingface.co/spaces/amitpatole/verel" target="_blank">Verel</a> β€” the <strong>brain</strong> β€” where nothing is &ldquo;done&rdquo; until a grader returns a verdict. The eyes perceive and grade intent; the brain decides with attestation and compounds <strong>only verified work</strong> into memory. Then the eyes look again.</p>
176
  <p style="text-align:center;margin-top:1.5rem"><img src="https://raw.githubusercontent.com/amitpatole/verel/main/media/unified-architecture.png" alt="Eyes and Brain - AgentVision perceives and grades intent; Verel decides and compounds verified work into memory" style="max-width:100%;border-radius:16px;border:1px solid #2a3142"></p>
177
- <p class="sec-sub" style="margin-top:1.75rem"><strong>New in v0.6.0:</strong> intent conformance (does it match what you set out to build?), a generative loop for AI images/infographics, and the eyes&rarr;brain <code>Handoff</code> signal. <a href="https://github.com/amitpatole/verel" target="_blank">Verel on GitHub &rarr;</a></p>
178
  </section>
179
 
180
  <section class="sec" id="surfaces">
@@ -277,7 +276,7 @@ asyncio.run(main())</pre></div>
277
 
278
  <section class="sec">
279
  <div class="honesty-box">
280
- <h3>⚠️ What we do not claim (honesty section)</h3>
281
  <ul>
282
  <li>Pixel-accurate vision-model bounding boxes (advisory only)</li>
283
  <li>WCAG verdicts on rasterized non-HTML</li>
@@ -289,7 +288,7 @@ asyncio.run(main())</pre></div>
289
  </div>
290
  </section>
291
 
292
- <section class="sec"><div class="sec-chip">Adopt</div><h2 class="sec-title">Drop it into your workflow &amp; agents</h2><p class="sec-sub">CI gate in one step (<code>uses: amitpatole/agent-vision@v0.6.1</code>), a pre-commit hook, or shell out anywhere (exit codes 0/2/3). For agents: the Claude Code Skill, MCP tools, or a drop-in agent contract.</p></section>
293
  <footer>
294
  <div class="ft-links">
295
  <a href="https://github.com/amitpatole/agent-vision" target="_blank">GitHub</a>
@@ -298,7 +297,8 @@ asyncio.run(main())</pre></div>
298
  <a href="https://github.com/amitpatole/agent-vision/issues" target="_blank">Issues</a>
299
  <a href="https://github.com/amitpatole/agent-vision/blob/main/README.md" target="_blank">Docs</a>
300
  </div>
301
- <p>AgentVision v0.6.0 Β· MIT Β© Amit Patole Β· Eyes for AI Agents</p>
 
302
  </footer>
303
  </body>
304
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
+ <head><script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"69a8ab16d8a25438919538eb"}};</script>
4
  <meta charset="UTF-8"/>
5
  <meta name="viewport" content="width=device-width,initial-scale=1.0"/>
6
  <title>AgentVision β€” Eyes for AI Agents</title>
7
  <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&family=JetBrains+Mono:wght@400;500&display=swap');
9
  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
10
+ :root{--bg:#f7f5f1;--surface:#fffdf9;--surface2:#fdfbf7;--border:#e3ded4;--panel:#efece4;
11
+ --accent:#3a8a99;--acc-ink:#256b78;--good:#3f7d52;--warn:#a8741f;--fail:#b0524a;
12
+ --text:#1b1a17;--muted:#6b6862;--faint:#918d84;--code:#efece4;
13
+ --serif:"Source Serif 4",Georgia,serif;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace}
14
  html{scroll-behavior:smooth}
15
+ body{font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.62;overflow-x:hidden;-webkit-font-smoothing:antialiased}
16
+ a{color:var(--acc-ink);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}
17
+ #pts{display:none}
18
+ .fi,.bgi{display:none}
19
+ nav{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:.85rem 2.5rem;background:rgba(247,245,241,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
20
+ .brand{display:flex;align-items:center;gap:.6rem;font-family:var(--serif);font-size:1.32rem;font-weight:600;letter-spacing:-.01em;color:var(--text)}
21
+ .eye-ball{width:9px;height:9px;border-radius:50%;background:var(--accent);display:inline-block;border:none;animation:none}
22
+ .brand-name{color:var(--text)}
23
+ .nav-links{display:flex;align-items:center;gap:1.6rem;font-size:.9rem}
 
 
24
  .nav-links a{color:var(--muted);transition:color .2s}.nav-links a:hover{color:var(--text);text-decoration:none}
25
+ .vbadge{background:var(--surface);border:1px solid var(--border);color:var(--muted);font-size:.72rem;padding:.2rem .55rem;border-radius:999px}
26
+ .btn-star{background:var(--acc-ink);color:var(--bg)!important;font-weight:600;padding:.45rem 1.1rem;border-radius:8px;font-size:.82rem}
27
+ .btn-star:hover{background:var(--text);text-decoration:none!important}
28
+ .hero{position:relative;text-align:center;padding:6.5rem 2rem 4.5rem;max-width:880px;margin:0 auto;z-index:1}
29
+ .eyebrow{display:inline-flex;align-items:center;gap:.55rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.4rem 1rem;font-size:.78rem;color:var(--acc-ink);font-weight:600;letter-spacing:.05em;margin-bottom:1.75rem}
30
+ .dot-live{width:7px;height:7px;background:var(--accent);border-radius:50%;display:inline-block}
31
+ h1{font-family:var(--serif);font-size:clamp(2.4rem,5.5vw,3.9rem);font-weight:600;line-height:1.06;letter-spacing:-.02em;margin-bottom:1.25rem;color:var(--text)}
32
+ .w-agents{color:var(--acc-ink)}
33
+ .w-blind{color:var(--fail);text-decoration:line-through;text-decoration-color:rgba(176,82,74,.5)}
34
+ .hero-sub{font-family:var(--serif);font-size:1.25rem;color:var(--muted);max-width:600px;margin:0 auto 2.25rem;line-height:1.5}
 
35
  .hero-sub strong{color:var(--text)}
36
  .hero-btns{display:flex;gap:.9rem;justify-content:center;flex-wrap:wrap;margin-bottom:2.5rem}
37
+ .btn{display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.5rem;border-radius:9px;font-size:.9rem;font-weight:600;transition:all .15s;cursor:pointer;border:1px solid var(--border)}
38
  .btn:hover{transform:translateY(-1px);text-decoration:none}
39
+ .btn-prim{background:var(--acc-ink);color:var(--bg);border-color:var(--acc-ink)}
40
+ .btn-prim:hover{background:var(--text);border-color:var(--text)}
41
+ .btn-ghost{background:var(--surface);color:var(--text);border:1px solid var(--border)}
42
+ .btn-ghost:hover{border-color:var(--accent);color:var(--acc-ink)}
43
+ .pip-box{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.5rem;font-family:var(--mono);font-size:.9rem;display:inline-flex;align-items:center;gap:.75rem;color:var(--text)}
44
+ .dol{color:var(--acc-ink)}.cmd{color:var(--acc-ink)}.pkg{color:var(--warn)}
45
  .loop-wrap{position:relative;z-index:1;max-width:900px;margin:0 auto 5rem;padding:0 2rem;text-align:center}
46
+ .sec-chip{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--acc-ink);background:transparent;border:none;padding:0 0 .2rem;border-radius:0;margin-bottom:.7rem}
47
+ .sec-title{font-family:var(--serif);font-size:1.85rem;font-weight:600;letter-spacing:-.01em;margin-bottom:.55rem;color:var(--text)}
48
+ .sec-sub{color:var(--muted);font-size:.95rem;margin-bottom:2rem}
49
+ .loop-rail{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem;padding:2rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:1.5rem;position:relative;overflow:hidden}
50
+ .loop-rail::before{content:none}
51
+ .lnode{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:.65rem 1.1rem;font-size:.85rem;font-weight:600;white-space:nowrap;position:relative;z-index:1;color:var(--text)}
52
+ .larr{color:var(--accent);opacity:.8;position:relative;z-index:1;font-size:1.1rem}
53
  .verdicts{display:flex;justify-content:center;gap:1.25rem;flex-wrap:wrap}
54
+ .verd{padding:.4rem 1.1rem;border-radius:999px;font-size:.8rem;font-weight:600;letter-spacing:.04em}
55
+ .v-pass{background:rgba(63,125,82,.08);color:var(--good);border:1.5px solid var(--good)}
56
+ .v-warn{background:rgba(168,116,31,.08);color:var(--warn);border:1.5px solid var(--warn)}
57
+ .v-fail{background:rgba(176,82,74,.08);color:var(--fail);border:1.5px solid var(--fail)}
58
  .sec{position:relative;z-index:1;max-width:1060px;margin:0 auto 5rem;padding:0 2rem}
59
  .feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:1.1rem}
60
+ .feat{background:var(--surface);border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:12px;padding:1.6rem;transition:all .2s;position:relative;overflow:hidden}
61
+ .feat::before{content:none}
62
+ .feat:hover{transform:translateY(-2px)}
63
+ .feat h3{font-family:var(--serif);font-size:1.12rem;font-weight:600;margin-bottom:.4rem;position:relative}
64
+ .feat p{font-size:.86rem;color:var(--muted);line-height:1.6;position:relative}
65
+ .feat code,.ic{background:var(--code);padding:.1rem .4rem;border-radius:5px;font-size:.8rem;color:var(--acc-ink);font-family:var(--mono)}
66
+ .tbl-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}
67
+ table{width:100%;border-collapse:collapse;font-size:.9rem}
68
+ th{text-align:left;padding:.8rem 1.25rem;background:var(--panel);color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border)}
 
 
69
  td{padding:.85rem 1.25rem;border-bottom:1px solid var(--border);vertical-align:middle}
70
+ tr:last-child td{border-bottom:none}tr:hover td{background:rgba(0,0,0,.015)}
71
+ .tag{display:inline-block;font-size:.72rem;font-weight:600;padding:.2rem .5rem;border-radius:5px;background:var(--panel);color:var(--acc-ink);border:1px solid var(--border);font-family:var(--mono)}
72
+ .tc{font-size:.8rem;color:var(--faint);font-family:var(--mono)}
73
  .bg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
74
+ .bg-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem;text-align:center;transition:all .15s}
75
  .bg-card:hover{border-color:var(--accent);transform:translateY(-2px)}
76
+ .bg-card h4{font-family:var(--serif);font-size:1.05rem;font-weight:600;margin-bottom:.35rem}
 
77
  .bg-card p{font-size:.8rem;color:var(--muted);line-height:1.5}
78
  .ig{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
79
  @media(max-width:680px){.ig{grid-template-columns:1fr}}
80
+ .cc{background:var(--code);border:1px solid var(--border);border-radius:10px;overflow:hidden}
81
+ .cc-hdr{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--panel);border-bottom:1px solid var(--border)}
82
+ .cc-title{font-size:.72rem;font-weight:600;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
83
  .dots{display:flex;gap:.35rem}.dot{width:10px;height:10px;border-radius:50%}
84
+ .d1{background:#e0a39a}.d2{background:#d8c08a}.d3{background:#9ec2a0}
85
+ pre{padding:1.1rem 1.25rem;font-family:var(--mono);font-size:.79rem;line-height:1.75;overflow-x:auto;color:#3a3836}
86
+ .c{color:var(--faint)}.g{color:var(--acc-ink)}.a{color:var(--warn)}.b{color:#6b4a8a}
87
+ .honesty-box{background:var(--surface);border:1px solid var(--border);border-left:2px solid var(--warn);border-radius:12px;padding:1.75rem 2rem;position:relative;overflow:hidden}
88
+ .honesty-box::before{content:none}
89
+ .honesty-box h3{font-family:var(--serif);font-size:1.1rem;font-weight:600;color:var(--warn);margin-bottom:1rem}
90
  .honesty-box ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem}
91
  @media(max-width:580px){.honesty-box ul{grid-template-columns:1fr}}
92
+ .honesty-box li{font-size:.85rem;color:var(--muted);display:flex;align-items:baseline;gap:.5rem}
93
+ .honesty-box li::before{content:"d7";color:var(--fail);font-weight:700;flex-shrink:0}
94
  footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:2.5rem 2rem;text-align:center;color:var(--muted);font-size:.85rem;margin-top:2rem}
95
  .ft-links{display:flex;justify-content:center;gap:2rem;margin-bottom:1rem;flex-wrap:wrap}
96
  .ft-links a{color:var(--muted);transition:color .2s}.ft-links a:hover{color:var(--text);text-decoration:none}
97
+ .sig{font-family:var(--serif);font-style:italic;color:var(--acc-ink);font-size:1.05rem;display:block;margin-top:.7rem}
98
+ @media(max-width:640px){nav{padding:.75rem 1.25rem}.nav-links{gap:1rem}.hero{padding:5rem 1.25rem 3.5rem}.loop-rail{padding:1.25rem}.lnode{font-size:.78rem;padding:.5rem .75rem}.sec{padding:0 1.25rem}.sec-title{font-size:1.5rem}td,th{padding:.65rem .85rem}}
99
  </style>
100
  </head>
101
  <body>
 
105
  </script>
106
 
107
  <nav>
108
+ <div class="brand"><span class="eye-ball"></span><span class="brand-name">AgentVision</span></div>
109
  <div class="nav-links">
110
  <a href="#features">Features</a>
111
  <a href="#surfaces">Surfaces</a>
112
  <a href="#install">Install</a>
113
  <a href="https://github.com/amitpatole/agent-vision" target="_blank">GitHub</a>
114
+ <a href="https://pypi.org/project/agentvision/" target="_blank" class="vbadge">v0.9.1</a>
115
  <a href="https://github.com/amitpatole/agent-vision" target="_blank" class="btn btn-star">β˜… Star</a>
116
  </div>
117
  </nav>
118
 
119
  <section class="hero">
120
+ <div class="eyebrow"><span class="dot-live"></span>AgentVision v0.9.1 is live on PyPI</div>
121
  <h1>Coding <span class="w-agents">agents</span> are <span class="w-blind">blind</span>.<br>Now they can see.</h1>
122
  <p class="hero-sub">Closes the visual feedback loop for AI coding agents:<br><strong>render β†’ perceive β†’ report β†’ fix</strong> β€” before claiming done.</p>
123
  <div class="hero-btns">
124
+ <a class="btn btn-prim" href="https://github.com/amitpatole/agent-vision" target="_blank">View on GitHub</a>
125
+ <a class="btn btn-ghost" href="https://pypi.org/project/agentvision/" target="_blank">PyPI Package</a>
126
+ <a class="btn btn-ghost" href="https://amitpatole.github.io/agent-vision/" target="_blank">Docs</a>
127
  </div>
128
  <div class="pip-box"><span class="dol">$</span><span class="cmd">pip install</span><span class="pkg">"agentvision[render]"</span></div>
129
  </section>
 
133
  <h2 class="sec-title">The Self-Correcting Visual Loop</h2>
134
  <p class="sec-sub">A machine-graded cycle the agent consumes to catch and fix visual bugs autonomously.</p>
135
  <div class="loop-rail">
136
+ <div class="lnode">Render</div><div class="larr">β†’</div>
137
+ <div class="lnode">Perceive</div><div class="larr">β†’</div>
138
+ <div class="lnode">Report</div><div class="larr">β†’</div>
139
+ <div class="lnode">Agent Fixes</div><div class="larr">β†’</div>
140
+ <div class="lnode">Re-render</div><div class="larr">β†’</div>
141
+ <div class="lnode">Diff</div>
142
  </div>
143
  <div class="verdicts">
144
  <span class="verd v-pass">βœ“ PASS</span>
 
173
  <h2 class="sec-title">The eyes for a brain that decides</h2>
174
  <p class="sec-sub">AgentVision is the <strong>eyes</strong>. Pair it with <a href="https://huggingface.co/spaces/amitpatole/verel" target="_blank">Verel</a> β€” the <strong>brain</strong> β€” where nothing is &ldquo;done&rdquo; until a grader returns a verdict. The eyes perceive and grade intent; the brain decides with attestation and compounds <strong>only verified work</strong> into memory. Then the eyes look again.</p>
175
  <p style="text-align:center;margin-top:1.5rem"><img src="https://raw.githubusercontent.com/amitpatole/verel/main/media/unified-architecture.png" alt="Eyes and Brain - AgentVision perceives and grades intent; Verel decides and compounds verified work into memory" style="max-width:100%;border-radius:16px;border:1px solid #2a3142"></p>
176
+ <p class="sec-sub" style="margin-top:1.75rem"><strong>New in v0.9.1:</strong> intent conformance (does it match what you set out to build?), a generative loop for AI images/infographics, and the eyes&rarr;brain <code>Handoff</code> signal. <a href="https://github.com/amitpatole/verel" target="_blank">Verel on GitHub &rarr;</a></p>
177
  </section>
178
 
179
  <section class="sec" id="surfaces">
 
276
 
277
  <section class="sec">
278
  <div class="honesty-box">
279
+ <h3>What we do not claim</h3>
280
  <ul>
281
  <li>Pixel-accurate vision-model bounding boxes (advisory only)</li>
282
  <li>WCAG verdicts on rasterized non-HTML</li>
 
288
  </div>
289
  </section>
290
 
291
+ <section class="sec"><div class="sec-chip">Adopt</div><h2 class="sec-title">Drop it into your workflow &amp; agents</h2><p class="sec-sub">CI gate in one step (<code>uses: amitpatole/agent-vision@v0.9.1</code>), a pre-commit hook, or shell out anywhere (exit codes 0/2/3). For agents: the Claude Code Skill, MCP tools, or a drop-in agent contract.</p></section>
292
  <footer>
293
  <div class="ft-links">
294
  <a href="https://github.com/amitpatole/agent-vision" target="_blank">GitHub</a>
 
297
  <a href="https://github.com/amitpatole/agent-vision/issues" target="_blank">Issues</a>
298
  <a href="https://github.com/amitpatole/agent-vision/blob/main/README.md" target="_blank">Docs</a>
299
  </div>
300
+ <p>AgentVision v0.9.1 Β· MIT Β© Amit Patole Β· Eyes for AI Agents</p>
301
+ <span class="sig">β€” amitpatole</span>
302
  </footer>
303
  </body>
304
  </html>