diff --git a/apps/web-roo-code/public/heroes/agent-pr-fixer.png b/apps/web-roo-code/public/heroes/agent-pr-fixer.png new file mode 100644 index 000000000000..f33c926e6c6e Binary files /dev/null and b/apps/web-roo-code/public/heroes/agent-pr-fixer.png differ diff --git a/apps/web-roo-code/src/app/pr-fixer/PrFixerContent.tsx b/apps/web-roo-code/src/app/pr-fixer/PrFixerContent.tsx new file mode 100644 index 000000000000..285a28e6f6eb --- /dev/null +++ b/apps/web-roo-code/src/app/pr-fixer/PrFixerContent.tsx @@ -0,0 +1,240 @@ +"use client" + +import { ArrowRight, GitPullRequest, History, Key, MessageSquareCode, Wrench, type LucideIcon } from "lucide-react" +import Image from "next/image" +import Link from "next/link" + +import { Button } from "@/components/ui" +import { AnimatedBackground } from "@/components/homepage" +import { EXTERNAL_LINKS } from "@/lib/constants" +import { trackGoogleAdsConversion } from "@/lib/analytics/google-ads" + +// Workaround for next/image choking on these for some reason +import hero from "/public/heroes/agent-pr-fixer.png" + +interface Feature { + icon: LucideIcon + title: string + description: string | React.ReactNode + logos?: string[] +} + +const workflowSteps: Feature[] = [ + { + icon: GitPullRequest, + title: "1. Connect your GitHub repositories", + description: "Pick which repos the PR Fixer can work on by pushing to ongoing branches.", + }, + { + icon: MessageSquareCode, + title: "2. Invoke from a comment", + description: + 'Ask the agent to fix issues directly from GitHub PR comments (e.g. "@roomote: fix these review comments"). It’s fully aware of the entire comment history and latest diffs and focuses on fixing them – not random changes to your code.', + }, + { + icon: Wrench, + title: "3. Get clean scoped commits", + description: ( + <> + The agent proposes targeted changes and pushes concise commits or patch suggestions you (or{" "} + PR Reviewer) can review and merge quickly. + + ), + }, +] + +const howItWorks: Feature[] = [ + { + icon: History, + title: "Comment-history aware", + description: + "Understands the entire conversation on the PR – previous reviews, your replies, follow-ups – and uses that context to produce accurate fixes.", + }, + { + icon: Key, + title: "Bring your own key", + description: + "Use your preferred models at full strength. We optimize prompts and execution without capping your model to protect our margins.", + }, + { + icon: GitPullRequest, + title: "Repository- and diff-aware", + description: + "Analyzes the full repo context and the latest diff to ensure fixes align with project conventions and pass checks.", + }, +] + +export function PrFixerContent() { + return ( + <> +
+ +
+
+
+
+

+ + State-of-the-art fixes for the comments on your PRs. +

+ +
+

+ Roo Code{"'"}s PR Fixer applies high-quality changes to your PRs, right from + GitHub. Invoke via a PR comment and it will read the entire comment history to + understand context, agreements, and tradeoffs — then implement the right fix. +

+

+ As always, you bring the model key; we orchestrate smart, efficient workflows. +

+
+ + {/* Cross-agent link */} +
+ Works great with + + + PR Reviewer Agent + + +
+
+ +
+ + + (cancel anytime) + +
+
+ +
+
+
+ Example of a PR Fixer applying changes from review comments +
+
+
+
+
+
+ + {/* How It Works Section */} +
+
+
+
+

How It Works

+
+
+ +
+
    + {workflowSteps.map((step, index) => { + const Icon = step.icon + return ( +
  • + +

    + {step.title} +

    +
    + {step.description} +
    +
  • + ) + })} +
+
+
+
+ +
+
+
+
+

+ Why Roo Code{"'"}s PR Fixer is different +

+
+
+ +
+
    + {howItWorks.map((feature, index) => { + const Icon = feature.icon + return ( +
  • + +

    + {feature.title} +

    +
    + {feature.description} +
    +
  • + ) + })} +
+
+
+
+ + {/* CTA Section */} +
+
+
+

+ Ship fixes, not follow-ups. +

+

+ Let Roo Code{"'"}s PR Fixer turn your review feedback into clean, ready-to-merge commits. +

+
+ +
+
+
+
+ + ) +} diff --git a/apps/web-roo-code/src/app/pr-fixer/page.tsx b/apps/web-roo-code/src/app/pr-fixer/page.tsx new file mode 100644 index 000000000000..3d6e1f865de9 --- /dev/null +++ b/apps/web-roo-code/src/app/pr-fixer/page.tsx @@ -0,0 +1,60 @@ +import type { Metadata } from "next" + +import { SEO } from "@/lib/seo" +import { ogImageUrl } from "@/lib/og" +import { PrFixerContent } from "./PrFixerContent" + +const TITLE = "PR Fixer" +const DESCRIPTION = + "Automatically apply high-quality fixes to your pull requests with comment-aware, GitHub-native workflows." +const OG_DESCRIPTION = "Transform review feedback into clean commits" +const PATH = "/pr-fixer" + +export const metadata: Metadata = { + title: TITLE, + description: DESCRIPTION, + alternates: { + canonical: `${SEO.url}${PATH}`, + }, + openGraph: { + title: TITLE, + description: DESCRIPTION, + url: `${SEO.url}${PATH}`, + siteName: SEO.name, + images: [ + { + url: ogImageUrl(TITLE, OG_DESCRIPTION), + width: 1200, + height: 630, + alt: TITLE, + }, + ], + locale: SEO.locale, + type: "website", + }, + twitter: { + card: SEO.twitterCard, + title: TITLE, + description: DESCRIPTION, + images: [ogImageUrl(TITLE, OG_DESCRIPTION)], + }, + keywords: [ + ...SEO.keywords, + "PR fixer", + "pull request fixes", + "code fixes", + "GitHub PR", + "automated code fixes", + "comment-aware agent", + "repository-aware fixes", + "bring your own key", + "BYOK AI", + "code quality", + "cloud agents", + "AI development team", + ], +} + +export default function AgentPrFixerPage() { + return +} diff --git a/apps/web-roo-code/src/app/reviewer/ReviewerContent.tsx b/apps/web-roo-code/src/app/reviewer/ReviewerContent.tsx index f8ccb9abaffc..3f5a1cf12a01 100644 --- a/apps/web-roo-code/src/app/reviewer/ReviewerContent.tsx +++ b/apps/web-roo-code/src/app/reviewer/ReviewerContent.tsx @@ -9,8 +9,10 @@ import { GitPullRequest, Key, MessageSquareCode, + Wrench, } from "lucide-react" import Image from "next/image" +import Link from "next/link" import { Button } from "@/components/ui" import { AnimatedBackground } from "@/components/homepage" @@ -86,8 +88,10 @@ export function ReviewerContent() {

+ Get comprehensive code reviews that save you time, not tokens.

+

Regular AI code review tools cap model usage to protect their margins from fixed @@ -100,6 +104,19 @@ export function ReviewerContent() { your pull request queue moving.

+ + {/* Cross-agent link */} +
+ Works great with + + + PR Fixer Agent + + +
+ + {cloudDropdownOpen && ( +
+
+ setCloudDropdownOpen(false)} + className="rounded-md px-3 py-2 transition-colors hover:bg-accent/50 hover:text-foreground"> + Cloud + + setCloudDropdownOpen(false)} + className="rounded-md px-3 py-2 transition-colors hover:bg-accent/50 hover:text-foreground"> + PR Reviewer + + setCloudDropdownOpen(false)} + className="rounded-md px-3 py-2 transition-colors hover:bg-accent/50 hover:text-foreground"> + PR Fixer + +
+
+ )} +
+