diff --git a/.github/workflows/update-contributors.yml b/.github/workflows/update-contributors.yml index c3c932760..5709bdc10 100644 --- a/.github/workflows/update-contributors.yml +++ b/.github/workflows/update-contributors.yml @@ -1,46 +1,67 @@ -name: Update Contributors +name: Update Contributors # Refresh contrib.rocks image cache on: - push: - branches: - - main workflow_dispatch: +permissions: + contents: write + pull-requests: write + jobs: - update-contributors: + refresh-contrib-cache: runs-on: ubuntu-latest - permissions: - contents: write # Needed for pushing changes. - pull-requests: write # Needed for creating PRs. steps: - - name: Checkout code + - name: Checkout uses: actions/checkout@v4 - - name: Setup Node.js and pnpm - uses: ./.github/actions/setup-node-pnpm - - name: Disable Husky + + - name: Bump cacheBust in all README files run: | - echo "HUSKY=0" >> $GITHUB_ENV - git config --global core.hooksPath /dev/null - - name: Update contributors and format + set -euo pipefail + TS="$(date +%s)" + # Target only the root README.md and localized READMEs under locales/*/README.md + mapfile -t FILES < <(git ls-files README.md 'locales/*/README.md' || true) + + if [ "${#FILES[@]}" -eq 0 ]; then + echo "No target README files found." >&2 + exit 1 + fi + + UPDATED=0 + for f in "${FILES[@]}"; do + if grep -q 'cacheBust=' "$f"; then + # Use portable sed in GNU environment of ubuntu-latest + sed -i -E "s/cacheBust=[0-9]+/cacheBust=${TS}/g" "$f" + echo "Updated cacheBust in $f" + UPDATED=1 + else + echo "Warning: cacheBust parameter not found in $f" >&2 + fi + done + + if [ "$UPDATED" -eq 0 ]; then + echo "No files were updated. Ensure READMEs embed contrib.rocks with cacheBust param." >&2 + exit 1 + fi + + - name: Detect changes + id: changes run: | - pnpm update-contributors - npx prettier --write README.md locales/*/README.md - if git diff --quiet; then echo "changes=false" >> $GITHUB_OUTPUT; else echo "changes=true" >> $GITHUB_OUTPUT; fi - id: check-changes - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if git diff --quiet; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + - name: Create Pull Request - if: steps.check-changes.outputs.changes == 'true' + if: steps.changes.outputs.changed == 'true' uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "docs: update contributors list [skip ci]" committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>" - branch: update-contributors + branch: refresh-contrib-cache delete-branch: true - title: "Update contributors list" + title: "Refresh contrib.rocks image cache (all READMEs)" body: | - Automated update of contributors list and related files - - This PR was created automatically by a GitHub Action workflow and includes all changed files. + Automated refresh of the contrib.rocks image cache by bumping the cacheBust parameter in README.md and locales/*/README.md. base: main diff --git a/CHANGELOG.md b/CHANGELOG.md index 50b14a020..187a94d19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Roo Code Changelog +## [3.28.14] - 2025-09-30 + +![3.28.14 Release - GLM-4.6 Model Support](/releases/3.28.14-release.png) + +- Add support for GLM-4.6 model for z.ai provider (#8406 by @dmarkey, PR by @roomote) + +## [3.28.13] - 2025-09-29 + +- Fix: Remove topP parameter from Bedrock inference config (#8377 by @ronyblum, PR by @daniel-lxs) +- Fix: Correct Vertex AI Sonnet 4.5 model configuration (#8387 by @nickcatal, PR by @mrubens!) + +## [3.28.12] - 2025-09-29 + +- Fix: Correct Anthropic Sonnet 4.5 model ID and add Bedrock 1M context checkbox (thanks @daniel-lxs!) + +## [3.28.11] - 2025-09-29 + +- Fix: Correct AWS Bedrock Claude Sonnet 4.5 model identifier (#8371 by @sunhyung, PR by @app/roomote) +- Fix: Correct Claude Sonnet 4.5 model ID format (thanks @daniel-lxs!) + +## [3.28.10] - 2025-09-29 + +![3.28.10 Release - Kangaroo Writing Sonnet 4.5](/releases/3.28.10-release.png) + +- Feat: Add Sonnet 4.5 support (thanks @daniel-lxs!) +- Fix: Resolve max_completion_tokens issue for GPT-5 models in LiteLLM provider (#6979 by @lx1054331851, PR by @roomote) +- Fix: Make chat icons properly sized with shrink-0 class (thanks @mrubens!) +- Enhancement: Track telemetry settings changes for better analytics (thanks @mrubens!) +- Web: Add testimonials section to website (thanks @brunobergher!) +- CI: Refresh contrib.rocks cache workflow for contributor badges (thanks @hannesrudolph!) + ## [3.28.9] - 2025-09-26 ![3.28.9 Release - Supernova Upgrade](/releases/3.28.9-release.png) diff --git a/apps/web-roo-code/src/app/page.tsx b/apps/web-roo-code/src/app/page.tsx index b062d5845..6aa9d34db 100644 --- a/apps/web-roo-code/src/app/page.tsx +++ b/apps/web-roo-code/src/app/page.tsx @@ -14,6 +14,7 @@ import { } 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 @@ -23,6 +24,7 @@ export default async function Home() { return ( <> +
diff --git a/apps/web-roo-code/src/components/homepage/testimonials.tsx b/apps/web-roo-code/src/components/homepage/testimonials.tsx index 01236dfe7..84d9e6cf4 100644 --- a/apps/web-roo-code/src/components/homepage/testimonials.tsx +++ b/apps/web-roo-code/src/components/homepage/testimonials.tsx @@ -4,45 +4,114 @@ import { useRef, useCallback, useEffect } from "react" import { motion } from "framer-motion" import useEmblaCarousel from "embla-carousel-react" import AutoPlay from "embla-carousel-autoplay" -import { ChevronLeft, ChevronRight } from "lucide-react" +import { ChevronLeft, ChevronRight, Star } from "lucide-react" export interface Testimonial { - id: number name: string role: string - company: string - image?: string + origin: string quote: string + image?: string + stars?: number } export const testimonials: Testimonial[] = [ { - id: 1, name: "Luca", role: "Reviewer", - company: "VS Code Marketplace", + origin: "VS Code Marketplace", 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", + stars: 5, }, { - id: 2, name: "Taro Woollett-Chiba", role: "AI Product Lead", - company: "Vendidit", + origin: "Vendidit", 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.", }, { - id: 3, name: "Can Nuri", role: "Reviewer", - company: "VS Code Marketplace", + origin: "VS Code Marketplace", 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.", + stars: 5, }, { - id: 4, name: "Michael", role: "Reviewer", - company: "VS Code Marketplace", + origin: "VS Code Marketplace", 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. ", + stars: 5, + }, + { + name: "Darien Hardin", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Wiliam Azzam", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Matěj Zapletal", + role: "Reviewer", + origin: "VS Code Marketplace", + quote: "Definitely the best AI coding agent extension.", + stars: 5, + }, + { + name: "Ali Davachi", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Ryan Booth", + role: "Reviewer", + origin: "VS Code Marketplace", + 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!", + stars: 5, + }, + { + name: "Matthew Martin", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Edwin Jacques", + role: "Reviewer", + origin: "VS Code Marketplace", + quote: "The BEST. Super fast, no-nonsense, UI that makes sense, many API provider choices, responsive, helpful developer community.", + stars: 5, + }, + { + name: "Sean McCann", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Colin Tate", + role: "Reviewer", + origin: "VS Code Marketplace", + 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.", + stars: 5, + }, + { + name: "Michael Scott", + role: "Reviewer", + origin: "VS Code Marketplace", + 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!", + stars: 5, }, ] @@ -58,8 +127,8 @@ export function Testimonials() { [ AutoPlay({ playOnInit: true, - delay: 4000, - stopOnInteraction: true, + delay: 3_500, + stopOnInteraction: false, stopOnMouseEnter: true, stopOnFocusIn: true, }), @@ -122,17 +191,17 @@ export function Testimonials() {
-
+

- AI-forward developers are using Roo Code + Developers really shipping with AI are using Roo Code

- Join more than 800k people revolutionizing their workflow worldwide + Join more than 1M people revolutionizing their workflow worldwide

@@ -148,27 +217,27 @@ export function Testimonials() { {/* Next Button */} {/* Gradient Overlays */} -
-
+
+
{/* Embla Carousel Container */}
{testimonials.map((testimonial) => (
+ key={testimonial.name} + className="relative min-w-0 flex-[0_0_85%] px-2 md:flex-[0_0_70%] md:px-4 lg:flex-[0_0_30%]">
-
+
-

+

{testimonial.quote}

@@ -178,7 +247,15 @@ export function Testimonials() { {testimonial.name}

- {testimonial.role} at {testimonial.company} + {testimonial.role} at {testimonial.origin} + {testimonial.stars && ( + + {" "} + {Array.from({ length: testimonial.stars }, (_, i) => ( + + ))} + + )}

diff --git a/apps/web-roo-code/src/components/structured-data.tsx b/apps/web-roo-code/src/components/structured-data.tsx new file mode 100644 index 000000000..0a7ba479e --- /dev/null +++ b/apps/web-roo-code/src/components/structured-data.tsx @@ -0,0 +1,26 @@ +import { getStructuredData } from "@/lib/structured-data" + +/** + * StructuredData Component + * + * Renders JSON-LD structured data in the document head for SEO. + * + * The structured data includes: + * - Organization information (brand, logo, social profiles) + * - WebSite metadata (site name for Google Search) + * - SoftwareApplication details (VS Code extension) + * + * @see https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data + */ +export function StructuredData() { + const structuredData = getStructuredData() + + return ( +