From c0b793cca0d734778393df0fa2815a6997332465 Mon Sep 17 00:00:00 2001 From: Bruno Bergher Date: Fri, 5 Dec 2025 15:48:00 +0000 Subject: [PATCH 01/10] New extension page --- apps/web-roo-code/src/app/extension/page.tsx | 81 +++++++++++ .../src/components/chromes/nav-bar.tsx | 126 +++++++++++------- .../src/components/homepage/features.tsx | 34 ++++- 3 files changed, 187 insertions(+), 54 deletions(-) create mode 100644 apps/web-roo-code/src/app/extension/page.tsx diff --git a/apps/web-roo-code/src/app/extension/page.tsx b/apps/web-roo-code/src/app/extension/page.tsx new file mode 100644 index 00000000000..931ac3dd5aa --- /dev/null +++ b/apps/web-roo-code/src/app/extension/page.tsx @@ -0,0 +1,81 @@ +/* eslint-disable react/jsx-no-target-blank */ + +import { getVSCodeDownloads } from "@/lib/stats" + +import { Button } from "@/components/ui" +import { + AnimatedBackground, + CodeExample, + CompanyLogos, + FAQSection, + Features, + InstallSection, + Testimonials, +} from "@/components/homepage" +import { EXTERNAL_LINKS } from "@/lib/constants" +import { ArrowRight } from "lucide-react" +import { StructuredData } from "@/components/structured-data" + +// Invalidate cache when a request comes in, at most once every hour. +export const revalidate = 3600 + +export default async function ExtensionPage() { + const downloads = await getVSCodeDownloads() + + return ( + <> + +
+ +
+
+
+
+

+ The Open Source AI Coding Assistant for serious work. +

+

+ Roo's specialized modes stay on task and ship great code. The Orchestrator + coordinates them all and can runs for hours. +

+

+ Fully model-agnostic so you can use the best (or mosrt cost-effective) model for + each task. No lock-ins. +

+
+ + +
+
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ + + ) +} diff --git a/apps/web-roo-code/src/components/chromes/nav-bar.tsx b/apps/web-roo-code/src/components/chromes/nav-bar.tsx index 2442e3b759e..2ca37acd2aa 100644 --- a/apps/web-roo-code/src/components/chromes/nav-bar.tsx +++ b/apps/web-roo-code/src/components/chromes/nav-bar.tsx @@ -13,7 +13,7 @@ import { EXTERNAL_LINKS } from "@/lib/constants" import { useLogoSrc } from "@/lib/hooks/use-logo-src" import { ScrollButton } from "@/components/ui" import ThemeToggle from "@/components/chromes/theme-toggle" -import { ChevronDown, X } from "lucide-react" +import { Brain, ChevronDown, Cloud, Puzzle, X } from "lucide-react" interface NavBarProps { stars: string | null @@ -25,7 +25,7 @@ export function NavBar({ stars, downloads }: NavBarProps) { const logoSrc = useLogoSrc() return ( -
+
@@ -34,63 +34,80 @@ export function NavBar({ stars, downloads }: NavBarProps) {
{/* Desktop Navigation */} -