Skip to content

Commit 044b6a8

Browse files
committed
Merge branch 'main' of github.com:RooVetGit/Roo-Code into feat/new-textarea
2 parents d9f92e7 + 13534cc commit 044b6a8

40 files changed

+1451
-117
lines changed
Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,67 @@
1-
name: Update Contributors
1+
name: Update Contributors # Refresh contrib.rocks image cache
22

33
on:
4-
push:
5-
branches:
6-
- main
74
workflow_dispatch:
85

6+
permissions:
7+
contents: write
8+
pull-requests: write
9+
910
jobs:
10-
update-contributors:
11+
refresh-contrib-cache:
1112
runs-on: ubuntu-latest
12-
permissions:
13-
contents: write # Needed for pushing changes.
14-
pull-requests: write # Needed for creating PRs.
1513
steps:
16-
- name: Checkout code
14+
- name: Checkout
1715
uses: actions/checkout@v4
18-
- name: Setup Node.js and pnpm
19-
uses: ./.github/actions/setup-node-pnpm
20-
- name: Disable Husky
16+
17+
- name: Bump cacheBust in all README files
2118
run: |
22-
echo "HUSKY=0" >> $GITHUB_ENV
23-
git config --global core.hooksPath /dev/null
24-
- name: Update contributors and format
19+
set -euo pipefail
20+
TS="$(date +%s)"
21+
# Target only the root README.md and localized READMEs under locales/*/README.md
22+
mapfile -t FILES < <(git ls-files README.md 'locales/*/README.md' || true)
23+
24+
if [ "${#FILES[@]}" -eq 0 ]; then
25+
echo "No target README files found." >&2
26+
exit 1
27+
fi
28+
29+
UPDATED=0
30+
for f in "${FILES[@]}"; do
31+
if grep -q 'cacheBust=' "$f"; then
32+
# Use portable sed in GNU environment of ubuntu-latest
33+
sed -i -E "s/cacheBust=[0-9]+/cacheBust=${TS}/g" "$f"
34+
echo "Updated cacheBust in $f"
35+
UPDATED=1
36+
else
37+
echo "Warning: cacheBust parameter not found in $f" >&2
38+
fi
39+
done
40+
41+
if [ "$UPDATED" -eq 0 ]; then
42+
echo "No files were updated. Ensure READMEs embed contrib.rocks with cacheBust param." >&2
43+
exit 1
44+
fi
45+
46+
- name: Detect changes
47+
id: changes
2548
run: |
26-
pnpm update-contributors
27-
npx prettier --write README.md locales/*/README.md
28-
if git diff --quiet; then echo "changes=false" >> $GITHUB_OUTPUT; else echo "changes=true" >> $GITHUB_OUTPUT; fi
29-
id: check-changes
30-
env:
31-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49+
if git diff --quiet; then
50+
echo "changed=false" >> $GITHUB_OUTPUT
51+
else
52+
echo "changed=true" >> $GITHUB_OUTPUT
53+
fi
54+
3255
- name: Create Pull Request
33-
if: steps.check-changes.outputs.changes == 'true'
56+
if: steps.changes.outputs.changed == 'true'
3457
uses: peter-evans/create-pull-request@v7
3558
with:
3659
token: ${{ secrets.GITHUB_TOKEN }}
3760
commit-message: "docs: update contributors list [skip ci]"
3861
committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
39-
branch: update-contributors
62+
branch: refresh-contrib-cache
4063
delete-branch: true
41-
title: "Update contributors list"
64+
title: "Refresh contrib.rocks image cache (all READMEs)"
4265
body: |
43-
Automated update of contributors list and related files
44-
45-
This PR was created automatically by a GitHub Action workflow and includes all changed files.
66+
Automated refresh of the contrib.rocks image cache by bumping the cacheBust parameter in README.md and locales/*/README.md.
4667
base: main

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Roo Code Changelog
22

3+
## [3.28.14] - 2025-09-30
4+
5+
![3.28.14 Release - GLM-4.6 Model Support](/releases/3.28.14-release.png)
6+
7+
- Add support for GLM-4.6 model for z.ai provider (#8406 by @dmarkey, PR by @roomote)
8+
9+
## [3.28.13] - 2025-09-29
10+
11+
- Fix: Remove topP parameter from Bedrock inference config (#8377 by @ronyblum, PR by @daniel-lxs)
12+
- Fix: Correct Vertex AI Sonnet 4.5 model configuration (#8387 by @nickcatal, PR by @mrubens!)
13+
14+
## [3.28.12] - 2025-09-29
15+
16+
- Fix: Correct Anthropic Sonnet 4.5 model ID and add Bedrock 1M context checkbox (thanks @daniel-lxs!)
17+
18+
## [3.28.11] - 2025-09-29
19+
20+
- Fix: Correct AWS Bedrock Claude Sonnet 4.5 model identifier (#8371 by @sunhyung, PR by @app/roomote)
21+
- Fix: Correct Claude Sonnet 4.5 model ID format (thanks @daniel-lxs!)
22+
23+
## [3.28.10] - 2025-09-29
24+
25+
![3.28.10 Release - Kangaroo Writing Sonnet 4.5](/releases/3.28.10-release.png)
26+
27+
- Feat: Add Sonnet 4.5 support (thanks @daniel-lxs!)
28+
- Fix: Resolve max_completion_tokens issue for GPT-5 models in LiteLLM provider (#6979 by @lx1054331851, PR by @roomote)
29+
- Fix: Make chat icons properly sized with shrink-0 class (thanks @mrubens!)
30+
- Enhancement: Track telemetry settings changes for better analytics (thanks @mrubens!)
31+
- Web: Add testimonials section to website (thanks @brunobergher!)
32+
- CI: Refresh contrib.rocks cache workflow for contributor badges (thanks @hannesrudolph!)
33+
334
## [3.28.9] - 2025-09-26
435

536
![3.28.9 Release - Supernova Upgrade](/releases/3.28.9-release.png)

apps/web-roo-code/src/app/page.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
} from "@/components/homepage"
1515
import { EXTERNAL_LINKS } from "@/lib/constants"
1616
import { ArrowRight } from "lucide-react"
17+
import { StructuredData } from "@/components/structured-data"
1718

1819
// Invalidate cache when a request comes in, at most once every hour.
1920
export const revalidate = 3600
@@ -23,6 +24,7 @@ export default async function Home() {
2324

2425
return (
2526
<>
27+
<StructuredData />
2628
<section className="relative flex h-[calc(125vh-theme(spacing.12))] items-center overflow-hidden md:h-[calc(80svh-theme(spacing.12))]">
2729
<AnimatedBackground />
2830
<div className="container relative flex items-center h-full z-10 mx-auto px-4 sm:px-6 lg:px-8">

apps/web-roo-code/src/components/homepage/testimonials.tsx

Lines changed: 104 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,114 @@ import { useRef, useCallback, useEffect } from "react"
44
import { motion } from "framer-motion"
55
import useEmblaCarousel from "embla-carousel-react"
66
import AutoPlay from "embla-carousel-autoplay"
7-
import { ChevronLeft, ChevronRight } from "lucide-react"
7+
import { ChevronLeft, ChevronRight, Star } from "lucide-react"
88

99
export interface Testimonial {
10-
id: number
1110
name: string
1211
role: string
13-
company: string
14-
image?: string
12+
origin: string
1513
quote: string
14+
image?: string
15+
stars?: number
1616
}
1717

1818
export const testimonials: Testimonial[] = [
1919
{
20-
id: 1,
2120
name: "Luca",
2221
role: "Reviewer",
23-
company: "VS Code Marketplace",
22+
origin: "VS Code Marketplace",
2423
quote: "Roo Code is an absolute game-changer! 🚀 It makes coding faster, easier, and more intuitive with its smart AI-powered suggestions, real-time debugging, and automation features. The seamless integration with VS Code is a huge plus, and the constant updates ensure it keeps getting better",
24+
stars: 5,
2525
},
2626
{
27-
id: 2,
2827
name: "Taro Woollett-Chiba",
2928
role: "AI Product Lead",
30-
company: "Vendidit",
29+
origin: "Vendidit",
3130
quote: "Easily the best AI code editor. Roo Code has the best features and capabilities, along with the best development team. I swear, they're the fastest to support new models and implement useful functionality whenever users mention it... simply amazing.",
3231
},
3332
{
34-
id: 3,
3533
name: "Can Nuri",
3634
role: "Reviewer",
37-
company: "VS Code Marketplace",
35+
origin: "VS Code Marketplace",
3836
quote: "Roo Code is one of the most inspiring projects I have seen for a long time. It shapes the way I think and deal with software development.",
37+
stars: 5,
3938
},
4039
{
41-
id: 4,
4240
name: "Michael",
4341
role: "Reviewer",
44-
company: "VS Code Marketplace",
42+
origin: "VS Code Marketplace",
4543
quote: "I switched from Windsurf to Roo Code in January and honestly, it's been a huge upgrade. Windsurf kept making mistakes and being dumb when I ask it for things. Roo just gets it. Projects that used to take a full day now wrap up before lunch. ",
44+
stars: 5,
45+
},
46+
{
47+
name: "Darien Hardin",
48+
role: "Reviewer",
49+
origin: "VS Code Marketplace",
50+
quote: "By far the best coding tool I have used. Looking forward to where this goes in the future. Also, their Discord is an excellent resource with many knowledgeable users sharing their discoveries.",
51+
stars: 5,
52+
},
53+
{
54+
name: "Wiliam Azzam",
55+
role: "Reviewer",
56+
origin: "VS Code Marketplace",
57+
quote: "I've tried Cursor, Windsurf, Cline, Trae and others, and although using RooCode with OpenRouter is more expensive, it is also far more effective. Its agents and initial setup, and learning how to use Code/Architect/Orchestrator, help a great deal in developing quality projects.",
58+
stars: 5,
59+
},
60+
{
61+
name: "Matěj Zapletal",
62+
role: "Reviewer",
63+
origin: "VS Code Marketplace",
64+
quote: "Definitely the best AI coding agent extension.",
65+
stars: 5,
66+
},
67+
{
68+
name: "Ali Davachi",
69+
role: "Reviewer",
70+
origin: "VS Code Marketplace",
71+
quote: "We tried the rest, now we are using the best. The alternatives are more restrictive. I didn't use competitors for a reason. This team is killing it.",
72+
stars: 5,
73+
},
74+
{
75+
name: "Ryan Booth",
76+
role: "Reviewer",
77+
origin: "VS Code Marketplace",
78+
quote: "I work inside Roo about 60+ hours a week and usually roo is building something at all hours of the day. An amazing tool by an amazing team!",
79+
stars: 5,
80+
},
81+
{
82+
name: "Matthew Martin",
83+
role: "Reviewer",
84+
origin: "VS Code Marketplace",
85+
quote: "i spent a fortune trying to dial in various tools to get them to work the way i want, and then i found roocode. customizable for your flavors on your terms. this is what i always wanted.",
86+
stars: 5,
87+
},
88+
{
89+
name: "Edwin Jacques",
90+
role: "Reviewer",
91+
origin: "VS Code Marketplace",
92+
quote: "The BEST. Super fast, no-nonsense, UI that makes sense, many API provider choices, responsive, helpful developer community.",
93+
stars: 5,
94+
},
95+
{
96+
name: "Sean McCann",
97+
role: "Reviewer",
98+
origin: "VS Code Marketplace",
99+
quote: "Roo Code is impressively capable while staying refreshingly simple. It integrates seamlessly into VS Code and handles everything from generating code to refactoring with accuracy and speed. It feels like a natural part of the workflow—no clutter, just results. Extra points for the flexibility of the different agents and the ability to customize them to fit the job.",
100+
stars: 5,
101+
},
102+
{
103+
name: "Colin Tate",
104+
role: "Reviewer",
105+
origin: "VS Code Marketplace",
106+
quote: "Absolutely amazing extension. I had tried Cursor previously, and this just beats it hands down. I've used it for several large projects now, and it is now my go-to for creating things that would normally take weeks or months. Highly recommended.",
107+
stars: 5,
108+
},
109+
{
110+
name: "Michael Scott",
111+
role: "Reviewer",
112+
origin: "VS Code Marketplace",
113+
quote: "I've used all the IDEs and all the assistants - Roo Code is hands down the best of them. It's also one of the few that lets you bring your own API keys - no subscriptions required, just pay as you need/go! Fantastic team and support as well!",
114+
stars: 5,
46115
},
47116
]
48117

@@ -58,8 +127,8 @@ export function Testimonials() {
58127
[
59128
AutoPlay({
60129
playOnInit: true,
61-
delay: 4000,
62-
stopOnInteraction: true,
130+
delay: 3_500,
131+
stopOnInteraction: false,
63132
stopOnMouseEnter: true,
64133
stopOnFocusIn: true,
65134
}),
@@ -122,53 +191,53 @@ export function Testimonials() {
122191
</div>
123192

124193
<div className="container relative z-10 mx-auto px-4 sm:px-6 lg:px-8">
125-
<div className="mx-auto mb-8 max-w-5xl text-center">
194+
<div className="mx-auto mb-8 md:max-w-2xl text-center">
126195
<h2 className="text-4xl font-bold tracking-tight sm:text-5xl">
127-
AI-forward developers are using Roo Code
196+
Developers <em>really</em> shipping with AI are using Roo Code
128197
</h2>
129198
<p className="mt-6 text-lg text-muted-foreground">
130-
Join more than 800k people revolutionizing their workflow worldwide
199+
Join more than 1M people revolutionizing their workflow worldwide
131200
</p>
132201
</div>
133202

134203
<motion.div
135-
className="relative mx-auto max-w-[1400px]"
204+
className="relative -mx-4 md:mx-auto max-w-[1400px]"
136205
variants={containerVariants}
137206
initial="hidden"
138207
whileInView="visible"
139208
viewport={{ once: true }}>
140209
{/* Previous Button */}
141210
<button
142211
onClick={scrollPrev}
143-
className="absolute left-0 top-1/2 z-20 -translate-y-1/2 rounded-full border border-border/50 bg-background/80 p-2 backdrop-blur-xl transition-all duration-300 hover:scale-110 hover:shadow-lg md:left-4 md:p-3 lg:left-8"
212+
className="absolute left-1 top-1/2 z-20 -translate-y-1/2 rounded-full border border-border/50 bg-background/80 p-2 backdrop-blur-xl transition-all duration-300 hover:scale-110 hover:shadow-lg md:left-4 md:p-3 lg:left-8"
144213
aria-label="Previous testimonial">
145214
<ChevronLeft className="h-5 w-5 text-muted-foreground transition-colors hover:text-foreground md:h-6 md:w-6" />
146215
</button>
147216

148217
{/* Next Button */}
149218
<button
150219
onClick={scrollNext}
151-
className="absolute right-0 top-1/2 z-20 -translate-y-1/2 rounded-full border border-border/50 bg-background/80 p-2 backdrop-blur-xl transition-all duration-300 hover:scale-110 hover:shadow-lg md:right-4 md:p-3 lg:right-8"
220+
className="absolute right-1 top-1/2 z-20 -translate-y-1/2 rounded-full border border-border/50 bg-background/80 p-2 backdrop-blur-xl transition-all duration-300 hover:scale-110 hover:shadow-lg md:right-4 md:p-3 lg:right-8"
152221
aria-label="Next testimonial">
153222
<ChevronRight className="h-5 w-5 text-muted-foreground transition-colors hover:text-foreground md:h-6 md:w-6" />
154223
</button>
155224

156225
{/* Gradient Overlays */}
157-
<div className="absolute inset-y-0 left-0 z-10 w-[10%] bg-gradient-to-r from-background to-transparent pointer-events-none md:w-[15%]" />
158-
<div className="absolute inset-y-0 right-0 z-10 w-[10%] bg-gradient-to-l from-background to-transparent pointer-events-none md:w-[15%]" />
226+
<div className="hidden md:block absolute inset-y-0 left-0 z-10 w-[10%] bg-gradient-to-r from-background to-transparent pointer-events-none md:w-[15%]" />
227+
<div className="hidden md:block absolute inset-y-0 right-0 z-10 w-[10%] bg-gradient-to-l from-background to-transparent pointer-events-none md:w-[15%]" />
159228

160229
{/* Embla Carousel Container */}
161230
<div className="overflow-hidden" ref={emblaRef}>
162231
<div className="flex">
163232
{testimonials.map((testimonial) => (
164233
<div
165-
key={testimonial.id}
166-
className="relative min-w-0 flex-[0_0_85%] px-2 md:flex-[0_0_70%] md:px-4 lg:flex-[0_0_60%]">
234+
key={testimonial.name}
235+
className="relative min-w-0 flex-[0_0_85%] px-2 md:flex-[0_0_70%] md:px-4 lg:flex-[0_0_30%]">
167236
<div className="group relative py-10 h-full">
168237
<div className="relative flex h-full flex-col rounded-2xl border border-border bg-background transition-all duration-500 ease-out group-hover:scale-[1.02] group-hover:border-border group-hover:bg-background/40 group-hover:shadow-xl dark:border-border/70 dark:bg-background/40 dark:group-hover:border-border dark:group-hover:bg-background/60 dark:group-hover:shadow-[0_20px_50px_rgba(59,130,246,0.15)]">
169-
<div className="flex flex-1 flex-col p-6 md:p-8">
238+
<div className="flex flex-1 flex-col p-4 md:p-6">
170239
<div className="flex-1">
171-
<p className="relative text-sm leading-relaxed text-muted-foreground transition-colors duration-300 group-hover:text-foreground/80 dark:text-foreground/70 dark:group-hover:text-foreground/90 md:text-lg">
240+
<p className="relative text-sm leading-relaxed text-muted-foreground transition-colors duration-300 group-hover:text-foreground/80 dark:text-foreground/70 dark:group-hover:text-foreground/90">
172241
{testimonial.quote}
173242
</p>
174243
</div>
@@ -178,7 +247,15 @@ export function Testimonials() {
178247
{testimonial.name}
179248
</h3>
180249
<p className="text-sm text-muted-foreground transition-colors duration-300 dark:text-muted-foreground/80">
181-
{testimonial.role} at {testimonial.company}
250+
{testimonial.role} at {testimonial.origin}
251+
{testimonial.stars && (
252+
<span className="flex items-center mt-1">
253+
{" "}
254+
{Array.from({ length: testimonial.stars }, (_, i) => (
255+
<Star key={i} className="size-4 fill-violet-500" />
256+
))}
257+
</span>
258+
)}
182259
</p>
183260
</div>
184261
</div>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { getStructuredData } from "@/lib/structured-data"
2+
3+
/**
4+
* StructuredData Component
5+
*
6+
* Renders JSON-LD structured data in the document head for SEO.
7+
*
8+
* The structured data includes:
9+
* - Organization information (brand, logo, social profiles)
10+
* - WebSite metadata (site name for Google Search)
11+
* - SoftwareApplication details (VS Code extension)
12+
*
13+
* @see https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
14+
*/
15+
export function StructuredData() {
16+
const structuredData = getStructuredData()
17+
18+
return (
19+
<script
20+
type="application/ld+json"
21+
dangerouslySetInnerHTML={{
22+
__html: JSON.stringify(structuredData),
23+
}}
24+
/>
25+
)
26+
}

0 commit comments

Comments
 (0)