Skip to content

Conversation

@hannesrudolph
Copy link
Collaborator

@hannesrudolph hannesrudolph commented Oct 17, 2025

This PR biases Google Sitelinks toward the top-level destinations Extension, Cloud, Docs, and Pricing.\n\nKey changes:\n- New /extension page with canonical metadata and BreadcrumbList JSON-LD\n- Header: ‘Extension’ now links to /extension (desktop & mobile)\n- Home hero: added above-the-fold text links to Docs and Pricing\n- Footer: added internal links to Cloud and Pricing under Product\n- Sitemap: prioritizes '/', '/extension' (0.9), '/cloud' and '/pricing' (0.8), lowers '/enterprise'; fixes additionalPaths\n- Robots: exposes both https://roocode.com/sitemap.xml and https://docs.roocode.com/sitemap.xml\n- Structured data: SiteNavigationElement for Extension/Cloud/Docs/Pricing; per-page BreadcrumbList on Cloud, Pricing, Extension\n- Explicit metadata on Cloud/Pricing/Extension and rel added for external links\n\nAll tests pass (Vitest). After merge/deploy, resubmit sitemap in Search Console and request indexing for '/', '/extension', '/cloud', '/pricing'.


Important

Biases Google Sitelinks towards key pages by adding a new /extension page, updating navigation links, and enhancing structured data and sitemap priorities.

  • Behavior:
    • New /extension page added with canonical metadata and BreadcrumbList JSON-LD.
    • Header links updated to point to /extension for 'Extension' (desktop & mobile).
    • Home hero section now includes text links to 'Docs' and 'Pricing'.
    • Footer updated with internal links to 'Cloud' and 'Pricing'.
    • Sitemap prioritizes /, /extension (0.9), /cloud, and /pricing (0.8), lowers /enterprise priority.
    • Robots.txt exposes both sitemap.xml and docs.sitemap.xml.
    • Structured data includes SiteNavigationElement for 'Extension', 'Cloud', 'Docs', 'Pricing'.
  • Metadata:
    • Explicit metadata added for 'Cloud', 'Pricing', and 'Extension' pages.
    • rel attributes added for external links.
  • Misc:
    • Fixes additionalPaths in next-sitemap.config.cjs.
    • All tests pass (Vitest).

This description was created by Ellipsis for f0802f1. You can customize this summary. It will automatically update as commits are pushed.

- Add /extension canonical page with metadata and BreadcrumbList JSON-LD

- Header: change 'Extension' to link /extension (desktop & mobile)

- Home hero: add above-the-fold Docs/Pricing links

- Footer: add Cloud and Pricing under Product

- Sitemap: prioritize /extension (0.9), /cloud & /pricing (0.8); fix additionalPaths; reduce /enterprise

- Robots: publish roocode.com and docs.roocode.com sitemaps

- Structured data: add SiteNavigationElement; per-page BreadcrumbList

- Ensure explicit metadata on Cloud/Pricing/Extension; fix rel for target=_blank
Copilot AI review requested due to automatic review settings October 17, 2025 19:35
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Oct 17, 2025
@roomote
Copy link

roomote bot commented Oct 17, 2025

Review Summary

I've reviewed the PR changes for biasing Google Sitelinks. The implementation looks good overall with proper structured data, breadcrumbs, and sitemap configuration. However, I found one security issue that should be addressed:

Issues to Fix

  • Add rel="noopener noreferrer" to external links in /extension page (currently using only rel="noreferrer")

Details

The new /extension page uses rel="noreferrer" on external links (lines 71 and 84), but should use rel="noopener noreferrer" for consistency with the rest of the codebase and to prevent security vulnerabilities where opened pages could access window.opener.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Bias Google Sitelinks and structured data toward key destinations (Extension, Cloud, Docs, Pricing) to improve SEO and navigation signals.

  • Add new /extension page with canonical metadata and BreadcrumbList JSON-LD
  • Update navigation/header/footer to link to Extension/Cloud/Pricing; add above-the-fold Docs/Pricing links on Home
  • Enhance structured data (SiteNavigationElement, per-page breadcrumbs), robots sitemaps, and sitemap priorities

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
apps/web-roo-code/src/lib/structured-data.ts Adds SiteNavigationElement nodes to the JSON-LD graph to surface Extension/Cloud/Docs/Pricing in sitelinks.
apps/web-roo-code/src/components/chromes/nav-bar.tsx Updates “Extension” to link to /extension on desktop and mobile menus.
apps/web-roo-code/src/components/chromes/footer.tsx Adds Cloud and Pricing links under “Product” to reinforce internal linking.
apps/web-roo-code/src/app/robots.ts Exposes both primary and docs sitemaps to crawlers.
apps/web-roo-code/src/app/pricing/page.tsx Adds BreadcrumbList JSON-LD for Pricing.
apps/web-roo-code/src/app/page.tsx Adds above-the-fold Docs and Pricing links on Home.
apps/web-roo-code/src/app/extension/page.tsx New Extension landing page with metadata and breadcrumb JSON-LD.
apps/web-roo-code/next-sitemap.config.cjs Prioritizes key paths; simplifies and updates additionalPaths.

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines +65 to +89
<Button
size="lg"
className="w-full hover:bg-gray-200 dark:bg-white dark:text-black sm:w-auto">
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noreferrer"
className="flex w-full items-center justify-center">
Install VS Code Extension
<ArrowRight className="ml-2" />
</a>
</Button>
<Button
variant="outline"
size="lg"
className="w-full sm:w-auto bg-white/20 dark:bg-white/10 backdrop-blur-sm border border-black/40 dark:border-white/30 hover:border-blue-400 hover:bg-white/30 dark:hover:bg-white/20 hover:shadow-[0_0_20px_rgba(59,130,246,0.5)] transition-all duration-300">
<a
href={EXTERNAL_LINKS.DOCUMENTATION}
target="_blank"
rel="noreferrer"
className="flex w-full items-center justify-center">
Docs
<ArrowRight className="ml-2" />
</a>
</Button>
Copy link

Copilot AI Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid nesting interactive elements ( inside a button). This is invalid HTML and problematic for screen readers/keyboard nav. Prefer rendering the anchor as the button via an asChild prop or wrapping the Button around a Link/anchor that renders as the clickable element (e.g., <a ... />), or make the outer element the anchor styled like a button.

Copilot uses AI. Check for mistakes.
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noreferrer"
Copy link

Copilot AI Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When using target="_blank", also include rel="noopener" to prevent the new page from gaining access to window.opener. Update to rel="noopener noreferrer".

Copilot uses AI. Check for mistakes.
<a
href={EXTERNAL_LINKS.DOCUMENTATION}
target="_blank"
rel="noreferrer"
Copy link

Copilot AI Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add rel="noopener" alongside noreferrer for external links opened with target="_blank" to mitigate reverse tabnabbing (use rel="noopener noreferrer").

Copilot uses AI. Check for mistakes.
Comment on lines +71 to +75
loc: '/extension',
changefreq: 'monthly',
priority: 0.9,
lastmod: new Date().toISOString(),
},
Copy link

Copilot AI Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Since /extension is now a file-system route, it will be auto-discovered by next-sitemap. Keeping it in additionalPaths can create duplicate entries in the sitemap; consider removing this block and relying on transform() to set its priority.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link

🚀 Preview deployed!

Your changes have been deployed to Vercel:

Preview URL: https://roo-code-website-8139i8yni-roo-code.vercel.app

This preview will be updated automatically when you push new commits to this PR.

Comment on lines +68 to +75
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noreferrer"
className="flex w-full items-center justify-center">
Install VS Code Extension
<ArrowRight className="ml-2" />
</a>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These external links should use rel="noopener noreferrer" instead of just rel="noreferrer" to prevent the opened page from accessing window.opener, which is a security best practice. This pattern is consistently used throughout the codebase (see page.tsx:72, cloud/page.tsx:155, pricing/page.tsx:244).

@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Oct 17, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Oct 17, 2025
@github-project-automation github-project-automation bot moved this from Triage to Done in Roo Code Roadmap Oct 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants