From bca26cb0b6a1fc17cdb166e4200c5be2fda7796d Mon Sep 17 00:00:00 2001 From: Oleh Veheria Date: Sat, 22 Aug 2026 14:28:12 +0200 Subject: [PATCH 1/3] fix(landing): un-layer focus-ring radius that beat Tailwind pill utilities Tailwind v4 wraps its own utilities in @layer; plain (un-layered) CSS always wins over layered CSS regardless of specificity. a:focus-visible's border-radius:2px would have overridden any rounded-full button on focus before it ever got a chance to render as a pill. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_016hYVVizgvJ4wZBug9XTjVG (cherry picked from commit dd2d3cbc68169d6a026a7f772134d6683638230d) --- landing/src/styles/global.css | 1 - 1 file changed, 1 deletion(-) diff --git a/landing/src/styles/global.css b/landing/src/styles/global.css index aecbb94..67bce60 100644 --- a/landing/src/styles/global.css +++ b/landing/src/styles/global.css @@ -80,7 +80,6 @@ a:focus-visible { outline: 2px solid var(--color-indigo); outline-offset: 2px; - border-radius: 2px; } @media (prefers-reduced-motion: reduce) { From 165f547bb2e279ce9be907c40c15c6e1a3fc1294 Mon Sep 17 00:00:00 2001 From: Oleh Veheria Date: Sat, 22 Aug 2026 14:28:18 +0200 Subject: [PATCH 2/3] feat(landing): restyle homepage with pill CTAs and a convergence diagram Ports the pixel-polished redesign into the real Astro/Tailwind page: pill- shaped CTAs and verdict badges, corner-accent property cards (full-length colored left+bottom border per property), a hero SVG showing five owner delegates' verdicts converging through a red-line gate into one verified line, and a receipt-style verdict list with the masked-reason row. Also fixes two live bugs the redesign pass surfaced: Footer's mailto pointed at a personal address instead of hello@parleyprotocol.com, and 404's CTA used a rounded-rect instead of matching the site's pill buttons. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_016hYVVizgvJ4wZBug9XTjVG (cherry picked from commit 940f81113fa423622e206b5a359ea9313b3a05a7) --- landing/src/components/Footer.astro | 2 +- landing/src/pages/404.astro | 2 +- landing/src/pages/index.astro | 691 ++++++++++++++++++++-------- 3 files changed, 506 insertions(+), 189 deletions(-) diff --git a/landing/src/components/Footer.astro b/landing/src/components/Footer.astro index c146577..8aa9ec6 100644 --- a/landing/src/components/Footer.astro +++ b/landing/src/components/Footer.astro @@ -19,7 +19,7 @@ const links = [ fill: true, }, { - href: "mailto:oleh@veheria.tech", + href: "mailto:hello@parleyprotocol.com", label: "Contact", icon: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z", fill: true, diff --git a/landing/src/pages/404.astro b/landing/src/pages/404.astro index ad9130b..49b67ee 100644 --- a/landing/src/pages/404.astro +++ b/landing/src/pages/404.astro @@ -26,7 +26,7 @@ import Footer from "../components/Footer.astro";
Back to Parley diff --git a/landing/src/pages/index.astro b/landing/src/pages/index.astro index b35e67e..37a6112 100644 --- a/landing/src/pages/index.astro +++ b/landing/src/pages/index.astro @@ -1,233 +1,550 @@ --- import Layout from "../layouts/Layout.astro"; import Header from "../components/Header.astro"; -import Tape from "../components/Tape.astro"; -import TapeSnippet from "../components/TapeSnippet.astro"; import Footer from "../components/Footer.astro"; +import { tapeSnippet, tapeColorClass } from "../data/tape"; + +const DEMO_URL = "/demo/"; + +const wrap = "mx-auto w-full max-w-[1372px] px-6 md:px-16 lg:px-24"; const btnPrimary = - "rounded-[10px] bg-indigo px-[26px] py-[14px] text-[15px] font-[640] text-white shadow-[inset_0_1px_0_rgba(255,255,255,.10)] transition-all duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:brightness-[1.06] active:translate-y-0 active:scale-[0.98]"; + "inline-flex min-h-12 items-center justify-center gap-2 rounded-full bg-indigo px-7 py-3.5 text-[15px] font-[640] text-white shadow-[inset_0_1px_0_rgba(255,255,255,.10)] transition-all duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] hover:-translate-y-px hover:brightness-[1.06] active:translate-y-0 active:scale-[0.98]"; -const DEMO_URL = "/demo/"; -const README_30S_URL = "https://github.com/5uper0/parley#see-it-in-30-seconds"; - -const steps = [ - { - numeral: "01", - numeralColor: "text-redline", - title: "Red lines", - desc: "Hard constraints as code predicates. A crossed line is rejected, never negotiated away.", - tapeRef: "cara → verdict: red-line", - tapeRefColor: "text-muted", - }, - { - numeral: "02", - numeralColor: "text-masked", - title: "Masked verdict", - desc: "The coordinator sees only a masked ok/red-line verdict — never your private sheet or why a line was crossed.", - tapeRef: "dan's sheet: private, never shared", - tapeRefColor: "text-muted", - }, - { - numeral: "03", - numeralColor: "text-indigo", - title: "Max-min consensus", - desc: "Among feasible options, lift the least-happy party. No feasible option = honest deadlock.", - tapeRef: "max-min → option B", - tapeRefColor: "text-muted", - }, - { - numeral: "04", - numeralColor: "text-verify", - title: "Verifiable transcript", - desc: "A tamper-evident SHA-256 record. Replay your own sheet to prove no red line was crossed.", - tapeRef: "✓ sha256 verified by 3/3 owners", - tapeRefColor: "text-verify", - }, -]; ---- +const btnGhost = + "group inline-flex min-h-12 items-center gap-1.5 text-[15px] font-medium text-muted transition-colors hover:text-ink"; - -
- +const propBase = + "rounded-[14px] border-t border-r border-b-[3px] border-l-[3px] border-hairline bg-surface"; -
- -
-
-

- PROVABLE, NOT HOPED -

-

- Zero betrayals, - provably. -

-

- The trust layer for the agent economy. Agents with rival owners reach - consensus without exposing a single private preference. -

- -
+const deviceBlock = + "overflow-x-auto rounded-[10px] border border-hairline bg-bg px-[18px] py-4 font-mono text-[12.5px] leading-[1.9] text-muted"; -
+const jsonLd = JSON.stringify({ + "@context": "https://schema.org", + "@type": "SoftwareApplication", + name: "Parley", + url: "https://parleyprotocol.com/", + applicationCategory: "DeveloperApplication", + operatingSystem: "Any", + description: + "Provable consensus for AI agents of rival owners: deterministic red lines, max-min consensus over masked verdicts, and a verifiable non-betrayal transcript. No cryptocurrency or blockchain; self-hosted, open source.", + license: "https://github.com/5uper0/parley/blob/main/LICENSE", + offers: { "@type": "Offer", price: "0", priceCurrency: "USD" }, + codeRepository: "https://github.com/5uper0/parley", +}); +--- - -
-

- 01 — THE GAP NOBODY PRODUCTISED -

-

- Most agent tooling solves transport (A2A, MCP), 1:1 agentic commerce, - or cooperative debate between agents of the same owner. -

-

- Parley solves the gap: delegates of different, conflicting, private - owners reaching a decision none of them can rig — and proving it. -

-
+ +