From 30498a29d69cc43dc130d6b2fe6358de31210b3b Mon Sep 17 00:00:00 2001 From: Michael Preuss Date: Wed, 21 Jan 2026 15:14:20 -0800 Subject: [PATCH 1/7] feat(web): redesign Slack page Featured Workflow section with YouTube embed - Add side-by-side layout with video (60%) and workflow steps (40%) - Embed YouTube demo video with privacy-enhanced mode (youtube-nocookie.com) - Use rel=0 to minimize related video suggestions - Compact workflow step cards with smaller badges and tighter spacing - Responsive: stacks vertically on mobile - Add SlackThreadDemo component for hero section --- apps/web-roo-code/src/app/slack/page.tsx | 148 +++-- .../components/slack/slack-thread-demo.tsx | 548 ++++++++++++++++++ 2 files changed, 632 insertions(+), 64 deletions(-) create mode 100644 apps/web-roo-code/src/components/slack/slack-thread-demo.tsx diff --git a/apps/web-roo-code/src/app/slack/page.tsx b/apps/web-roo-code/src/app/slack/page.tsx index acdde4c264b..31160bdc26d 100644 --- a/apps/web-roo-code/src/app/slack/page.tsx +++ b/apps/web-roo-code/src/app/slack/page.tsx @@ -5,7 +5,6 @@ import { GitBranch, GraduationCap, Link2, - LucideIcon, MessageSquare, Settings, Shield, @@ -13,13 +12,15 @@ import { Users, Zap, } from "lucide-react" +import type { LucideIcon } from "lucide-react" import type { Metadata } from "next" -import { Button } from "@/components/ui" import { AnimatedBackground } from "@/components/homepage" +import { SlackThreadDemo } from "@/components/slack/slack-thread-demo" +import { Button } from "@/components/ui" +import { EXTERNAL_LINKS } from "@/lib/constants" import { SEO } from "@/lib/seo" import { ogImageUrl } from "@/lib/og" -import { EXTERNAL_LINKS } from "@/lib/constants" const TITLE = "Roo Code for Slack" const DESCRIPTION = @@ -69,7 +70,7 @@ export const metadata: Metadata = { // Invalidate cache when a request comes in, at most once every hour. export const revalidate = 3600 -interface ValueProp { +type ValueProp = { icon: LucideIcon title: string description: string @@ -112,7 +113,7 @@ const VALUE_PROPS: ValueProp[] = [ }, ] -interface WorkflowStep { +type WorkflowStep = { step: number title: string description: string @@ -145,7 +146,7 @@ const WORKFLOW_STEPS: WorkflowStep[] = [ }, ] -interface OnboardingStep { +type OnboardingStep = { icon: LucideIcon title: string description: string @@ -182,48 +183,54 @@ const ONBOARDING_STEPS: OnboardingStep[] = [ }, ] -export default function SlackPage() { +export default function SlackPage(): JSX.Element { return ( <> {/* Hero Section */}
-
-
- - Powered by Roo Code Cloud +
+
+
+ + Powered by Roo Code Cloud +
+

+ @Roomote: Your AI Team in Slack +

+

+ Mention @Roomote in any channel to explain code, plan features, or ship a PR, all + without leaving the conversation. +

+
-

- @Roomote: Your AI Team in Slack -

-

- Mention @Roomote in any channel to explain code, plan features, or ship a PR, all without - leaving the conversation. -

-
@@ -264,13 +271,13 @@ export default function SlackPage() {
{/* Featured Workflow Section */} -
+
-
+
Featured Workflow @@ -283,29 +290,42 @@ export default function SlackPage() {

-
- {/* Workflow Steps */} -
- {WORKFLOW_STEPS.map((step) => ( -
-
-
- {step.step} +
+
+ {/* YouTube Video Embed */} +
+