thumbgate 1.5.4 โ†’ 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/index.html CHANGED
@@ -19,12 +19,21 @@
19
19
  <meta charset="UTF-8">
20
20
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
21
21
  __GOOGLE_SITE_VERIFICATION_META__
22
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
23
+ <link rel="alternate icon" type="image/svg+xml" href="/assets/brand/thumbgate-mark.svg">
24
+ <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
25
+ <meta property="og:image" content="/og.png">
22
26
  <title>ThumbGate โ€” Stop paying for the same AI mistake twice</title>
23
27
  <meta name="description" content="Stop paying for the same AI mistake twice. ThumbGate turns ๐Ÿ‘ thumbs up and ๐Ÿ‘Ž thumbs down feedback into history-aware lessons and Pre-Action Gates that block repeat AI agent mistakes before they reach the model โ€” self-improving agent governance with shared lessons and org visibility for Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode.">
24
28
  <meta property="og:title" content="ThumbGate โ€” Stop paying for the same AI mistake twice">
25
29
  <meta property="og:description" content="Frontier LLMs are expensive and repeat mistakes cost real money. ThumbGate blocks known-bad AI agent actions before they hit the model โ€” zero tokens spent on retries, hallucinations, or repeat commands. Fix it once, your bill never sees it again.">
26
30
  <meta property="og:type" content="website">
31
+ <meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
32
+ <meta name="twitter:card" content="summary_large_image">
33
+ <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
27
34
  <meta name="keywords" content="ThumbGate, thumbgate, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action gates, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
35
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
36
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
28
37
 
29
38
  <!-- Privacy-friendly analytics by Plausible -->
30
39
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
@@ -266,7 +275,9 @@ __GA_BOOTSTRAP__
266
275
  /* NAV */
267
276
  nav { position: sticky; top: 0; z-index: 50; background: rgba(10,10,11,0.85); backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); padding: 14px 0; }
268
277
  nav .container { display: flex; justify-content: space-between; align-items: center; }
269
- .nav-logo { font-weight: 700; font-size: 15px; letter-spacing: -0.02em; color: var(--text); text-decoration: none; }
278
+ .nav-logo { font-weight: 700; font-size: 15px; letter-spacing: -0.02em; color: var(--text); text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
279
+ .nav-logo .logo-mark { width: 28px; height: 28px; display: block; }
280
+ .nav-logo .logo-text { color: var(--text); }
270
281
  .nav-logo span { color: var(--cyan); }
271
282
  .nav-links { display: flex; gap: 24px; align-items: center; }
272
283
  .nav-links a { color: var(--text-muted); text-decoration: none; font-size: 13px; transition: color 0.15s; }
@@ -283,9 +294,13 @@ __GA_BOOTSTRAP__
283
294
  .hero p { font-size: 17px; color: var(--text-muted); max-width: 520px; margin: 0 auto 36px; line-height: 1.6; }
284
295
  .hero-persona { font-size: 15px; color: var(--cyan); max-width: 600px; margin: 0 auto 20px; line-height: 1.5; font-weight: 500; }
285
296
  .hero-signals { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin: 0 auto 28px; max-width: 760px; }
286
- .signal-pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-raised); font-size: 13px; font-weight: 600; letter-spacing: -0.01em; }
297
+ .signal-pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-raised); font-size: 13px; font-weight: 600; letter-spacing: -0.01em; text-decoration: none; cursor: pointer; transition: transform 0.12s ease, border-color 0.12s ease, background 0.12s ease; }
298
+ .signal-pill:hover { transform: translateY(-1px); border-color: rgba(34, 211, 238, 0.5); background: rgba(34, 211, 238, 0.06); }
299
+ .signal-pill:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; }
287
300
  .signal-pill.signal-up { border-color: rgba(74, 222, 128, 0.28); color: #b8f7c8; background: rgba(74, 222, 128, 0.08); }
301
+ .signal-pill.signal-up:hover { border-color: rgba(74, 222, 128, 0.6); background: rgba(74, 222, 128, 0.14); }
288
302
  .signal-pill.signal-down { border-color: rgba(248, 113, 113, 0.28); color: #ffc0c0; background: rgba(248, 113, 113, 0.08); }
303
+ .signal-pill.signal-down:hover { border-color: rgba(248, 113, 113, 0.6); background: rgba(248, 113, 113, 0.14); }
289
304
  .hero-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin: 0 auto 16px; max-width: 760px; }
290
305
  .btn-pro-page { display: inline-flex; align-items: center; justify-content: center; padding: 11px 18px; background: var(--cyan); color: var(--bg); border-radius: 999px; text-decoration: none; font-size: 14px; font-weight: 700; box-shadow: 0 0 0 1px rgba(34,211,238,0.28), 0 12px 32px rgba(34,211,238,0.18); transition: opacity 0.15s, transform 0.15s; }
291
306
  .btn-pro-page:hover { opacity: 0.9; transform: translateY(-1px); }
@@ -306,13 +321,17 @@ __GA_BOOTSTRAP__
306
321
  .first-gate-step { border: 1px solid var(--border); border-radius: 10px; background: rgba(10,10,11,0.62); padding: 14px; }
307
322
  .first-gate-step strong { display: block; color: var(--cyan); margin-bottom: 6px; }
308
323
  .first-gate-step p { font-size: 13px; line-height: 1.5; margin: 0; }
309
- .first-gate-example { font-family: var(--mono); color: var(--green); background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.24); border-radius: 8px; padding: 10px 12px; font-size: 12px; margin-top: 12px; overflow-x: auto; }
324
+ .first-gate-examples { display: grid; gap: 8px; margin-top: 12px; }
325
+ .first-gate-example { font-family: var(--mono); border-radius: 8px; padding: 10px 12px; font-size: 12px; overflow-x: auto; line-height: 1.55; }
326
+ .first-gate-example.signal-good { color: var(--green); background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.24); }
327
+ .first-gate-example.signal-fix { color: #fda4af; background: rgba(251,113,133,0.08); border: 1px solid rgba(251,113,133,0.24); }
310
328
 
311
329
  /* SOCIAL PROOF BAR */
312
- .proof-bar { display: flex; justify-content: center; flex-wrap: wrap; gap: 24px; font-size: 13px; color: var(--text-muted); padding: 0 0 8px; }
313
- .proof-bar a { display: inline-flex; align-items: center; gap: 6px; color: var(--text-muted); text-decoration: none; transition: color 0.15s; }
314
- .proof-bar a:hover { color: var(--cyan); }
315
- .proof-bar .dot { width: 4px; height: 4px; background: var(--border); border-radius: 50%; display: inline-block; }
330
+ .proof-bar { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; font-size: 13px; color: var(--text-muted); padding: 4px 0 12px; max-width: 1040px; margin: 0 auto; }
331
+ .proof-bar a { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 8px 12px; border: 1px solid rgba(34,211,238,0.14); border-radius: 8px; background: rgba(17,17,19,0.72); color: var(--text-muted); text-decoration: none; line-height: 1.25; white-space: nowrap; transition: color 0.15s, border-color 0.15s, background-color 0.15s; }
332
+ .proof-bar a:hover, .proof-bar a:focus-visible { color: var(--cyan); border-color: rgba(34,211,238,0.42); background: rgba(34,211,238,0.08); outline: none; }
333
+ .proof-bar a:focus-visible { box-shadow: 0 0 0 3px rgba(34,211,238,0.18); }
334
+ .proof-bar .dot { display: none; }
316
335
 
317
336
  /* COMPATIBILITY */
318
337
  .compatibility { padding: 0 0 80px; }
@@ -364,6 +383,20 @@ __GA_BOOTSTRAP__
364
383
  }
365
384
  .seo-card .card-arrow { font-size: 13px; color: var(--cyan); margin-top: 12px; font-weight: 500; }
366
385
 
386
+ /* AUTORESEARCH PACK */
387
+ .autoresearch-pack { padding: 0 0 80px; }
388
+ .autoresearch-panel { border: 1px solid rgba(34,211,238,0.28); border-radius: 8px; background: linear-gradient(180deg, rgba(17,17,19,0.98) 0%, rgba(10,18,20,0.98) 100%); padding: 28px; }
389
+ .autoresearch-panel h2 { font-size: 30px; line-height: 1.18; margin-bottom: 12px; }
390
+ .autoresearch-panel > p { color: var(--text-muted); line-height: 1.65; max-width: 860px; margin-bottom: 22px; }
391
+ .autoresearch-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 22px 0; }
392
+ .autoresearch-card { border: 1px solid var(--border); border-radius: 8px; background: rgba(10,10,11,0.62); padding: 18px; }
393
+ .autoresearch-card h3 { font-size: 16px; margin-bottom: 8px; }
394
+ .autoresearch-card p { color: var(--text-muted); font-size: 14px; line-height: 1.55; }
395
+ .autoresearch-cta { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-top: 18px; }
396
+ .autoresearch-cta a { display: inline-flex; align-items: center; min-height: 40px; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-size: 14px; font-weight: 700; }
397
+ .autoresearch-cta .primary { background: var(--cyan); color: #041016; }
398
+ .autoresearch-cta .secondary { border: 1px solid var(--border); color: var(--text); }
399
+
367
400
  /* HOW IT WORKS */
368
401
  .how-it-works { padding: 80px 0; }
369
402
  .section-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--cyan); font-weight: 600; margin-bottom: 12px; text-align: center; }
@@ -466,7 +499,7 @@ __GA_BOOTSTRAP__
466
499
  #claude-code-section:hover, #thumbgate-gpt:hover { opacity: 1; }
467
500
 
468
501
  /* Simplify proof bar โ€” make it less overwhelming */
469
- .proof-bar { font-size: 11px; gap: 16px; opacity: 0.8; }
502
+ .proof-bar { font-size: 13px; gap: 10px; opacity: 1; }
470
503
 
471
504
  /* RESPONSIVE */
472
505
  @media (max-width: 700px) {
@@ -475,13 +508,15 @@ __GA_BOOTSTRAP__
475
508
  .first-gate-steps { grid-template-columns: 1fr; }
476
509
  .gpt-steps { grid-template-columns: 1fr; }
477
510
  .seo-grid { grid-template-columns: 1fr; }
511
+ .autoresearch-grid { grid-template-columns: 1fr; }
478
512
  .pricing-grid { grid-template-columns: 1fr; }
479
513
  .team-form { grid-template-columns: 1fr; }
480
514
  .hero { padding: 72px 0 56px; }
481
515
  .hero-actions { flex-direction: column; }
482
516
  .hero-actions a { width: 100%; }
483
517
  .nav-links a:not(.nav-cta) { display: none; }
484
- .proof-bar { gap: 16px; }
518
+ .proof-bar { gap: 8px; justify-content: flex-start; }
519
+ .proof-bar a { width: 100%; min-height: 42px; white-space: normal; }
485
520
  .proof-bar .dot { display: none; }
486
521
  }
487
522
  </style>
@@ -501,10 +536,11 @@ __GA_BOOTSTRAP__
501
536
  <!-- NAV -->
502
537
  <nav>
503
538
  <div class="container">
504
- <a href="#" class="nav-logo"><span>๐Ÿ‘๐Ÿ‘Ž</span> ThumbGate</a>
539
+ <a href="#" class="nav-logo"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
505
540
  <div class="nav-links">
506
541
  <a href="#how-it-works">How It Works</a>
507
542
  <a href="#pricing">Pricing</a>
543
+ <a href="/guides/autoresearch-agent-safety">Autoresearch</a>
508
544
  <a href="#faq">FAQ</a>
509
545
  <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
510
546
  <a href="#compatibility" style="display:none;">Compatibility</a>
@@ -528,6 +564,35 @@ __GA_BOOTSTRAP__
528
564
  <div class="hero-badge">โ— Your AI coding bill has a leak</div>
529
565
  <h1>Stop paying $ for the same AI mistake.</h1>
530
566
  <p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" โ€” those are billable tokens on every LLM vendor's bill. Thumbs-down once; ThumbGate blocks that exact mistake on every future call. Across Claude Code, Cursor, Codex, Gemini, Amp, OpenCode โ€” any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
567
+
568
+ <!-- HERO PRICING CARD โ€” visible in first viewport so $19/mo and $149/yr never get buried -->
569
+ <div id="pro-pitch" style="max-width:820px;margin:0 auto 32px;padding:24px 28px;background:linear-gradient(180deg,rgba(17,17,19,0.94) 0%,rgba(22,22,24,0.94) 100%);border:1px solid rgba(34,211,238,0.32);border-radius:20px;box-shadow:0 0 0 1px rgba(34,211,238,0.18),0 24px 64px rgba(0,0,0,0.35);text-align:left;">
570
+ <div style="display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;">
571
+ <div>
572
+ <div style="display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid rgba(34,211,238,0.25);background:var(--cyan-dim);color:var(--cyan);font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;">Start 7-day free trial</div>
573
+ <h2 style="margin:10px 0 4px;font-size:22px;letter-spacing:-0.025em;line-height:1.2;">Go Pro โ€” one correction, every agent, every session.</h2>
574
+ <p style="margin:0;font-size:13px;color:var(--text-muted);">Personal local dashboard ยท DPO export from real corrections ยท founder support on risky flows.</p>
575
+ </div>
576
+ </div>
577
+ <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;">
578
+ <div style="display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-radius:14px;border:1px solid rgba(34,211,238,0.35);background:rgba(34,211,238,0.06);">
579
+ <div style="text-align:left;">
580
+ <div style="font-size:22px;font-weight:800;letter-spacing:-0.03em;line-height:1.1;">$19<span style="font-size:13px;font-weight:600;color:var(--text-muted);">/mo</span></div>
581
+ <div style="font-size:12px;color:var(--text-muted);margin-top:2px;">Monthly Pro</div>
582
+ </div>
583
+ <a href="/checkout/pro?utm_source=website&utm_medium=hero_pricing_card&utm_campaign=pro_pack&cta_id=hero_pro_monthly&cta_placement=hero_pricing&plan_id=pro&landing_path=%2F" onclick="posthog.capture('hero_pricing_monthly_click',{cta:'choose_monthly'})" style="display:inline-flex;align-items:center;gap:6px;padding:11px 20px;background:var(--cyan);color:#041016;border-radius:999px;text-decoration:none;font-weight:700;font-size:14px;box-shadow:0 0 0 1px rgba(34,211,238,0.28),0 12px 32px rgba(34,211,238,0.18);white-space:nowrap;">Choose monthly โ†’</a>
584
+ </div>
585
+ <div style="display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-radius:14px;border:1px solid var(--border);background:rgba(255,255,255,0.02);">
586
+ <div style="text-align:left;">
587
+ <div style="font-size:22px;font-weight:800;letter-spacing:-0.03em;line-height:1.1;">$149<span style="font-size:13px;font-weight:600;color:var(--text-muted);">/yr</span> <span style="font-size:11px;color:#4ade80;background:rgba(74,222,128,0.14);padding:2px 7px;border-radius:999px;font-weight:700;vertical-align:middle;margin-left:4px;">SAVE 35%</span></div>
588
+ <div style="font-size:12px;color:var(--text-muted);margin-top:2px;">Annual Pro</div>
589
+ </div>
590
+ <a href="/checkout/pro?utm_source=website&utm_medium=hero_pricing_card&utm_campaign=pro_pack&cta_id=hero_pro_annual&cta_placement=hero_pricing&plan_id=pro&billing_cycle=annual&landing_path=%2F" onclick="posthog.capture('hero_pricing_annual_click',{cta:'choose_annual'})" style="display:inline-flex;align-items:center;gap:6px;padding:11px 20px;background:rgba(17,17,19,0.75);color:var(--text);border:1px solid var(--border);border-radius:999px;text-decoration:none;font-weight:700;font-size:14px;white-space:nowrap;">Choose annual โ†’</a>
591
+ </div>
592
+ </div>
593
+ <p style="margin:14px 0 0;font-size:11px;color:var(--text-muted);text-align:center;">No credit card for 7-day trial ยท cancel anytime ยท your rules and captures stay local. <a href="/go/install" style="color:var(--cyan);text-decoration:none;">Prefer free? Install CLI โ†’</a></p>
594
+ </div>
595
+
531
596
  <a href="/dashboard" class="hero-dashboard-preview" style="display:block;max-width:620px;margin:0 auto 28px;background:linear-gradient(135deg,#0d1220 0%,#121a2e 100%);border:1px solid rgba(34,211,238,0.35);border-radius:12px;padding:20px 24px;box-shadow:0 0 48px rgba(34,211,238,0.15);font-family:var(--mono);text-align:left;text-decoration:none;color:inherit;" title="Open your live dashboard">
532
597
  <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);">
533
598
  <span>Your dashboard ยท <span style="color:#eab308;background:rgba(234,179,8,0.1);padding:2px 6px;border-radius:3px;letter-spacing:0.04em;">Sample</span></span>
@@ -554,9 +619,9 @@ __GA_BOOTSTRAP__
554
619
  })();
555
620
  </script>
556
621
  <div class="hero-signals">
557
- <div class="signal-pill signal-down">Block repeat hallucinations before the model sees them</div>
558
- <div class="signal-pill signal-up">Thumbs-down once, blocked forever, across every agent</div>
559
- <div class="signal-pill">CLI-first workflow governance with a live tokens-saved counter</div>
622
+ <a class="signal-pill signal-down" href="#how-it-works" title="See how gate interception works">Block repeat hallucinations before the model sees them</a>
623
+ <a class="signal-pill signal-up" href="#how-it-works" title="See the one-thumbs-down enforcement loop">Thumbs-down once, blocked forever, across every agent</a>
624
+ <a class="signal-pill" href="#install" title="Install the CLI">CLI-first workflow governance with a live tokens-saved counter</a>
560
625
  </div>
561
626
  <p class="hero-persona" style="display:none">For consultancies, platform teams, and AI product teams with one workflow owner, one repeated failure, and one buyer who needs proof before a wider rollout.</p>
562
627
  <div class="hero-actions" style="margin-top:32px;">
@@ -570,7 +635,8 @@ __GA_BOOTSTRAP__
570
635
  <div class="hero-secondary-ctas" style="display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:8px;opacity:0.7;">
571
636
  <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" class="btn-gpt-page" target="_blank" rel="noopener" onclick="posthog.capture('hero_claude_extension_click',{cta:'install_claude_extension'})" style="font-size:12px;padding:8px 16px;background:#d97706;color:#fff;box-shadow:none;">Install Claude Extension</a>
572
637
  <a href="/go/github?utm_source=website&utm_medium=hero_cta&utm_campaign=github_repo&cta_id=hero_star_github&cta_placement=hero" target="_blank" rel="noopener" class="btn-free" style="display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;font-size:12px;">โญ Star on GitHub</a>
573
- <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" class="btn-install-link" target="_blank" rel="noopener" onclick="posthog.capture('hero_codex_plugin_click',{cta:'install_codex_plugin'})" style="font-size:11px;color:var(--text-muted);text-decoration:none;padding:6px 10px;">Install Codex plugin โ†’</a>
638
+ <a href="/codex-plugin?utm_source=website&utm_medium=hero_cta&utm_campaign=codex_plugin&cta_id=hero_codex_plugin&cta_placement=hero" class="btn-install-link" onclick="posthog.capture('hero_codex_plugin_click',{cta:'install_codex_plugin'})" style="font-size:11px;color:var(--text-muted);text-decoration:none;padding:6px 10px;">Install Codex plugin โ†’</a>
639
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/plugins/cursor-marketplace" class="btn-install-link" target="_blank" rel="noopener" onclick="posthog.capture('hero_cursor_plugin_click',{cta:'install_cursor_plugin'})" style="font-size:11px;color:var(--text-muted);text-decoration:none;padding:6px 10px;">Install Cursor plugin โ†’</a>
574
640
  <a href="/go/gpt?utm_source=website&utm_medium=hero_cta&utm_campaign=chatgpt_gpt&cta_id=hero_open_gpt&cta_placement=hero" class="btn-gpt-page" target="_blank" rel="noopener" onclick="posthog.capture('hero_cta_click',{cta:'open_gpt'})" style="font-size:11px;padding:6px 12px;background:transparent;border:1px solid rgba(74,222,128,0.3);color:var(--green);">Open ThumbGate GPT</a>
575
641
  </div>
576
642
  </div>
@@ -594,44 +660,36 @@ __GA_BOOTSTRAP__
594
660
  <div class="first-gate-steps">
595
661
  <div class="first-gate-step">
596
662
  <strong>1. Install ThumbGate</strong>
597
- <p>Run <code>npx thumbgate init</code> in your repo. Or install the <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" style="color:var(--cyan);">Claude Extension</a>, <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" style="color:var(--cyan);">Codex plugin</a>, or <a href="/go/gpt" style="color:var(--cyan);">open the GPT</a>. Native ChatGPT rating buttons are not the ThumbGate capture path.</p>
663
+ <p>Run <code>npx thumbgate init</code> in your repo. Or install the <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" style="color:var(--cyan);">Claude Extension</a>, <a href="/codex-plugin" style="color:var(--cyan);">Codex plugin</a>, <a href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/plugins/cursor-marketplace" style="color:var(--cyan);">Cursor plugin</a>, or <a href="/go/gpt" style="color:var(--cyan);">open the GPT</a>. Native ChatGPT rating buttons are not the ThumbGate capture path.</p>
598
664
  </div>
599
665
  <div class="first-gate-step">
600
666
  <strong>2. Give feedback</strong>
601
- <p>When your agent makes a mistake, give it a <code>thumbs down</code>. ThumbGate captures the context and distills a lesson from up to 8 prior entries.</p>
667
+ <p>Give <code>thumbs up</code> when the agent follows your standards, or <code>thumbs down</code> when it misses. ThumbGate captures the context and distills a lesson from up to 8 prior entries.</p>
602
668
  </div>
603
669
  <div class="first-gate-step">
604
670
  <strong>3. The gate blocks the repeat</strong>
605
671
  <p>Next time the agent tries the same mistake, the PreToolUse hook fires and physically blocks it. Upgrade after one real blocked repeat when you need the dashboard and exports.</p>
606
672
  </div>
607
673
  </div>
608
- <div class="first-gate-example">thumbs down: the answer ignored my request for exact files and tests; next time include file paths, commands, and verification evidence.</div>
674
+ <div class="first-gate-examples" aria-label="ThumbGate feedback examples">
675
+ <div class="first-gate-example signal-good">thumbs up: this review named exact files, commands, and tests; repeat this evidence-first format.</div>
676
+ <div class="first-gate-example signal-fix">thumbs down: the answer ignored my request for exact files and tests; next time include file paths, commands, and verification evidence.</div>
677
+ </div>
609
678
  </div>
610
- <div class="proof-bar">
679
+ <nav class="proof-bar" aria-label="ThumbGate install and proof links">
611
680
  <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" target="_blank" rel="noopener" style="color:var(--cyan);font-weight:600;">Claude Extension โ†’</a>
612
- <span class="dot"></span>
613
681
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/.claude-plugin/README.md" target="_blank" rel="noopener">Claude marketplace install โ†’</a>
614
- <span class="dot"></span>
615
682
  <a href="/guide" rel="noopener">CLI setup guide โ†’</a>
616
- <span class="dot"></span>
617
- <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener">Codex plugin download โ†’</a>
618
- <span class="dot"></span>
683
+ <a href="/codex-plugin?utm_source=website&utm_medium=proof_bar&utm_campaign=codex_plugin&cta_id=proof_bar_codex_plugin&cta_placement=proof_bar">Codex plugin setup โ†’</a>
619
684
  <a href="/go/gpt?utm_source=website&utm_medium=proof_bar&utm_campaign=chatgpt_gpt&cta_id=proof_bar_open_gpt&cta_placement=proof_bar" target="_blank" rel="noopener">ThumbGate GPT โ†’</a>
620
- <span class="dot"></span>
621
685
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence โ†’</a>
622
- <span class="dot"></span>
623
686
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/THUMBGATE_BENCH.md" target="_blank" rel="noopener">ThumbGate Bench โ†’</a>
624
- <span class="dot"></span>
625
687
  <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">Proof-backed CI โ†’</a>
626
- <span class="dot"></span>
627
688
  <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">CI and proof lanes โ†’</a>
628
- <span class="dot"></span>
629
689
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/RELEASE_CONFIDENCE.md" target="_blank" rel="noopener">Release confidence โ†’</a>
630
- <span class="dot"></span>
631
690
  <a href="https://www.producthunt.com/products/thumbgate" target="_blank" rel="noopener">Product Hunt โ†’</a>
632
- <span class="dot"></span>
633
691
  <a href="#compatibility">Claude Code ยท Cursor ยท Codex ยท Gemini ยท Amp ยท OpenCode</a>
634
- </div>
692
+ </nav>
635
693
  </div>
636
694
  </section>
637
695
 
@@ -701,7 +759,7 @@ __GA_BOOTSTRAP__
701
759
  </div>
702
760
  <div style="display:flex;gap:12px;flex-wrap:wrap;">
703
761
  <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" class="btn-gpt-page" target="_blank" rel="noopener" onclick="posthog.capture('claude_section_extension_click',{cta:'install_claude_extension'})" style="background:#d97706;color:#fff;">Download Claude Extension (.mcpb)</a>
704
- <a href="/guides/claude-desktop" class="btn-free" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Claude Desktop setup guide</a>
762
+ <a href="/guide.html" class="btn-free" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Claude Desktop setup guide</a>
705
763
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/.claude-plugin/README.md" class="btn-free" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Claude plugin docs</a>
706
764
  </div>
707
765
  <p class="gpt-note"><strong>Claude Code Skill:</strong> Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on โ€œgateโ€, โ€œfeedbackโ€, โ€œblock mistakeโ€. Free skill on top of the same local gateway.</p>
@@ -744,30 +802,40 @@ __GA_BOOTSTRAP__
744
802
  <div class="section-label">Compatibility</div>
745
803
  <h2 class="section-title">One gateway across the agent surfaces you already use</h2>
746
804
  <div class="compatibility-grid">
747
- <a class="compat-card" href="/guides/claude-desktop" style="border-color:rgba(217,119,6,0.3);background:linear-gradient(135deg, rgba(217,119,6,0.06) 0%, var(--bg-card) 100%);">
805
+ <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" target="_blank" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_claude_desktop_click',{cta:'download_claude_desktop'})" style="border-color:rgba(217,119,6,0.3);background:linear-gradient(135deg, rgba(217,119,6,0.06) 0%, var(--bg-card) 100%);">
748
806
  <h3>๐Ÿงฉ Claude Desktop Extension</h3>
749
- <p>Install the published Claude Desktop plugin <code>.mcpb</code> bundle today. Claude Code users can add the repo marketplace immediately with <code>/plugin marketplace add</code>. No waiting for directory approval.</p>
750
- <div class="card-arrow" style="color:#d97706;">Get the Claude plugin โ†’</div>
807
+ <p>Install the published Claude Desktop plugin <code>.mcpb</code> bundle today. Claude Code users can add the repo marketplace immediately with <code>/plugin marketplace add</code>. No waiting for directory approval. <a href="/guide.html" style="color:var(--text-muted);text-decoration:underline;" onclick="event.stopPropagation();">60-second setup guide โ†’</a></p>
808
+ <div class="card-arrow" style="color:#d97706;">Download .mcpb bundle โ†’</div>
751
809
  </a>
752
- <a class="compat-card seo-card" href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/.claude/skills/thumbgate" target="_blank" rel="noopener">
810
+ <a class="compat-card seo-card" href="/guides/claude-code-prevent-repeated-mistakes.html" rel="noopener">
753
811
  <h3>โšก Claude Code Skill</h3>
754
812
  <p>Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on "gate", "feedback", "block mistake". Free skill on top of the same local gateway teams later harden into a shared workflow.</p>
755
- <div class="card-arrow">View skill on GitHub โ†’</div>
813
+ <div class="card-arrow">Read the Claude Code guide โ†’</div>
756
814
  </a>
757
- <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/claude-codex-bridge/INSTALL.md" target="_blank" rel="noopener">
815
+ <a class="compat-card" href="/guide.html" rel="noopener">
758
816
  <h3>๐Ÿค– AI CLIs</h3>
759
817
  <p>Claude Code, Codex, Gemini CLI, Amp, and OpenCode all use the same gateway and memory model. Any MCP-compatible agent gets pre-action gates, feedback memory, and enforcement out of the box.</p>
760
- <div class="card-arrow">View setup guide โ†’</div>
818
+ <div class="card-arrow">Open the setup guide โ†’</div>
761
819
  </a>
762
- <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/codex-profile/INSTALL.md" target="_blank" rel="noopener">
820
+ <a class="compat-card" href="/codex-plugin?utm_source=website&utm_medium=compatibility&utm_campaign=codex_plugin&cta_id=compat_codex_plugin&cta_placement=compatibility" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_codex_plugin_click',{cta:'open_codex_plugin_page'})">
763
821
  <h3>๐Ÿงฉ Codex plugin</h3>
764
- <p>Codex ships with a published standalone ThumbGate plugin bundle plus a repo-local plugin profile. Download the zip, extract it, and install without wiring MCP by hand.</p>
765
- <div class="card-arrow">Get the Codex plugin โ†’</div>
822
+ <p>Codex gets a standalone ThumbGate plugin bundle, a repo-local plugin profile, and the same auto-updating MCP launcher. The runtime resolves <code>thumbgate@latest</code> when Codex starts, so npm fixes reach active installs. The install page includes the zip, MCP config, and verification path in one place.</p>
823
+ <div class="card-arrow">Open the Codex install page โ†’</div>
766
824
  </a>
767
- <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/plugins" target="_blank" rel="noopener">
825
+ <a class="compat-card" href="/guides/cursor-prevent-repeated-mistakes.html" rel="noopener">
826
+ <h3>๐ŸŽฏ Cursor plugin</h3>
827
+ <p>Drop the ThumbGate MCP config into <code>.cursor/mcp.json</code> and Cursor gets the same pre-action gates as Claude Code and Codex. Ships with bundled rules, commands, hooks, and agents.</p>
828
+ <div class="card-arrow">Read the Cursor guide โ†’</div>
829
+ </a>
830
+ <a class="compat-card" href="/guide.html" rel="noopener">
768
831
  <h3>โœ๏ธ Editor workflows</h3>
769
- <p>Cursor ships with a bundled marketplace plugin. VS Code works when you run an MCP-compatible agent inside it.</p>
770
- <div class="card-arrow">Browse plugins โ†’</div>
832
+ <p>VS Code works when you run an MCP-compatible agent inside it (Continue, Cline, etc.). Any editor that speaks MCP stdio gets the same gateway.</p>
833
+ <div class="card-arrow">Open the setup guide โ†’</div>
834
+ </a>
835
+ <a class="compat-card" href="https://mcp.so/server/thumbgate" target="_blank" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_mcp_so_click',{cta:'view_mcp_directory'})">
836
+ <h3>๐Ÿ—‚๏ธ MCP Server Directory</h3>
837
+ <p>ThumbGate is listed on <code>mcp.so</code> so MCP-compatible clients can verify the package, copy the npx config, and confirm they are installing the real Pre-Action Gates server.</p>
838
+ <div class="card-arrow">View on mcp.so โ†’</div>
771
839
  </a>
772
840
  <a class="compat-card" href="/go/gpt?utm_source=website&utm_medium=compatibility&utm_campaign=chatgpt_gpt&cta_id=compat_open_gpt&cta_placement=compatibility" target="_blank" rel="noopener">
773
841
  <h3>๐Ÿ’ฌ ChatGPT GPT Actions</h3>
@@ -785,7 +853,7 @@ __GA_BOOTSTRAP__
785
853
  <div class="agent-grid">
786
854
  <div class="agent-card">
787
855
  <h3>๐Ÿ” Live Dashboard Demo</h3>
788
- <p>Search lessons, inspect gates, and see exactly why risky actions were blocked. No signup or install required.</p>
856
+ <p>Search lessons, inspect gates, mark a review checkpoint, and see only what changed since the last pass. No signup or install required.</p>
789
857
  <a href="/dashboard" style="display:inline-block;margin-top:12px;color:var(--cyan);font-weight:600;text-decoration:underline;">Open Dashboard Demo โ†’</a>
790
858
  </div>
791
859
  <div class="agent-card">
@@ -865,6 +933,40 @@ __GA_BOOTSTRAP__
865
933
  <p>Why Gemini CLI buyers start with memory and convert when they see how memory becomes real pre-action gates.</p>
866
934
  <div class="card-arrow">Read the Gemini guide โ†’</div>
867
935
  </a>
936
+ <a class="seo-card" href="/guides/autoresearch-agent-safety">
937
+ <div class="seo-kicker">Autoresearch</div>
938
+ <h3>Autoresearch Safety for Self-Improving Agents</h3>
939
+ <p>Why benchmark-search loops need gates for holdout tests, proof trails, reward hacking, and unsafe promotions.</p>
940
+ <div class="card-arrow">Read the Autoresearch guide โ†’</div>
941
+ </a>
942
+ </div>
943
+ </div>
944
+ </section>
945
+
946
+ <section class="autoresearch-pack" id="autoresearch-pack">
947
+ <div class="container">
948
+ <div class="autoresearch-panel">
949
+ <div class="section-label" style="text-align:left;">Autoresearch Safety Pack</div>
950
+ <h2>Stop self-improving coding loops from hacking the benchmark.</h2>
951
+ <p>Autoresearch loops run experiments, inspect metrics, and accept better variants. ThumbGate gives those loops a Reliability Gateway: Pre-Action Gates for skipped holdout tests, fake proof, reward hacking, unsafe edits, and promotion without verification evidence.</p>
952
+ <div class="autoresearch-grid">
953
+ <div class="autoresearch-card">
954
+ <h3>Guard the metric</h3>
955
+ <p>Require primary and holdout checks before an agent can call a variant better. Block cherry-picked runs and missing baselines.</p>
956
+ </div>
957
+ <div class="autoresearch-card">
958
+ <h3>Preserve proof trails</h3>
959
+ <p>Promotion needs commands, logs, changed files, and verification evidence so the win survives review instead of becoming a vague claim.</p>
960
+ </div>
961
+ <div class="autoresearch-card">
962
+ <h3>Ship into CI</h3>
963
+ <p>Start with templates for <code>npm test</code>, Playwright duration, bundle size, lint, and CI failures, then add Team gates for shared workflows.</p>
964
+ </div>
965
+ </div>
966
+ <div class="autoresearch-cta">
967
+ <a class="primary" href="/guides/autoresearch-agent-safety?utm_source=website&utm_medium=autoresearch_pack&utm_campaign=autoresearch_safety&cta_id=autoresearch_guide&cta_placement=autoresearch_pack">Read the Autoresearch guide</a>
968
+ <a class="secondary" href="/checkout/pro?utm_source=website&utm_medium=autoresearch_pack&utm_campaign=autoresearch_safety&cta_id=autoresearch_pro_trial&cta_placement=autoresearch_pack&plan_id=pro&landing_path=%2F">Start Pro trial</a>
969
+ </div>
868
970
  </div>
869
971
  </div>
870
972
  </section>
@@ -872,7 +974,7 @@ __GA_BOOTSTRAP__
872
974
  <!-- HOW IT WORKS -->
873
975
  <section class="how-it-works" id="how-it-works">
874
976
  <div class="container">
875
- <div class="section-label">New in v1.5.4</div>
977
+ <div class="section-label">New in v1.6.0</div>
876
978
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
877
979
  <div class="steps">
878
980
  <div class="step">
@@ -1228,7 +1330,7 @@ __GA_BOOTSTRAP__
1228
1330
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1229
1331
  <a href="/blog">Blog</a>
1230
1332
  </div>
1231
- <span class="footer-copy">ยฉ 2026 Max Smith KDP LLC ยท MIT License ยท v1.5.4</span>
1333
+ <span class="footer-copy">ยฉ 2026 Max Smith KDP LLC ยท MIT License ยท v1.6.0</span>
1232
1334
  </div>
1233
1335
  </footer>
1234
1336
 
package/public/learn.html CHANGED
@@ -12,6 +12,8 @@
12
12
  <meta property="og:type" content="website">
13
13
  <meta property="og:url" content="https://thumbgate-production.up.railway.app/learn">
14
14
  <link rel="canonical" href="https://thumbgate-production.up.railway.app/learn">
15
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
16
+ <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
15
17
 
16
18
  <script type="application/ld+json">
17
19
  {
@@ -105,7 +107,8 @@
105
107
  nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display: flex; gap: 1.5rem; align-items: center; }
106
108
  nav a { color: var(--muted); text-decoration: none; font-size: 0.9rem; }
107
109
  nav a:hover { color: var(--cyan); }
108
- nav .brand { color: var(--text); font-weight: 700; font-size: 1.1rem; }
110
+ nav .brand { color: var(--text); font-weight: 700; font-size: 1.1rem; display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
111
+ nav .brand .logo-mark { width: 28px; height: 28px; display: block; }
109
112
  h1 { font-size: 2.2rem; line-height: 1.2; margin: 2rem 0 1rem; }
110
113
  h2 { font-size: 1.5rem; margin: 2.5rem 0 1rem; color: var(--cyan); }
111
114
  p { color: var(--text); margin-bottom: 0.75rem; }
@@ -175,7 +178,7 @@
175
178
  <body>
176
179
 
177
180
  <nav>
178
- <a href="/" class="brand">๐Ÿ‘๐Ÿ‘Ž ThumbGate</a>
181
+ <a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
179
182
  <a href="/guide">Setup Guide</a>
180
183
  <a href="/learn">Learn</a>
181
184
  <a href="/dashboard">Dashboard</a>
@@ -261,6 +264,14 @@
261
264
  <span class="article-tag">Memory</span>
262
265
  <span class="article-tag">Enforcement</span>
263
266
  </a>
267
+
268
+ <a href="/guides/autoresearch-agent-safety" class="article-card">
269
+ <h3>Autoresearch Agent Safety for Self-Improving Coding Agents</h3>
270
+ <p>The control-plane story for benchmark-search loops that need holdout tests, proof trails, and reward-hacking gates.</p>
271
+ <span class="article-tag">Autoresearch</span>
272
+ <span class="article-tag">Holdout Proof</span>
273
+ <span class="article-tag">Gates</span>
274
+ </a>
264
275
  </div>
265
276
 
266
277
  <div class="cta-section">
@@ -4,6 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>ThumbGate โ€” Lessons Learned</title>
7
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
8
+ <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
7
9
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
8
10
  <style>
9
11
  *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
@@ -22,7 +24,8 @@
22
24
  /* NAV */
23
25
  nav { position: sticky; top: 0; z-index: 50; background: rgba(10,10,11,0.85); backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); padding: 14px 0; }
24
26
  nav .container { display: flex; justify-content: space-between; align-items: center; }
25
- .nav-logo { font-weight: 700; font-size: 15px; color: var(--text); text-decoration: none; }
27
+ .nav-logo { font-weight: 700; font-size: 15px; color: var(--text); text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
28
+ .nav-logo .logo-mark { width: 28px; height: 28px; display: block; }
26
29
  .nav-links { display: flex; gap: 16px; align-items: center; }
27
30
  .nav-links a { color: var(--text-muted); text-decoration: none; font-size: 13px; }
28
31
  .nav-links a:hover { color: var(--text); }
@@ -185,7 +188,7 @@
185
188
 
186
189
  <nav>
187
190
  <div class="container">
188
- <a href="/dashboard" class="nav-logo">๐Ÿ‘๐Ÿ‘Ž ThumbGate</a>
191
+ <a href="/dashboard" class="nav-logo"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
189
192
  <div class="nav-links">
190
193
  <a href="/dashboard">Dashboard</a>
191
194
  <a href="/lessons" class="active">Lessons</a>
package/public/pro.html CHANGED
@@ -11,6 +11,9 @@ __GOOGLE_SITE_VERIFICATION_META__
11
11
  <meta property="og:type" content="website">
12
12
  <meta property="og:url" content="__APP_ORIGIN__/pro">
13
13
  <link rel="canonical" href="__APP_ORIGIN__/pro">
14
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
15
+ <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
16
+ <meta property="og:image" content="/og.png">
14
17
  <meta name="keywords" content="ThumbGate Pro, AI agent reliability, pre-action gates, DPO export, local dashboard, review-ready evidence, Claude Code reliability, Codex reliability, Cursor reliability">
15
18
 
16
19
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
@@ -169,8 +172,12 @@ __GA_BOOTSTRAP__
169
172
  font-weight: 700;
170
173
  letter-spacing: -0.02em;
171
174
  text-decoration: none;
175
+ display: inline-flex;
176
+ align-items: center;
177
+ gap: 8px;
172
178
  }
173
179
 
180
+ .nav-logo .logo-mark { width: 28px; height: 28px; display: block; }
174
181
  .nav-logo span { color: var(--cyan); }
175
182
 
176
183
  .nav-links {
@@ -777,7 +784,7 @@ __GA_BOOTSTRAP__
777
784
  <body>
778
785
  <nav>
779
786
  <div class="container">
780
- <a href="/" class="nav-logo"><span>๐Ÿ‘๐Ÿ‘Ž</span> ThumbGate Pro</a>
787
+ <a href="/" class="nav-logo"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate Pro</span></a>
781
788
  <div class="nav-links">
782
789
  <a href="#why-pay">Why Pro</a>
783
790
  <a href="#proof">Proof</a>