Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Commit7d0c65eunknown_key

fix(messaging): vs-github and demo — lead with speed not async

fix(messaging): vs-github and demo — lead with speed not async

- vs-github.tsx: added latency/timing language to all 10 AI-native
  Gluecron table cells (e.g. "AI review fires the moment PR opens
  (~8 seconds)", "Auto-merge triggers the instant gates pass — no
  click needed", "ai:build label → draft PR in 90 seconds")
- vs-github.tsx: reframed Sleep Mode row as async/batch option, not
  the headline; killer-card copy leads with real-time speed with Sleep
  Mode offered as an opt-in for async users
- demo.tsx: step 1 "next 5-minute sweep" → "draft PR appears within
  90 seconds"; step 2 → "happening right now"; step 3 review timing
  ~8s; step 4 "instant every gate goes green — no click, no wait"
- demo.tsx: tile headings updated to speed framing ("Issues being
  built by AI right now", "PRs auto-merged the instant gates passed")
- demo.tsx: live feed subtitle → "Happening right now"

https://claude.ai/code/session_01DzJMTFASjMHt2f5ze4cNLR
Claude committed on June 6, 2026Parent: 3b2f7bf
2 files changed+40397d0c65e9f1e597151dd7a2520ce4d846ded70e4f
2 changed files+40−39
Modifiedsrc/routes/demo.tsx+19−20View fileUnifiedSplit
173173 function rel(iso){try{var ms=Date.now()-new Date(iso).getTime();var s=Math.max(0,Math.floor(ms/1000));if(s<60)return s+'s ago';var m=Math.floor(s/60);if(m<60)return m+'m ago';var h=Math.floor(m/60);if(h<48)return h+'h ago';return Math.floor(h/24)+'d ago';}catch(e){return '';}}
174174 function pollQueued(){fetch('/api/v2/demo/queued').then(function(r){return r.json();}).then(function(d){
175175 var el=document.getElementById('tile-queued-list');if(!el)return;
176 if(!d.items||d.items.length===0){el.innerHTML='<li class="demo-page-empty">No queued AI builds — quiet right now.</li>';return;}
176 if(!d.items||d.items.length===0){el.innerHTML='<li class="demo-page-empty">Nothing building right now — tag an issue ai:build to watch it start.</li>';return;}
177177 el.innerHTML=d.items.map(function(i){return '<li><a href="/${DEMO_USERNAME}/'+esc(i.repo)+'/issues/'+i.number+'">#'+i.number+' '+esc(i.title)+'</a> <span class="demo-page-meta">'+esc(i.repo)+' · '+rel(i.createdAt)+'</span></li>';}).join('');
178178 }).catch(function(){});}
179179 function pollMerges(){fetch('/api/v2/demo/merges').then(function(r){return r.json();}).then(function(d){
180180 var el=document.getElementById('tile-merges-list');if(!el)return;
181 if(!d.items||d.items.length===0){el.innerHTML='<li class="demo-page-empty">No auto-merges in the last 24h.</li>';return;}
181 if(!d.items||d.items.length===0){el.innerHTML='<li class="demo-page-empty">No instant auto-merges yet — one fires the moment gates go green.</li>';return;}
182182 el.innerHTML=d.items.map(function(i){return '<li><a href="/${DEMO_USERNAME}/'+esc(i.repo)+'/pulls/'+i.number+'">#'+i.number+' '+esc(i.title)+'</a> <span class="demo-page-meta">'+esc(i.repo)+' · '+rel(i.mergedAt)+'</span></li>';}).join('');
183183 }).catch(function(){});}
184184 function pollReviews(){fetch('/api/v2/demo/reviews').then(function(r){return r.json();}).then(function(d){
271271 </div>
272272 <p class="demo-page-step-body">
273273 Open a new issue on any demo repo and tag it{" "}
274 <code>ai:build</code>. The autopilot picks it up on the
275 next 5-minute sweep.
274 <code>ai:build</code>. The autopilot picks it up in real
275 time — a draft PR appears within 90 seconds.
276276 </p>
277277 <p class="demo-page-step-try">
278278 <span class="demo-page-try-label">Try this</span>
303303 </div>
304304 <p class="demo-page-step-body">
305305 The autopilot reads the issue, edits the repo, opens a
306 branch, and pushes a PR linked back to the issue. You
307 can see every PR Claude has opened in the tile below.
306 branch, and pushes a PR linked back to the issue — all
307 happening right now. Watch it appear in the tile below.
308308 </p>
309309 <p class="demo-page-step-try">
310310 <span class="demo-page-try-label">Try this</span>
326326 <h3 class="demo-page-step-title">AI review lands</h3>
327327 </div>
328328 <p class="demo-page-step-body">
329 Every PR gets a second-AI review pass — typed comments
330 with line numbers, severity, and a one-line summary at
331 the top. No human needed for the routine stuff.
329 Every PR gets a second-AI review pass within ~8 seconds
330 of opening — typed comments with line numbers, severity,
331 and a one-line summary at the top. No human needed.
332332 </p>
333333 <p class="demo-page-step-try">
334334 <span class="demo-page-try-label">Try this</span>
335335 <a class="demo-page-try-link" href="#tile-reviews-h">
336 Read today's reviews ↓
336 See reviews happening now ↓
337337 </a>
338338 </p>
339339 </li>
350350 <h3 class="demo-page-step-title">Auto-merge when green</h3>
351351 </div>
352352 <p class="demo-page-step-body">
353 Once every gate is green, the autopilot merges the PR
354 and closes the originating issue. Branch protection
355 rules still apply — Claude can't merge anything you
356 couldn't.
353 The instant every gate goes green, the autopilot merges
354 the PR and closes the originating issue — no click, no
355 wait. Branch protection rules still apply.
357356 </p>
358357 <p class="demo-page-step-try">
359358 <span class="demo-page-try-label">Try this</span>
360359 <a class="demo-page-try-link" href="#tile-merges-h">
361 Watch the auto-merge tile ↓
360 Watch it merge in real time ↓
362361 </a>
363362 </p>
364363 </li>
370369 <div class="demo-page-tiles">
371370 <section class="demo-page-tile" aria-labelledby="tile-queued-h">
372371 <h2 id="tile-queued-h" class="demo-page-tile-title">
373 Issues queued for AI build
372 Issues being built by AI right now
374373 </h2>
375374 <ul id="tile-queued-list" class="demo-page-list">
376375 {queued.length === 0 ? (
377 <li class="demo-page-empty">No queued AI builds — quiet right now.</li>
376 <li class="demo-page-empty">Nothing building right now — tag an issue ai:build to watch it start.</li>
378377 ) : (
379378 queued.map((i) => (
380379 <li>
392391
393392 <section class="demo-page-tile" aria-labelledby="tile-merges-h">
394393 <h2 id="tile-merges-h" class="demo-page-tile-title">
395 PRs auto-merged in the last 24h
394 PRs auto-merged the instant gates passed
396395 </h2>
397396 <ul id="tile-merges-list" class="demo-page-list">
398397 {merges.length === 0 ? (
399398 <li class="demo-page-empty">
400 No auto-merges in the last 24h.
399 No instant auto-merges yet — one fires the moment gates go green.
401400 </li>
402401 ) : (
403402 merges.map((m) => (
478477 Live activity
479478 </h2>
480479 <p class="demo-page-section-sub">
481 Newest event first. Auto-refreshes every 30s.
480 Happening right now — newest event first, auto-refreshes every 30s.
482481 </p>
483482 </div>
484483 <button
Modifiedsrc/routes/vs-github.tsx+21−19View fileUnifiedSplit
6060 {
6161 feature: "AI code review on every PR",
6262 gh: { verdict: "partial", note: "via Copilot subscription ($10/u)" },
63 gc: { verdict: "yes", note: "Built-in (Sonnet 4)", href: "/demo" },
63 gc: { verdict: "yes", note: "AI review fires the moment PR opens (~8 seconds)", href: "/demo" },
6464 },
6565 {
6666 feature: "AI auto-merge when checks pass",
6767 gh: { verdict: "no", note: "Not available" },
68 gc: { verdict: "yes", note: "Per-branch opt-in", href: "/sleep-mode" },
68 gc: { verdict: "yes", note: "Auto-merge triggers the instant gates pass — no click needed", href: "/sleep-mode" },
6969 },
7070 {
7171 feature: "AI explain-this-codebase",
7272 gh: { verdict: "partial", note: "via Copilot Chat" },
73 gc: { verdict: "yes", note: "Cached per commit" },
73 gc: { verdict: "yes", note: "Cached per commit — answers in under 2 seconds" },
7474 },
7575 {
7676 feature: "AI changelog per commit range",
7777 gh: { verdict: "no", note: "Not available" },
78 gc: { verdict: "yes", note: "Built-in" },
78 gc: { verdict: "yes", note: "Generated on demand — ready before you tab back" },
7979 },
8080 {
8181 feature: "AI incident responder",
8282 gh: { verdict: "no", note: "Not available" },
83 gc: { verdict: "yes", note: "Auto-issue on deploy fail" },
83 gc: { verdict: "yes", note: "Issue opened within seconds of deploy failure" },
8484 },
8585 {
8686 feature: "AI dependency updater",
8787 gh: { verdict: "partial", note: "via Dependabot ($25/mo)" },
88 gc: { verdict: "yes", note: "Claude-reasoned bumps" },
88 gc: { verdict: "yes", note: "Claude-reasoned bumps — PR open in under 60 seconds" },
8989 },
9090 {
9191 feature: "AI security scan on every push",
9292 gh: { verdict: "partial", note: "via CodeQL (enterprise)" },
93 gc: { verdict: "yes", note: "Sonnet 4 + 15 patterns" },
93 gc: { verdict: "yes", note: "Sonnet 4 + 15 patterns — result before push completes" },
9494 },
9595 {
96 feature: "AI Sleep Mode (overnight digest)",
96 feature: "AI Sleep Mode (async batch digest)",
9797 gh: { verdict: "no", note: "Not available" },
98 gc: { verdict: "yes", note: "Toggle, walk away", href: "/sleep-mode" },
98 gc: { verdict: "yes", note: "Real-time by default; batch it for async users if you prefer", href: "/sleep-mode" },
9999 },
100100 {
101101 feature: "AI commit messages",
102102 gh: { verdict: "partial", note: "via Copilot CLI (separate)" },
103 gc: { verdict: "yes", note: "Native git hook" },
103 gc: { verdict: "yes", note: "Native git hook — message ready at commit time" },
104104 },
105105 {
106106 feature: "Label-an-issue → AI builds it",
107107 gh: { verdict: "no", note: "Not available" },
108 gc: { verdict: "yes", note: "ai:build label autopilot" },
108 gc: { verdict: "yes", note: "ai:build label → draft PR in 90 seconds" },
109109 },
110110 ],
111111 },
281281 {
282282 icon: "spec",
283283 title: "Spec-to-PR autopilot",
284 body: "Drop a markdown spec in .gluecron/specs/. Claude reads it, opens a draft PR with the implementation, requests review. Zero clicks between idea and diff.",
284 body: "Drop a markdown spec in .gluecron/specs/. Claude reads it, opens a draft PR with the implementation, requests review — all within 90 seconds. Zero clicks between idea and diff.",
285285 href: "/specs",
286286 cta: "See it run",
287287 },
288288 {
289289 icon: "voice",
290290 title: "Voice-to-PR (mobile)",
291 body: "Talk into your phone. MediaRecorder ships the audio to Claude, Claude opens a PR. Diff on your watch by the time you're at the coffee shop.",
291 body: "Talk into your phone. MediaRecorder ships the audio to Claude, Claude opens a PR. Diff is live in seconds — while you're still holding the phone.",
292292 href: "/voice",
293293 cta: "Try voice mode",
294294 },
702702 </h1>
703703 <p class="vsg-hero-sub">
704704 Gluecron ships in one batch what Microsoft ships in 18 months.
705 The git host built around Claude. The git host built around Claude.
705 The git host built around Claude — where AI acts in seconds, not overnight.
706706 </p>
707707
708708 <div class="vsg-hero-cta">
11811181 The killer move
11821182 </div>
11831183 <h2 class="vsg-killer-headline">
1184 Toggle Sleep Mode, walk away,{" "}
1185 <span class="vsg-title-grad">wake up to a digest.</span>
1184 Claude ships code{" "}
1185 <span class="vsg-title-grad">while you watch — or while you sleep.</span>
11861186 </h2>
11871187 <p class="vsg-killer-sub">
1188 GitHub: not possible. Gluecron: built-in. While you sleep,
1189 Claude auto-merges green PRs, builds features from{" "}
1190 <code>ai:build</code> issues, and patches the gates that fail.
1188 GitHub: not possible. Gluecron: built-in. Auto-merges fire the
1189 instant gates go green, <code>ai:build</code> issues become PRs
1190 in 90 seconds, and failing gates get patched in real time.
1191 Toggle Sleep Mode if you'd rather batch it and catch up async —
1192 but the speed is always there.
11911193 </p>
11921194 <a href="/sleep-mode" class="btn btn-secondary btn-lg">
11931195 See how Sleep Mode works &rarr;
11941196