diff --git a/.env.example b/.env.example index bbc3cb50..6be38a29 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1 @@ -POSTHOG_API_KEY=your_posthog_api_key -INTERCOM_APP_ID=your_intercom_app_id +# No environment variables are required for local docs development. diff --git a/.github/workflows/docusaurus-build.yml b/.github/workflows/docusaurus-build.yml index 39671892..a067ea73 100644 --- a/.github/workflows/docusaurus-build.yml +++ b/.github/workflows/docusaurus-build.yml @@ -36,5 +36,3 @@ jobs: - name: Build site run: pnpm run build - env: - POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} \ No newline at end of file diff --git a/.roo/rules-architect/AGENTS.md b/.roo/rules-architect/AGENTS.md index ac1dbe32..620cdde6 100644 --- a/.roo/rules-architect/AGENTS.md +++ b/.roo/rules-architect/AGENTS.md @@ -6,6 +6,6 @@ This file provides guidance to agents when working with code in this repository. - Sitemap uses custom plugin ([docusaurus.config.ts](docusaurus.config.ts:94-107)) filtering "/page/" URLs; preset sitemap disabled. Don't re-enable preset. - Redirects required when moving docs ([docusaurus.config.ts](docusaurus.config.ts:109-271)); onBrokenLinks won't fail builds but creates poor UX. - Constants centralized in [src/constants.ts](src/constants.ts) for all external URLs. Never hardcode URLs in config or components. -- PostHog analytics conditionally loaded based on env var ([docusaurus.config.ts](docusaurus.config.ts:84-93)); architectural decision for privacy/GDPR. +- No analytics or support-chat runtime providers are configured; keep the site focused on open-source documentation surfaces. - Search uses local plugin (@easyops-cn/docusaurus-search-local) with docsRouteBasePath "/" - maintain consistency. -- No blog feature (disabled in preset); this is pure documentation site, not a content platform. \ No newline at end of file +- No blog feature (disabled in preset); this is pure documentation site, not a content platform. diff --git a/.roo/rules-code/AGENTS.md b/.roo/rules-code/AGENTS.md index f2dec647..cb29cc1f 100644 --- a/.roo/rules-code/AGENTS.md +++ b/.roo/rules-code/AGENTS.md @@ -9,6 +9,6 @@ This file provides guidance to agents when working with code in this repository. - When moving docs, add redirects in [docusaurus.config.ts](docusaurus.config.ts:109); onBrokenLinks is warn ([docusaurus.config.ts](docusaurus.config.ts:40)) so missing redirects won’t fail CI. - Internal doc links must be absolute and extensionless per [.roorules](.roorules) (e.g., /basic-usage/how-tools-work). - Images in docs must use HTML tags: ... (Markdown image syntax is disallowed). -- Builds preload dotenv; PostHog plugin loads only when POSTHOG_API_KEY is set. Use [.env.example](.env.example). See [docusaurus.config.ts](docusaurus.config.ts:83) and [package.json](package.json:7). +- Builds preload dotenv. No environment variables are required by default; use [.env.example](.env.example) only when adding local-only settings. See [docusaurus.config.ts](docusaurus.config.ts) and [package.json](package.json). - Use Node 20 locally to match CI ([.github/workflows/docusaurus-build.yml](.github/workflows/docusaurus-build.yml:23)); package engines allow >=18. -- “Tutorial Videos” sidebar is driven by [docs/tutorial-videos.json](docs/tutorial-videos.json); titles truncated to 40 chars in [sidebars.ts](sidebars.ts:5). \ No newline at end of file +- “Tutorial Videos” sidebar is driven by [docs/tutorial-videos.json](docs/tutorial-videos.json); titles truncated to 40 chars in [sidebars.ts](sidebars.ts:5). diff --git a/.roo/rules-debug/AGENTS.md b/.roo/rules-debug/AGENTS.md index ecaf5a69..abb43634 100644 --- a/.roo/rules-debug/AGENTS.md +++ b/.roo/rules-debug/AGENTS.md @@ -3,8 +3,8 @@ This file provides guidance to agents when working with code in this repository. - CI only builds, doesn't lint/check-types ([.github/workflows/docusaurus-build.yml](.github/workflows/docusaurus-build.yml:29)). Run "pnpm run lint" and "pnpm run check-types" locally before pushing. -- PostHog analytics silently skips if POSTHOG_API_KEY missing. Check [.env](.env) exists with key from [.env.example](.env.example). +- No environment variables are required by default. Use [.env.example](.env.example) only when debugging local-only settings. - No test framework configured. Scripts exist in package.json but no test files or jest/vitest config present. - Docusaurus dev server at localhost:3000. Hot reload may fail for theme swizzled components; restart if changes don't appear. - onBrokenLinks set to "warn" ([docusaurus.config.ts](docusaurus.config.ts:40)) - broken links won't fail build but check console warnings. -- Node version mismatch (engines >=18, CI uses 20) can cause subtle differences. Use Node 20 locally. \ No newline at end of file +- Node version mismatch (engines >=18, CI uses 20) can cause subtle differences. Use Node 20 locally. diff --git a/AGENTS.md b/AGENTS.md index 8b85c488..bc666f74 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ This file provides guidance to agents when working with code in this repository. Non-obvious, project-specific rules: -- Start/build preload dotenv; analytics plugin is enabled only when POSTHOG_API_KEY is set. Use .env based on [.env.example](.env.example). CI injects it in [.github/workflows/docusaurus-build.yml](.github/workflows/docusaurus-build.yml). See [package.json](package.json) and [docusaurus.config.ts](docusaurus.config.ts). +- Start/build preload dotenv. No environment variables are required by default; use [.env.example](.env.example) only when adding local-only settings. See [package.json](package.json) and [docusaurus.config.ts](docusaurus.config.ts). - Use Node 20 locally to match CI; engines allow >=18 but CI runs 20. - Linting targets only /src; docs content is not linted. Use "pnpm run lint:unused" to enforce unused import removal. Type checking uses "tsc" only (no emit); [tsconfig.json](tsconfig.json) is editor-focused. - When moving/renaming docs, you must add an explicit redirect in [docusaurus.config.ts](docusaurus.config.ts) under plugin-client-redirects. This is required by [.roorules](.roorules). @@ -16,4 +16,4 @@ Non-obvious, project-specific rules: - Navigation/footer links are centralized in [src/constants.ts](src/constants.ts) and consumed by [docusaurus.config.ts](docusaurus.config.ts). Update constants rather than hardcoding URLs. - Legacy [Rakefile](Rakefile) is unrelated (Jekyll). Do not use it; all builds run through Docusaurus scripts. - For structural/formatting research, use Context7 MCP (ID "/facebook/docusaurus") via [.roo/mcp.json](.roo/mcp.json); see [.roorules](.roorules). -- CI runs build and check-types (no lint). Run lint locally to catch issues CI won't. \ No newline at end of file +- CI runs build and check-types (no lint). Run lint locally to catch issues CI won't. diff --git a/docs/advanced-usage/available-tools/attempt-completion.md b/docs/advanced-usage/available-tools/attempt-completion.md index 10708c66..d18bb97f 100644 --- a/docs/advanced-usage/available-tools/attempt-completion.md +++ b/docs/advanced-usage/available-tools/attempt-completion.md @@ -47,7 +47,6 @@ This tool marks the end of a task by presenting a final summary of what was acco - Optionally demonstrates results through command execution - Enables user feedback for further refinements - Displays results in a special UI format distinct from regular messages -- Captures task completion telemetry for system analytics - Maintains a structured conversation flow by providing checkpoints - Supports subtask completion within larger workflows - Ensures users receive a clear summary of what was done diff --git a/docs/advanced-usage/available-tools/write-to-file.md b/docs/advanced-usage/available-tools/write-to-file.md index 046fdb42..4f7e029e 100644 --- a/docs/advanced-usage/available-tools/write-to-file.md +++ b/docs/advanced-usage/available-tools/write-to-file.md @@ -137,13 +137,12 @@ Creating a new JSON configuration file: }, "features": { "darkMode": true, - "notifications": true, - "analytics": false + "notifications": true }, "version": "1.0.0" } -14 +13 ``` diff --git a/docs/credits/overview.md b/docs/credits/overview.md deleted file mode 100644 index b9f1ceec..00000000 --- a/docs/credits/overview.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -description: The Roo Code Cloud is the easiest way to use Roo Code without additional accounts and dealing with API keys -keywords: - - Credits - - Tokens - - Dollars - - Prepaid ---- - -# Roo Code Credits Overview - -Roo Code is composed of a few products: -- **Roo Code VS Code** (the extension) is 100% free -- **Roo Code Router** (the model provider) offers both free and paid models -- **Roo Code Cloud Agents** (the automous agents) are a paid feature as they incur infrastructure costs - -In order to use paid models via our provider and to run Cloud agents, you need credits. - -:::info Up-to-date pricing -You can see the plans we offer and the most up-to-date pricing on our [pricing page](https://roocode.com/pricing) -::: ----- - -## What are credits? - -Credits are just pre-paid dollar amounts you can optionally buy to use the paid parts of the Roo Code suite. If you stick to free features and use free models, you don't have to buy any credits. - -Credits are shown in dollars, there's no shenanigans in converting it to obscure currencies you can't calculate. - - -## How much do credits cost? - -Our [pricing page](https://roocode.com/pricing) always has the latest on our plans and Cloud Agent pricing. - -Model pricing can be found in the [provider page](https://roocode.com/provider) of our website. - -We don't include prices here just to make sure they're always up-to-date. - -## How are credits and the monthly subscription related? - -The monthly subscription to the Team plan simply unlocks advanced functionality. It doesn't include any credits. And the free plan doesn't have any recurring subscription fees, you only pay for the credits you purchase. - -## How do I get free credits or free minutes or free tokens? - -When you sign up for a Roo Code Cloud account, you'll be given a number of "Free Minutes" to try the product out (you'll see a cute icon). Those free minutes cover both the [Cloud Agent](/roo-code-cloud/cloud-agents) run time _and_ inference via the Roo Code Cloud provider (both of which normally cost credits). Those can't be used in the extension – they're there for you to try the magic of Cloud Agents. - -If you want free inference in the extension, look for a free model when available (or use another provider which may offer it to you for free). - -## How can I buy credits? - -### Single purchase - -From your [Roo Code Cloud account](https://app.roocode.com.), to a one-time purchase: - -1. Click on the credit balance display in the top right - Credit balance display - -2. Choose "Buy Credits" -3. Enter the amount you want to buy and follow the flow -4. You'll get a confirmation email and the balance will show in the same place in the UI - Credit balance display - -### Auto top-up - -To make sure you never run out of credits, you can set up Auto top-up: - -1. Click on the same credit balance display - Credit balance display - -2. Click on the ⚡ icon - Credit balance dropdown - -3. Enable the option and configure the threshold and amount to buy -4. Click save and you're done - -If you change your mind, just follow the same steps while turning it off. - -You can also access all of this from your [Billing page](https://app.roocode.com/billing) (User Avatar menu → Billing and Credits). diff --git a/docs/faq.md b/docs/faq.md index c1806e19..436d8450 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -22,7 +22,7 @@ This page answers some common questions about Roo Code. ### What is Roo Code? -Roo Code is an AI-powered suite of coding products designed to take full advantage of the most advanced large-language models. +Roo Code is an open-source AI coding agent for VS Code designed to take full advantage of advanced large-language models. ### How does Roo Code work? @@ -33,7 +33,7 @@ Roo Code uses large language models (LLMs) to understand your requests and trans - Perform web browsing (if enabled) - Use external tools via the Model Context Protocol (MCP) -You interact with Roo Code through either a chat interface (in the Extension) or through different channels (in the Cloud). +You interact with Roo Code through a chat interface in the extension. ### What can Roo Code do? @@ -50,10 +50,9 @@ Roo Code can help with a variety of coding tasks, including: ### Is Roo Code free to use? -The Roo Code Extension is free and [open-source](https://github.com/RooCodeInc/Roo-Code/). -The Roo Code Cloud platform is also free, but some functionality is paid. +The Roo Code extension is free and [open-source](https://github.com/RooCodeInc/Roo-Code/). -In both cases, Roo Code relies on external LLM inference providers (like [Anthropic](providers/anthropic), [OpenAI](providers/openai), [OpenRouter](providers/openrouter), [Requesty](providers/requesty), etc.) for its AI capabilities. We also offer [Roo Code Router](/roo-code-router/overview) as an alternative. +Roo Code relies on external LLM inference providers (like [Anthropic](providers/anthropic), [OpenAI](providers/openai), [OpenRouter](providers/openrouter), [Requesty](providers/requesty), etc.) for its AI capabilities. These providers typically charge for API usage based on the number of tokens processed. You will need to create an account and obtain an API key from your chosen provider. Learn more [about providers and how to set them up](/providers/) for details. ### What are the risks of using Roo Code? @@ -80,8 +79,6 @@ See the [full list here](/providers/). Each API provider has its own process for obtaining an API key. See the [Setting Up Your First AI Provider](/getting-started/connecting-api-provider) for links to the relevant documentation for each provider. -If you use the [Roo Code Router](/roo-code-router/overview), you don't need an API key. - ### Can I use Roo Code with local models? Yes, Roo Code supports running models locally using [Ollama](/providers/ollama) and [LM Studio](/providers/lmstudio). See [Using Local Models](/advanced-usage/local-models) for instructions. diff --git a/docs/getting-started/connecting-api-provider.md b/docs/getting-started/connecting-api-provider.md index f12d0a03..a1aa7d6b 100644 --- a/docs/getting-started/connecting-api-provider.md +++ b/docs/getting-started/connecting-api-provider.md @@ -18,9 +18,7 @@ Roo Code needs an inference provider to access the LLM models that make it work. A great model to start is **Claude Sonnet 4.5**, which offers a lot of power at a reasonable price point. To get it going, choose a provider: -- **Roo Code Router (Recommended):** the easiest way to access multiple providers tested with Roo Code. No API needed. To get started, just choose Roo Code Router as a provider and follow instructions. [Learn more about it](/roo-code-router/overview). - -- **OpenRouter:** Provides access to multiple AI models from different labs through a single API key. Great for flexibility and getting started reasonably fast. To get an API key, [follow these instructions ](/providers/openrouter#getting-an-api-key) +- **OpenRouter (Recommended):** Provides access to multiple AI models from different labs through a single API key. Great for flexibility and getting started reasonably fast. To get an API key, [follow these instructions ](/providers/openrouter#getting-an-api-key) - **Anthropic:** Direct access to the Claude family of models. Requires API access approval and may have [rate limits depending on your tier](https://docs.anthropic.com/en/api/rate-limits#requirements-to-advance-tier). To get an API key, [follow these instructions ](/providers/anthropic#getting-an-api-key) @@ -38,8 +36,7 @@ You can choose other models, but that introduces complexity. Different models va 1. Open the Roo Code panel by clicking the Roo Code icon () in the VS Code Activity Bar 2. In the welcome screen, choose your LLM provider. -3. If you choose the Roo Code Router, just connect your account and choose `anthropic/claude-sonnet-4-5` from the dropdown. You're set. -4. If you chose another provider, paste the API key you copied from it into the right field and continue -5. Select your model (it should be called `claude-sonnet-4-5` or `anthropic/claude-sonnet-4-5`) and complete the process. +3. Paste the API key you copied from your provider into the right field and continue. +4. Select your model (it should be called `claude-sonnet-4-5` or `anthropic/claude-sonnet-4-5`) and complete the process. Now you can start coding! diff --git a/docs/index.mdx b/docs/index.mdx index ad44b583..4987ed56 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -13,19 +13,11 @@ keywords: # Roo Code Docs -:::danger Sunsetting Roo Code on May 15, 2026 -**All Roo Code products (Extension, Cloud, and Router) will be shut down on May 15, 2026.** We will refund any unused balances. For alternatives, we recommend [Cline](https://github.com/cline/cline) (open-source extension) or [roomote.dev](https://roomote.dev) (our next project). For billing questions after May 15, contact [billing@roocode.com](mailto:billing@roocode.com). [Read the full details](/sunset). -::: - -Roo Code is an AI-coding suite of products designed to take full advantage of the most advanced large-language models and change how you create software at a fundamental level. It's unapologetically powerful and customizable, and it costs more to run than the alternatives because it uses frontier models with actual file system access, terminal control, and multi-step workflows. +Roo Code is an open-source AI coding agent for VS Code designed to take full advantage of advanced large-language models and change how you create software at a fundamental level. It's powerful, customizable, and model-agnostic, with actual file system access, terminal control, and multi-step workflows. Roo's approach is to trade tokens for quality. If you want the best and most effective AI coding experience available, this is it. -Roo Code is available in two ways: -- [ Roo Code VS Code Extension](/getting-started/installing) works locally in your VS Code IDE and gives you full control over your coding experience. It's great for deep or highly iterative solo development work. It's highly customizable and fits into your existing workflow. -- [ Roo Code Cloud Agents](/roo-code-cloud/cloud-agents) are an autonomous AI development team working 24/7, as a team, collaborating with you and other co-workers on a wide range of tasks. It meets you where you do work (Slack, Github, etc) and allows for large parts of software development to happen entirely away from an IDE. - -The two options are highly complementary and built on the same shared foundation, achieving similarly excellent results. +The Roo Code VS Code extension works locally in your IDE and gives you full control over your coding experience. It's great for deep or highly iterative development work, and it fits into your existing workflow. ## What can Roo Code do for you @@ -42,13 +34,13 @@ The most successful Roo users tend to embrace the following ideas: - **Leverage model agnosticism:** Roo isn't an LLM model, it needs an [LLM provider](/providers) to work. But it's compatible with dozens of providers and hundreds of models, so you're free to experiment, optimize and switch around, by design. No lock-ins in a world where "the best model" changes every other week. - **Don't skimp on tokens:** expensive state-of-the-art models with lots of tokens will almost always beat cheap models using few tokens. Pay attention to your budget, but embrace the fact that tokens are cheaper than developer time. -- **Trust roles:** The extension's customizable Modes (Architect, Code, etc) and the pre-defined Cloud Agent Types (Planner, Coder, etc) keep the models on track and focused on the task at hand, without stepping outside of their boundaries. Lean on them depending on the task you're working on. -- **Be ambitious:** Roo works best the more you trust it. Out-of-the-box, the Extension will ask for your permission to everything, but as you become more comfortable and enable [Auto-Approve](/features/auto-approving-actions), you'll see it work for long periods on its own without getting stuck or making bad decisions. Once ready, throw large, complex projects at the [Orchestrator](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode), who will coordinate tasks across Modes. In the Cloud, we handle all of this for you. +- **Trust roles:** The extension's customizable Modes (Architect, Code, etc) keep the models on track and focused on the task at hand, without stepping outside of their boundaries. Lean on them depending on the task you're working on. +- **Be ambitious:** Roo works best the more you trust it. Out-of-the-box, the extension will ask for your permission to do everything, but as you become more comfortable and enable [Auto-Approve](/features/auto-approving-actions), you'll see it work for long periods on its own without getting stuck or making bad decisions. Once ready, throw large, complex projects at the [Orchestrator](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode), who will coordinate tasks across Modes. ## Getting Started -- [With the Extension](/getting-started/installing) -- [With Roo Code Cloud](/roo-code-cloud/overview) +- [Install the Extension](/getting-started/installing) +- [Connect an LLM Provider](/getting-started/connecting-api-provider) ## Tutorial & Feature Videos diff --git a/docs/providers/index.json b/docs/providers/index.json index e2fee275..ba1513a8 100644 --- a/docs/providers/index.json +++ b/docs/providers/index.json @@ -3,140 +3,112 @@ { "id": "providers/anthropic", "title": "Anthropic", - "extension": true, - "cloud": true + "extension": true }, { "id": "providers/openai-chatgpt-plus-pro", "title": "ChatGPT Plus/Pro", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/bedrock", "title": "AWS Bedrock", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/deepseek", "title": "DeepSeek", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/fireworks", "title": "Fireworks AI", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/gemini", "title": "Google Gemini", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/lmstudio", "title": "LM Studio", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/litellm", "title": "LiteLLM", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/mistral", "title": "Mistral AI", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/moonshot", "title": "Moonshot", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/ollama", "title": "Ollama", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/openai", "title": "OpenAI", - "extension": true, - "cloud": true + "extension": true }, { "id": "providers/openai-compatible", "title": "OpenAI Compatible", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/openrouter", "title": "OpenRouter", - "extension": true, - "cloud": true + "extension": true }, { "id": "providers/qwen-code", "title": "Qwen Code CLI", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/requesty", "title": "Requesty", - "extension": true, - "cloud": false - }, - { - "id": "providers/roo-code-router", - "title": "Roo Code Router", - "extension": true, - "cloud": true + "extension": true }, { "id": "providers/sambanova", "title": "SambaNova", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/vercel-ai-gateway", "title": "Vercel AI Gateway", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/vertex", "title": "GCP Vertex AI", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/vscode-lm", "title": "VS Code Language Model API", - "extension": true, - "cloud": false + "extension": true }, { "id": "providers/xai", "title": "xAI (Grok)", - "extension": true, - "cloud": true + "extension": true }, { "id": "providers/zai", "title": "Z AI", - "extension": true, - "cloud": true + "extension": true } ] } diff --git a/docs/providers/index.mdx b/docs/providers/index.mdx index 79ea0b08..a9975a09 100644 --- a/docs/providers/index.mdx +++ b/docs/providers/index.mdx @@ -1,11 +1,10 @@ --- title: Model Providers -description: Compare all available model providers for Roo Code. See which providers work with the VS Code extension and Roo Code Cloud at a glance. +description: Compare model providers available for the Roo Code VS Code extension. keywords: - model providers - API providers - Roo Code providers - - cloud providers - extension providers --- @@ -13,19 +12,17 @@ import ProviderTable from '@site/src/components/ProviderTable'; # Model Providers -The Roo Code VS Code extension and Roo Code Cloud Agents are highly capable, sophisticated coding agents. While they carry a lot of functionality on their own, they depend on LLM providers to offer the inference needed to complete tasks. +The Roo Code VS Code extension is a capable coding agent, but it depends on LLM providers for the inference needed to complete tasks. -Other tools are intinsically bound by design to a specific provider (like Claude Code → Anthropic Models or Codex → OpenAI models), forcing you to stick with them irrespective of how the landscape changes (which happens fast). Roo on the other hand is **model-agnostic**, allowing you to choose the model that best fits your needs, according to your budget, skill profile, codebase and more. +Other tools are intrinsically bound by design to a specific provider, forcing you to stick with them irrespective of how the landscape changes. Roo is **model-agnostic**, allowing you to choose the model that best fits your needs, according to your budget, skill profile, codebase, and more. -We support connecting to a wide range of model providers, giving you flexibility in how you access AI models. Some providers work with the VS Code extension, while others are available through Roo Code Cloud Agents. +Roo supports connecting to a wide range of model providers, giving you flexibility in how you access AI models. Learn how to set up your provider in [the Roo Code VS Code extension here](/getting-started/connecting-api-provider). ## Provider Comparison -Here's every provider we support and where you can use them. Click for detailed instructions. - -We regularly run evals for all supported models to see how they do against our standard test suite. [See the latest results here](https://roocode.com/evals). +Here's every provider currently documented for the extension. Click for detailed instructions. @@ -33,7 +30,6 @@ We regularly run evals for all supported models to see how they do against our s Yeah, it's a lot. -- **Want it to JustWork™?** Go with the [Roo Code Router](/roo-code-router/overview) for a curated selection and the easiest setup with no API keys required - **Want access to many models?** Try [OpenRouter](/providers/openrouter) for a single API to 100+ models -- **Want to optimize for specific models?** Use the first part provider for each of them (Anthropic, OpenAI, etc) +- **Want to optimize for specific models?** Use the first-party provider for each of them (Anthropic, OpenAI, etc) - **Looking for local/offline models?** Check out [Ollama](/providers/ollama) or [LM Studio](/providers/lmstudio) diff --git a/docs/providers/roo-code-router.md b/docs/providers/roo-code-router.md deleted file mode 100644 index a3212cff..00000000 --- a/docs/providers/roo-code-router.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_label: Roo Code Router -description: The easiest way to get started with AI coding. Access vetted coding models with zero configuration. -keywords: - - roo code router - - roo code cloud - - roo provider - - free ai models - - easy setup - - no api key ---- - -# Roo Code Router - -To make it as smooth as possible to use Roo Code, which depends on a provider service for LLM inference, we've built the Roo Code Router. - -There's no need for a separate subscription or managing API keys. It's fully integrated into our suite of products and easy to get started. It features: - -- Vetted premium coding models, and sometimes free models (depending on vendor availability) -- Only models tested to work well with Roo -- Paid models provided at cost, with no mark-up -- The same pre-paid credit mechanism you'll use for Roo Code Cloud Agents - -[Learn more and how to get started ](/roo-code-router/overview) diff --git a/docs/roo-code-cloud/analytics.mdx b/docs/roo-code-cloud/analytics.mdx deleted file mode 100644 index f617e453..00000000 --- a/docs/roo-code-cloud/analytics.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -description: Monitor token usage, track costs, and analyze agent performance with Roo Code Cloud Analytics. -keywords: - - analytics - - token usage - - cost tracking - - agent performance - - roi - - team insights - - credits -redirect_from: - - /roo-code-cloud/dashboard - - /roo-code-cloud/dashboard/ - - /roo-code-cloud/dashboard#usage-analytics-page ---- - -# Usage Analytics - -Roo Code Cloud provides comprehensive analytics to help you understand how your team is using AI, optimize costs, and measure productivity. - -Analytics Dashboard - -## Access - -Go to the [Analytics](https://app.roocode.com/usage) tab in Roo Code Cloud. - ---- - -## Capabilities - -With the UI controls available, you can slice and dice all of these together: - - - - - - - - - - - - - - - - -
MetricsAggregationsFilters
- - Number of tasks - - Number of tokens - - Inference cost (as reported by the provider) - - Cloud usage run time - - - User - - Cloud Agent - - Model - - Repository - - - Task source (Cloud Agent or workspace/IDE) - - Creator - - Repository - - PR - - Provider - - Timeframe -
- -## What gets tracked? - -- For Cloud Agents, all tasks are tracked and considered for analytics -- For the extension, only tasks you run while logged in and with [Task Sync](/roo-code-cloud/task-sync) enabled get reported for analytics. You can turn off task sync so the contents of tasks aren't sent to Cloud, but usage numbers are always reported while you're logged into the extension. That allows you to keep the contents of certain tasks away from Cloud while still benefiting from usage analytics. diff --git a/docs/roo-code-cloud/cloud-agents.mdx b/docs/roo-code-cloud/cloud-agents.mdx deleted file mode 100644 index f279789e..00000000 --- a/docs/roo-code-cloud/cloud-agents.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -description: Comprehensive guide to Roo Code Cloud's autonomous agents - specialized AI workers that plan, code, review, and fix software independently. -keywords: - - Cloud Agents - - Autonomous Agents - - PR Reviewer - - PR Fixer - - Coder Agent - - Planner Agent - - Explainer Agent - - AI orchestration - - hosted execution - - credits ---- - -# Cloud Agents - -Cloud Agents are specialized, autonomous AI workers that run in the cloud. - -They upend the way most people think about software development: instead of a highly specialized activity that can only happen in a specialized IDE, it encapsulates the relevant aspects of each part of the process into agents that can run on their own (but will take your guidance if you choose). - -In other words: instead of doing all of your learning, investigating, coding, testing and shipping from your IDE, you can delegate work to focused agents which operate as a team. And it's your choice how much you lean into it. - -Cloud Agents are available in all Roo Code Cloud plans, including the free one. - -Sounds like wishful thinking? Read on and we'll show you how to use them. - ---- - -## How to work with Cloud Agents - -We at Roo have been developing Roo Code mostly with Cloud Agents for several months and learned that the following practices lead to the best results: - -- **When in doubt, start in the Cloud**: unless it's a very small change, it's usually easier to fire off several tasks to Cloud Agents (especially as you start or finish your day) and check in as they become ready. The Agents are excellent at getting things 50-80% done (often more), doing most of the heavy lifting. You can then iterate from there (be it with Cloud Agents or locally). -- **Embrace pull requests as the main unit of work**: to ensure Cloud Agents don't break things, they work on isolated branches and deliver work via PRs. They can be created, iterated upon, reviewed and fixed without you ever checking out code locally. -- **Let go of individual PRs**: be ready to throw stuff away once in a while, since LLMs aren't flawless. Quantity has a quality all of its own, so being generative pays off. -- **Invest in preview environments**: if your project allows for it (eg it's a web app), set up a preview environment (like [Vercel's Deployments](https://vercel.com/docs/git)) so you can check in on PRs without running them locally. -- **AI Coding isn't just for codes**: while only people with Engineer in the title may open IDEs in your company, everyone has questions and ideas for your product. Give access to cloud agents to everyone in our team (you don't pay per seat) and encourage people to get answers to their questions directly from them. We've seen customer support, product, design and marketing people understand code behavior and make small (and not-so-small) changes without having to open an IDE. -- **Develop collective learning in public**: if your team works on Slack, call agent in public channels, so everyone can see their answers and the result of their work. It organically gets people on the same page. - - -## The Cloud Agent Team - -The current line up available to your is below. Keep in mind we let you rename them as you please – we really believe in making them part of your team. - -### The Explainer -**Job:** Technical Educator - -Explains code, concepts, and technical documentation. It helps you understand complex parts of a codebase without needing to read every line. - -- **Best for:** Onboarding to a new codebase, understanding legacy code, debugging conceptual issues. - - -### The Planner -**Job:** Implementation Planning and Architecture - -The Planner agent maps out implementation plans and navigates complex technical decisions. It's designed to take a high-level idea or a Product Requirement Document (PRD) and break it down into a thorough, step-by-step implementation plan which can the be given to coding agent (or a human!). - -- **Best for:** New feature planning, system architecture design, complex refactoring strategies. - -### The Coder -**Job:** Full-scale across all languages - -The Coder agent writes code, creates pull requests, and implements features. It is the workhorse of the platform, capable of handling end-to-end coding tasks. - -- **Best for:** Building features, fixing bugs, refactoring components, writing tests. - -### The PR Reviewer -**Job:** Code reviews - -The PR Reviewer agent automatically provides comprehensive code reviews with actionable comments. It can monitor your repositories and review incoming Pull Requests. - -- **Best for:** Automated code quality checks, catching bugs early, enforcing coding standards. - -### The PR Fixer -**Job:** Focused fixes - -The PR Fixer agent is specialized in resolving issues identified in Pull Requests. It listens for feedback and autonomously implements fixes. - -- **Best for:** Resolving PR comments, fixing CI/CD failures, addressing review feedback. - -:::info More agents coming -While this cast of characters can get most jobs done, user feedback informs the development of new agents. We have a few [currently in development](#upcoming-agents) -::: ---- - -## How Cloud Agents Work - -### General workflow - -1. **Start:** Agents can be called: - - Manually via [the Web UI](https://app.roocode.com) (New Task button) - New task button - - - Automatically via [GitHub](/roo-code-cloud/github-integration) (e.g., new PR opened) - PR Review comments - - - Manually from [GitHub](/roo-code-cloud/github-integration) (`@Roomote` mention). - Github comment @mention - - - Manually manually via [Slack Integration](/roo-code-cloud/slack-integration) (`@Roomote` mention). - New task button - -2. **Run:** The agent spins up a secure, isolated cloud environment to perform its task. It clones your repository, analyzes the context, and executes the required actions. -3. **Complete:**: Once the task is done, the agent reports back with the results in the same place where you started. -4. **Control:** You can intervene at any time by going to the task. -5. **Look back:** all tasks are accessible in your Roo Code Cloud account. - -### Credits & Usage - -Cloud Agents consume **Cloud Credits**. Usage is measured based on the model used and the duration of the task. -- **Free Tier:** Includes access to free models for standard tasks. -- **Pro Tier:** Unlocks concurrent agent execution and priority queueing. - -There’s a [pricing page](https://roocode.com/pricing) if you want to learn more. - -### Settings - -The specific set of configuration options for each agent type varies (and are accessible in the ⚙️ icon in the agent page), but the main ones you'll find are: - -- **Name:** which is how the agent is referenced in the app. -- **Model:** the model powering inference for that agent. You can mix and match providers and models across your agent team. -- **Repositories:** the repos the agent has access to. Keep in mind we'll only lists the one you allowed when connecting to Github. If any are missing, Update your Github connection. -- **PR Creation Action:** for agents that make code changes, you can choose if they do it by creating a full PR, a draft PR or just pushing a branch. -- **Additional guidance:** any specific instructions for that agent, like things for the Reviewer to pay more attention to, coding practices for the Coder to follow, etc. It's a free text box, so you can type whatever you want, but keep in mind too many instructions may reduce the quality of results, so keep it concise and focused. - - -Most people will only have one agent of each type, but you may want to more tha one instance to have different configurations, especially model (main agent with good model, another agent with expensive model) or custom instructions (for specific repositories). - -## Upcoming Agents - -- **Improver:** a "meta agent" which analyzes agent feedback and PR reviews to maintain and improve [custom instructions](/features/custom-instructions#what-are-custom-instructions). -- **Security Auditor:** conducts security audits and identifies vulnerabilities regularly, across the codebase (and not just individual PRs) -- **Documentation Writer:** a tech writer that understands your code and writes actionable user-facing documentation. -- **Translator:** translates strings with accuracy and following your brand voice. - -[Write us](mailto:support@roocode.com) if you're interested in trying them out in Beta or if you have other suggestions. diff --git a/docs/roo-code-cloud/connect.mdx b/docs/roo-code-cloud/connect.mdx deleted file mode 100644 index b2ec8a33..00000000 --- a/docs/roo-code-cloud/connect.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Connect the Extension to Cloud -description: Connect your Roo Code extension to Roo Code Cloud for syncing, history, and collaboration. -keywords: - - Roo Code Cloud login - - authentication - - connect account - - sign in ---- - -import Codicon from '@site/src/components/Codicon'; - -Connect Roo Code to Roo Code Cloud to link your editor with the web app for task syncing, online history, and collaboration features. - -## Quickstart - -1. In Roo Code, click the cloud icon and select Connect. -2. Choose a sign-in method (GitHub/Google OAuth or Email) on app.roocode.com. -3. You’ll be returned to VS Code with your account connected. diff --git a/docs/roo-code-cloud/environments.mdx b/docs/roo-code-cloud/environments.mdx deleted file mode 100644 index b334ad40..00000000 --- a/docs/roo-code-cloud/environments.mdx +++ /dev/null @@ -1,593 +0,0 @@ ---- -description: Configure multi-port preview environments with automatic domain routing and environment variable injection for full-stack applications. -keywords: - - Preview Environments - - Multi-port - - Named Ports - - Environment Variables - - Full Stack - - Services - - Postgres - - Redis - - Detached Commands - - Tool Versions - - mise - - Initial Path - - Subdomain Routing - - Proxied Ports - - Direct Port Access ---- - -# Preview Environments - -Preview environments let you run multiple services in a cloud container with automatic domain routing. Each port you configure gets a unique public URL, and environment variables are injected so your applications can communicate with each other. - -## Overview - -When you spawn an environment, Roo Code Cloud: - -1. Creates a cloud container with your configured ports exposed -2. Generates unique HTTPS domains for each port -3. Injects environment variables like `ROO_WEB_HOST` and `ROO_API_HOST` into your container -4. Clones your repositories, starts services, and runs your commands - -This allows you to run a complete stack—frontend, API, workers—in a single preview environment where all the pieces can talk to each other. - -## Configuration - -Environments are configured in YAML format. Here's the complete schema: - -```yaml -name: My Full Stack App -description: Frontend and API running together - -repositories: - - repository: myorg/frontend - commands: - - name: Install - run: npm install - - name: Start - run: npm run dev - detached: true - - - repository: myorg/backend - commands: - - name: Install - run: npm install - - name: Start - run: npm run dev - detached: true - -ports: - - name: WEB - port: 3000 - - name: API - port: 3001 - -services: - - postgres16 - - redis7 - -env: - NODE_ENV: development -``` - -## Named Ports - -The `ports` section defines which ports to expose and what to call them: - -```yaml -ports: - - name: WEB - port: 3000 - - name: API - port: 3001 - - name: ADMIN - port: 3002 - initial_path: /dashboard -``` - -### Port Configuration Fields - -| Field | Description | Required | -|-------|-------------|----------| -| `name` | Identifier for the port (used to generate environment variables) | Yes | -| `port` | The port number to expose | Yes | -| `unauthenticated` | Skip authentication for this port's preview URL (`false` by default). See [Public Ports](#public-ports-unauthenticated) | No | -| `proxied` | Whether traffic goes through the auth proxy (`true` by default). Set to `false` for direct port access (see [Direct Port Access](#direct-port-access-non-proxied)) | No | -| `initial_path` | Default path to append to the preview URL | No | -| `subdomain` | Subdomain to set on the `Host` header when forwarding requests to the app | No | - -For each named port, an environment variable is injected into your container: - -| Port Config | Environment Variable | Example Value | -|-------------|---------------------|---------------| -| `name: WEB, port: 3000` | `ROO_WEB_HOST` | `https://abc123.preview.roocode.cloud` | -| `name: API, port: 3001` | `ROO_API_HOST` | `https://def456.preview.roocode.cloud` | -| `name: ADMIN, port: 3002` | `ROO_ADMIN_HOST` | `https://ghi789.preview.roocode.cloud` | - -### Naming Rules - -Port names must: -- Start with a letter -- Contain only letters, numbers, and underscores -- Be 1-50 characters long - -The name is converted to uppercase for the environment variable (e.g., `web` becomes `ROO_WEB_HOST`). - -### Limits - -Port limits depend on whether ports are proxied (default) or non-proxied: - -- **Proxied ports** (default): up to **10** per environment. These share a single internal port slot via multiplexing. -- **Non-proxied ports** (`proxied: false`): up to **1** per environment. Each non-proxied port consumes a dedicated port slot. - -### Initial Path - -Use `initial_path` to specify the default URL path for a port's preview link. This is useful when your application's entry point isn't at the root path. - -For example, if your app requires authentication and the login page is at `/login`: - -```yaml -ports: - - name: WEB - port: 3000 - initial_path: /login -``` - -When the environment starts, the preview URL provided in the UI and task will be `https://abc123.preview.roocode.cloud/login` instead of the root URL. - -:::note -The `ROO__HOST` environment variable always contains the base URL without the initial path (e.g., `https://abc123.preview.roocode.cloud`). The `initial_path` only affects the preview link shown in the UI. -::: - -#### Validation Rules - -The `initial_path` must: -- Start with a forward slash (`/`) -- Contain only valid URI characters - -Query parameters and hash fragments are allowed. Valid examples: -- `/login` -- `/dashboard` -- `/api/v1/health` -- `/app/projects/123` -- `/login?redirect=home` -- `/docs#getting-started` - -Invalid examples: -- `login` (missing leading slash) - -### Subdomain Routing - -Use the `subdomain` field to enable subdomain-based routing for frameworks that rely on the `Host` header to distinguish tenants or admin panels (e.g., Rails, Django, Phoenix). - -When a port has a `subdomain` configured, the proxy rewrites the `Host` and `X-Forwarded-Host` headers to `{subdomain}.localhost:{port}` before forwarding the request to your application. The browser URL stays unchanged -- the rewriting happens internally inside the sandbox. - -```yaml -ports: - - name: WEB - port: 3000 - subdomain: admin -``` - -With this configuration, your application receives requests with `Host: admin.localhost:3000`, allowing it to route based on the subdomain without any DNS or infrastructure changes. WebSocket connections also receive the rewritten `Host` header. - -#### Validation Rules - -The `subdomain` value must be a valid DNS hostname: -- Lowercase alphanumeric characters, hyphens, and dots only -- Must start and end with an alphanumeric character -- 1-253 characters long - -Valid examples: -- `admin` -- `tenant1` -- `us-west.api` - -Invalid examples: -- `Admin` (uppercase not allowed) -- `-admin` (cannot start with a hyphen) -- `admin-` (cannot end with a hyphen) - -#### Use Cases - -- **Multi-tenant apps**: Route `tenant1.localhost:3000` and `tenant2.localhost:3000` to different tenants in a single application -- **Admin panels**: Serve an admin interface on `admin.localhost:3000` while the main app runs on the root domain -- **Subdomain APIs**: Frameworks like Rails can use `api.localhost:3000` to route API requests to a separate controller namespace - -### Public Ports (Unauthenticated) - -By default, all preview URLs require authentication -- visitors must be signed in to your Roo Code Cloud organization to access them. Setting `unauthenticated: true` on a port disables this auth check while keeping the proxy layer intact. - -```yaml -ports: - - name: WEB - port: 3000 - - name: API - port: 3001 - unauthenticated: true - - name: WEBHOOK - port: 3002 - unauthenticated: true -``` - -Use `unauthenticated: true` when you need: - -- **API endpoints** that your frontend or external clients call directly (the auth proxy would otherwise block non-browser requests) -- **Webhook receivers** that need to accept requests from external services (e.g., Stripe, GitHub) -- **Public-facing endpoints** like documentation sites or landing pages -- **Health checks** or status pages accessed by monitoring tools - -The port still goes through the proxy, so it benefits from HTTPS termination and domain routing. Only the authentication requirement is removed. - -### Direct Port Access (Non-Proxied) - -By default, all ports are proxied through an authentication layer that validates requests before forwarding them to your application. Setting `proxied: false` bypasses this proxy entirely and exposes the port directly on the sandbox domain. - -:::tip[Try `unauthenticated: true` first] -If you just need to skip authentication (e.g., for a public-facing endpoint or webhook), use `unauthenticated: true` instead. It keeps the proxy in place while disabling the auth check, and doesn't count against the stricter non-proxied port limit. Only reach for `proxied: false` when the proxy itself is the problem. -::: - -```yaml -ports: - - name: WEB - port: 3000 - - name: METRICS - port: 9090 - proxied: false -``` - -Use `proxied: false` only when the proxy layer itself is incompatible with your use case: - -- **WebSocket or streaming connections** that are disrupted by the proxy intermediary -- **Services with custom connection handling** that conflict with the proxy's request processing - -:::warning[Warning] -When `proxied` is `false`, the port is **completely exposed without authentication**, regardless of the `unauthenticated` setting. Non-proxied ports also count against a stricter limit (1 per environment vs. 10 for proxied ports). Only use this as a last resort when other options don't work. -::: - -The `ROO__HOST` environment variable for a non-proxied port points to the direct sandbox domain instead of the preview proxy URL. Your application code doesn't need to change -- just use the injected variable as usual: - -```typescript -// Works the same whether the port is proxied or not -const metricsUrl = process.env.ROO_METRICS_HOST || 'http://localhost:9090'; -``` - -## Using Environment Variables in Your Code - -Use the `ROO__HOST` variables instead of hardcoded URLs so your services can find each other in both preview and local environments: - -```typescript -// Backend: configure CORS with the injected frontend URL -app.use(cors({ - origin: process.env.ROO_WEB_HOST || 'http://localhost:3000' -})); - -// Frontend (Vite): pass the API URL at build time -// vite.config.ts -export default defineConfig({ - define: { - 'import.meta.env.API_URL': JSON.stringify(process.env.ROO_API_HOST || 'http://localhost:3001') - } -}) -``` - -For static site frameworks (Vite, Next.js, CRA), the API URL needs to be set at build time via command-level `env`: - -```yaml -commands: - - name: Build - run: npm run build - env: - VITE_API_URL: ${ROO_API_HOST} -``` - -## Repositories - -List the repositories to clone into your environment: - -```yaml -repositories: - - repository: myorg/frontend - commands: - - name: Install dependencies - run: npm install - - name: Build - run: npm run build - - name: Start dev server - run: npm run dev - detached: true - logfile: /tmp/frontend.log - - - repository: myorg/backend - commands: - - name: Install dependencies - run: npm install - - name: Run migrations - run: npm run db:migrate - - name: Start server - run: npm run start - detached: true - logfile: /tmp/backend.log -``` - -### Repository Configuration Fields - -| Field | Description | Required | -|-------|-------------|----------| -| `repository` | Repository in `owner/repo` format (e.g., `myorg/my-app`) | Yes | -| `branch` | Branch to checkout (defaults to the repository's default branch) | No | -| `tool_versions` | Tool versions to install via [mise](https://mise.jdx.dev/) (see [Tool Installation](#automatic-tool-installation)) | No | -| `commands` | Ordered list of commands to run after cloning | No | - -### Commands - -Each repository can have its own commands that run in order. Commands support: - -| Field | Description | Default | -|-------|-------------|---------| -| `name` | Display name for the command | Required | -| `run` | The shell command to execute | Required | -| `working_dir` | Relative directory to run the command in | Repository root | -| `cwd` | Absolute path to run the command in | Repository root | -| `env` | Command-specific environment variables | None | -| `timeout` | Maximum seconds to wait | 600 | -| `continue_on_error` | Keep going if command fails | false | -| `detached` | Run in the background (see below) | false | -| `logfile` | File path to write stdout/stderr when `detached` is true | None | - -### Background Processes - -To start a long-running process like a dev server, use `detached: true`. This runs the command in the background so subsequent commands can execute immediately: - -```yaml -commands: - - name: Install - run: npm install - - name: Start dev server - run: npm run dev - detached: true - logfile: /tmp/dev-server.log -``` - -When `detached` is true, the command runs via `nohup` and the worker moves on after confirming the process started. If `logfile` is set, stdout and stderr are written to that path — useful for debugging startup issues. - -### Automatic Tool Installation - -Roo Code Cloud uses [mise](https://mise.jdx.dev/) to manage tool versions. There are two ways to specify which versions of Node.js, Python, Ruby, Go, or other runtimes your project needs. - -#### Option 1: `tool_versions` in the environment config - -Set `tool_versions` directly on a repository entry to declare tool versions without modifying the repo itself. Roo Code Cloud generates a `.tool-versions` file from this config and adds it to `.git/info/exclude` so it stays out of version control. - -```yaml -repositories: - - repository: myorg/backend - tool_versions: - node: "20.11.0" - python: "3.12.1" - commands: - - name: Install - run: npm install -``` - -This takes priority over any existing `.tool-versions` file in the repository. - -#### Option 2: `.tool-versions` file in the repository - -If a repository already contains a `.tool-versions` file (used by mise / asdf), Roo Code Cloud automatically picks it up and runs `mise install` after cloning — no extra configuration needed. - -``` -# .tool-versions -node 20.11.0 -python 3.12.1 -``` - -:::tip -Use `tool_versions` in the environment config when you want to pin versions per-environment without committing changes to the repository. Use a `.tool-versions` file in the repo when all environments should share the same versions. -::: - -## Services - -Add managed database and cache services: - -```yaml -services: - - redis7 - - postgres16 -``` - -### Available Services - -| Service | Default Port | Connection Variables | -|---------|--------------|---------------------| -| `redis6` | 6379 | `REDIS_URL` | -| `redis7` | 6379 | `REDIS_URL` | -| `postgres15` | 5432 | `DATABASE_URL`, `POSTGRES_*` | -| `postgres16` | 5432 | `DATABASE_URL`, `POSTGRES_*` | -| `postgres17` | 5432 | `DATABASE_URL`, `POSTGRES_*` | -| `mysql8` | 3306 | `DATABASE_URL`, `MYSQL_*` | -| `mariadb10` | 3306 | `DATABASE_URL`, `MARIADB_*` | -| `clickhouse` | 9000 | `CLICKHOUSE_URL` | - -### Custom Ports - -If you need a service on a non-default port: - -```yaml -services: - - name: postgres16 - port: 5433 -``` - -## Environment Variables - -Define environment variables available to all commands: - -```yaml -env: - NODE_ENV: development - LOG_LEVEL: debug - FEATURE_FLAGS: "new-ui,beta-api" -``` - -These are merged with: -1. Service connection variables (e.g., `DATABASE_URL`) -2. Named port variables (e.g., `ROO_WEB_HOST`) -3. Command-specific variables (highest priority) - -## Complete Example - -Here's a full-stack application with a React frontend, Hono API, and background worker: - -```yaml -name: E-Commerce Platform -description: Full stack with frontend, API, and worker - -repositories: - - repository: acme/storefront - commands: - - name: Install - run: npm install - - name: Build - run: npm run build - env: - VITE_API_URL: ${ROO_API_HOST} - - name: Serve - run: npx serve -s dist -l 3000 - detached: true - logfile: /tmp/storefront.log - - - repository: acme/api - tool_versions: - node: "20.11.0" - commands: - - name: Install - run: npm install - - name: Migrate - run: npm run db:push - - name: Start - run: npm run start - detached: true - logfile: /tmp/api.log - env: - ALLOWED_ORIGINS: ${ROO_WEB_HOST} - - - repository: acme/worker - branch: main - commands: - - name: Install - run: npm install - - name: Start - run: npm run start - detached: true - logfile: /tmp/worker.log - -ports: - - name: WEB - port: 3000 - - name: API - port: 3001 - - name: WORKER - port: 3002 - -services: - - postgres16 - - redis7 - -env: - NODE_ENV: production - LOG_LEVEL: info -``` - -After the environment starts, you'll get unique URLs for each port. Visit the WEB URL to access your running application. - -## Common Issues - -### CORS Errors - -In a preview environment, your frontend and backend run on different domains (e.g., `https://abc123.preview.roocode.cloud` and `https://def456.preview.roocode.cloud`). Browsers block cross-origin requests by default, so you need to configure both sides: the backend must allow the frontend's origin, and the frontend dev server must accept the preview domain. - -Make sure both ports are defined so the `ROO_*_HOST` variables get injected: - -```yaml -ports: - - name: WEB - port: 3000 - - name: API - port: 3001 -``` - -#### Backend: Allow the frontend origin - -Use `ROO_WEB_HOST` to configure your backend's CORS policy: - -```typescript -// Express -import cors from 'cors'; -app.use(cors({ origin: process.env.ROO_WEB_HOST || 'http://localhost:3000' })); - -// Hono -import { cors } from 'hono/cors'; -app.use(cors({ origin: process.env.ROO_WEB_HOST || 'http://localhost:3000' })); - -// Fastify -app.register(import('@fastify/cors'), { - origin: process.env.ROO_WEB_HOST || 'http://localhost:3000' -}); -``` - -#### Frontend: Allow the preview domain - -Dev servers like Vite and Next.js reject requests from unrecognized hosts by default. You need to allow the preview domain so the dev server responds to requests on `https://.preview.roocode.cloud`: - -```typescript -// Vite — vite.config.ts -export default defineConfig({ - server: { - allowedHosts: process.env.ROO_WEB_HOST - ? [new URL(process.env.ROO_WEB_HOST).hostname] - : [], - } -}) - -// Next.js — next.config.ts -export default { - allowedDevOrigins: process.env.ROO_WEB_HOST - ? [process.env.ROO_WEB_HOST] - : [], -} -``` - -### Managing Frontend API URLs with `.env` Files - -Frontends typically need the API URL at build time. If your project already uses `.env` files (via dotenv, dotenvx, or framework built-ins like Vite's `.env.local`), you can write the injected `ROO_API_HOST` into a `.env` file as a setup command — no code changes needed: - -```yaml -repositories: - - repository: myorg/frontend - commands: - - name: Configure API URL - run: echo "VITE_API_URL=${ROO_API_HOST}" >> .env.local - - name: Install - run: npm install - - name: Start - run: npm run dev - detached: true -``` - -This works with any framework that reads `.env` files: - -| Framework | File | Variable prefix | -|-----------|------|-----------------| -| Vite | `.env.local` | `VITE_` | -| Next.js | `.env.local` | `NEXT_PUBLIC_` | -| Create React App | `.env.local` | `REACT_APP_` | - -This approach keeps your environment config simple and avoids modifying application code. - -## Tips - -- **Use `ROO_*_HOST` variables, not hardcoded URLs.** Always fall back to localhost for local dev: `process.env.ROO_API_HOST || 'http://localhost:3001'`. -- **Use consistent uppercase port names.** `WEB`, `API`, `ADMIN` — not `frontend`, `BACKEND_API`, `Admin_Panel`. diff --git a/docs/roo-code-cloud/github-integration.mdx b/docs/roo-code-cloud/github-integration.mdx deleted file mode 100644 index ac7ba86e..00000000 --- a/docs/roo-code-cloud/github-integration.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -description: Integrate Roo Code Cloud agents with GitHub to automate pull request reviews and fixes. -keywords: - - GitHub Integration - - PR Reviewer - - PR Fixer - - automated code review - - automated bug fixing - - GitHub App ---- - -# GitHub Integration - -Roo Code Cloud integrates directly with GitHub to bring your autonomous Cloud Agent team into your pull request workflow. By installing the Roo Code GitHub App, you can enable agents to create branches, automatically review code and fix issues. - ---- - -## Integration Touchpoints - -Here are the ways [Cloud Agents](/roo-code-cloud/cloud-agents) integrate with GitHub: -- **Code creation:** the Coder agent delivers its work via git. When you ask it to create/change something, it will make changes in its container environment, commit them locally, push to the remote repository and create a PR describing it all. You can change its settings to create a draft (not regular) PR, or to just push to the remote branch, without creating a PR. -- **Code review:** the Reviewer agent delivers its work via Github PR comments. It will automatically review newly created PRs (including by the Coder!) in the repositories where it's enabled, by adding comments. It will also review subsequent commits which get pushed to that branch. You can control criteria for what PRs get reviewed in its settings. -- **Code fixes:** the Fixer agent delivers its work via pushes to Github branches (and comments). When you invoke it from a PR (see below) it will read through comments (made by humans or Cloud Agents) and implement proper fixes, taking any additional instructions you give it into consideration. It will do so by checking out the PR branch in its environment, committing changes and pushing them to the branch (and leaving a comment when its done so you can know). - - -## Setting Up - -You'll be prompted to connect to Github when first creating your Cloud Agent team. If you haven't done that yet, [do it now](https://app.roocode.com/cloud-agents/setup) and make sure to create at least a PR Reviewer and PR Fixer agent. - -This will take you through an OAuth process with Github, where you will: - -1. Choose the accounts to link - The first step - -2. Choose what repositories to make visible to the agents - The second step - - You can control individual agent access to repos [in agent settings](/roo-code-cloud/cloud-agents#settings). - -Now your Cloud Agents are able to work with Github. - -## Calling agents - -By default, any PR Reviewer agents you have will continuously monitor for new PRs according to the criteria you define in [their settings](/roo-code-cloud/cloud-agents#settings). So when a new PR is created, you'll see a comment like this: - -The Rooviewer agent responding - -You can also call the PR Fixer agent to address any feedback you may have in the PR by calling **@Roomote** like this: - -Mentioning @roomote to call the fixer - -You can also assign tasks to the Reviewer and Fixer from their own pages or the New Task button up top. - -The New Task page for them lets you paste a relevant URL: - -New task for the reviewer - -You can then follow the task from the web UI and see the results in the PR itself. - -:::info It's always @Roomote -Please note that you can't call specific agents by name. When you use **@Roomote**, you're mentioning the Roo Code GitHub App, which handles the integration. The app will then smartly call the appropriate agent for the context. -::: \ No newline at end of file diff --git a/docs/roo-code-cloud/login.mdx b/docs/roo-code-cloud/login.mdx deleted file mode 100644 index 159b6324..00000000 --- a/docs/roo-code-cloud/login.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_label: Sign in from the Extension -description: Learn how to connect your Roo Code extension to Roo Code Cloud for task syncing, online history, and collaboration features. -keywords: - - Roo Code Cloud login - - authentication - - connect account - - sign up - - GitHub login ---- - -import Codicon from '@site/src/components/Codicon'; - -# Login/Signup - -Connect your Roo Code extension to Roo Code Cloud to sync your prompts, access online task history, and enable sharing and collaboration features. - -## Getting Started - -To connect your extension to Roo Code Cloud: - -1. Go to the **Cloud** tab in the top right corner of the Roo Code extension. - Tab location in the extension -2. Click on the big blue button (and click on "Open" if asked). -3. Sign up for or sign in to your account, using the auth method of your choice -4. Review and accept the terms of service and privacy policy -5. The next page will attempt to redirect you back to VS Code, accept it - Account creation confirmation popup -6. You'll be logged in - -## Troubleshooting - -If you're not taken to your IDE, from this screen: - -IDE selector for VS Code forks - -You can: -- Click on the logo for your IDE (eg VS Code, Trae, Cursor) and see if the popup appears, or -- Copy the URL from the box below and, in the extension, click on "Having Trouble?" and paste it in - -Your Roo Code VS Code extension is now connected to Roo Code Cloud and ready to sync your data and enable collaboration features. - -If you never even see the screen above, go back to the extension, click on "Start Over" and try again. It should work now. - -## Authentication Security - -Roo Code Cloud uses industry-standard OAuth with GitHub and Google, plus traditional email authentication to ensure secure access to your account: - -- **OAuth 2.0 Protocol** - Secure authentication through trusted providers (GitHub and Google) -- **No Password Storage** - When using OAuth, Roo Code never stores your GitHub or Google passwords -- **Encrypted Connections** - All authentication requests use HTTPS encryption -- **Token-Based Access** - Secure tokens manage your session without exposing credentials -- **Email Authentication** - Traditional email/password option with secure password hashing \ No newline at end of file diff --git a/docs/roo-code-cloud/overview.md b/docs/roo-code-cloud/overview.md deleted file mode 100644 index 29eda464..00000000 --- a/docs/roo-code-cloud/overview.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -description: Roo Code Cloud transforms AI development with autonomous agents that work independently in the cloud, accessible from GitHub, Slack, or the web. -keywords: - - Roo Code Cloud - - Autonomous Agents - - Cloud Agents - - AI development platform - - GitHub integration - - Slack integration - - Free AI models ---- - -# Roo Code Cloud Overview - -Roo Code Cloud transforms AI development with autonomous [Cloud Agents](./cloud-agents) that work independently in the cloud. Instead of just assisting you in your editor, these agents can plan, code, review, and fix issues autonomously, accessible directly from **GitHub PRs**, **Slack messages**, or the **web browser**. - -It also augments the Roo Code VS Code extension capabilities by adding: -- Access to the [Roo Code Router](/roo-code-router/overview) -- [Task Sync](./task-sync) to access your entire task history in one place -- [Task sharing](./task-sharing) to access specific tasks with friends or co-workers -- [Token usage analytics](./analytics) to understand where your tokens and dollars are going - -And, in the [Team plan](./team-plan), adds team-oriented features: -- Centralized LLM inference billing without managing API keys (with the [Roo Code Router](/roo-code-router/overview)) -- Team-wide task history and token usage analytics -- Shared Cloud Agent team (with centralized billing) -- Centralized integration with Github and Slack (not one per user) -- Extension configuration enforcement (providers/models, MCP servers and more) - ---- - -## Getting Started - -To use it, you'll need an account. You can: -- **[Directly sign up for a Roo Code account](https://app.roocode.com/sign-up)** and set up your agent team -- Or **[sign up for a Roo Code account from the VS Code extension](/roo-code-cloud/login)** to your account - -If you chose the Roo Code Router when signing up, you already have an account and only need to sign in. - -## Managing your account - -You can manage all of your account settings (including cancellation) from the [web UI](https://app.roocode.com) and clicking on the user avatar menu, in the top right: - -
- The user menu for Personal and Team accounts. -
The user menu for Personal and Team accounts, respectively.
-
- -- **Account switcher:** to switch between multiple accounts associated to the same email address (if you have them). -- **Billing and credits:** to add [credits](/credits/overview), configure auto top-up, change payment method, upgrade plans. -- **My Settings:** to change settings specific to you or to cancel/delete your personal Roo Code cloud account (under "Open Profile"). -- **Organization Settings:** to change [global settings](/roo-code-cloud/team-plan#capabilities) for your Team. -- **Docs:** to come here, so meta :) -- **Help:** to start an in-app chat with our team diff --git a/docs/roo-code-cloud/slack-integration.mdx b/docs/roo-code-cloud/slack-integration.mdx deleted file mode 100644 index 735250a5..00000000 --- a/docs/roo-code-cloud/slack-integration.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -description: Use Roo Code Cloud agents directly from Slack to plan features, explain code, and trigger tasks. -keywords: - - Slack Integration - - ChatOps - - "@Roomote" - - Slack bot - - AI planning - - collaborative coding - - team collaboration - - remote tasks ---- - -# Slack Integration - -The Roo Code Slack integration brings your Cloud Agent team directly into your chat workspace. You can summon agents to explain code, plan new features, or execute coding tasks without leaving Slack, and they get along quite well with humans. - -Summoning agents from Slack in public channels is an effective way to bring the entire team into the process, to learn by example how to best leverage Cloud Agents (and the information/outcomes they produce). - ---- - -## Setting Up - -You'll be prompted to connect to Slack when first signing up for your account. But if you dismiss it, you can do it later: - -1. Go to your personal or org settings (if available) in the top right user menu -2. Click on "Connect" and follow the process -3. Add the `@Roomote` bot to the channels where you want it to be available - -**Note:** The Slack integration will not watch your conversations unless you specifically mention `@Roomote`. - -## Calling Agents - -1. To interact with Roo Code agents, simply mention `@Roomote` in any channel where the bot is present to start a thread, giving it instructions. It will react with 👀 to acknowledge it. - -2. Then, the app will ask you what Agent to use with what repository. You can choose "all repositories", but the more focused you can make the agent, the higher the chances of good results. - The Slack app checking what agent and repo to use - - Keep in mind not all agents appear in this list, as some don't make sense (eg the PR Reviewer) - -3. If the agent has any questions, it will get back to you with options, like this: - The Slack app asking for an answer - -4. Once done, the agent will never directly modify your code. If it was a coding task, it will push a branch or create a PR, depending on how it's configured, but it will never touch `main`/`master` or production. - -You can always send messages directly though by mentioning **@Roomote** again in the thread. It will keep context. - -:::info It's always @Roomote -Please note that you can't call specific agents by name. When you use **@Roomote**, you're mentioning the Roo Code Slack App, which handles the integration. That's why the app will ask you to pick an agent. -::: - -## Examples - -### Planning Projects - -Start a thread to discuss and plan a new feature with your team and the AI. - -> **@Roomote** We need to add a 'Forgot Password' flow to the user service. Can you plan this out? - -Pick a Planner agent wait for the plan. You can then run it by your team or give it to the Coder agent to build. - -### Explaining Code - -Ask questions about your codebase to get immediate answers. Great for understanding bugs or confusing behavior. - -> **@Roomote** why may users be getting double confirmation emails after completing their purchase? - -But wait, agents are actually smart enough to understand the context of threads. So you can, after some back-and-forth with a colleague, simply ask: - -> **@Roomote** why is this happening? - -And it will know what to do. - -### Writing Code - -Trigger coding tasks directly from chat. - -> **@Roomote** create a new API endpoint for user profile updates, including support for profile image upload - -> **@Roomote** fix this bug: `` - -> **@Roomote** build this: `[paste an implementation plan from the planner]` - -The possibilities are enormous. - -## Limitations - -- **Mention required in channels** — Generic channel messages without @Roomote are ignored -- **Images only** — Non-image files aren't processed; images must be under 10MB -- **Active subscription** — Requires funded Cloud credits diff --git a/docs/roo-code-cloud/task-sharing.mdx b/docs/roo-code-cloud/task-sharing.mdx deleted file mode 100644 index e804b233..00000000 --- a/docs/roo-code-cloud/task-sharing.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -description: Learn how to share your Roo Code tasks and collaborate with others using shareable links. Share from the extension or web UI. -keywords: - - task sharing - - collaboration - - shareable links - - Roo Code Cloud - - team collaboration ---- - -import Codicon from '@site/src/components/Codicon'; - -# Task Sharing - -This allows you to share Roo Code tasks (in the extension or from Cloud Agents) with secure links with whoever you choose. This allows you to help others understand how you're using Roo, debug a problem or help your teammates learn. - -You can choose whether to share with your organization (Team plan only) or publicly (anyone with the link). - -:::note Organization Policy -If your organization disables task sharing, the Share button is disabled and shows a tooltip indicating sharing is disabled. On the web dashboard, the Share action may also be unavailable if you don’t have permission to share that task. -::: - ---- - -## Sharing from the Roo Code Extension - -1. Open the Share menu - - In an active task, click the Share icon in the task header (right side). - Share icon in the active task header - -2. Choose who can access - - Pick one: - - **Share with Organization** — Only members of your organization can access - - **Share Publicly** — Anyone with the link can access - - Default: If not specified, the extension uses Organization visibility by default. - Share options showing Organization and Public visibility choices - -3. Create the link - - Roo generates the link and copies it to your clipboard. A brief success message appears in the UI. - Share link created and copied confirmation - -## Sharing from Roo Code Cloud - -1. Go to [Roo Code Cloud](https://app.roocode.com) and open the task you want to share. - -2. Click the **Share** button to open sharing options. - -3. Create and manage links - - Choose Organization or Public, then click **Create Share Link**. - - Expiration: - - Personal accounts: links expire after 30 days. - - Organizations: expiry is set by your org (1–365 days; default 30). - - From this screen you can: - - Copy link - - Create another link - - See recent links (last 3 shown, with a "+N more" summary) - - Delete links (org admins can delete any org link; members can delete links they created) - -## Privacy & Security - -#### Controlled sharing -- Tasks are **private by default** — nothing is shared until you create a link. -- You choose Organization vs Public visibility per link. -- You can revoke access anytime by deleting the link. - -#### Expiring links -- Personal accounts: links expire after 30 days. -- Organizations: expiry is set by your org admin (1–365 days; default 30). - -#### Data control -- Delete share links anytime from the dashboard. -- View recent links in the dialog. - -## Caveats -- There's no link tracking at the moment. -- Personal account links always expire after 30 days. diff --git a/docs/roo-code-cloud/task-sync.mdx b/docs/roo-code-cloud/task-sync.mdx deleted file mode 100644 index 471beffc..00000000 --- a/docs/roo-code-cloud/task-sync.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -description: Task Sync streams task activity from your local VS Code to Roo Code Cloud so you can monitor progress from any device — free for all users. -keywords: - - task sync - - monitoring - - realtime updates - - task history - - mobile monitoring - - roo code cloud ---- - -# Task Sync/Monitoring - -Task Sync streams task activity from your local VS Code to Roo Code Cloud so you can monitor progress from any device and access tasks later. This feature is free for all users. - -It creates a live, one-way stream of your task messages and status from your local VS Code to Roo Code Cloud so you can: -- Monitor long-running tasks from your phone while away from your desk -- See near real-time updates (polled every few seconds): messages, mode changes, and status -- Check when a task completes without sitting in front of your IDE -- Review your cloud task history anytime - -Roo Code Cloud home showing workspaces and tasks - -:::info IDE Cloud -Keep in mind Task Sync sends tasks from your IDE to Roo Code Cloud, but not vice-versa. For example, it doesn't sync tasks across devices at the moment. -::: - ---- - -## Getting Started - -1. [Connect your IDE](/roo-code-cloud/connect) (or see [Login/Signup](/roo-code-cloud/login)) -2. Open or start a task in your local Roo Code extension -3. Visit the homescreen at https://app.roocode.com to monitor in near real time - -- Personal accounts: Task Sync is enabled by default and can be toggled in Settings. -- Organization accounts: Task Sync is managed by your org admins and is off by default for members unless enabled at the org level. - -## Limitations - -- One-way monitoring only; no cloud commands are sent to your IDE -- For live updates, your IDE must be open and connected -- Internet connection required for live updates - -You can review cloud task history anytime, even when your IDE is closed. - -## Privacy & Security - -- Your data is never used for training or advertising purposes -- The Roo Code team doesn't have access to the contents of your tasks, unless explicitly authorized by you to debug any issues diff --git a/docs/roo-code-cloud/team-plan.mdx b/docs/roo-code-cloud/team-plan.mdx deleted file mode 100644 index d239f131..00000000 --- a/docs/roo-code-cloud/team-plan.mdx +++ /dev/null @@ -1,127 +0,0 @@ ---- -description: Understand the functionality available in the Roo Code Cloud Team plan. -keywords: - - team - - corporate - - enterprise - - shared - - members - - invite ---- - -# Team Plan - -The team plan is designed for teams to work together using the Roo Code suite, be it the Extension, Cloud or a combination of both. - -It allows for: -- Centralized LLM inference billing without managing API keys (with [Roo Code Router](/roo-code-router/overview)) -- Team-wide task history and token usage analytics -- Shared Cloud Agent team (with centralized billing) -- Centralized integration with Github and Slack (not one per user) -- Extension configuration enforcement (providers/models, MCP servers and more) - ---- - -## Access - -You can access Team functionality by starting a free 14-day trial. - -If you already have a Roo Code Cloud account, you can [upgrade here](https://app.roocode.com/checkout/team). If you don't, sign up from our [pricing page](https://roocode.com/pricing). - - -## Capabilities - -Most of the team functionality can be accessed from your [Organization Settings](https://app.roocode.com/) page (from your user avatar menu) - -How to access your organization settings - -From there, you'll be able to access all of the available settings: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SettingPurpose
**Team Members** - Invite, remove and manage permissions for team members (Admin or regular member) -
**Organization profile details** - Logo, name, etc -
**Integrations** - [Github](./github-integration) and [Slack](./slack-integration), for now -
**Cloud Model Providers** - For use with [Cloud Agents](./cloud-agents) -
**Extension Task Sync** - Whether to require task syncing, and visibility controls for who can see each others' tasks -
**Task Sharing** - Whether per-task sharing is enabled, to whom and link expiration time -
**Environment Variables** - Optional values to make available to Cloud Agents during runs, such as connection strings, package manager server URLs, keys, secrets, etc. - Encrypted in our secure secret store. -
**Marketplace MCPs** - Allow/deny-list MCPs from the Roo Code marketplace to make available for team members. -
**Custom MCPs** - Custom, vetted MCP servers to make available to all team members. -
**Extension Providers** - Allow/deny-list inference Providers to be made available to team members. - - Centralized API key management isn't currently supported, but let us know if you need it. -
**Organization Connection Policy** - Mechanism to require Roo Code VS Code Extension users to be logged in, so policies can be enforced. - - Works via a file to be distributed via our MDM tool. -
- -Additional Team plan functionality is available in: -- [Usage Analytics](./analytics) (showing team-wide activity and per-user filters) -- Task lists (in the Home and Agent pages, showing team-wide tasks) - - -We're constantly expanding and tweaking team-oriented functionality, so if you need something else, don't hesitate to get in touch via [support@roocode.com](mailto:support@roocode.com). diff --git a/docs/roo-code-cloud/what-is-roo-code-cloud.md b/docs/roo-code-cloud/what-is-roo-code-cloud.md deleted file mode 100644 index d6cfc5ea..00000000 --- a/docs/roo-code-cloud/what-is-roo-code-cloud.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -description: Roo Code Cloud extends your VS Code extension with cloud task syncing and sharing, usage analytics, and optional Cloud Agents—using your own model API keys. -keywords: - - Roo Code Cloud - - Cloud Agents - - cloud features - - collaboration - - task history - - usage analytics - - BYO keys ---- - -# What is Roo Code Cloud? - -Roo Code Cloud is the web platform companion to the Roo Code VS Code extension. It extends the extension's functionality (task syncing and sharing, usage analytics) and allows you to run tasks in the cloud, completely independent from the extension, via Cloud Agents. - -Some of the functionality is free, some of it is paid. All of it follows our philosophy of being model-agnostic and letting you bring your provider key to stay in control of inference models and costs. - -You can see the [pricing for different plans here](https://roocode.com/pricing). - -## Main Features - -| Feature | Description | Availability | -| :------ | :---------- | :----------- | -| [Connect the Extension to Cloud](/roo-code-cloud/connect) | Connect via GitHub, Google, or email for cloud sync | Free | -| [Analytics](/roo-code-cloud/analytics) | Track model tokens, tasks, estimated cost, and Cloud Agent credits | Free | -| [Task Sync](/roo-code-cloud/task-sync) | Real-time task updates and cloud task history across devices | Free | -| [Task Sharing](/roo-code-cloud/task-sharing) | Share tasks via secure, expiring links | Free | -| [Cloud Agents](/roo-code-cloud/cloud-agents) | Run Roo in the cloud with credit-based runtime and BYO provider keys | Paid | -| Billing & Plans | Manage subscriptions, trials, and credit purchasing | Paid | - - - -## Getting Started - -1. [Connect your account](/roo-code-cloud/connect) to link Roo Code with the cloud. -2. Open [app.roocode.com](https://app.roocode.com/) and confirm your tasks appear. -3. Turn on [Task Sync](/roo-code-cloud/task-sync) so activity syncs to the cloud. -4. [Share a task](/roo-code-cloud/task-sharing) when you're ready for feedback or handoff. -5. Optional: start a [Cloud Agent](/roo-code-cloud/cloud-agents). Manage plans in [pricing](https://roocode.com/pricing). diff --git a/docs/roo-code-router/overview.md b/docs/roo-code-router/overview.md deleted file mode 100644 index da6c3286..00000000 --- a/docs/roo-code-router/overview.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -description: Roo Code Router is the easiest way to use Roo Code without additional accounts or managing API keys -keywords: - - Roo Code Cloud - - Roo Code Router - - LLM - - Models ---- - -# Roo Code Router Overview - - -To make it as smooth as possible to use Roo Code, which depends on a provider service for LLM inference, we've built the Roo Code Router. - -You don't have to use our provider to use Roo Code (you can choose from dozens), but it's the easiest way to do it, since it only needs your Roo Code Cloud account and offers a selection of models we tested and approved to work with Roo Code: -- State of the art models from the top frontier labs (including Anthropic, OpenAI, Google, xAI, etc) -- Tested open weight models from upcoming labs (Moonshot AI, MiniMax, GLM, etc) - -Since it's integrated into the Roo Code suite of products, you don't need to manage API keys to use it – just connect your account. With the [Team plan](/roo-code-cloud/team-plan), you can extend access to your entire team, ending the days of provider API keys flying around. - -## Model Availability - -Specific model availability changes over time. We strive to -keep the list relatively short, so you know you can trust -whatever you pick. - -You can always find the current list [on our website](https://roocode.com/provider) or the Roo Code Cloud app, under ["Models"](https://app.roocode.com/models). - -## Price and Privacy - -We never use your data for training and don't keep logs of the prompts themselves -(keep in mind that if you use task sync or Cloud Agents, we have to keep -copies of your tasks for obvious reasons). - -Sometimes stealth models are offered completely for free. These are -usually advanced models in late stages of testing, with code names and -limited availability. These models will most likely involve the use -of your prompts as training data, so be mindful of that when using. - -Paid models most likely don't use any of your data for training, but it's always -best to check the privacy policy of the vendors themselves. - -You can always find the current pricing [on our website](https://roocode.com/provider) or the Roo Code Cloud app, under ["Models"](https://app.roocode.com/models). - -:::info Looking for free inference? -When you sign up for a Roo Code Cloud account, you'll be given a number of "Free Minutes" to try the product out (you'll see a cute gift box icon). Those free minutes cover both the [Cloud Agent](/roo-code-cloud/cloud-agents) run time _and_ inference via Roo Code Router (which, as we established, cost credits). Those can't be used in the extension. - -If you want free inference in the extension, look for a free model when available (or use another provider which may offer it to you for free). -::: - - -## How to use it - -### Roo Code Cloud Agents - -When choosing a model to power your agent, just pick the Roo Code Router. -There aren't really any more instructions needed :) - -### Roo Code VS Code Extension - -Ensure you're logged into your Cloud account in the extension, and you'll -be able to configure Roo as a provider in Provider Settings. - -### In 3rd-party tools - -Since it's designed to make it easier to use Roo, we don't make the provider -available in other products. There's no API key for you to copy and use elsewhere. diff --git a/docs/sunset.md b/docs/sunset.md deleted file mode 100644 index 0b266b7d..00000000 --- a/docs/sunset.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_label: Sunsetting Roo Code -sidebar_position: 0 -title: Sunsetting Roo Code (Extension, Cloud, and Router) -description: Roo Code is sunsetting on May 15, 2026. Learn what this means for you, how to migrate, and where to find alternatives. -keywords: - - Roo Code sunset - - Roo Code shutdown - - Roo Code end of life - - Roo Code migration - - Roo Code alternative ---- - -# Sunsetting Roo Code (Extension, Cloud, and Router) - -:::danger Important Notice -**All Roo Code products will be shut down on May 15, 2026.** This includes the Roo Code VS Code Extension, Roo Code Cloud, and Roo Code Router. -::: - -To our community: thank you. Your trust, contributions, and feedback helped us drive innovation in this space and pushed us past 3 million extension downloads. We don't take that lightly. - -That said, we don't believe IDEs are the future of coding. To keep pushing the future forward, we needed to make this difficult decision. - -## What this means for you - -- We will continue to support all existing Roo Code products through **May 15, 2026**. -- On **May 15, 2026**, we will: - - Shut down **Roo Code Cloud** - - Shut down **Roo Code Router** - - **Refund any unused balances** - - Archive the **Roo Code Extension** repository -- For billing questions after May 15, you can reach out to [billing@roocode.com](mailto:billing@roocode.com). - -## Looking for an alternative? - -### Open-source extension - -If you want a model-agnostic open-source extension, we recommend [Cline](https://github.com/cline/cline). They've incorporated much of what we built and are excited to welcome Roo Code users. - -### What we're building next - -If you're a fan of our cloud agents or curious about what we're building next, check out our new home at [roomote.dev](https://roomote.dev). diff --git a/docs/update-notes/v3.22.0.mdx b/docs/update-notes/v3.22.0.mdx index 08efde38..9e08a34f 100644 --- a/docs/update-notes/v3.22.0.mdx +++ b/docs/update-notes/v3.22.0.mdx @@ -10,7 +10,7 @@ This major release introduces 1-click task sharing, global rule directories, enh Roo Code Task Sharing Demo -We've added the ability to share your Roo Code tasks publicly right from within the extension ([learn more](/roo-code-cloud/task-sharing)): +We've added the ability to share your Roo Code tasks publicly right from within the extension (learn more): - **Public Sharing**: Select "Share Publicly" to generate a shareable link that anyone can access - **Automatic Clipboard Copy**: Generated links are automatically copied to your clipboard for easy sharing diff --git a/docs/update-notes/v3.22.mdx b/docs/update-notes/v3.22.mdx index 25edfcf2..feebf756 100644 --- a/docs/update-notes/v3.22.mdx +++ b/docs/update-notes/v3.22.mdx @@ -17,7 +17,7 @@ This major release introduces 1-click task sharing, global rule directories, fre Roo Code Task Sharing Demo -We've added the ability to share your Roo Code tasks publicly right from within the extension ([learn more](/roo-code-cloud/task-sharing)): +We've added the ability to share your Roo Code tasks publicly right from within the extension (learn more): - **Public Sharing**: Select "Share Publicly" to generate a shareable link that anyone can access - **Automatic Clipboard Copy**: Generated links are automatically copied to your clipboard for easy sharing diff --git a/docs/update-notes/v3.25.18.mdx b/docs/update-notes/v3.25.18.mdx index 215e314a..bae33cec 100644 --- a/docs/update-notes/v3.25.18.mdx +++ b/docs/update-notes/v3.25.18.mdx @@ -18,17 +18,17 @@ Sonic is now available in Roo Code ([#7207](https://github.com/RooCodeInc/Roo-Co - 262,144‑token context lets you work across very large codebases, logs, and transcripts in one session. - FREE for 72 hours so you can try Sonic with real tasks. -> Important: Sonic is delivered via Roo Code Cloud. To get this model to work, you must connect your IDE to Roo Code Cloud. See [Connect to Roo Code Cloud](/roo-code-cloud/connect). +> Important: Sonic is delivered via Roo Code Cloud. To get this model to work, you must connect your IDE to Roo Code Cloud. See Connect to Roo Code Cloud. **Prerequisites** - Roo Code v3.25.18 or later -- Connected to Roo Code Cloud account — see [Connect to Roo Code Cloud](/roo-code-cloud/connect) +- Connected to Roo Code Cloud account — see Connect to Roo Code Cloud **How to enable Sonic** 1. Open Settings → Providers and set Provider to **Roo Code Router**. 2. In the model selector, choose **Sonic**. -> 📚 Documentation: See [Connect to Roo Code Cloud](/roo-code-cloud/connect) and [Roo Code Router](/providers/roo-code-router). +> 📚 Documentation: See Connect to Roo Code Cloud and Roo Code Router. ## Bug Fixes diff --git a/docs/update-notes/v3.26.0.mdx b/docs/update-notes/v3.26.0.mdx index bccf1ce2..5010589b 100644 --- a/docs/update-notes/v3.26.0.mdx +++ b/docs/update-notes/v3.26.0.mdx @@ -25,9 +25,9 @@ If you've already been enjoying Sonic in Roo Code Cloud, you'll be transitioned A massive thank-you to our partners at xAI and to all of you — over 100B tokens (and counting!) ran through Sonic during stealth! Your incredible adoption and helpful feedback shaped Grok Code Fast into the powerful model it is today. -**Important:** Grok Code Fast remains **FREE** when accessed through [Roo Code Router](/providers/roo-code-router) during the promotional period. Using it directly through the xAI provider will incur standard charges once pricing is established. +**Important:** Grok Code Fast remains **FREE** when accessed through Roo Code Router during the promotional period. Using it directly through the xAI provider will incur standard charges once pricing is established. -> **📚 Documentation**: See [Roo Code Router](/providers/roo-code-router) for free access or [xAI Provider](/providers/xai) for direct configuration. +> **📚 Documentation**: See Roo Code Router for free access or [xAI Provider](/providers/xai) for direct configuration. ## Built-in /init Command diff --git a/docs/update-notes/v3.26.mdx b/docs/update-notes/v3.26.mdx index a74bab20..10732d7b 100644 --- a/docs/update-notes/v3.26.mdx +++ b/docs/update-notes/v3.26.mdx @@ -28,9 +28,9 @@ If you've already been enjoying Sonic in Roo Code Cloud, you'll be transitioned A massive thank-you to our partners at xAI and to all of you — over 100B tokens (and counting!) ran through Sonic during stealth! Your incredible adoption and helpful feedback shaped Grok Code Fast into the powerful model it is today. -**Important:** Grok Code Fast remains **FREE** when accessed through [Roo Code Router](/providers/roo-code-router) during the promotional period. Using it directly through the xAI provider will incur standard charges once pricing is established. +**Important:** Grok Code Fast remains **FREE** when accessed through Roo Code Router during the promotional period. Using it directly through the xAI provider will incur standard charges once pricing is established. -> **📚 Documentation**: See [Roo Code Router](/providers/roo-code-router) for free access or [xAI Provider](/providers/xai) for direct configuration. +> **📚 Documentation**: See Roo Code Router for free access or [xAI Provider](/providers/xai) for direct configuration. ### Built-in /init Command diff --git a/docs/update-notes/v3.28.0.mdx b/docs/update-notes/v3.28.0.mdx index 7662c175..1398996d 100644 --- a/docs/update-notes/v3.28.0.mdx +++ b/docs/update-notes/v3.28.0.mdx @@ -20,13 +20,13 @@ Introducing our new cloud connectivity feature that lets you **monitor long-runn Task Sync interface showing real-time task monitoring from browser -**[Task Sync](/roo-code-cloud/task-sync) (FREE for All Users)**: +**Task Sync (FREE for All Users)**: - **Monitor from Anywhere**: Check on long-running tasks from your phone while away from your desk - **Real-time Updates**: Live streaming of your local task messages and progress - **Task History**: Your tasks are saved to the cloud for later reference - **Cloud Visibility**: View your VS Code tasks from any browser -> **📚 Documentation**: See [Task Sync](/roo-code-cloud/task-sync). +> **📚 Documentation**: See Task Sync. ## QOL Improvements diff --git a/docs/update-notes/v3.28.4.mdx b/docs/update-notes/v3.28.4.mdx index b3f50120..d154d01d 100644 --- a/docs/update-notes/v3.28.4.mdx +++ b/docs/update-notes/v3.28.4.mdx @@ -25,7 +25,7 @@ We've added the new **roo/code-supernova** stealth model to the Roo Code Cloud p Select the **FREE** code-supernova model from the Roo provider to start using this powerful new capability at **no cost**. -> **Documentation**: See the [Roo Code Router guide](/providers/roo-code-router) for model selection details. +> **Documentation**: See the Roo Code Router guide for model selection details. ## QOL Improvements diff --git a/docs/update-notes/v3.28.mdx b/docs/update-notes/v3.28.mdx index f4bbe263..9fddd86f 100644 --- a/docs/update-notes/v3.28.mdx +++ b/docs/update-notes/v3.28.mdx @@ -25,7 +25,7 @@ We've added the new **roo/code-supernova** stealth model to the Roo Code Cloud p Select the **FREE** code-supernova model from the Roo provider to start using this powerful new capability at **no cost**. -> **Documentation**: See the [Roo Code Router guide](/providers/roo-code-router) for model selection details. +> **Documentation**: See the Roo Code Router guide for model selection details. ## Task Sync @@ -35,13 +35,13 @@ Introducing our new cloud connectivity feature that lets you **monitor long-runn Task Sync interface showing real-time task monitoring from browser -**[Task Sync](/roo-code-cloud/task-sync) (FREE for All Users)**: +**Task Sync (FREE for All Users)**: - **Monitor from Anywhere**: Check on long-running tasks from your phone while away from your desk - **Real-time Updates**: Live streaming of your local task messages and progress - **Task History**: Your tasks are saved to the cloud for later reference - **Cloud Visibility**: View your VS Code tasks from any browser -> **Documentation**: See [Task Sync](/roo-code-cloud/task-sync). +> **Documentation**: See Task Sync. ## GPT-5-Codex lands in OpenAI Native diff --git a/docs/update-notes/v3.29.3.mdx b/docs/update-notes/v3.29.3.mdx index 65a06ab4..b3e32ef9 100644 --- a/docs/update-notes/v3.29.3.mdx +++ b/docs/update-notes/v3.29.3.mdx @@ -27,6 +27,6 @@ This patch adds reasoning controls for Roo and Z.ai providers, updates Gemini "l ## Provider Updates -* Roo provider: Reasoning effort control lets you choose deeper step‑by‑step thinking vs. faster/cheaper responses. See [Roo Code Router](/providers/roo-code-router) for details. ([#8874](https://github.com/RooCodeInc/Roo-Code/pull/8874)) +* Roo provider: Reasoning effort control lets you choose deeper step‑by‑step thinking vs. faster/cheaper responses. See Roo Code Router for details. ([#8874](https://github.com/RooCodeInc/Roo-Code/pull/8874)) * Z.ai (GLM‑4.5/4.6): “Enable reasoning” toggle to activate Deep Thinking; hidden on unsupported models (thanks BeWater799!). See [Z.ai provider](/providers/zai). ([#8872](https://github.com/RooCodeInc/Roo-Code/pull/8872)) * Gemini: Updated model list and “latest” aliases for easier selection (thanks cleacos!). See [Gemini provider](/providers/gemini). ([#8486](https://github.com/RooCodeInc/Roo-Code/pull/8486)) diff --git a/docs/update-notes/v3.34.3.mdx b/docs/update-notes/v3.34.3.mdx index c5e7437d..c8e0194d 100644 --- a/docs/update-notes/v3.34.3.mdx +++ b/docs/update-notes/v3.34.3.mdx @@ -16,7 +16,7 @@ This release adds Roo Code Cloud as an embeddings provider for codebase indexing Roo Code v3.34.3 Release -* **Roo Code Cloud embeddings for codebase indexing**: Use Roo Code Cloud as a managed embeddings provider for codebase indexing so you can build semantic search over your project without running your own embedding service or managing separate API keys. The Code Index UI now exposes Roo Code Cloud as an embedder option and batches, rate-limits, and authenticates embedding requests through Roo Code Cloud for more reliable indexing. ([#9543](https://github.com/RooCodeInc/Roo-Code/pull/9543)) ([#9542](https://github.com/RooCodeInc/Roo-Code/pull/9542)) See [Codebase Indexing](/features/codebase-indexing) and [Roo Code Router](/providers/roo-code-router) for setup and usage details. +* **Roo Code Cloud embeddings for codebase indexing**: Use Roo Code Cloud as a managed embeddings provider for codebase indexing so you can build semantic search over your project without running your own embedding service or managing separate API keys. The Code Index UI now exposes Roo Code Cloud as an embedder option and batches, rate-limits, and authenticates embedding requests through Roo Code Cloud for more reliable indexing. ([#9543](https://github.com/RooCodeInc/Roo-Code/pull/9543)) ([#9542](https://github.com/RooCodeInc/Roo-Code/pull/9542)) See [Codebase Indexing](/features/codebase-indexing) and Roo Code Router for setup and usage details. * **Streaming native tool calls**: Native tools (including Roo Code Cloud and OpenRouter helpers) now stream arguments and partial results into the UI, matching the streaming experience of XML tools so you can watch long-running operations progress and debug tool behavior more easily. ([#9542](https://github.com/RooCodeInc/Roo-Code/pull/9542)) ## QOL Improvements diff --git a/docusaurus.config.ts b/docusaurus.config.ts index e765a1cd..9cca38f6 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -6,20 +6,13 @@ import { REDDIT_URL, TWITTER_URL, BLUESKY_URL, - LINKEDIN_URL, - TIKTOK_URL, GITHUB_MAIN_REPO_URL, GITHUB_ISSUES_MAIN_URL, GITHUB_FEATURES_URL, VSCODE_MARKETPLACE_URL, OPEN_VSX_URL, - CONTACT_EMAIL, - CAREERS_URL, - WEBSITE_PRIVACY_URL, EXTENSION_PRIVACY_URL, - GITHUB_REPO_URL, - SIGN_IN_URL, - SIGN_UP_URL + GITHUB_REPO_URL } from './src/constants'; // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) @@ -46,11 +39,6 @@ const config: Config = { }, }, - // Custom fields for client-side access - customFields: { - intercomAppId: process.env.INTERCOM_APP_ID, - }, - // Even if you don't use internationalization, you can use this field to set // useful metadata like html lang. For example, if your site is Chinese, you // may want to replace "en" with "zh-Hans". @@ -98,7 +86,6 @@ const config: Config = { { label: "Features", path: "features" }, { label: "Advanced Usage", path: "advanced-usage" }, { label: "Providers", path: "providers" }, - { label: "Roo Code Cloud", path: "roo-code-cloud" }, { label: "Release Notes", path: "update-notes" } ], useAllContextsWithNoSearchContext: true, @@ -107,16 +94,6 @@ const config: Config = { ], plugins: [ - ...(process.env.POSTHOG_API_KEY ? [ - [ - "posthog-docusaurus", - { - apiKey: process.env.POSTHOG_API_KEY, - appUrl: "https://ph.roocode.com", - enableInDevelopment: true, - }, - ], - ] : []), [ '@docusaurus/plugin-sitemap', { @@ -284,24 +261,56 @@ const config: Config = { to: '/advanced-usage/roo-code-nightly', from: ['/advanced-usage/prerelease-build'], }, - // Redirect /roo to Roo Code Cloud documentation + // Redirect removed Roo Code Router provider aliases { - to: '/providers/roo-code-router', + to: '/providers', from: ['/providers/roo'], }, - // Roo Code Router rename redirects { - to: '/providers/roo-code-router', + to: '/providers', from: ['/providers/roo-code-cloud'], }, { - to: '/roo-code-router/overview', + to: '/providers', from: ['/roo-code-provider', '/roo-code-provider/overview'], }, - // Redirect deleted billing-subscriptions page + // Redirect removed Cloud, Router, Credits, and billing pages { - to: '/credits/overview', - from: ['/roo-code-cloud/billing-subscriptions'], + to: '/', + from: [ + '/sunset', + '/roo-code-cloud', + '/roo-code-cloud/overview', + '/roo-code-cloud/login', + '/roo-code-cloud/connect', + '/roo-code-cloud/cloud-agents', + '/roo-code-cloud/environments', + '/roo-code-cloud/task-sync', + '/roo-code-cloud/task-sharing', + '/roo-code-cloud/analytics', + '/roo-code-cloud/github-integration', + '/roo-code-cloud/slack-integration', + '/roo-code-cloud/team-plan', + '/roo-code-cloud/what-is-roo-code-cloud', + '/roo-code-cloud/dashboard', + '/roo-code-cloud/roomote-control', + ], + }, + { + to: '/providers', + from: [ + '/roo-code-router', + '/roo-code-router/overview', + '/providers/roo-code-router', + ], + }, + { + to: '/advanced-usage/rate-limits-costs', + from: [ + '/credits', + '/credits/overview', + '/roo-code-cloud/billing-subscriptions', + ], }, // Redirect removed Human Relay provider page { @@ -319,12 +328,6 @@ const config: Config = { to: '/', from: ['/features/fast-edits'], }, - // Redirect removed Roomote Control page - { - to: '/roo-code-cloud/overview', - from: ['/roo-code-cloud/roomote-control'], - }, - // Redirect retired provider pages { to: '/providers', @@ -414,14 +417,6 @@ const config: Config = { label: 'GitHub', href: GITHUB_MAIN_REPO_URL, }, - { - label: 'LinkedIn', - href: LINKEDIN_URL, - }, - { - label: 'TikTok', - href: TIKTOK_URL, - }, ], }, { @@ -451,21 +446,8 @@ const config: Config = { ], }, { - title: 'Company', + title: 'Privacy', items: [ - { - label: 'Contact', - href: CONTACT_EMAIL, - target: '_self', - }, - { - label: 'Careers', - href: CAREERS_URL, - }, - { - label: 'Website Privacy Policy', - href: WEBSITE_PRIVACY_URL, - }, { label: 'Extension Privacy Policy', href: EXTENSION_PRIVACY_URL, diff --git a/package.json b/package.json index c023d524..a6661445 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", - "serve": "docusaurus serve", + "serve": "docusaurus serve --build", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "check-types": "tsc --noEmit", @@ -25,17 +25,13 @@ "@docusaurus/preset-classic": "^3.9.2", "@easyops-cn/docusaurus-search-local": "^0.48.5", "@mdx-js/react": "^3.0.0", - "@roo-code/types": "^1.79.0", "@vscode/codicons": "^0.0.36", "clsx": "^2.0.0", "lucide-react": "^0.559.0", - "posthog-docusaurus": "^2.0.4", "prism-react-renderer": "^2.3.0", "react": "^19.0.0", - "react-cookie-consent": "^9.0.0", "react-dom": "^19.0.0", - "react-icons": "^5.5.0", - "tldts": "^7.0.14" + "react-icons": "^5.5.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.9.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 233a5150..ee0317f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,6 @@ importers: '@mdx-js/react': specifier: ^3.0.0 version: 3.1.1(@types/react@19.2.7)(react@19.2.3) - '@roo-code/types': - specifier: ^1.79.0 - version: 1.99.0 '@vscode/codicons': specifier: ^0.0.36 version: 0.0.36 @@ -38,27 +35,18 @@ importers: lucide-react: specifier: ^0.559.0 version: 0.559.0(react@19.2.3) - posthog-docusaurus: - specifier: ^2.0.4 - version: 2.0.5 prism-react-renderer: specifier: ^2.3.0 version: 2.4.1(react@19.2.3) react: specifier: ^19.0.0 version: 19.2.3 - react-cookie-consent: - specifier: ^9.0.0 - version: 9.0.0(react@19.2.3) react-dom: specifier: ^19.0.0 version: 19.2.3(react@19.2.3) react-icons: specifier: ^5.5.0 version: 5.5.0(react@19.2.3) - tldts: - specifier: ^7.0.14 - version: 7.0.19 devDependencies: '@docusaurus/module-type-aliases': specifier: ^3.9.2 @@ -1566,9 +1554,6 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@roo-code/types@1.99.0': - resolution: {integrity: sha512-DKCLfSyEceHjnH3QH2rWtXPAln6taVLgrEoEt9XcDARwHLLlnXB9NT5iwKMnUVbYnrUAFrrjkBttwIKcIgKRFg==} - '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -3702,9 +3687,6 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4788,10 +4770,6 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - posthog-docusaurus@2.0.5: - resolution: {integrity: sha512-Ray65LYEJrMMqDtsBUBXunEVP/g4wtATvq/xz9rchUoLy/9mSkkFgUko/8DVtGxgiP3vivpFMgfb9HpCuDrBHg==} - engines: {node: '>=10.15.1'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4870,12 +4848,6 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-cookie-consent@9.0.0: - resolution: {integrity: sha512-Blyj+m+Zz7SFHYqT18p16EANgnSg2sIyU6Yp3vk83AnOnSW7qnehPkUe4+8+qxztJrNmCH5GP+VHsWzAKVOoZA==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - react-dom@19.2.3: resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: @@ -5452,13 +5424,6 @@ packages: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} - tldts-core@7.0.19: - resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} - - tldts@7.0.19: - resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} - hasBin: true - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5834,9 +5799,6 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.3.5: resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} @@ -8186,10 +8148,6 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@roo-code/types@1.99.0': - dependencies: - zod: 3.25.76 - '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -10709,8 +10667,6 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - js-cookie@2.2.1: {} - js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -12104,8 +12060,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-docusaurus@2.0.5: {} - prelude-ls@1.2.1: {} pretty-error@4.0.0: @@ -12181,11 +12135,6 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-cookie-consent@9.0.0(react@19.2.3): - dependencies: - js-cookie: 2.2.1 - react: 19.2.3 - react-dom@19.2.3(react@19.2.3): dependencies: react: 19.2.3 @@ -12921,12 +12870,6 @@ snapshots: tinypool@1.1.1: {} - tldts-core@7.0.19: {} - - tldts@7.0.19: - dependencies: - tldts-core: 7.0.19 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -13383,8 +13326,6 @@ snapshots: yocto-queue@1.2.2: {} - zod@3.25.76: {} - zod@4.3.5: {} zwitch@2.0.4: {} diff --git a/sidebars.ts b/sidebars.ts index 686da1cc..74224462 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -4,7 +4,6 @@ import modelProviders from "./docs/providers/index.json"; const sidebars: SidebarsConfig = { tutorialSidebar: [ "index", - "sunset", { type: "category", label: "Roo Code VSCode Extension", @@ -123,32 +122,6 @@ const sidebars: SidebarsConfig = { }, ], }, - { - type: "category", - label: "Roo Code Cloud", - items: [ - "roo-code-cloud/overview", - "roo-code-cloud/login", - "roo-code-cloud/cloud-agents", - "roo-code-cloud/environments", - "roo-code-cloud/task-sync", - "roo-code-cloud/task-sharing", - "roo-code-cloud/analytics", - "roo-code-cloud/github-integration", - "roo-code-cloud/slack-integration", - "roo-code-cloud/team-plan", - ], - }, - { - type: "doc", - label: "Roo Code Router", - id: "roo-code-router/overview", - }, - { - type: "doc", - label: "Roo Code Credits", - id: "credits/overview", - }, { type: "doc", label: "Tutorial Videos", diff --git a/src/components/AnnouncementBanner/index.tsx b/src/components/AnnouncementBanner/index.tsx deleted file mode 100644 index b226cf1a..00000000 --- a/src/components/AnnouncementBanner/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { VscWarning } from 'react-icons/vsc'; -import styles from './styles.module.css'; - -export function AnnouncementBanner() { - return ( -
-
- - - Roo Code (Extension, Cloud, and Router) is sunsetting on May 15, 2026. - - - Learn more - -
-
- ); -} \ No newline at end of file diff --git a/src/components/AnnouncementBanner/styles.module.css b/src/components/AnnouncementBanner/styles.module.css deleted file mode 100644 index 303e5d77..00000000 --- a/src/components/AnnouncementBanner/styles.module.css +++ /dev/null @@ -1,54 +0,0 @@ -.announcementBanner { - position: relative; - width: 100%; - background: linear-gradient(90deg, #dc2626, #b91c1c); - border-bottom: 1px solid rgba(252, 165, 165, 0.5); - box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15); -} - -.bannerContent { - display: flex; - align-items: center; - justify-content: center; - gap: 0.75rem; - padding: 0.75rem 3rem; - color: #ffffff; - position: relative; -} - -.bannerHeadline { - font-weight: 600; - font-size: 0.95rem; -} - -.bannerLink { - color: #ffffff; - font-weight: 600; - font-size: 0.95rem; - text-decoration: underline; - text-decoration-color: rgba(255, 255, 255, 0.7); - text-decoration-thickness: 2px; - transition: text-decoration-color 0.2s ease; -} - -.bannerLink:hover { - color: #ffffff; - text-decoration-color: rgba(255, 255, 255, 0.95); -} - -@media (max-width: 768px) { - .bannerContent { - flex-direction: column; - gap: 0.5rem; - padding: 1rem; - align-items: flex-start; - } - - .bannerHeadline { - font-size: 0.875rem; - } - - .bannerLink { - font-size: 0.875rem; - } -} \ No newline at end of file diff --git a/src/components/CookieConsent/index.tsx b/src/components/CookieConsent/index.tsx deleted file mode 100644 index 3c2d6b9f..00000000 --- a/src/components/CookieConsent/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import ReactCookieConsent from 'react-cookie-consent'; -import { getDomain } from 'tldts'; -import { CONSENT_COOKIE_NAME } from '@roo-code/types'; -import { dispatchConsentEvent } from '../../lib/analytics/consent-manager'; -import styles from './styles.module.css'; - -export function CookieConsent() { - const [cookieDomain, setCookieDomain] = useState(null); - - useEffect(() => { - // Get the appropriate domain using tldts - if (typeof window !== 'undefined') { - if(window.location.hostname === 'localhost') { - setCookieDomain('localhost'); - return; - } else { - setCookieDomain(getDomain(window.location.hostname)); - } - } - }, []); - - const handleAccept = () => { - dispatchConsentEvent(true); - }; - - const handleDecline = () => { - dispatchConsentEvent(false); - }; - - const extraCookieOptions = cookieDomain - ? { - domain: cookieDomain, - } - : {}; - - return ( -
- -
- - - - Like most of the internet, we use cookies. Are you OK with that? -
-
-
- ); -} \ No newline at end of file diff --git a/src/components/CookieConsent/styles.module.css b/src/components/CookieConsent/styles.module.css deleted file mode 100644 index a2aaa912..00000000 --- a/src/components/CookieConsent/styles.module.css +++ /dev/null @@ -1,130 +0,0 @@ -.container { - position: fixed; - bottom: 0; - left: 8px; - right: 8px; - z-index: 999; - color: white; - font-weight: 600; - border-radius: 8px 8px 0 0; - padding: 16px; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - gap: 16px; - font-size: 14px; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -} - -.container { - background: black !important; - color: white; - border-top-color: #222; -} - -/* Dark mode support */ -[data-theme='dark'] .container { - background-color: white !important; - color: black; - border-top-color: #e5e5e5; -} - -@media (min-width: 768px) { - .container { - padding: 16px 32px; - } -} - -.content { - display: flex; - align-items: center; - gap: 8px; -} - -.cookieIcon { - display: none; - flex-shrink: 0; -} - -@media (min-width: 768px) { - .cookieIcon { - display: block; - } -} - -.buttonWrapper { - display: flex; - flex-direction: row-reverse; - align-items: center; - gap: 8px; -} - -.acceptButton { - background-color: white; - color: black; - border: 1px solid #262626; - border-radius: 6px; - padding: 8px 16px; - margin-right: 8px; - font-size: 14px; - font-weight: bold; - cursor: pointer; - transition: opacity 0.2s; -} - -.acceptButton:hover { - opacity: 0.7; -} - -.acceptButton:focus { - outline: none; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5); -} - -[data-theme='dark'] .acceptButton { - background-color: black; - color: white; - border-color: #e5e5e5; -} - -.declineButton { - background-color: black; - color: white; - border: 1px solid #262626; - border-radius: 6px; - padding: 8px 16px; - font-size: 14px; - font-weight: bold; - cursor: pointer; - transition: opacity 0.2s; -} - -.declineButton:hover { - opacity: 0.7; -} - -.declineButton:focus { - outline: none; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5); -} - -[data-theme='dark'] .declineButton { - background-color: white; - color: black; - border-color: #e5e5e5; -} - -/* Ensure the banner is above other content */ -.container { - animation: slideUp 0.3s ease-out; -} - -@keyframes slideUp { - from { - transform: translateY(100%); - } - to { - transform: translateY(0); - } -} \ No newline at end of file diff --git a/src/components/GTMProvider/index.tsx b/src/components/GTMProvider/index.tsx deleted file mode 100644 index 126c6aeb..00000000 --- a/src/components/GTMProvider/index.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import React, { useEffect } from 'react'; -import { hasConsent, onConsentChange } from '../../lib/analytics/consent-manager'; - -// Google Tag Manager ID - hardcoded for production -const GTM_ID = 'GTM-M2JZHV8N'; - -declare global { - interface Window { - dataLayer?: Record[]; - google_tag_manager?: Record; - } -} - -export function GTMProvider({ children }: { children: React.ReactNode }) { - useEffect(() => { - // Check initial consent status - const consentGiven = hasConsent(); - - if (consentGiven) { - enableGTM(); - } - - // Listen for consent changes - const cleanup = onConsentChange((granted) => { - if (granted) { - enableGTM(); - } else { - disableGTM(); - } - }); - - return () => { - cleanup(); - // Clean up GTM scripts on unmount - removeGTMScripts(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const enableGTM = () => { - if (typeof window === 'undefined') return; - - // Check if GTM is already loaded - if (document.getElementById('gtm-script')) { - return; - } - - // Initialize dataLayer - window.dataLayer = window.dataLayer || []; - window.dataLayer.push({ - 'gtm.start': new Date().getTime(), - event: 'gtm.js' - }); - - // Inject GTM script in head - const script = document.createElement('script'); - script.id = 'gtm-script'; - script.async = true; - script.src = `https://www.googletagmanager.com/gtm.js?id=${GTM_ID}`; - - const firstScript = document.getElementsByTagName('script')[0]; - if (firstScript && firstScript.parentNode) { - firstScript.parentNode.insertBefore(script, firstScript); - } else { - document.head.appendChild(script); - } - - // Inject noscript iframe in body - const noscript = document.createElement('noscript'); - noscript.id = 'gtm-noscript'; - const iframe = document.createElement('iframe'); - iframe.src = `https://www.googletagmanager.com/ns.html?id=${GTM_ID}`; - iframe.height = '0'; - iframe.width = '0'; - iframe.style.display = 'none'; - iframe.style.visibility = 'hidden'; - noscript.appendChild(iframe); - - document.body.insertBefore(noscript, document.body.firstChild); - }; - - const disableGTM = () => { - if (typeof window === 'undefined') return; - - // Remove GTM scripts - removeGTMScripts(); - - // Clear dataLayer - if (window.dataLayer) { - window.dataLayer = []; - } - }; - - const removeGTMScripts = () => { - // Remove GTM script - const script = document.getElementById('gtm-script'); - if (script) { - script.remove(); - } - - // Remove noscript - const noscript = document.getElementById('gtm-noscript'); - if (noscript) { - noscript.remove(); - } - }; - - return <>{children}; -} \ No newline at end of file diff --git a/src/components/GitHubInstallButtons/index.tsx b/src/components/GitHubInstallButtons/index.tsx index bd23a9be..e6b8a137 100644 --- a/src/components/GitHubInstallButtons/index.tsx +++ b/src/components/GitHubInstallButtons/index.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { RxGithubLogo } from "react-icons/rx"; import { VscVscode } from "react-icons/vsc"; -import { GITHUB_MAIN_REPO_URL, SIGN_IN_URL, SIGN_UP_URL, VSCODE_MARKETPLACE_URL } from '@site/src/constants'; +import { GITHUB_MAIN_REPO_URL, VSCODE_MARKETPLACE_URL } from '@site/src/constants'; import styles from './styles.module.css'; // Number formatting function @@ -106,30 +106,6 @@ export default function GitHubInstallButtons(): React.JSX.Element { {stars && {stars}} - - - Log in - - - - - - Sign up - - - {/* Install Button */} ); -} \ No newline at end of file +} diff --git a/src/components/IntercomProvider/index.tsx b/src/components/IntercomProvider/index.tsx deleted file mode 100644 index 4ac8ed77..00000000 --- a/src/components/IntercomProvider/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React, { useEffect } from 'react'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import { hasConsent, onConsentChange } from '../../lib/analytics/consent-manager'; - -// Intercom interface - it's a callable function with overloads -interface IntercomInstance { - (command: 'boot', config: Record): void; - (command: 'shutdown'): void; - (command: 'update', config?: Record): void; - (command: 'show'): void; - (command: 'hide'): void; - (command: 'showMessages'): void; - (command: 'showNewMessage', message?: string): void; - (command: 'onHide', callback: () => void): void; - (command: 'onShow', callback: () => void): void; - (command: 'onUnreadCountChange', callback: (unreadCount: number) => void): void; -} - -declare global { - interface Window { - Intercom?: IntercomInstance; - intercomSettings?: Record; - } -} - -export function IntercomProvider({ children }: { children: React.ReactNode }) { - const { siteConfig } = useDocusaurusContext(); - const appId = siteConfig.customFields?.intercomAppId as string | undefined; - - useEffect(() => { - // Only initialize if Intercom App ID is configured - if (!appId) { - return; - } - - // Check initial consent status - const consentGiven = hasConsent(); - - if (consentGiven) { - loadIntercom(appId); - } - - // Listen for consent changes - const cleanup = onConsentChange((granted) => { - if (granted) { - loadIntercom(appId); - } else { - shutdownIntercom(); - } - }); - - return () => { - cleanup(); - shutdownIntercom(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const loadIntercom = (appId: string) => { - if (typeof window === 'undefined') return; - - // Skip if already loaded - if (window.Intercom) { - window.Intercom('update'); - return; - } - - // Set up Intercom settings - window.intercomSettings = { - app_id: appId, - alignment: 'right', - horizontal_padding: 20, - vertical_padding: 20, - }; - - // Load Intercom script - const script = document.createElement('script'); - script.async = true; - script.src = `https://widget.intercom.io/widget/${appId}`; - - script.onload = () => { - if (window.Intercom) { - window.Intercom('boot', window.intercomSettings || {}); - } - }; - - document.head.appendChild(script); - }; - - const shutdownIntercom = () => { - if (typeof window !== 'undefined' && window.Intercom) { - window.Intercom('shutdown'); - } - }; - - return <>{children}; -} \ No newline at end of file diff --git a/src/components/PostHogProvider/index.tsx b/src/components/PostHogProvider/index.tsx deleted file mode 100644 index 221d6e69..00000000 --- a/src/components/PostHogProvider/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, { useEffect } from 'react'; -import { hasConsent, onConsentChange } from '../../lib/analytics/consent-manager'; - -// PostHog interface - define the methods we use -interface PostHogInstance { - opt_in_capturing(): void; - opt_out_capturing(): void; - startSessionRecording(): void; - stopSessionRecording(): void; -} - -declare global { - interface Window { - posthog?: PostHogInstance; - } -} - -export function PostHogProvider({ children }: { children: React.ReactNode }) { - useEffect(() => { - // Check initial consent status - const consentGiven = hasConsent(); - - if (consentGiven) { - enablePostHog(); - } else { - disablePostHog(); - } - - // Listen for consent changes - const cleanup = onConsentChange((granted) => { - if (granted) { - enablePostHog(); - } else { - disablePostHog(); - } - }); - - return cleanup; - }, []); - - const enablePostHog = () => { - if (typeof window !== 'undefined' && window.posthog) { - // Re-initialize PostHog if it was previously disabled - if (typeof window.posthog.opt_in_capturing === 'function') { - window.posthog.opt_in_capturing(); - } - if (typeof window.posthog.startSessionRecording === 'function') { - window.posthog.startSessionRecording(); - } - } - }; - - const disablePostHog = () => { - if (typeof window !== 'undefined' && window.posthog) { - if (typeof window.posthog.opt_out_capturing === 'function') { - window.posthog.opt_out_capturing(); - } - if (typeof window.posthog.stopSessionRecording === 'function') { - window.posthog.stopSessionRecording(); - } - } - }; - - return <>{children}; -} \ No newline at end of file diff --git a/src/components/ProviderTable/index.tsx b/src/components/ProviderTable/index.tsx index 501f476a..a0cd4688 100644 --- a/src/components/ProviderTable/index.tsx +++ b/src/components/ProviderTable/index.tsx @@ -6,7 +6,6 @@ interface ProviderMetadata { id: string; title: string; extension: boolean; - cloud: boolean; permalink: string; } @@ -37,7 +36,6 @@ export default function ProviderTable(): React.JSX.Element { id: provider.id, title: provider.title, extension: provider.extension, - cloud: provider.cloud, permalink: docPermalinks.get(provider.id) || `/${provider.id}`, })); @@ -47,7 +45,6 @@ export default function ProviderTable(): React.JSX.Element { Provider VS Code Extension - Cloud Agents @@ -57,10 +54,9 @@ export default function ProviderTable(): React.JSX.Element { {provider.title} {provider.extension ? <> : ''} - {provider.cloud ? <> : ''} ))} ); -} \ No newline at end of file +} diff --git a/src/components/SocialIcons/index.tsx b/src/components/SocialIcons/index.tsx index 47560481..eb03ce97 100644 --- a/src/components/SocialIcons/index.tsx +++ b/src/components/SocialIcons/index.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { FaBluesky, FaDiscord, FaGithub, FaLinkedin, FaReddit, FaTiktok, FaXTwitter } from 'react-icons/fa6'; +import { FaBluesky, FaDiscord, FaGithub, FaReddit, FaXTwitter } from 'react-icons/fa6'; import { DISCORD_URL, REDDIT_URL, TWITTER_URL, BLUESKY_URL, - LINKEDIN_URL, - TIKTOK_URL, GITHUB_MAIN_REPO_URL, } from '../../constants'; @@ -32,16 +30,6 @@ const SocialIcons: React.FC = () => { icon: FaXTwitter, label: 'X (Twitter)' }, - { - href: LINKEDIN_URL, - icon: FaLinkedin, - label: 'LinkedIn' - }, - { - href: TIKTOK_URL, - icon: FaTiktok, - label: 'TikTok' - }, { href: BLUESKY_URL, icon: FaBluesky, @@ -80,4 +68,4 @@ const SocialIcons: React.FC = () => { ); }; -export default SocialIcons; \ No newline at end of file +export default SocialIcons; diff --git a/src/components/TeamsBanner/index.tsx b/src/components/TeamsBanner/index.tsx deleted file mode 100644 index 4f3a808e..00000000 --- a/src/components/TeamsBanner/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styles from './styles.module.css'; - -export function TeamsBanner(): React.ReactElement | null { - const [isVisible, setIsVisible] = useState(false); - - useEffect(() => { - // Check localStorage to see if banner was dismissed - const isDismissed = localStorage.getItem('teamsBannerDismissed'); - if (!isDismissed) { - setIsVisible(true); - } - }, []); - - const handleDismiss = () => { - setIsVisible(false); - localStorage.setItem('teamsBannerDismissed', 'true'); - }; - - if (!isVisible) { - return null; - } - - return ( -
-
- Ship Faster with Roo Code Teams. - - Get early access now. - -
- -
- ); -} - -export default TeamsBanner; \ No newline at end of file diff --git a/src/components/TeamsBanner/styles.module.css b/src/components/TeamsBanner/styles.module.css deleted file mode 100644 index bd96c980..00000000 --- a/src/components/TeamsBanner/styles.module.css +++ /dev/null @@ -1,85 +0,0 @@ -.teamsBanner { - position: relative; - display: flex; - align-items: center; - justify-content: center; - padding: 0.85rem 1.1rem; - background: linear-gradient(90deg, #4f46e5, #2563eb); - color: #ffffff; -} - -.teamsBannerContent { - display: flex; - align-items: center; - gap: 0.75rem; -} - -.teamsBannerHeadline { - font-weight: 600; -} - -.teamsBannerLink { - color: #ffffff; - font-weight: 600; - text-decoration: underline; - text-decoration-color: rgba(255, 255, 255, 0.7); - text-decoration-thickness: 2px; -} - -.teamsBannerLink:hover { - color: #ffffff; - text-decoration-color: rgba(255, 255, 255, 0.95); -} - -.teamsBannerDismiss { - position: absolute; - right: 1rem; - background: transparent; - border: none; - color: #ffffff; - cursor: pointer; - padding: 0.25rem; - display: flex; - align-items: center; - justify-content: center; - border-radius: 4px; - transition: background-color 0.2s ease; -} - -.teamsBannerDismiss:hover { - background-color: rgba(255, 255, 255, 0.1); -} - -.teamsBannerDismiss:focus { - outline: 2px solid rgba(255, 255, 255, 0.5); - outline-offset: 2px; -} - -@media (max-width: 768px) { - .teamsBanner { - padding: 0.75rem 1rem; - } - - .teamsBannerContent { - flex-direction: row; - align-items: center; - gap: 0.5rem; - padding-right: 2rem; /* Space for close button */ - font-size: 0.875rem; /* Smaller font size for mobile */ - } - - .teamsBannerHeadline { - font-weight: 600; - white-space: nowrap; - } - - .teamsBannerLink { - white-space: nowrap; - } - - .teamsBannerDismiss { - right: 0.5rem; - top: 50%; - transform: translateY(-50%); - } -} diff --git a/src/constants.ts b/src/constants.ts index 60b71403..5510d3bc 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -12,8 +12,6 @@ export const DISCORD_URL = 'https://discord.gg/roocode'; export const REDDIT_URL = 'https://www.reddit.com/r/RooCode/'; export const TWITTER_URL = 'https://x.com/roocode'; export const BLUESKY_URL = 'https://bsky.app/profile/roocode.bsky.social'; -export const LINKEDIN_URL = 'https://www.linkedin.com/company/roo-code'; -export const TIKTOK_URL = 'https://www.tiktok.com/@roo.code'; // GitHub links export const GITHUB_MAIN_REPO_URL = 'https://github.com/RooCodeInc/Roo-Code'; @@ -24,13 +22,4 @@ export const GITHUB_FEATURES_URL = `${GITHUB_MAIN_REPO_URL}/discussions/categori export const VSCODE_MARKETPLACE_URL = 'https://marketplace.visualstudio.com/items?itemName=RooVeterinaryInc.roo-cline'; export const OPEN_VSX_URL = 'https://open-vsx.org/extension/RooVeterinaryInc/roo-cline'; -// Company links -export const CONTACT_EMAIL = 'mailto:support@roocode.com'; -export const CAREERS_URL = 'https://careers.roocode.com'; -export const WEBSITE_PRIVACY_URL = 'https://roocode.com/privacy'; export const EXTENSION_PRIVACY_URL = `${GITHUB_MAIN_REPO_URL}/blob/main/PRIVACY.md`; - -// Authentication links -export const APP_URL = 'https://app.roocode.com'; -export const SIGN_IN_URL = `${APP_URL}/sign-in`; -export const SIGN_UP_URL = `${APP_URL}/sign-up`; \ No newline at end of file diff --git a/src/lib/analytics/consent-manager.ts b/src/lib/analytics/consent-manager.ts deleted file mode 100644 index 3a8789b8..00000000 --- a/src/lib/analytics/consent-manager.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { CONSENT_COOKIE_NAME } from '@roo-code/types'; -import { getCookieConsentValue } from 'react-cookie-consent'; - -// Custom event names for consent tracking -export const CONSENT_GRANTED_EVENT = 'cookieConsentGranted'; -export const CONSENT_DENIED_EVENT = 'cookieConsentDenied'; - -/** - * Dispatches a custom event to notify the application about cookie consent status - * @param granted - Whether the user has granted consent - */ -export function dispatchConsentEvent(granted: boolean): void { - if (typeof window === 'undefined') return; - - const eventName = granted ? CONSENT_GRANTED_EVENT : CONSENT_DENIED_EVENT; - const event = new CustomEvent(eventName, { - detail: { granted }, - bubbles: true, - cancelable: false - }); - - window.dispatchEvent(event); - - // Also dispatch a generic consent event with the status - const genericEvent = new CustomEvent('cookieConsentChanged', { - detail: { granted }, - bubbles: true, - cancelable: false - }); - - window.dispatchEvent(genericEvent); -} - -/** - * Check if user has given consent for analytics cookies - * Uses react-cookie-consent's built-in function - */ -export function hasConsent(): boolean { - if (typeof window === 'undefined') return false; - return getCookieConsentValue(CONSENT_COOKIE_NAME) === 'true'; -} - -/** - * Sets up a listener for consent events - * @param callback - Function to call when consent status changes - * @returns Cleanup function to remove the listener - */ -export function onConsentChange(callback: (granted: boolean) => void): () => void { - if (typeof window === 'undefined') return () => {}; - - const handler = (event: Event) => { - const customEvent = event as CustomEvent; - callback(customEvent.detail.granted); - }; - - window.addEventListener('cookieConsentChanged', handler); - - return () => { - window.removeEventListener('cookieConsentChanged', handler); - }; -} \ No newline at end of file diff --git a/src/theme/Footer/Layout/index.tsx b/src/theme/Footer/Layout/index.tsx index 582a7a34..18959940 100644 --- a/src/theme/Footer/Layout/index.tsx +++ b/src/theme/Footer/Layout/index.tsx @@ -20,7 +20,7 @@ export default function FooterLayout({
{logo &&
{logo}
}
- Your AI Software Engineering Team. Interactive in the IDE, autonomous in the cloud. + Open-source AI coding assistance for VS Code.
diff --git a/src/theme/Layout/index.js b/src/theme/Layout/index.js index bf53d8db..338bcc23 100644 --- a/src/theme/Layout/index.js +++ b/src/theme/Layout/index.js @@ -1,19 +1,6 @@ import React from 'react'; import OriginalLayout from '@theme-original/Layout'; -import { CookieConsent } from '../../components/CookieConsent'; -import { PostHogProvider } from '../../components/PostHogProvider'; -import { GTMProvider } from '../../components/GTMProvider'; -import { IntercomProvider } from '../../components/IntercomProvider'; export default function Layout(props) { - return ( - - - - - - - - - ); -} \ No newline at end of file + return ; +} diff --git a/static/img/analytics/overview.png b/static/img/analytics/overview.png deleted file mode 100644 index 582ee68d..00000000 Binary files a/static/img/analytics/overview.png and /dev/null differ diff --git a/static/img/billing-subscriptions/billing-subscriptions-1.png b/static/img/billing-subscriptions/billing-subscriptions-1.png deleted file mode 100644 index 7cfa48fc..00000000 Binary files a/static/img/billing-subscriptions/billing-subscriptions-1.png and /dev/null differ diff --git a/static/img/billing-subscriptions/billing-subscriptions-2.png b/static/img/billing-subscriptions/billing-subscriptions-2.png deleted file mode 100644 index 26ff078a..00000000 Binary files a/static/img/billing-subscriptions/billing-subscriptions-2.png and /dev/null differ diff --git a/static/img/billing-subscriptions/billing-subscriptions.png b/static/img/billing-subscriptions/billing-subscriptions.png deleted file mode 100644 index e9c6cbad..00000000 Binary files a/static/img/billing-subscriptions/billing-subscriptions.png and /dev/null differ diff --git a/static/img/cloud-agents/cloud-agent-call-gh-auto.png b/static/img/cloud-agents/cloud-agent-call-gh-auto.png deleted file mode 100644 index 1984a484..00000000 Binary files a/static/img/cloud-agents/cloud-agent-call-gh-auto.png and /dev/null differ diff --git a/static/img/cloud-agents/cloud-agent-call-gh-mention.png b/static/img/cloud-agents/cloud-agent-call-gh-mention.png deleted file mode 100644 index 03250819..00000000 Binary files a/static/img/cloud-agents/cloud-agent-call-gh-mention.png and /dev/null differ diff --git a/static/img/cloud-agents/cloud-agent-call-slack.png b/static/img/cloud-agents/cloud-agent-call-slack.png deleted file mode 100644 index 718eaa91..00000000 Binary files a/static/img/cloud-agents/cloud-agent-call-slack.png and /dev/null differ diff --git a/static/img/cloud-agents/cloud-agent-call-web.png b/static/img/cloud-agents/cloud-agent-call-web.png deleted file mode 100644 index 7bd97ed2..00000000 Binary files a/static/img/cloud-agents/cloud-agent-call-web.png and /dev/null differ diff --git a/static/img/credits/auto-top-up-1.png b/static/img/credits/auto-top-up-1.png deleted file mode 100644 index f9e4d868..00000000 Binary files a/static/img/credits/auto-top-up-1.png and /dev/null differ diff --git a/static/img/credits/credit-balance-zero.png b/static/img/credits/credit-balance-zero.png deleted file mode 100644 index 97b349d8..00000000 Binary files a/static/img/credits/credit-balance-zero.png and /dev/null differ diff --git a/static/img/credits/credit-balance.png b/static/img/credits/credit-balance.png deleted file mode 100644 index 6431095a..00000000 Binary files a/static/img/credits/credit-balance.png and /dev/null differ diff --git a/static/img/dashboard/dashboard-1.png b/static/img/dashboard/dashboard-1.png deleted file mode 100644 index 09edf540..00000000 Binary files a/static/img/dashboard/dashboard-1.png and /dev/null differ diff --git a/static/img/dashboard/dashboard-2.png b/static/img/dashboard/dashboard-2.png deleted file mode 100644 index 96260ef2..00000000 Binary files a/static/img/dashboard/dashboard-2.png and /dev/null differ diff --git a/static/img/dashboard/dashboard-3.png b/static/img/dashboard/dashboard-3.png deleted file mode 100644 index 920d34ac..00000000 Binary files a/static/img/dashboard/dashboard-3.png and /dev/null differ diff --git a/static/img/dashboard/dashboard-4.png b/static/img/dashboard/dashboard-4.png deleted file mode 100644 index 4682abcf..00000000 Binary files a/static/img/dashboard/dashboard-4.png and /dev/null differ diff --git a/static/img/dashboard/dashboard.png b/static/img/dashboard/dashboard.png deleted file mode 100644 index 42eb4742..00000000 Binary files a/static/img/dashboard/dashboard.png and /dev/null differ diff --git a/static/img/integrations/gh-auth-1.png b/static/img/integrations/gh-auth-1.png deleted file mode 100644 index a7e5f48e..00000000 Binary files a/static/img/integrations/gh-auth-1.png and /dev/null differ diff --git a/static/img/integrations/gh-auth-2.png b/static/img/integrations/gh-auth-2.png deleted file mode 100644 index 7dea1194..00000000 Binary files a/static/img/integrations/gh-auth-2.png and /dev/null differ diff --git a/static/img/integrations/gh-mention.png b/static/img/integrations/gh-mention.png deleted file mode 100644 index 03250819..00000000 Binary files a/static/img/integrations/gh-mention.png and /dev/null differ diff --git a/static/img/integrations/gh-new-task.png b/static/img/integrations/gh-new-task.png deleted file mode 100644 index 2e1623dc..00000000 Binary files a/static/img/integrations/gh-new-task.png and /dev/null differ diff --git a/static/img/integrations/gh-response-review.png b/static/img/integrations/gh-response-review.png deleted file mode 100644 index 1984a484..00000000 Binary files a/static/img/integrations/gh-response-review.png and /dev/null differ diff --git a/static/img/integrations/slack-confirm.png b/static/img/integrations/slack-confirm.png deleted file mode 100644 index 6952b9a3..00000000 Binary files a/static/img/integrations/slack-confirm.png and /dev/null differ diff --git a/static/img/integrations/slack-question.png b/static/img/integrations/slack-question.png deleted file mode 100644 index 76667922..00000000 Binary files a/static/img/integrations/slack-question.png and /dev/null differ diff --git a/static/img/login/login-0.png b/static/img/login/login-0.png deleted file mode 100644 index 9edcde57..00000000 Binary files a/static/img/login/login-0.png and /dev/null differ diff --git a/static/img/login/login-1.png b/static/img/login/login-1.png deleted file mode 100644 index 381befe4..00000000 Binary files a/static/img/login/login-1.png and /dev/null differ diff --git a/static/img/login/login-10.png b/static/img/login/login-10.png deleted file mode 100644 index 81245efb..00000000 Binary files a/static/img/login/login-10.png and /dev/null differ diff --git a/static/img/login/login-11.png b/static/img/login/login-11.png deleted file mode 100644 index 76af1df3..00000000 Binary files a/static/img/login/login-11.png and /dev/null differ diff --git a/static/img/login/login-12.png b/static/img/login/login-12.png deleted file mode 100644 index c7519f47..00000000 Binary files a/static/img/login/login-12.png and /dev/null differ diff --git a/static/img/login/login-13.png b/static/img/login/login-13.png deleted file mode 100644 index f7e867b3..00000000 Binary files a/static/img/login/login-13.png and /dev/null differ diff --git a/static/img/login/login-2.png b/static/img/login/login-2.png deleted file mode 100644 index 15832bae..00000000 Binary files a/static/img/login/login-2.png and /dev/null differ diff --git a/static/img/login/login-3.png b/static/img/login/login-3.png deleted file mode 100644 index bfc2e679..00000000 Binary files a/static/img/login/login-3.png and /dev/null differ diff --git a/static/img/login/login-4.png b/static/img/login/login-4.png deleted file mode 100644 index a16a659b..00000000 Binary files a/static/img/login/login-4.png and /dev/null differ diff --git a/static/img/login/login-5.png b/static/img/login/login-5.png deleted file mode 100644 index c35e9a92..00000000 Binary files a/static/img/login/login-5.png and /dev/null differ diff --git a/static/img/login/login-6.png b/static/img/login/login-6.png deleted file mode 100644 index 2dd2e1f7..00000000 Binary files a/static/img/login/login-6.png and /dev/null differ diff --git a/static/img/login/login-7.png b/static/img/login/login-7.png deleted file mode 100644 index 2dbb06a5..00000000 Binary files a/static/img/login/login-7.png and /dev/null differ diff --git a/static/img/login/login-8.png b/static/img/login/login-8.png deleted file mode 100644 index 8e6628d2..00000000 Binary files a/static/img/login/login-8.png and /dev/null differ diff --git a/static/img/login/login.png b/static/img/login/login.png deleted file mode 100644 index 55ae7ffb..00000000 Binary files a/static/img/login/login.png and /dev/null differ diff --git a/static/img/roo-code-cloud/user-menu.png b/static/img/roo-code-cloud/user-menu.png deleted file mode 100644 index cf7a268a..00000000 Binary files a/static/img/roo-code-cloud/user-menu.png and /dev/null differ diff --git a/static/img/task-sync/task-sync.png b/static/img/task-sync/task-sync.png deleted file mode 100644 index 7efb4406..00000000 Binary files a/static/img/task-sync/task-sync.png and /dev/null differ diff --git a/static/img/team-plan/org-settings-menu.png b/static/img/team-plan/org-settings-menu.png deleted file mode 100644 index a92f4e0f..00000000 Binary files a/static/img/team-plan/org-settings-menu.png and /dev/null differ