Skip to content

Redesign proof page with marketing content and CTAs#452

Merged
AnthonyRonning merged 1 commit intomasterfrom
feature/update-proof-page
Apr 9, 2026
Merged

Redesign proof page with marketing content and CTAs#452
AnthonyRonning merged 1 commit intomasterfrom
feature/update-proof-page

Conversation

@marksftw
Copy link
Copy Markdown
Contributor

@marksftw marksftw commented Mar 2, 2026

Summary

  • Redesigned /proof page with 6 sections: hero, data flow diagram, live attestation, privacy spectrum comparison, security team facts, and FAQ
  • Added interactive data flow diagram showing encryption pipeline (device → enclave → GPU TEE → open source)
  • Added "Introduce Us to Your Security Team" CTA with contact modal (copyable email fields)
  • Added "Introduce Us to Your AI Agent" CTA with modal guiding users to point agents at llms-full.txt
  • Added privacy spectrum comparison cards (Standard AI vs Privacy Proxy vs Hardware-Encrypted AI)
  • Added security facts checklist for technical evaluation
  • Added FAQ section with TEE explainers

Test plan

  • Verify page renders correctly in both light and dark mode
  • Test responsive layout at mobile, tablet, and desktop widths
  • Test data flow diagram arrow direction (horizontal on desktop, vertical on mobile)
  • Test Contact modal: copy buttons for email, subject, message, and copy all
  • Test Agent modal: copy buttons for URL and sample prompt
  • Verify live attestation still loads and displays correctly
  • Check all external links (GitHub repos, AWS docs, mailto)

Open with Devin

Summary by CodeRabbit

  • New Features

    • Interactive multi-section Verify page with a responsive data-flow diagram, live attestation area, AI privacy comparison cards, security facts panel, contact/agent modal, and FAQ.
    • Clipboard-enabled copy actions with user feedback and mailto/contact button for easy sharing.
  • Bug Fixes / Improvements

    • Improved clipboard feedback and error handling; removed debug logging.
    • Updated page heading and supporting links/copy to clarify privacy and verification.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 2, 2026

Deploying maple with  Cloudflare Pages  Cloudflare Pages

Latest commit: 30a4904
Status: ✅  Deploy successful!
Preview URL: https://6da431ce.maple-ca8.pages.dev
Branch Preview URL: https://feature-update-proof-page.maple-ca8.pages.dev

View logs

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 2, 2026

Warning

Rate limit exceeded

@marksftw has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 19 minutes and 31 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 19 minutes and 31 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3fe5a446-79a0-484a-bc4f-4fec693d2557

📥 Commits

Reviewing files that changed from the base of the PR and between 71844f8 and 30a4904.

📒 Files selected for processing (1)
  • frontend/src/routes/proof.tsx
📝 Walkthrough

Walkthrough

Adds multiple local UI components and restructures the Verify (/proof) route into a multi-section page: data-flow diagram and repo links, live cryptographic attestation with loader/error and attestation display, privacy-comparison cards, security facts with contact/agent actions, and an FAQ. All changes are localized to the proof route file.

Changes

Cohort / File(s) Summary
Proof page & UI components
frontend/src/routes/proof.tsx
Adds many local presentational/interactive components (DataFlowDiagram, CopyButton with clipboard handling and "Copied" feedback, ContactButton, AgentModal using dialog primitives, ApproachCard, SecurityFact, ProofFAQ). Restructures page into multiple sections (data flow + repo links, live attestation with loader/error + ProofDisplay, AI privacy grid, security facts + contact/agent actions, FAQ). Updates MarketingHeader copy and repo references. Removes a debug console.log and adds console.error for clipboard failures. Imports added for React state, lucide icons, and dialog primitives.

Sequence Diagram(s)

(No sequence diagrams generated — changes are primarily UI restructuring and new local components without a multi-component sequential flow that requires visualization.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested reviewers

  • AnthonyRonning

Poem

🐰
I nibble nodes and draw the flow,
Cards and modals in a row,
A copied clap, a link to send,
Facts and FAQs hop to the end,
Quiet proof — a private glow.

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: redesigning the proof page with marketing-focused content and call-to-action elements, which matches the six-section redesign, added CTAs, and marketing header updates in the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/update-proof-page

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
frontend/src/routes/proof.tsx (1)

255-259: Add error handling for clipboard API.

navigator.clipboard.writeText() can reject if the clipboard API is unavailable or permission is denied. Currently, failures are silently ignored.

♻️ Suggested improvement with error handling
   const handleCopy = async () => {
-    await navigator.clipboard.writeText(text);
-    setCopied(true);
-    setTimeout(() => setCopied(false), 2000);
+    try {
+      await navigator.clipboard.writeText(text);
+      setCopied(true);
+      setTimeout(() => setCopied(false), 2000);
+    } catch {
+      // Clipboard access denied or unavailable - fail silently or add user feedback
+    }
   };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/src/routes/proof.tsx` around lines 255 - 259, The handleCopy
function currently calls navigator.clipboard.writeText(text) without handling
rejections; wrap the writeText call in a try/catch inside handleCopy, call
setCopied(true) only on successful await, and in the catch log or surface the
error (e.g., console.error or show a toast) and ensure setCopied(false) is used
to clear any state; also consider a fallback behavior (e.g.,
select-and-execCommand or a user-visible error) when navigator.clipboard is
unavailable before calling navigator.clipboard.writeText.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@frontend/src/routes/proof.tsx`:
- Around line 255-259: The handleCopy function currently calls
navigator.clipboard.writeText(text) without handling rejections; wrap the
writeText call in a try/catch inside handleCopy, call setCopied(true) only on
successful await, and in the catch log or surface the error (e.g., console.error
or show a toast) and ensure setCopied(false) is used to clear any state; also
consider a fallback behavior (e.g., select-and-execCommand or a user-visible
error) when navigator.clipboard is unavailable before calling
navigator.clipboard.writeText.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c118743 and c2909b4.

📒 Files selected for processing (1)
  • frontend/src/routes/proof.tsx

Comment thread frontend/src/routes/proof.tsx Outdated
Comment on lines +308 to +346
<div className="flex flex-col gap-4 mt-2">
{/* To field */}
<div className="flex flex-col gap-1.5">
<label className="text-sm font-medium text-muted-foreground">To</label>
<div className="flex items-center justify-between gap-2 px-3 py-2 rounded-md border border-input bg-[hsl(var(--muted))]/50">
<span className="text-sm font-mono">{CONTACT_EMAIL}</span>
<CopyButton text={CONTACT_EMAIL} label="Copy" />
</div>
</div>

{/* Subject field */}
<div className="flex flex-col gap-1.5">
<label className="text-sm font-medium text-muted-foreground">Subject</label>
<div className="flex items-center justify-between gap-2 px-3 py-2 rounded-md border border-input bg-[hsl(var(--muted))]/50">
<span className="text-sm">{CONTACT_SUBJECT}</span>
<CopyButton text={CONTACT_SUBJECT} label="Copy" />
</div>
</div>

{/* Body field */}
<div className="flex flex-col gap-1.5">
<div className="flex items-center justify-between">
<label className="text-sm font-medium text-muted-foreground">Message</label>
<CopyButton text={CONTACT_BODY} label="Copy message" />
</div>
<div className="px-3 py-2 rounded-md border border-input bg-[hsl(var(--muted))]/50">
<pre className="text-sm whitespace-pre-wrap font-sans text-foreground/80">
{CONTACT_BODY}
</pre>
</div>
</div>

{/* Copy all */}
<div className="flex justify-end pt-2">
<CopyButton
text={`To: ${CONTACT_EMAIL}\nSubject: ${CONTACT_SUBJECT}\n\n${CONTACT_BODY}`}
label="Copy all"
/>
</div>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the copy pasting for email sending here is very strange. there's standard email client popups that should be used instead

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call, changed it to a standard mailto with pre-populated values

@marksftw marksftw force-pushed the feature/update-proof-page branch from c2909b4 to fcbcbc5 Compare April 9, 2026 20:44
devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@marksftw marksftw force-pushed the feature/update-proof-page branch from fcbcbc5 to 71844f8 Compare April 9, 2026 20:49
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
frontend/src/routes/proof.tsx (1)

252-263: Consider cleaning up the timeout on unmount.

If the component unmounts within the 2-second feedback window, the setTimeout callback will still fire. While React 18+ handles this gracefully without errors, adding cleanup via useEffect would be more robust.

♻️ Optional cleanup pattern
 function CopyButton({ text, label }: { text: string; label: string }) {
   const [copied, setCopied] = useState(false);
+  const timeoutRef = useRef<number | null>(null);
+
+  useEffect(() => {
+    return () => {
+      if (timeoutRef.current) clearTimeout(timeoutRef.current);
+    };
+  }, []);

   const handleCopy = async () => {
     try {
       await navigator.clipboard.writeText(text);
       setCopied(true);
-      setTimeout(() => setCopied(false), 2000);
+      timeoutRef.current = window.setTimeout(() => setCopied(false), 2000);
     } catch {
       console.error("Failed to copy to clipboard");
     }
   };

Note: You'd need to add useRef to the React imports.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/src/routes/proof.tsx` around lines 252 - 263, The CopyButton
component's handleCopy starts a 2s setTimeout but doesn't clear it on unmount;
add a timeout ref (via useRef) to store the timer id when calling setTimeout
inside handleCopy, import useRef from React, and add a useEffect with a cleanup
function that clears the timeout (clearTimeout) using that ref (and resets the
ref) to prevent the callback from firing after unmount; keep setCopied behavior
the same but cancel the pending timer on unmount or when a new copy occurs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@frontend/src/routes/proof.tsx`:
- Around line 252-263: The CopyButton component's handleCopy starts a 2s
setTimeout but doesn't clear it on unmount; add a timeout ref (via useRef) to
store the timer id when calling setTimeout inside handleCopy, import useRef from
React, and add a useEffect with a cleanup function that clears the timeout
(clearTimeout) using that ref (and resets the ref) to prevent the callback from
firing after unmount; keep setCopied behavior the same but cancel the pending
timer on unmount or when a new copy occurs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0cdf348d-8fb5-4a9a-9b6a-766c2746aa96

📥 Commits

Reviewing files that changed from the base of the PR and between fcbcbc5 and 71844f8.

📒 Files selected for processing (1)
  • frontend/src/routes/proof.tsx

Add data flow diagram, privacy spectrum comparison cards, security team
facts section, FAQ, contact modal with copyable fields, and AI agent
introduction modal with llms-full.txt integration.
@marksftw marksftw force-pushed the feature/update-proof-page branch from 71844f8 to 30a4904 Compare April 9, 2026 20:54
@marksftw
Copy link
Copy Markdown
Contributor Author

marksftw commented Apr 9, 2026

Ready for final review. Code review comments are fixed and code updated to latest from master.

@AnthonyRonning AnthonyRonning merged commit c6f6a36 into master Apr 9, 2026
12 checks passed
@AnthonyRonning AnthonyRonning deleted the feature/update-proof-page branch April 9, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants