diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..32cf3bf1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,13 @@ +--- +name: Bug report +about: Report a flaw, inaccuracy, or omission in our documentation. +title: "" +labels: bug, needs triage +assignees: jmacdotorg +--- + +**URL of the documentation page with this bug**: + +**A brief summary of the documentation bug**: + +(Optional) **Suggestions on how best we can address the bug**: diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 00000000..4dccde05 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Request documentation for a new or existing CodeRabbit feature. +title: "" +labels: enhancement, needs triage +assignees: jmacdotorg +--- + +**The name of this feature**: + +**Expected launch date**: + +**Personnel (PM, TL, etc.)**: + +**Summary of this feature**, including a high-level description of the public documentation that it requires: + +**Links to relevant internal documentation:** diff --git a/.github/ISSUE_TEMPLATE/other-documentation-request.md b/.github/ISSUE_TEMPLATE/other-documentation-request.md new file mode 100644 index 00000000..b258a89b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/other-documentation-request.md @@ -0,0 +1,7 @@ +--- +name: Other documentation request +about: Request a documentation improvement other than new-feature coverage. +title: "" +labels: needs triage +assignees: jmacdotorg +--- diff --git a/.github/workflows/fix.yaml b/.github/workflows/fix.yaml deleted file mode 100644 index 438cab16..00000000 --- a/.github/workflows/fix.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: Fix - -on: - pull_request: - branches: main - -jobs: - fix: - runs-on: ubuntu-latest - - permissions: - contents: write - - if: github.actor != 'github-actions[bot]' - - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - - uses: pnpm/action-setup@v4 - with: - version: latest - - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: pnpm - - run: pnpm install - - run: pnpm run lint:fix - - run: git add . - - - uses: qoomon/actions--create-commit@v1 - id: actions--create-commit - with: - message: | - ๐ŸŽจ pnpm run lint:fix - - [dependabot skip] - skip-empty: true - - - if: ${{ steps.actions--create-commit.outputs.commit }} - run: git push diff --git a/.github/workflows/node.js.yaml b/.github/workflows/node.js.yaml index d58bbaf6..22575dd0 100644 --- a/.github/workflows/node.js.yaml +++ b/.github/workflows/node.js.yaml @@ -1,10 +1,15 @@ name: Node.js CI on: - push: - branches: main + merge_group: + branches: + - main pull_request: - branches: main + branches: + - main + push: + branches: + - main jobs: test: @@ -21,4 +26,68 @@ jobs: cache: pnpm - run: pnpm install --frozen-lockfile --strict-peer-dependencies - run: pnpm run build + env: + API_KEY: ${{ secrets.INKEEP_API_KEY }} - run: pnpm run lint + + fix: + runs-on: ubuntu-latest + + permissions: + contents: write + + needs: + - test + + if: failure() && github.event_name != 'merge_group' && github.actor != 'github-actions[bot]' && github.actor != 'nektos/act' + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + - uses: pnpm/action-setup@v4 + with: + version: latest + - uses: actions/setup-node@v4 + with: + cache: pnpm + node-version: 22 + + - run: | + pnpm install --fix-lockfile --no-frozen-lockfile + git add . + - id: commit-lockfile + uses: qoomon/actions--create-commit@v1 + with: + message: | + ๐Ÿ“Œ pnpm install --fix-lockfile + + [dependabot skip] + skip-empty: true + + - run: | + pnpm run format + git add . + - id: commit-format + uses: qoomon/actions--create-commit@v1 + with: + message: | + ๐ŸŽจ pnpm run format + + [dependabot skip] + skip-empty: true + + - run: | + pnpm run lint:fix + git add . + - id: commit-lint + uses: qoomon/actions--create-commit@v1 + with: + message: | + ๐Ÿšจ pnpm run lint:fix + + [dependabot skip] + skip-empty: true + + - if: steps.commit-lockfile.outputs.commit || steps.commit-format.outputs.commit || steps.commit-lint.outputs.commit + run: git push diff --git a/README.md b/README.md index cf7d301d..bd76c6c5 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Welcome to the official docs for [**CodeRabbit**](https://coderabbit.ai), the co [![Discord](https://img.shields.io/discord/1134356397673414807?color=7289DA&label=Discord&logo=discord&logoColor=green)](http://discord.gg/coderabbit) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/coderabbitai/coderabbit-docs/pulls) [![Node.js CI](https://github.com/coderabbitai/coderabbit-docs/actions/workflows/node.js.yaml/badge.svg)](https://github.com/coderabbitai/coderabbit-docs/actions/workflows/node.js.yaml) -![CodeRabbit Reviews](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.coderabbit.ai%2Fstats%2Fgithub%2Fcoderabbitai%2Fcoderabbit-docs&query=reviews&suffix=%20Reviews&style=flat&label=CodeRabbit&link=https%3A%2F%2Fcoderabbit.ai) +![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/coderabbitai/coderabbit-docs?labelColor=171717&color=FF570A&link=https%3A%2F%2Fcoderabbit.ai&label=CodeRabbit%20Reviews) ## About CodeRabbit @@ -37,20 +37,25 @@ Welcome to the official docs for [**CodeRabbit**](https://coderabbit.ai), the co ## Getting Started -1. Clone this repository: +1. Make sure that you have the following prerequisites installed: + + - [Node.js](https://nodejs.org/) + - [pnpm](https://pnpm.io/installation) + +2. Clone this repository: ```sh git clone https://github.com/coderabbit-ai/coderabbit-docs.git cd coderabbit-docs ``` -2. Install dependencies: +3. Install Node.js dependencies using `pnpm`: ```sh pnpm install ``` -3. Start the development server: +4. Start the development server: ```sh pnpm start diff --git a/docs/changelog.md b/docs/changelog.md index 1873f67a..d273ffcb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -5,72 +5,424 @@ description: The latest updates and changes to CodeRabbit. sidebar_position: 13 --- +## July 10, 2025 + +### Enhanced Python Static Analysis: nbqa Support for Jupyter Notebooks + +We're excited to announce enhanced Python static analysis capabilities with nbqa support for Jupyter Notebooks! + +Our existing integrated [Ruff](https://docs.astral.sh/ruff/), [Flake8](https://flake8.pycqa.org/) and [Pylint](https://pylint.pycqa.org/) tools now support linting Jupyter Notebooks (`.ipynb` files) using [nbqa](https://github.com/nbQA-dev/nbQA). This allows you to maintain code quality across your Python projects, including Jupyter Notebooks. + +See our [Ruff](/tools/ruff), [Flake8](/tools/flake8), and [Pylint](/tools/pylint) documentation for more details. + +## July 3, 2025 + +### Enhanced Python Static Analysis: Flake8 Support + +We're excited to announce enhanced Python static analysis capabilities with [Flake8](https://flake8.pycqa.org/) support! + +[Flake8](https://flake8.pycqa.org/) is a Python linting utility that wraps PyFlakes, pycodestyle, and Mccabe to check your Python code for style and logical errors. + +See our [tools documentation](https://docs.coderabbit.ai/tools/) for more details. + +## July 1, 2025 + +### Enhanced Code Guidelines Support + +We've expanded our code guidelines scanning capabilities to provide even better code review experiences. CodeRabbit now automatically scans and learns from additional configuration files to understand your organization's coding standards and preferences. + +**New supported patterns:** + +- `**/.cursorrules` - Cursor IDE rules and preferences +- `.github/copilot-instructions.md` - GitHub Copilot instructions +- `**/CLAUDE.md` - Claude-specific coding guidelines +- `**/.cursor/rules/*` - Cursor rules directory +- `**/.windsurfrules` - Windsurf IDE rules +- `**/.clinerules/*` - Cline IDE rules +- `**/.rules/*` - General rules directory + +These guidelines are automatically analyzed and applied during code reviews to ensure consistency with your team's coding standards. You can configure these patterns in the knowledge base section of your CodeRabbit settings. + +## June 27, 2025 + +### Enhanced PHP Static Analysis: PHPMD and PHPCS Support + +We're excited to announce enhanced PHP static analysis capabilities with two powerful new tools! + +- [PHPMD](https://phpmd.org/) (PHP Mess Detector) is a static analysis tool that detects potential problems in your PHP code such as possible bugs, suboptimal code, overcomplicated expressions, and unused parameters, variables, methods, and classes. + +- [PHPCS](https://github.com/squizlabs/PHP_CodeSniffer) (PHP CodeSniffer) is a development tool that ensures your PHP code conforms to coding standards like PSR-1, PSR-2, PSR-12, and custom standards. It can automatically fix many coding standard violations. + +See our [tools documentation](https://docs.coderabbit.ai/tools/) for more details. + +## June 11, 2025 + +### Enhanced Static Analysis: HTMLHint and Checkmake Support + +We're excited to announce that two new static analysis tools are now supported on CodeRabbit! + +- [HTMLHint](https://htmlhint.com/) is a static code analysis tool for HTML that helps maintain code quality by detecting common mistakes and enforcing best practices. + +- [Checkmake](https://github.com/mrtazz/checkmake) is a linter for Makefiles that helps ensure your build scripts follow best practices and maintain consistency. + +## June 10, 2025 + +### Unit Test Generation, Early Access + +We're excited to announce that our new unit test generation feature is now available in early access! CodeRabbit can now automatically generate unit tests for your code changes. + +Key capabilities: + +- **Intelligent Test Generation**: Automatically creates unit tests that cover edge cases, error scenarios, and core functionality +- **Context-Aware**: Generates tests that understand your existing codebase patterns and testing conventions +- **One-Click Integration**: Simply comment `@coderabbitai auto-generate unit tests` on any pull request or specific file, or click on the checkbox available in the walkthrough comment for Early Access customers. + +You can customize the generated tests to fit your specific requirements. + +## June 5, 2025 + +### Enhanced Static Analysis: Dotenv Linter and Pylint Support + +We're excited to announce that two new static analysis tools are now supported on CodeRabbit! + +- [Dotenv Linter](https://github.com/dotenv-linter/dotenv-linter) is a fast, opinionated linter for `.env` files that helps prevent misconfigurations by detecting typos, invalid syntax, and duplicated keys. + +- [Pylint](https://github.com/PyCQA/pylint) is a widely used static analysis and code quality tool for Python. It checks for errors, enforces coding standards, and looks for code smells in your Python codebase. + +## May 25, 2025 + +### New Security and Code Quality Tools + +We're excited to announce the addition of two powerful tools to our static analysis arsenal: + +- **Brakeman**: A static analysis security vulnerability scanner for Ruby on Rails applications. It helps identify security issues in your Ruby codebase by analyzing Gemfile, Ruby files (_.rb), and ERB templates (_.erb). + +- **Clippy**: The official linter for Rust code, helping catch common mistakes and improve your Rust code quality. It analyzes \*.rs files and supports configuration through clippy.toml files. + +Both tools can be configured through their respective config files or through CodeRabbit's settings page. See our [tools documentation](https://docs.coderabbit.ai/tools/) for more details. + +## May 19, 2025 + +### Lua Support with Luacheck + +We're excited to announce enhanced support for Lua code analysis with [Luacheck](https://github.com/mpeterv/luacheck), a powerful static analyzer and linter for Lua code. + +## May 14, 2025 + +### CodeRabbit for VS Code, Cursor, and Windsurf Is Here ๐ŸŽ‰ + +We're thrilled to announce that CodeRabbit's AI code reviews have officially landed inside **VS Code and all its forks, including Cursor and Windsurf!** No more review bottlenecks or context switches: now you can get _instant, inline feedback right in your editor, completely free._ + +**Why you'll love it:** + +- ๐Ÿ“ **Inline Code Reviews**: Senior-dev-level annotation on every line. CodeRabbit becomes your AI pair programmer, annotating staged & unstaged commits before you even open a PR. +- ๐Ÿš€ **Built for Flow, Not Friction**: Code, review, commitโ€”rise & repeat without breaking your flow state. Reviews run automatically on every commit so you ship faster. +- ๐Ÿ› ๏ธ **Fix-with-AI**: One-Click Fix for quick tweaks; "Fix with AI" hands off more complex suggestions to your favorite coding agent, complete with full context. +- ๐Ÿงฉ **Compatible with Cursor, Windsurf & Language-Agnostic**: Works out of the box on VS Code, Cursor, Windsurf. Supports Java, JavaScript, PHP, Python, TypeScript, Go, Ruby, and more. + +Pair these IDE-embedded reviews with our deeper Git-platform reviews for a multi-layered approach that catches more bugs and cuts down overall review time. + +- [Join the launch discussion on Discord](https://discord.com/channels/1134356397673414807/1145813948193575023/1372210767838842950) +- [Install the CodeRabbit VSCode Extension](https://coderabbit.link/vscode) + +## April 19, 2025 + +### Docstring Path Instructions + +You can now provide path-based instructions for the generation of docstring in `.coderabbit.yaml`. + +Example: + +```yaml +code_generation: + docstrings: + path_instructions: + - path: "**/*.ts" + instructions: | + End all docstrings with a notice that says "Auto-generated by CodeRabbit.". + Do not omit the closing tags; the docstring must be valid. +``` + +See the [docstrings documentation](/finishing-touches/docstrings#path-instructions) for more details. + +## April 14, 2025 + +### Shopify CLI Integration & Bitbucket Cloud Reporting + +We're excited to announce two significant updates: + +#### Shopify CLI Integration + +We've added support for [Shopify CLI](https://docs.coderabbit.ai/tools/shopify-cli), a powerful tool for validating and analyzing Shopify themes and apps. This integration helps ensure your Shopify projects follow best practices by: + +- Validating Liquid syntax and theme requirements +- Checking app extension configurations +- Identifying performance bottlenecks +- Ensuring accessibility standards +- Detecting security vulnerabilities + +#### Bitbucket Cloud Scheduled Reporting + +Our reporting capabilities now extend to Bitbucket Cloud! You can now: + +- Schedule automated reports for your Bitbucket Cloud repositories +- Generate customized summaries of team performance +- Track PR review metrics +- Deliver reports via Email, Slack, Microsoft Teams, or Discord + +## April 11 2025 + +### Agent Chat + +```mdx-code-block + +``` + +We're thrilled to introduce agentic planning on GitHub for CodeRabbit chat as Generally Available for Pro users. This enhancement lets you make more advanced requests that span multiple files. Just add a review or issue comment on any pull request, or issue comment on an issue, issue tagging `@coderabbitai` along with your natural language request for a code change, and the chat will develop a plan for complex modifications. Upon reviewing the plan and getting your consent, CodeRabbit will emit a stacked PR, commit or copyable snippet to your PR or issue for those code changes. + +## April 8, 2025 + +### New Static Analysis Tools + +We've expanded our static analysis capabilities with two new tools: + +- **Oxlint**: A high-performance JavaScript/TypeScript linter written in Rust. +- **Prisma Lint**: A dedicated linter for Prisma schema files to help enforce consistent conventions and best practices. + +Both tools can be configured through their respective config files or through CodeRabbit's settings page. See our [tools documentation](https://docs.coderabbit.ai/tools/) for more details. + +## April 1, 2025 + +### Code Graph Analysis + +Code reviews automatically analyze dependencies across multiple files to enhance the context from code definitions (e.g., types) to improve accuracy and reduce false positives. + +This is a very powerful feature that gathers context behind code changes in one file that have dependencies in another file. + +๐Ÿ” See it in action: Review details โ†’ Additional context used โ†’ Code definitions +In the review status message. It is automatically enabled for all users. + +### Automatically Run a Web Query to Include Latest Information + +CodeRabbit now performs Web Queries automatically to include the most recent publicly available information โ€” even if it wasn't included in the latest LLM update. This feature is enabled by default for all users, and you may notice it being used in review comments and chat responses. + +Web Queries allow CodeRabbit to fetch the latest documentation and external content to improve the accuracy and relevance of its output. You can disable this feature by setting web_search: false in your knowledge_base settings. + +### CodeRabbit Auto-Resolve + +CodeRabbit can now detect when suggested changes have been implemented and automatically resolve the related review threads on your behalf. + +### Dashboard Redesign + +```mdx-code-block +import ProPlanNotice from "@site/src/components/ProPlanNotice.mdx" + + +``` + +New and Improved Dashboards to provide more useful feedback such as: + +- Avgerage PR Merge Time +- Weekly Pull Request Activity +- Number of PRs Reviewed +- Acceptance rate of CodeRabbit Suggestions +- Tool Findings +- Review Feedback Breakdown + +and much more! Check out the new dashboard to view these metrics about your organization. + +### Multi-Step Agent Chat + +```mdx-code-block + +``` + +We're thrilled to introduce agentic planning on GitHub for CodeRabbit chat as an Experimental feature for Early Access users. This enhancement lets you make more advanced requests that span multiple files. Just add a review comment on any pull request tagging `@coderabbitai` along with your natural language request for a code change, and the chat will develop a plan for complex modifications. Upon reviewing the plan and getting your consent, CodeRabbit will emit a stacked PR to your PR for those code changes. + +### Additional Static Analysis Support + +We are continually expanding our support for static analysis tools. We've recently added support for: + +- SQLFluff +- Added Oxlint for faster linting + - Oxlint is a blazingly fast JavaScript/TypeScript linter written in Rust + - Replaces ESLint for basic linting while maintaining ESLint for more complex rules + - Up to 50-100x faster than traditional ESLint + +## February 25, 2025 + +### Docstrings + +```mdx-code-block + +``` + +We're excited to announce the launch of the Docstrings feature! This functionality allows developers to generate docstrings on a pull request. By commenting `@coderabbitai generate docstrings` on any pull request, you can automatically generate docstrings for functions in the code changes. + +The list of supported languages and software forges is available in [the documentation](/finishing-touches/docstrings). + +### Azure DevOps Pipeline Failure Detection + +We're excited to announce that our pipeline error detection capabilities now extend to Azure DevOps! Just like with GitHub Actions, GitLab CI/CD, and CircleCI, you can now automatically detect and fix pipeline failures in your Azure DevOps pipelines. + +## February 4, 2025 + +### Bitbucket Cloud Support & CircleCI Pipeline Failure Detection + +We're excited to announce two major updates: + +#### Bitbucket Cloud Integration + +CodeRabbit is now available for Bitbucket Cloud users! This integration includes: + +- Automated code reviews for pull requests +- Inline review comments and suggestions +- Real-time bot interaction for feedback and assistance + +Check out our [Bitbucket Cloud integration guide](https://docs.coderabbit.ai/platforms/bitbucket-cloud) to get started. + +#### [CircleCI](https://circleci.com/) Pipeline Failure Detection and Remediation + +We've expanded our pipeline error detection to [CircleCI](https://circleci.com/)! Just like with GitHub Actions and GitLab CI/CD, you can now automatically detect and fix pipeline failures from your CircleCI workflows. + +--- + +## January 21, 2025 + +### Linear Issue Creation + +We have added the ability to create issues directly from AI Code Review Comments allowing developers to convert code review feedback into actionable Linear issues. + +--- + +## January 13, 2025 + +### GitLab Pipeline Failure Detection and Remediation + +We've expanded our pipeline error detection capabilities to GitLab Users! Just like with GitHub Actions, you can now automatically detect and fix pipeline failures in your GitLab CI/CD workflows. + +--- + +## January 2, 2025 + +### GitHub Action Failure Detection and Remediation + +We're excited to announce our new pipeline error detection tool. Never let a failing pipeline block your progress again! + +Automatically fix build failures for GitHub Actions! This feature automatically identifies common pipeline and build failures, providing instant fixes across multiple technologies such Python, Node.js, Java, Terraform, Docker, Kubernetes and more! + +Key capabilities: + +- Automatic detection and analysis of pipeline build failures +- One-click fix build failure suggestions for common issues +- Comprehensive support for popular frameworks and tools +- Integration with existing GitHub Checks + +Future support planned for: + +- Azure DevOps CI/CD +- GitLab CI/CD +- CircleCI + +--- + +## December 23, 2024 + +### Streamlined Multi-Repository Installation for GitLab and Azure DevOps + +We're thrilled to announce a significant enhancement to CodeRabbit that simplifies your workflow! You can now install CodeRabbit on multiple repositories simultaneously for GitLab and Azure DevOps, eliminating the need to activate each repository individually. + +With this update, you can: + +- โœ… Select Multiple Repositories: Check the boxes next to the repositories you wish to activate. +- ๐Ÿ–ฑ๏ธ One-Click Installation: Select the **Install Repositories** button on the top right to integrate CodeRabbit across all selected projects instantly. + +--- + ## December 12, 2024 -### Docstrings(Beta) +### Docstrings (Beta) We have launched a new functionality as part of our finishing touches initiative to allow developers to generate docstrings on a pull request. This feature lets you generate docstrings by commenting `@coderabbitai generate docstrings` on any pull request. This works for both new and existing documentation. See [our documentation](https://docs.coderabbit.ai/finishing-touches/docstrings) for details. +--- + ## November 25, 2024 ### Code Review Performance Enhancements with Improved Comment Resolution Logic We have implemented several performance improvements that will enhance the speed of code review and are committed to making code review as efficient as possible across all your web development needs. We have also further refined the logic to reduce duplicate comments once a comment is resolved. +--- + ## November 20, 2024 ### Support for On-premises Learning and GitLab Follow-up Issue Creation -Learning is a method for developers to interact with the bot to tune AI specifically for their files, repositories, and codebase for future reviews. We now extend this learning support to our on-premises customers. Additionally, we have enhanced our automated workflow to create follow-up issues based on Merge Request Reviews in GitLab. +Learnings enable developers to fine-tune the AI for their specific files, repositories, and codebase, enhancing future reviews. We're excited to extend this feature to our on-premises customers. Additionally, we've improved our automated workflow to create follow-up issues directly from Merge Request reviews in GitLab. + +--- ## November 8, 2024 ### ESLint Support -We've introduced support for ES Lint, including .vue, .svelte, and .astro, alongside traditional .js, .ts, and .jsx extensions. We've worked on monorepo compatibility with improved Yarn and PNPM workspace support, ensuring seamless integration across your projects. While maintaining your existing ESLint configurations, we simply require all dependencies to be properly defined in your package.json. Note that private plugins aren't currently supported, but we're committed to making code quality maintenance as efficient as possible across all your web development needs +We're excited to announce support for **ESLint**, now extending to .vue, .svelte, and .astro files, in addition to the traditional .js, .ts, and .jsx extensions. We've enhanced compatibility for monorepos, offering improved integration with Yarn and Pnpm workspaces for seamless project management. + +Our solution respects your existing ESLint configurations, requiring only that all dependencies are properly defined in your package.json. Please note that private plugins are not yet supported. We're dedicated to streamlining code quality maintenance and making it as efficient as possible across your web development projects. + +--- ## October 31, 2024 ### Learnings and Metrics Iteration for CodeRabbit Self-Hosted Customers -We've improved our Learnings and Metrics accessibility for Self-Hosted CodeRabbit customers to provide a more seamless experience. Track learning patterns and insights more easily, with API key generation now available directly from the interface. +We've enhanced the accessibility of Learnings and Metrics for self-hosted CodeRabbit customers, delivering a more seamless experience. Easily track learning patterns and insights, with the added convenience of generating API keys directly within the interface. **Setup:** - Generate an API key in the CodeRabbit UI -- Enable Learnings and Metrics by: -- Configuring your .env file, or -- Contacting CodeRabbit support for assistance +- Enable Learnings and Metrics by either: + - Configuring your .env file + - Contacting CodeRabbit support for assistance + +--- ## October 30, 2024 ### Microsoft Teams Integration & Bitbucket Support -Our integration capabilities just got a major upgrade with Microsoft Teams and Bitbucket support. +Our integration capabilities just got a major upgrade with **Microsoft Teams** and **Bitbucket** support. -- Microsoft Teams integration is with scheduled reporting system and direct notification pipeline to keep your team informed. +- Microsoft Teams integration is now available as part of the Reporting feature, providing a direct notification pipeline to keep your team informed and up-to-date. -- We've also launched Bitbucket Data Center support with Pull Request integration, offering core review functionality, Pull Request summaries, and direct inline comments for applying review suggestions +- We've also launched Bitbucket Data Center support including Pull Request integration with essential review functionalities, detailed summaries, and inline comments to seamlessly apply review suggestions. + +--- ## October 22, 2024 ### Security and SAST Remediation Improvements -- Enabling comprehensive security analysis directly from context within GitHub Checks -- CodeRabbit now seamlessly integrates with top SAST tools that create github check annotation comments like Codacy, SonarCloud, Code Climate, GitHub Advanced Security, Palo Alto Prisma Cloud, and more! -- We have added a [YouTube Tutorial](https://www.youtube.com/watch?v=tfy3FdsoUtU) for a step-by-step guide on using CodeRabbit with Codacy and SonarCloud during pull requests -- Improved the [Semgrep Documentation](https://docs.coderabbit.ai/tools/semgrep) -- CodeRabbit now automatically detects Semgrep rulesets from default `semgrep.yml` or `semgrep.config.yml` files, eliminating the need for manual configuration +- Enabling comprehensive security analysis directly from context within GitHub Checks. +- CodeRabbit now seamlessly integrates with top SAST tools that create github check annotation comments such as: Codacy, SonarCloud, Code Climate, GitHub Advanced Security, Palo Alto Prisma Cloud, and more! +- We have added a [YouTube Tutorial](https://www.youtube.com/watch?v=tfy3FdsoUtU) for a step-by-step guide on using CodeRabbit with Codacy and SonarCloud during pull requests. +- Improved the [Semgrep Documentation](https://docs.coderabbit.ai/tools/semgrep). +- CodeRabbit now automatically detects Semgrep rulesets from default `semgrep.yml` or `semgrep.config.yml` files, eliminating the need for manual configuration. + +--- ## September 9, 2024 ### Related PRs and Label suggestions -- Possibly related PRs: The walkthrough comment now includes a list of potentially related PRs to help you recall the past context -- Suggested labels: CodeRabbit can now suggest labels by learning from your past PRs in the walkthrough comment. You can also provide custom labeling instructions in the UI or configuration file +- **Possibly Related PRs**: The walkthrough comment now provides a list of potentially related PRs, helping you quickly recall relevant context from past work. +- **Suggested labels**: CodeRabbit can now suggest labels by learning from your past PRs in the walkthrough comment. You can also provide custom labeling instructions in the UI or via configuration file. > Note: Possibly related PRs, automatic label suggestions based on past PRs, learnings, and possibly related issues require data opt-in (enabled by default). +--- + ## August 15, 2024 ### New Dashboard @@ -87,11 +439,15 @@ What's new: These updates are here to help you get more from the dashboard. Take a look today! +--- + ## July 31, 2024 -### Promote members to admin +### Grant Admin Privileges to Members -You can now promote members in your organization to admins within CodeRabbit. Admins will be able to manage the subscription and the seats for that organization. +You can now grant admin privileges to members of your organization in CodeRabbit. Admins will have the ability to manage subscriptions and seat allocations for the organization. + +--- ## July 16, 2024 @@ -99,44 +455,48 @@ You can now promote members in your organization to admins within CodeRabbit. Ad #### Learnings Page -We're thrilled to announce the new "Learnings" page! Users can now interact with learnings captured in PR comments, enhancing future reviews. Log into CodeRabbit to see the page, where you can filter learnings by Repository, File Path, and User. You can also edit or delete learnings that are no longer relevant to your project. +We're thrilled to announce the new **Learnings** page! Users can now interact with learnings captured in PR comments, enhancing future reviews. Log into CodeRabbit and navigate to the Learnings tab, where you can filter learnings by Repository, File Path, and User. You can also edit or delete learnings that are no longer relevant to your project. #### Reports (Beta) Page -Introducing the beta release of "Reports"! Generate recurring summaries of team performance and PR reviews with features like: +Introducing the beta release of **Reports**! + +Generate recurring summaries of team performance and latest PR reviews with features like: - Scheduling regular report generation - Specifying parameters such as repository, team, user, or label -- Selecting report types (Daily Stand-Up, Sprint Report, Release Notes, Custom) -- Enabling delivery channels like Email, Slack, and Discord +- Selecting report styles (Daily Stand-Up, Sprint Report, Release Notes, Custom) +- Enabling your choice of delivery channel (Email, Slack, or Discord) #### Sequence Diagrams Configuration -You can now choose whether to auto-generate sequence diagrams in PR Walkthroughs. Configure this via the CodeRabbit settings page or by setting reviews.sequence_diagrams in the .coderabbit.yaml file. +You can now choose whether to auto-generate sequence diagrams in the PR Walkthrough comment. Enable this via the CodeRabbit settings page or by setting reviews.sequence_diagrams in the .coderabbit.yaml file. #### Enhanced Tool Settings & New Analysis Tools We've refined the default settings to be less noisy and more actionable. Additionally, we've added new static analysis and security tools: -- Yamllint A linter for YAML files -- Gitleaks A lightweight, open-source secret scanner to prevent security breaches -- Checkov Scans infrastructure as code for misconfigurations before they become security issues +- **YAMLlint**: A linter for YAML files +- **Gitleaks**: A lightweight, open-source secret scanner to prevent security breaches +- **Checkov**: Scans infrastructure as code for misconfigurations before they become security issues #### GitLab Integration Update The GitLab integration now offers more flexibility and security. Users can use Personal Access Tokens (PATs) from within their organization to post reviews. This enhancement ensures reviews are posted with appropriate organizational context and permissions, improving traceability and security. +--- + ## May 28, 2024 ### New Features and Improvements #### Sequence Diagrams -CodeRabbit now generates sequence diagrams of code changes, enhancing reviewers' ability to understand the flow of control. +CodeRabbit now generates sequence diagrams for code changes, providing reviewers with a clear visualization of the control flow for improved understanding. #### Auto-Generate PR Titles -Users will now find a new option called auto_title_placeholder and will default to `@coderabbitai` title. This option allows users to put a placeholder title and have CodeRabbit auto-generate one for them when the review process kicks in. +A new option, `auto_title_placeholder`, is now available and defaults to `@coderabbitai` title. This feature allows users to set a placeholder title, enabling CodeRabbit to automatically generate an appropriate title when the review process begins. #### New Commands @@ -150,21 +510,29 @@ We have introduced new commands for interacting with CodeRabbit, detailed under We have been observing that many PRs get closed quickly and CodeRabbit continues to review them. PRs get closed quickly for various reasons - changes are too small, the author is confident (perhaps, overly?), or the changes were unnecessary. With this improvement, we now stop the review process midway if we detect that the PR has been closed. +--- + ## May 23, 2024 ### New Features and Improvements #### Review Settings -Users can now select between "Chill" and "Assertive" review tones to tailor feedback styles according to their preferences. The "Assertive" profile posts more comments and nitpicks the code more aggressively, while the "Chill" profile is more relaxed and posts fewer comments. +Users can now select between **Chill** and **Assertive** review tones to tailor feedback styles according to their preferences. The **Assertive** profile posts more comments and nitpicks the code more aggressively, while the **Chill** profile is more relaxed and posts fewer comments. #### More Static Analysis Support -We are continually expanding our support for static analysis tools. We have added support for biome, hadolint, and ast-grep. Update the settings in your .coderabbit.yaml file or head over to the settings page to enable or disable the tools you want to use. +We are continually expanding our support for static analysis tools. We've recently added support for + +- Biome +- Hadolint +- ast-grep. + +Update your .coderabbit.yaml file or visit the settings page to enable or disable the tools you wish to use. #### Tone Settings -Users can now customize CodeRabbit to review code in the style of their favorite characters or personalities. Here are some of our favorite examples: +Users can now personalize CodeRabbit to review code in the style of their favorite characters or personalities. Here are a few of our top examples: - Mr. T: "You must talk like Mr. T in all your code reviews. I pity the fool who doesn't!" - Pirate: "Arr, matey! Ye must talk like a pirate in all yer code reviews. Yarrr!" @@ -174,6 +542,8 @@ Users can now customize CodeRabbit to review code in the style of their favorite We have redesigned the settings page for a more intuitive layout, enabling users to find and adjust settings quickly. This change was long-time coming; it not only improves the user experience but also allows our development team to add more settings in the future with ease. Going forward, the changes to .coderabbit.yaml will be reflected in the settings page, and vice versa. +--- + ## April 18, 2024 ### Static Analyzers and Linters Integration @@ -182,17 +552,23 @@ CodeRabbit now runs static analyzers, linters and provides one-click fixes for t Are there any specific tools you'd like us to add? Let us know. We'd love to hear your suggestions! +--- + ## April 1, 2024 ### GDPR Compliance -Excited to announce that CodeRabbit is now GDPR compliant in accordance with EU regulations! +Excited to announce that CodeRabbit is now GDPR-compliant in accordance with EU regulations! + +--- ## March 12, 2024 ### GitHub Check Fixes -CodeRabbit now offers fixes for GitHub Check failures on pull requests. With this change, Check Runs on GitHub that add Annotations to Pull Requests will be used. For example, popular GitHub Actions published by reviewdog (action-golangci-lint, action-staticcheck, action-eslint) and super-linter among many others have the ability to report issues on Pull Requests as annotations. Checks that output logs will be supported shortly. CodeRabbit GitHub App requires permission to read Checks for this feature to work. To enable this, please grant the necessary permissions by visiting the CodeRabbit GitHub app settings under [installation](https://github.com/settings/installations). Support for GitLab will follow. +CodeRabbit now offers fixes for GitHub Check failures on pull requests. With this change, Check Runs on GitHub that add Annotations to Pull Requests will be used. For example, popular GitHub Actions published by reviewdog (action-golangci-lint, action-staticcheck, action-eslint) and super-linter among many others can report issues on Pull Requests as annotations. Checks that output logs will be supported shortly. The CodeRabbit GitHub App requires permission to read Checks for this feature to work. To enable this, please grant the necessary permissions by visiting the CodeRabbit GitHub app settings under [installation](https://github.com/settings/installations). Support for GitLab will follow. + +--- ## March 11, 2024 @@ -200,17 +576,23 @@ CodeRabbit now offers fixes for GitHub Check failures on pull requests. With thi CodeRabbit is now SOC 2 Type II compliant to ensure top-tier security, availability, integrity, and privacy for our users. +--- + ## March 2, 2024 ### Enhanced Markdown Review CodeRabbit now offers a more comprehensive review of the markdown changes. In addition to the AI suggestions, we do a thorough check for spelling, grammar, word choice, language style, as well as improvements in paraphrasing and punctuation. +--- + ## January 17, 2024 ### Self-hosted GitLab Integration -CodeRabbit now offers integration for self-hosted GitLab. Refer to the [setup instructions](https://docs.coderabbit.ai/integrations/self-hosted-gitlab). +CodeRabbit now supports integration with Self-Hosted GitLab instances. Check out our [setup instructions](https://docs.coderabbit.ai/integrations/self-hosted-gitlab) for detailed instructions. + +--- ## January 2, 2024 @@ -227,11 +609,15 @@ Here are some uses cases: Really excited to see how this feature gets used, especially with access to the CLI commands. There are some suggestions in the pull request tips but we are looking forward to seeing additional use cases of how developers use this feature. Please consider sharing your experiences. +--- + ## December 18, 2023 ### Request Changes Workflow -Enable Request Changes review workflow for CodeRabbit reviews via .coderabbit.yaml Yaml field request_changes_workflow (default: false). When enabled, review comments are posted as request changes and CodeRabbit review will be marked approved once all the review comments are resolved. +Enable Request Changes review workflow for CodeRabbit reviews via .coderabbit.yaml under the field `request_changes_workflow` (default: false). When enabled, review comments are posted as request changes and CodeRabbit review will be marked approved once all the review comments are resolved. + +--- ## December 5, 2023 @@ -239,7 +625,7 @@ Enable Request Changes review workflow for CodeRabbit reviews via .coderabbit.ya #### Learnings -CodeRabbit can now learn from your conversations to fine-tune your reviews. If you encounter inaccurate feedback or something not relevant to your codebase, just let the bot know, and it will remember the context for the future. We understand that coding practices and standards evolve over time. Using the chat, you can inform the bot, and it will remove any existing learnings that are no longer relevant. This feature does not work, if you have opted out of data storage. +CodeRabbit can now learn from your conversations to fine-tune your reviews. If you encounter inaccurate feedback or something not relevant to your codebase, just let the bot know, and it will remember the context for the future. We understand that coding practices and standards evolve. Using the chat, you can inform the bot, and it will remove any existing learnings that are no longer relevant. This feature does not work if you have opted out of data storage. #### Codebase Verification @@ -247,11 +633,13 @@ Verifies the reference of the changes on the overall codebase and identifies mis #### Jira and Linear Integrations -You can now integrate Jira and Linear into CodeRabbit. This would be used for additional context while reviewing pull requests. If you use any of these systems, we recommend you integrate CodeRabbit. We will be adding more integrations over time. +You can now integrate Jira and Linear with CodeRabbit to provide additional context when reviewing pull requests. If you use either of these systems, we highly recommend enabling this integration for a more seamless experience. Stay tunedโ€”more integrations are coming soon! #### Related Issues -Identifies all issues affected by the code changes. This helps understand the impact on the overall product. It also assists in identifying duplicate issues or the impact on any other existing issues. This feature does not work, if you have opted out of data. +Identifies all issues affected by the code changes. This helps understand the impact on the overall product. It also assists in identifying duplicate issues or the impact on any other existing issues. This feature is unavailable for users who have opted out of data collection. + +--- ## November 5, 2023 @@ -259,18 +647,24 @@ Identifies all issues affected by the code changes. This helps understand the im CodeRabbit review can now assess the pull request changes against the linked GitHub or GitLab issue. Integration with other workflow systems including Jira and Linear is under development. +--- + ## November 1, 2023 ### Committable Suggestions Review comments can now post committable suggestions that can be committed within the pull request with a single click. +--- + ## October 28, 2023 ### Resolve Command Use `@coderabbitai resolve` to mark all the CodeRabbit review comments as resolved all at once. +--- + ## October 23, 2023 ### CodeRabbit Commands @@ -282,12 +676,16 @@ Introducing additional CodeRabbit commands for managing code reviews: - On-Demand Reviews: Disable automatic reviews for your repository to switch to on-demand reviews. Use `@coderabbitai review` in a PR comment. This command will override all review filters that might be set up in the repository settings and will initiate a one-time review - Help Command: You can at any time post `@coderabbitai help` in a PR comment to get the list of all valid commands +--- + ## October 12, 2023 ### YML File Customization CodeRabbit customizations made easy! You can now customize CodeRabbit using a YML file from your repository. To learn more, refer to our comprehensive documentation on customizing CodeRabbit. +--- + ## September 21, 2023 ### Path-Based Review Instructions @@ -314,6 +712,10 @@ instructions: Review the following unit test code written using the Mocha test l > - Instructions generally work well for specific additional instructions. However, they are not that effective if you are instructing AI not to do something > - Test the review feedback on pull requests and tailor as necessary -## Sep 19, 2023 - Introducing CodeRabbit for GitLab Integration +--- + +## September 19, 2023 + +### Introducing CodeRabbit for GitLab Integration CodeRabbit is now available for GitLab! We know many of you have been waiting for this integration. Thank you for your patience. Sign up for the free trial! diff --git a/docs/faq.md b/docs/faq.md index 451562f4..6755fffa 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -10,6 +10,42 @@ import TabItem from '@theme/TabItem'; ## General Questions {#general-questions} +### How to trigger a CodeRabbit Review? + +Once installed, CodeRabbit automatically triggers a review when a pull request is opened against the main branch of any repository. We automatically detect the name of the primary branch (whether this be master, main, dev, etc). This branch restriction can be customized in your settings. + +You can also manually trigger a review at any time by commenting on a pull request with one of these commands (see [Commands](/guides/commands.md) for full list): + +- `@coderabbitai review` - Triggers a standard review +- `@coderabbitai full review` - Triggers a comprehensive review + +### How to run a review from my IDE? + +You can trigger CodeRabbit reviews directly from your IDE using our editor plugins: + +- [VSCode Extension](./guides/about-vscode.md) - For VSCode, Cursor or Windsurf users + +These plugins allow you to request reviews without leaving your development environment. See the individual plugin documentation for installation and usage instructions. + +### How to install CodeRabbit? + +View step by step instructions depending on your platform: + + + + See our [GitHub App installation guide](./platforms/github-com.md) for step-by-step instructions. + + + Follow our [GitLab integration guide](/platforms/gitlab-com.mdx) to get started. + + + Check out the [Bitbucket installation steps](/platforms/bitbucket-cloud.md) for detailed setup. + + + View our [Azure DevOps setup guide](/platforms/azure-devops.md) for complete installation instructions. + + + ### How accurate is CodeRabbit? > CodeRabbit demonstrates high accuracy in code reviews based on early adoption results. While 100% accuracy isn't guaranteed due to AI's evolving nature, our technology continuously improves through: @@ -27,14 +63,59 @@ CodeRabbit works with all programming languages, with varying proficiency based - Available training data - Community usage patterns +### Whats the difference between CodeRabbit Code Reviews and CodeRabbit Reports? + +CodeRabbit offers two distinct features that serve different roles in your development workflow: + +#### CodeRabbit Code Reviews + +**Role**: Developer, QA, and Code Reviewer +**Access Level**: Full code access with comprehensive analysis capabilities + +**Key Features:** + +- **Complete Toolchain**: Runs all available analysis tools on your codebase +- **Static Analysis**: Can execute shell commands and perform deep static analysis against your codebase +- **Direct Code Access**: Has full access to code in issues and pull requests +- **Interactive Chat**: Provides chat features for real-time collaboration and questions +- **Comprehensive Review**: Analyzes code quality, security, performance, and best practices +- **Actionable Feedback**: Provides specific, line-by-line suggestions and improvements +- **Comment Interaction**: Engages with users through comments in pull requests and issues for clarifications and discussions +- **Available in All Tiers**: All features are available across Free, Lite, and Pro plans + +#### CodeRabbit Reports + +**Role**: Project Manager and Communication Hub +**Access Level**: Summary-only access without direct code interaction + +**Key Features:** + +- **Summary Generation**: Creates convenient, formatted summaries of all your recent pull requests +- **Customizable Prompts**: Allows you to select or create your own summarization templates +- **High-Level Overview**: Focuses on project progress and changes without code details +- **Comment Analysis**: Reads and summarizes existing comments and discussions +- **No Code Access**: Operates only on summaries and metadata, not the actual codebase +- **Communication Tool**: Designed for stakeholders who need updates without technical details +- **Multi-Channel Delivery**: Sends reports through various communication channels: + - Email notifications + - Slack integration + - Discord webhooks + - Microsoft Teams updates +- **Pro Plan Exclusive**: Reports feature is available only in the Pro plan tier + +**In Summary:** + +- **Code Reviews** = Technical analysis with full code access for developers +- **Reports** = High-level summaries with no code access for project management + ### Data Security - - No persistent code storage - - Temporary cloning during review only - Complete data isolation - - Immediate disposal post-review + - Caching of encrypted code and dependency archives for faster reviews + - Code indexing in which we store vector representations of code for efficient code base context + - Both caching and code indexing can be disabled which means we store nothing post-review - Uses only public datasets @@ -83,8 +164,16 @@ Switch between organizations easily: ### Customization Options +#### How to Add or Update Your Billing Email + +To add or update your billing email, navigate to the Subscription page and +select Manage Subscription > **Billing Address**. Enter your email address in the +Email field and click Update to save your changes. + +### Usage and Configuration + - **Language Settings**: Configure review language in repository settings -- **Review Rules**: Customize via [Review Instructions](/guides/review-instructions) +- **Review Rules**: Customize via [review instructions](/guides/review-instructions.md) - **Branch Selection**: Default branch reviews enabled by default (configurable) ### Access & Permissions @@ -100,7 +189,7 @@ Interact with CodeRabbit by: 1. Replying directly to CodeRabbit comments 2. Tagging `@coderabbitai` in PR discussions 3. Adding review comments for specific lines -4. Customize via [Review Instructions](/guides/review-instructions) +4. Customize via [review instructions](/guides/review-instructions.md) :::tip Collaboration Mode When team members are active in PRs, use `@coderabbitai` to engage the bot. @@ -108,16 +197,22 @@ When team members are active in PRs, use `@coderabbitai` to engage the bot. ### Usage Limits -| Feature | Free/Trial | Pro Plan | -| -------------- | ----------------------------- | ------------- | -| Files per hour | 200 | 200 | -| Reviews | 3 back-to-back, then 3/hour | Higher limits | -| Conversations | 25 back-to-back, then 50/hour | Higher limits | - :::note + In-trial and open-source plans have lower rate limits than the paid plan. In all cases, we re-allow further reviews/conversations after a brief timeout. + ::: +The following limits enforced _per developer_: + +| Feature | Free Plan | Trial Plan | OSS Plan | Pro/Lite Plan | +| -------------------------------- | ------------------------------------------ | --------------------------------- | ----------------------------- | ----------------------------- | +| Files per hour | 200/hour | 200/hour | 200/hour | 400/hour | +| Files per PR | 100 | 100 | 100 | 200 | +| Reviews per hour | 3 back-to-back, then 2/hour (Summary only) | 4 back-to-back, then 3/hour | 3 back-to-back, then 2/hour | 5 back-to-back, then 4/hour | +| Reviews per hour (IDE Extension) | 1/hour | 5/hour (Pro trial), 1/hour(Other) | 1/hour | 5/hour (Pro), 1/hour(Lite) | +| Chat | N/A | 25 back-to-back, then 50/hour | 10 back-to-back, then 25/hour | 25 back-to-back, then 50/hour | + ## Integration Guide {#integration-guide} ### Prerequisites @@ -133,11 +228,51 @@ In-trial and open-source plans have lower rate limits than the paid plan. In all 3. That's it. CodeRabbit will automatically start reviewing your PRs :::tip Need Help? -Visit our [Support](/getting-started/support) page for additional assistance or reach out to our team on [Discord](http://discord.gg/coderabbit). +Visit our [Support](/getting-started/support.md) page for additional assistance or reach out to our team on [Discord](http://discord.gg/coderabbit). ::: +#### Unable to View Repositories in GitLab + +If you cannot view repositories in the CodeRabbit UI, please ensure that you +are added as a Developer in the primary group for GitLab Cloud or in the first +level group for Self-Hosted GitLab. + +#### Unable to Enable Repositories in GitLab + +If you're having trouble enabling the GitLab Repositories toggle, confirm that +you have Maintainer access in the primary group for GitLab Cloud or in the first +level group for Self-Hosted GitLab. + ## Account Management {#account-management} +### How to troubleshoot CodeRabbit not functioning on certain repositories? + +If CodeRabbit is not functioning on certain repositories, it is likely due to the repository not being accessible to CodeRabbit and you must reinstall the GitHub App or GitLab Integration. + +To troubleshoot this issue, please attempt to reinstall the GitHub App or GitLab Integration by following the steps below: + + + + 1. Confirm that the author of a pull request has an active seat in CodeRabbit. If not please provide a seat to the user under [Subscription](https://coderabbit.ai/settings/subscription) page to enable CodeRabbit for the user. Then have the user close/reopen a new pull request for the change to see coderabbit active on the new user. ![Seat Assignment](/img/faq/seat-assignment.png) + 3. Please insure if not selecting all repositories, that you have added all repositories that you would like to enable to the selected list in the app configuration. + 4. If the repository is not in the list, you do not have to uninstall and reinstall the CodeRabbit App. Please add it to the list. ![Select Repos](/img/faq/select-repos.png) + + + + 1. Go to Repository settings + 2. Click **GitHub Apps** in the left sidebar under **Integrations** + 3. Select **Configure** ![Select Repos](/img/faq/github-app-settings.png) + 4. Click **Uninstall** at the bottom of the app configuration page. ![Uninstall](/img/faq/coderabbit-github-menu.png) + 5. Go into the [Coderabbit App](https://github.com/apps/coderabbitai) and install it again with the **Add Repository** button. ![Add Repository](/img/faq/add-repository.png) + + + + 1. Remove OAuth App from User Settings > Applications + 2. Remove Webhook from Group > Project Settings > Webhooks + 3. Go into the [Coderabbit App](https://gitlab.com/apps/coderabbitai) and install it again. ![Install](/img/faq/gitlab-webhook.png) + + + ### How do I delete my CodeRabbit account? :::danger Irreversible Account Deletion @@ -201,6 +336,11 @@ A confirmation modal will appear explaining the consequences of account deletion 2. Delete CodeRabbit webhooks 3. Remove CodeRabbit user or delete associated Personal Access Token + + 1. Go to Project Settings > Webhooks + 2. Delete CodeRabbit webhooks + 3. Remove CodeRabbit user or delete associated App Passwords + :::warning Post-Deletion Steps diff --git a/docs/finishing-touches/docstrings.md b/docs/finishing-touches/docstrings.md index 1332df86..c504fa8a 100644 --- a/docs/finishing-touches/docstrings.md +++ b/docs/finishing-touches/docstrings.md @@ -1,6 +1,5 @@ --- -title: Docstrings generation with CodeRabbit -sidebar_label: Docstrings (Beta) +title: Generate docstrings description: Automated docstrings pull requests with CodeRabbit --- @@ -12,17 +11,11 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; # Docstrings -Docstrings generation is part of the [finishing touches](/future-developments#finishing-touches) initiative. - -:::info - -This feature is in [beta](/early-access#beta). - -::: +Docstrings generation is part of the [finishing touches](/future-development#finishing-touches). ## Usage -Once you are done with your pull request and its reviews, you may want to perform finishing touches to your code, such as adding in-code documentation. You can request CodeRabbit to generate docstrings by typing `@coderabbitai generate docstrings` in a comment under that pull request. +Once you are done with your pull request and its reviews, you may want to perform finishing touches to your code, such as adding in-code documentation. You can request CodeRabbit to generate docstrings by typing `@coderabbitai generate docstrings` in a comment under that pull request or by clicking the **Generate Docstrings** checkbox under **Finishing Touches** in the CodeRabbit Walkthrough. Once sent, CodeRabbit will perform the following actions: @@ -37,45 +30,52 @@ Here's an example of what a pull request may look like: CodeRabbit cannot perform further modifications to opened pull requests. From there, it's your turn to checkout the branch and improve it to satisfaction. We believe that this workflow provides a significant headstart to documenting code. -We are testing this workflow internally to adjust the prompts, add more supported software forges, add more supported languages and craft an excellent user experience. However, you can use this preview and enjoy a sneak peek at the future of CodeRabbit. Additionally, you can provide feedback about this feature on [Discord](https://discord.com/channels/1134356397673414807/1317286905557287022). +This feature has been rigorously tested and is now available for all Pro plan users. Additionally, you can provide feedback about this feature on [Discord](https://discord.com/channels/1134356397673414807/1317286905557287022). + +## Path Instructions + +You can customize the generated docstrings by providing instructions based on file paths in your `.coderabbit.yaml`. The `path` is a [minimatch](https://github.com/isaacs/minimatch) pattern. + +```yaml +code_generation: + docstrings: + path_instructions: + - path: "**/*.ts" + instructions: | + End all docstrings with a notice that says "Auto-generated by CodeRabbit.". + Do not omit the closing tags; the docstring must be valid. +``` ## Supported software forges -The checked software forges are supported: +These software forges are supported: -- [ ] Azure DevOps -- [ ] Bitbucket -- [x] GitHub -- [ ] GitLab +- Azure DevOps +- GitHub +- GitLab -The presence of an unsupported software forge in this list does not constitute a commitment to support it in the future. Remember that the docstrings feature is in [beta](/early-access#beta). +While Bitbucket is not officially supported, docstrings can still be generated. However, they will be posted in a comment under the pull request. Full support for Bitbucket is planned. ## Supported languages -The checked languages are supported: - -- [ ] Bash -- [ ] C -- [x] C++ -- [ ] C# -- [x] Elixir -- [x] Go -- [ ] Haskell -- [x] Java -- [x] JavaScript -- [ ] Kotlin -- [ ] Lua -- [ ] Php -- [x] Python -- [ ] React TypeScript -- [x] Ruby -- [ ] Rust -- [ ] Scala -- [ ] Swift -- [x] TypeScript - -The presence of an unsupported language in this list does not constitute a commitment to support it in the future. Remember that the docstrings feature is in [beta](/early-access#beta). - -:::note -In the case of JavaScript and TypeScript, there are tons of ways to declare functions. At the moment, we only support the keyword `function` at the top level. -::: +These languages are supported: + +- Bash +- C +- C# +- C++ +- Elixir +- Go +- Java +- JavaScript +- Kotlin +- Lua +- Php +- Python +- React TypeScript +- Ruby +- Rust +- Swift +- TypeScript + +CodeRabbit uses `ast-grep` to parse the code. If you want a new language to be supported, please look into [Add New Language to ast-grep](https://ast-grep.github.io/contributing/add-lang.html#add-new-language-to-ast-grep) first. diff --git a/docs/finishing-touches/unit-test-generation.md b/docs/finishing-touches/unit-test-generation.md new file mode 100644 index 00000000..57c5e211 --- /dev/null +++ b/docs/finishing-touches/unit-test-generation.md @@ -0,0 +1,57 @@ +--- +title: Generate unit tests +description: Automated Unit Test Generation with CodeRabbit +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +:::warning +This feature is [experimental](/early-access#experiments). +::: + +# Unit Test Generation + +Unit Test Generation is part of the [finishing touches](/future-development#finishing-touches). + +Unit Test Generation is an Early Access Experimental feature. + +## Usage + +Once you are done with your pull request and its reviews, you may want to perform finishing touches to your code, such as adding unit tests. You can request CodeRabbit to generate unit tests by typing `@coderabbitai auto-generate unit tests` in a comment under that pull request or by clicking a checkbox under **Generate Unit Tests** in the CodeRabbit Walkthrough. + +Once sent, CodeRabbit will perform the following actions: + +- The CodeRabbit agent will examine your code for places where it needs tests +- Unit tests will be generated for the PR, in a separate PR, in the same PR in a new commit, or in a comment to copy-paste, depending on your choice +- If (and only if) you choose to generate the unit tests in a separate PR, CodeRabbit will examine your GitHub checks (build steps and tests and such) and adjust the PR to deal with build failures, test failures and similar. + +## Path Instructions + +You can customize the generated unit tests by providing instructions based on file paths in your `.coderabbit.yaml`. The `path` is a [minimatch](https://github.com/isaacs/minimatch) pattern. + +```yaml +code_generation: + unit_tests: + path_instructions: + - path: "**/*.ts" + instructions: | + Use vitest for testing framework. + Generate comprehensive test cases including edge cases and error conditions. + Do not omit the imports; the test file must be valid. +``` + +## Supported software forges + +These software forges are supported: + +- GitHub + +## Supported CI/CD systems + +These CI/CD systems are supported for post-generation adjustments: + +- GitHub actions diff --git a/docs/future-developments.md b/docs/future-development.md similarity index 86% rename from docs/future-developments.md rename to docs/future-development.md index a044ee61..e3c7c4d6 100644 --- a/docs/future-developments.md +++ b/docs/future-development.md @@ -5,13 +5,13 @@ description: Learn how CodeRabbit works in a pull request review. sidebar_position: 12 --- -# Future Developments +# Future Development We are actively iterating and refining CodeRabbit, and this is a sneak peek into the upcoming milestones and releases. We are focused on making the Applied AI review better than the median manual review. In addition to that, we are looking at a holistic user experience with various integrations and types of reviews. ## Applied AI Improvements -We are actively trying to make the application of Generative AI more useful , relevant , meaningful for the coder and reviewer journey. Our immediate focus is +We are actively trying to make the application of Generative AI more useful, relevant, meaningful for the coder and reviewer journey. Our immediate focus is ### Accuracy and Conciseness Enhancements @@ -34,10 +34,10 @@ We are integrating various tool chains to enable coders and reviewers to have a ### Communication Tool Integrations -Communication and the user experience of review via various communication tools are going to be key. We will start with integrations to Slack and Microsoft Teams and will be diving into the design engineering of these flows further: +Communication and the user experience of review via various communication tools will be key. We will start with integrations to Slack and Microsoft Teams and will be diving into the design engineering of these flows further: - **Slack**: Real-time notifications and interactive discussions -- **Microsoft Teams**: Code review conversations within Microsoft ecosystem +- **Microsoft Teams**: Code review conversations within the Microsoft ecosystem ### Enhanced Review Capabilities diff --git a/docs/getting-started/adding-organizations.md b/docs/getting-started/adding-organizations.md new file mode 100644 index 00000000..66741daa --- /dev/null +++ b/docs/getting-started/adding-organizations.md @@ -0,0 +1,27 @@ +--- +title: Add organizations +description: Learn how to add new organizations to CodeRabbit +--- + +To add new organizations to CodeRabbit, follow these steps: + +1. Navigate to [coderabbit.ai](https://coderabbit.ai) +2. Click the "Refresh" button next to your organizations list to check for new organizations +3. Find the organization you want to add in the list +4. Click the "Grant" button next to the organization name + +![Checking for new organizations](../../static/img/getting-started/check-for-new-orgs.png) + +![Granting permission to organization](../../static/img/getting-started/grant-permission.png) + +This will grant CodeRabbit access to the selected organization, allowing it to: + +- Read organization and team membership +- Read organization projects +- Access user email addresses (read-only) + +> Note: Organizations control which applications are allowed to access their private data. You may need organization admin approval to complete this process. + +## What's next {#whats-next} + +- [Manage your subscription](/getting-started/subscription-management) diff --git a/docs/getting-started/configure-coderabbit.md b/docs/getting-started/configure-coderabbit.md index d0227e8b..2e2a14f4 100644 --- a/docs/getting-started/configure-coderabbit.md +++ b/docs/getting-started/configure-coderabbit.md @@ -1,11 +1,9 @@ --- -title: Configure CodeRabbit -sidebar_label: Configure +title: Add a configuration file description: CodeRabbit offers various configuration options to tailor the reviews to your specific requirements. Configuration can be made using one of the below options. -sidebar_position: 2 --- ```mdx-code-block @@ -21,7 +19,7 @@ of precedence: 2. Configure using CodeRabbit UI for each repository 3. Configure using CodeRabbit UI for the organization -In this guide, we will cover the configuration using a YAML file. For reference, you can find curated examples of YAML configurations in our [awesome-coderabbit](https://github.com/coderabbitai/awesome-coderabbit) repository. +In this guide, we will cover the configuration using a YAML file. For reference, you can find curated examples of YAML configurations in our [`awesome-coderabbit`](https://github.com/coderabbitai/awesome-coderabbit) repository. ## Configure CodeRabbit using a YAML File @@ -36,8 +34,7 @@ configuration in a YAML format. You can then copy the configuration to a ::: You can add a `.coderabbit.yaml` configuration file to the root of your -repositories. Below is a sample YAML file that can be used as a starting point -and changed as needed: +repositories. For a complete sample `.coderabbit.yaml` file which you can add to your repository and update as needed, see [Configuration file template](/reference/yaml-template). Write your configuration file in the below editor to validate: @@ -63,3 +60,20 @@ Refer: Please note that code reviews commence with new pull requests or incremental commits to existing pull requests once the CodeRabbit app is installed. Should you have any questions or require assistance, our support team is here to help. + +## Shared configuration + +If you are self-hosting CodeRabbit in an air-gapped environment, you can use the +shared configuration feature to share the configuration across multiple repositories. + +To use shared configuration, you need to: + +1. Create a `.coderabbit.yaml` file and host it in a location that is accessible + to from the CodeRabbit instance. +2. Create a `.coderabbit.yaml` file in the root of your repository with the + following content: + +```yaml +remote_config: + url: "https://your-config-location/.coderabbit.yaml" +``` diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 280732f0..c6f1d3b8 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -1,55 +1,138 @@ --- -title: Playing with CodeRabbit +title: Quickstart sidebar_label: Quickstart -description: Get started with CodeRabbit in less than 2 minutes +description: See CodeRabbit in action, using a live GitHub repository. sidebar_position: 1 --- -# Quickstart Guide +# Quickstart + +This tutorial gives you a hands-on demonstration of CodeRabbit, using a real, GitHub-based repository. It guides you through the following tasks: + +1. Integrate CodeRabbit into a GitHub-based repository that you own. +1. Observe CodeRabbit perform a code review of a pull request that you initiate. +1. Converse with CodeRabbit about the code review. +1. Prompt CodeRabbit to generate its own improvements to the pull request. + +When you complete this tutorial, you'll have seen CodeRabbit's code-review feature in action, and glimpsed a few of its other AI-driven abilities as well. + +For a more general overview of CodeRabbit, see [Introduction](/). :::note -Get started with CodeRabbit in three simple steps. No complex configuration needed. +While this tutorial focuses on GitHub, CodeRabbit also works with GitLab, Azure DevOps, and Bitbucket. For more information, see [Integrate with Git platforms](/platforms/). ::: -## Steps to Enable CodeRabbit +## Before you begin -### Sign In with GitHub +Create a new, private repository on GitHub. Name the new repository `coderabbit-test`, and let it have otherwise default GitHub settings. -- Visit [coderabbit.ai](https://coderabbit.ai) -- Click "Sign in with GitHub" -- Authorize CodeRabbit +## Integrate CodeRabbit with your GitHub account -![CodeRabbit Login](/img/integrations/login-self-hosted-github.png) +To integrate CodeRabbit with your GitHub account, follow these steps: -### Add Your Repository +1. Visit [the CodeRabbit login page](https://app.coderabbit.ai/login?free-trial). +1. Click **Login with GitHub**. +1. Click **Authorize coderabbitai**. -- Go to your [Dashboard](https://app.coderabbit.ai/dashboard) -- Click "Add Repositories" -- Select the repositories you want to enable +CodeRabbit takes a moment to set up the integration. After it finishes, the CodeRabbit dashboard appears. -![CodeRabbit Dashboard](/img/getting-started/dashboard-coderabbit.png) +## Add CodeRabbit to your repository -### You're Done ๐ŸŽ‰ +To add CodeRabbit to your test repository, follow these steps: -- CodeRabbit will automatically start reviewing your Pull Requests -- Default configuration works out of the box -- No additional setup needed +1. On the CodeRabbit dashboard, click **Add Repositories**. A GitHub repository-access dialog appears. +1. Select the **Only select repositories** radio button. +1. From the **Select repositories** menu, select the `coderabbit-test` repository that you created earlier in this Quickstart. +1. Click **Install & Authorize**. + :::note + CodeRabbit requests read and write access to your repository in order for its code review, issue management, and pull request generation features to work. CodeRabbit never stores your code. For more information, see [the CodeRabbit Trust Center](https://trust.coderabbit.ai). + ::: +1. If a CodeRabbit **Complete your signup** dialog appears, then fill it out with the requested information before continuing. -## What's Next? +CodeRabbit is now ready to use with your test repository. The next steps demonstrate its core code-review features. -- Watch CodeRabbit -- Here's an example of CodeRabbit in action: - ![CodeRabbit PR Review Example](/img/getting-started/pr-examples.png) -- [View live example PR](https://github.com/tyaga001/devtoolsacademy/pull/39) -- [Configure CodeRabbit](/getting-started/configure-coderabbit) (optional) -- [Add custom review instructions](/guides/review-instructions) (optional) +## Let CodeRabbit perform a code review -## Need Help? +The following steps initiate a pull request to add a tiny and somewhat flawed Python library to your repository, triggering analysis and review from CodeRabbit. -- Join our [Discord community](https://discord.gg/coderabbit) for support -- Check out our [FAQ](/faq) -- Contact [support@coderabbit.ai](mailto:support@coderabbit.ai) +Use your usual Git workflow to perform the following steps in the `coderabbit-test` repository: -:::tip -CodeRabbit starts working immediately. You can customize its behavior later when needed. -::: +1. Create a branch named `add-utils`. + +1. In that new `add-utils` branch, create a new file called `simple_utils.py`, with the following content: + + ```python + # simple_utils.py - A tiny utility library + + def reverse_string(text): + """Reverses the characters in a string.""" + return text[::-1] + + def count_words(sentence): + return len(sentence.split()) + + def celsius_to_fahrenheit(celsius): + return (celsius * 9/5) + 32 + ``` + +1. Commit the added file to the `add-utils` branch. Use any text you want for the commit message. + +1. Create a pull request that proposes to merge the `add-utils` branch into the `main` branch. Use any text you want for the pull request message. + +After a few moments, CodeRabbit responds to the pull request using the `@coderabbitai` GitHub account. It performs the following actions, all of which are visible on the pull request's page on GitHub: + +- If you didn't write a pull request summary, then CodeRabbit adds a new summary to the pull request. +- CodeRabbit posts a comment titled **Walkthrough** containing analysis and commentary about the content of the pull request. +- CodeRabbit attaches a detailed code review to the pull request as another comment. + +Part of the review resembles the following screenshot: + +![An example code review comment](/img/getting-started/quickstart-comment.png) + +This shows that CodeRabbit has noticed some flaws with this Python library, including a lack of docstrings and input validation. The review comment identifies these flaws, and suggests how you might improve them. + +## Ask CodeRabbit for more information + +After CodeRabbit reviews a pull request, you can converse with it about its review. You can also give CodeRabbit special commands to request it to perform specific functions, such as generating appropriate code changes for you. + +1. Post the following as a new GitHub comment attached to the pull request: + + ```text + @coderabbitai Why do all of these functions need docstrings? Isn't it obvious enough what they do? + ``` + + After a few moments, CodeRabbit posts its reply, explaining its motivations for its recommendation. The reply might resemble the following: + + > You're right that these functions are quite self-explanatory from their names alone. Docstrings aren't strictly necessary for every function, especially in smaller projects with clear function names. + > + > While docstrings do provide benefits (IDE tooltips, documentation generation, help for future developers), they can sometimes feel redundant for very straightforward functions. It's ultimately a matter of coding style and project requirements. + > + > If you prefer to skip docstrings for obvious utility functions in this project, that's perfectly reasonable. Would you like me to adjust my review approach regarding documentation for this repository? + + In this case, CodeRabbit is offering to adjust its future behavior when reviewing changes to this repository. Instead, follow the next step to ask CodeRabbit to implement part of its suggestions. + +1. Post the following as another new comment: + + ```text + @coderabbitai generate docstrings + ``` + + After a few moments, CodeRabbit does the following: + + - CodeRabbit creates a new branch, based on `add-utils`. + - CodeRabbit commits changes to the branch that adds suggested docstrings to `add-utils`. + - CodeRabbit opens a new pull request between the new branch and `add-utils`. + +## Clean up + +Continue experimenting with CodeRabbit in your test repository for as long as you like. When you're finished, you can delete the repository. + +You are now ready to add CodeRabbit to other repositories that you own, and let it review some real pull requests. + +## What's next + +- [Integrate CodeRabbit](/platforms/) with your repositories on GitHub, GitLab, Azure DevOps, or Bitbucket. +- [Configure CodeRabbit](/getting-started/configure-coderabbit) beyond its default settings. +- [Add custom review instructions](/guides/review-instructions). +- [Get support for CodeRabbit](/getting-started/support). +- [Learn more about how CodeRabbit works](/overview/why-coderabbit). diff --git a/docs/getting-started/subscription-management.md b/docs/getting-started/subscription-management.md new file mode 100644 index 00000000..6eabd3ee --- /dev/null +++ b/docs/getting-started/subscription-management.md @@ -0,0 +1,63 @@ +--- +title: Manage your subscription +description: Learn how to manage your CodeRabbit subscription, including billing, plan changes, and seat management +--- + +This guide covers how to manage your subscription, including accessing billing information, changing plans, and adjusting your seat count. + +## Accessing Billing Information + +### Invoices and Payment History + +You can access your billing history and download invoices by: + +1. Going to [**Subscription**](https://app.coderabbit.ai/settings/subscription) on the sidebar > **Manage Subscription** +2. Once in the customer portal select **Billing History** +3. Click to download an invoice from any specific month of billing + +![Subscription page navigation](../../static/img/getting-started/subscription-page.png) + +![Billing history view](../../static/img/getting-started/billing-history.png) + +![Downloading an invoice](../../static/img/getting-started/download-invoice.png) + +## Managing Your Subscription Plan + +### Changing Plans + +To upgrade or change your subscription plan: + +1. Going to [**Subscription**](https://app.coderabbit.ai/settings/subscription) on the sidebar > **Manage Subscription** +2. Once in the customer portal click the box with your plan highlighted at the top of the page +3. Click **Update number of seats or change your plan** +4. Click **Change** on the section at the top mentioning your current plan +5. Select the new plan you'd like to change to +6. Click **Update** + +![Changing your plan](../../static/img/getting-started/manage-subscription.png) + +![Changing your plan](../../static/img/getting-started/edit-subscription.png) + +![Changing your plan](../../static/img/getting-started/change-seats.png) + +![Changing your plan](../../static/img/getting-started/change-plan.png) + +### Adjusting Seat Count + +To modify the number of seats in your subscription: + +1. Going to [**Subscription**](https://app.coderabbit.ai/settings/subscription) on the sidebar > **Manage Subscription** +2. Once in the customer portal click the box with your plan highlighted at the top of the page +3. Click **Update number of seats or change your plan** +4. Enter the new number of seats needed +5. Click **Update Subscription** + +![Changing your plan](../../static/img/getting-started/manage-subscription.png) + +![Changing your plan](../../static/img/getting-started/edit-subscription.png) + +![Changing your plan](../../static/img/getting-started/change-seats.png) + +## What's next {#whats-next} + +- [Control administrative access](/guides/roles) diff --git a/docs/getting-started/support.md b/docs/getting-started/support.md index 2014965c..5aeb9589 100644 --- a/docs/getting-started/support.md +++ b/docs/getting-started/support.md @@ -1,8 +1,6 @@ --- -title: Support -sidebar_label: Support +title: Get support description: Get help with CodeRabbit and find answers to common questions. -sidebar_position: 3 --- Welcome to CodeRabbit Support. Please refer to the following sections for @@ -16,7 +14,7 @@ All CodeRabbit users have access to the [CodeRabbit Discord Server](http://disco ## Support Tickets :::tip -For assistance from our support team, click the help icon located in the bottom right corner of the [CodeRabbit UI](https://app.coderabbit.ai/login). This will open a chat window where you can submit your support ticket. +For assistance from our support team, click the help icon located in the bottom right corner of the [CodeRabbit UI](https://app.coderabbit.ai/login?free-trial). This will open a chat window where you can submit your support ticket. ::: Complete the support ticket by providing your name, email, a description of your issue, and attaching any necessary files. If you are reporting a bug, please provide the GitHub or GitLab organization name. diff --git a/docs/getting-started/upgrading-permissions.md b/docs/getting-started/upgrading-permissions.md new file mode 100644 index 00000000..c5553abe --- /dev/null +++ b/docs/getting-started/upgrading-permissions.md @@ -0,0 +1,29 @@ +--- +title: Set permissions +description: Learn how to upgrade CodeRabbit's GitHub App permissions when new features are added +--- + +Sometimes when we add new features to CodeRabbit, we need to request additional GitHub permissions. If you see a warning about permissions or resources not being accessible, you'll need to approve the new permissions. Here's how to do it: + +1. Navigate to your organization or repository settings in GitHub +2. Go to the "GitHub Apps" or "Installed GitHub Apps" section +3. Find CodeRabbit in the list of installed apps +4. Click "Configure" +5. Review and accept the new permissions + +![Permission warning example](../../static/img/getting-started/permission-warning.png) + +![Granting updated permissions](../../static/img/getting-started/grant-permission.png) + +![Updated permissions](../../static/img/getting-started/updated-permissions.png) + +Common reasons for permission updates include: + +- Access to new GitHub features +- Enhanced repository scanning capabilities +- Additional workflow automation features +- Improved security features + +> Note: If you're not an organization admin, you may need to request approval from your organization administrators to update the permissions. + +After accepting the new permissions, CodeRabbit will have the access it needs to function properly. If you continue to experience issues, try refreshing your browser or reaching out to our support team. diff --git a/docs/guides/about-vscode.md b/docs/guides/about-vscode.md new file mode 100644 index 00000000..3e484ffe --- /dev/null +++ b/docs/guides/about-vscode.md @@ -0,0 +1,37 @@ +--- +title: Review local changes +description: How to review your code with the VSCode extension. +slug: /code-editors +sidebar_label: Overview +--- + +This page is about the CodeRabbit VSCode extension. For a broader overview of CodeRabbit, see [Introduction](/). + +## About the VSCode extension + +The CodeRabbit VSCode extension lets you apply a limited subset of CodeRabbitโ€™s code-review features to your local development environment, directly from the VSCode IDE. It also works with other text editors that are able to install and use VSCode extensions, such as Cursor and Windsurf. + +You can use the extension on its own, or you can use it to complement your local development on a repository whose remote has CodeRabbit installed. + +The extension is intended to let you use the power of CodeRabbit to rapidly tune and tidy your code changes locally, before you publish your changes to your team's remote repository and start a more thorough code review. + +## Features + +The extension includes the following features: + +- Automatic code reviews on every local Git commit. +- Manually requested reviews of local code changes. +- One-click application of simpler suggested code fixes. +- Integration with AI coding agents, including Copilot and Claude Code, to help you resolve more complex suggestions. +- Full compatibility with text editors derived from VSCode, including Cursor and Windsurf. + +## Price and limitations + +This extension is free to install and use, and works with any tier of CodeRabbit account. Rate limits apply to the number of local reviews that you can request per hour. + +The extension makes only basic CodeRabbit review features available, with default settings applied. Advanced CodeRabbit features, such as interactive chat and project learnings, aren't available through the VSCode extension. These features are available only by [integrating CodeRabbit on your remote repository](/platforms), and then allowing CodeRabbit to review pull requests. + +## What's next + +- [Install the VSCode extension](/guides/install-vscode) +- [Use the VSCode extension](/guides/use-vscode) diff --git a/docs/guides/agent_chat.md b/docs/guides/agent_chat.md new file mode 100644 index 00000000..4073951a --- /dev/null +++ b/docs/guides/agent_chat.md @@ -0,0 +1,72 @@ +--- +title: Discuss code reviews with CodeRabbit +description: Learn about CodeRabbit Pro's chat and agentic chat system +--- + +# CodeRabbit Chat + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +CodeRabbit Chat is a powerful pull-request-specific assistant designed to streamline your development workflow. You can interact directly in pull request review comments and pull request comments to ask questions, have CodeRabbit rewrite code, or generate new code. + +## Invocation + +To invoke CodeRabbit Chat, simply comment on a pull request using the handle `@coderabbitai` without any explicit command (so without the [explicit CodeRabbit commands](./commands.md)) in plain natural language. + +The permission flow for the chat is the same as the deterministic CodeRabbit commands. + +Upon being invoked, CodeRabbit processes your request and responds with the necessary assistance. This assistance may entail generating scripts, updating issue tracking systems, offering detailed code suggestions, or even submitting an entire pull request (with your consent). + +## Features + +### Script Writing + +CodeRabbit Chat can automatically generate scripts in various programming languages (mainly shell scripting) to answer questions about your codebase. If incorrect or non-running or non-germane shell scripts are created, CodeRabbit goes and tries again, and the whole script iteration process will be displayed to you in an Analysis Flow. + +All scripts are run in a secure sandboxed execution environment. + +### Web Search + +CodeRabbit Chat integrates real-time web search capabilities, enabling it to fetch up-to-date information to support its responses. The CodeRabbit Chat response will indicate this if it decides to search the web to answer your query. + +Set `enabled` to false within `web_search` within `knowledge_base` within the config in order to turn this off. + +### Code Graph Analysis Integration + +CodeRabbit Chat is capable of analyzing definitions of code symbols from the symbol graph it generates from your codebase. CodeRabbit can use these code definitions to enhance context when providing a chat response and review comments. CodeRabbit Chat will indicate in its response if it has found relevant symbols and snippets surrounding those symbols in your codebase. + +Set the environment variable `ENABLE_CODE_GRAPH` to false in self-hosted CodeRabbit instances to turn this feature off in self-hosted instances. + +### Jira and Linear Integration + +CodeRabbit Chat can deal with existing issue tracking system integrations in order to integrate with your existing issues. For details on setting up issue tracking integrations, see our [Issue Integrations](../integrations/issue-integrations.md) guide and [Issue Creation](./issue-creation.md) guide. + +### Learnings Integration + +CodeRabbit Chat can insert and delete Learnings from your Learnings database. Simply ask it to do so in plain natural language. + +### Single Step Code Generation + +For rapid prototyping and quick fixes, CodeRabbit Chat is capable of generating code snippets in a single step. + +### Configuration Changes + +CodeRabbit is also capable of managing its own configuration settings upon request. This self-management allows the assistant to dynamically adapt to changing project requirements. By simplifying configuration updates, CodeRabbit helps users quickly adjust to new workflows or requirements without interrupting the development process. + +## Agentic Chat (Chat with Planning) + +When facing complex coding challenges, CodeRabbit Agentic Chat supports multi-step agentic flows that involve detailed planning and execution. Once the multi-step workflow is complete, CodeRabbit can automatically issue a pull request for the changes so you can consent to the code changes or edit them. CodeRabbit can also place changes in the existing pull request branch or create copyable snippets. + +Agent chat can be invoked explicitly with the `@coderabbitai plan` command. + +CodeRabbit cannot perform further modifications to opened pull requests. From there, it's your turn to checkout the branch and improve it to satisfaction. We believe that this workflow provides a significant headstart to implementing code. + +Agentic Chat is currently only available on Github issue, pull request and pull request review comments. + +### Help and Feedback + +Need help? Join our community on [Discord](https://discord.gg/coderabbit) or contact our support team. diff --git a/docs/guides/code-review-best-practices.md b/docs/guides/code-review-best-practices.md new file mode 100644 index 00000000..426617e8 --- /dev/null +++ b/docs/guides/code-review-best-practices.md @@ -0,0 +1,42 @@ +--- +title: Code review best practices +description: Best practices for managing CodeRabbit code reviews. +sidebar_label: Code reviews +--- + +This page lists best practices for performing code reviews with CodeRabbit. + +For more information about working with +CodeRabbit through chat, see [Control and manage code reviews](/guides/commands). + +For a CodeRabbit command reference, see [Code review command reference](/reference/review-commands). + +## Recommended code-review workflow + +- Start with `@coderabbitai review` for checking new changes. +- Use `@coderabbitai full review` when major changes require a fresh perspective. +- Generate summaries after significant updates using `@coderabbitai summary`. + +## Managing large changes + +- Use `@coderabbitai pause` before making multiple commits. +- Resume reviews with `@coderabbitai resume` when ready. +- Consider `@coderabbitai full review` after substantial changes. + +## Documentation flow + +- Run `@coderabbitai generate docstrings` after finalizing function implementations. +- Learn more about [docstring generation](/finishing-touches/docstrings). + +## Overall tips + +- Commands are case-insensitive (`@coderabbitai REVIEW` works the same as `@coderabbitai review`). +- Commands can be issued by anyone with write access to the repository. +- Multiple commands can be used in sequence as needed. +- Use `@coderabbitai configuration` to export your settings before making changes. + +## Command response time + +- Most commands (pause, resume, ignore) take effect immediately. +- Review commands typically complete within a few minutes, depending on PR size. +- Docstring generation time varies based on the number of functions. diff --git a/docs/guides/code-review-overview.md b/docs/guides/code-review-overview.md new file mode 100644 index 00000000..6c571670 --- /dev/null +++ b/docs/guides/code-review-overview.md @@ -0,0 +1,100 @@ +--- +title: Review pull requests +description: An overview of CodeRabbit's core code review features. +sidebar_label: Overview +--- + +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx' + +The central feature of CodeRabbit is its ability to proactively review +new pull requests on your code repository. + +CodeRabbit reviews take the form of pull request comments that +include summaries, analyses, and initial critiques of the proposed changes. +This information, usually added to pull requests within minutes, can help your team perform more rapid, better-informed code reviews. + +The following sections present an overview of this feature. For a hands-on example that lets you experience a CodeRabbit code review using +a real repository, see [Quickstart](/getting-started/quickstart). + +## Automatically review pull requests {#review} + +After you [integrate CodeRabbit with your repository](/platforms), CodeRabbit proceeds +to automatically review every subsequent pull request, as soon as each one is created. + +CodeRabbit performs code reviews by attaching comments to the pull request. +These comments contain detailed summaries and analyses of the changes, +as well as listing out problems or areas for potential improvement that it found. + +CodeRabbit uses [a variety of open-source linters and security tools](/tools) and a custom +code verification agent to provide this analysis. CodeRabbit +also consults several models to further analyze and critique the proposed changes, +using all of the content of your repository as context. The code-review comment that CodeRabbit attaches +to your pull request synthesizes and summarizes all of the information collected from these different sources. + +For more information about the graph analysis that CodeRabbit includes with its reviews +when available, see [CodeRabbit Code Graph Analysis](/integrations/code-graph-analysis). + +### Events that trigger automated reviews {#events} + +By default, the following activity in your repository triggers CodeRabbit to +perform a code review: + +- If CodeRabbit sees a new pull request, then it immediately performs a full review + of the proposed code changes. +- If an open pull request that CodeRabbit has already reviewed gets modified with another + commit, then CodeRabbit performs an incremental review that focuses on the new commit. + +### Which pull requests get automatically reviewed {#eligibility} + +CodeRabbit automatically reviews a pull request when **either** of the following statements is true: + +- The pull request is in a public repository. CodeRabbit reviews pull requests against the main branch of your public repositories by default. This feature is available to every subscription tier, including the free plan. +- The pull request is in a private repository and your organization is on the Pro plan with a seat assigned to you. Only under this condition does CodeRabbit review private-repository pull requests. + + + +## Interact with CodeRabbit reviews {#interact} + +After CodeRabbit attaches its initial code-review comment to a pull request, you can +directly interact with CodeRabbit by mentioning its username, `@coderabbitai`, in comments +that you post to the pull request. + +These interactions can serve several purposes: + +- Free-form discussion about the pull request and the ongoing code review. +- Commands to have CodeRabbit perform specific actions regarding the code review. +- Prompts to have CodeRabbit generate its own improvements to the branch under review. + +### Chat with CodeRabbit {#chat} + +You can have open-ended, natural-language discussion with CodeRabbit during a code review, treating it +as an LLM-powered chatbot that has your entire code repository available for context. For more information, see [CodeRabbit Chat](/guides/agent_chat). + +### Manage CodeRabbit review behavior {#manage} + +CodeRabbit recognizes a variety of keyword-based commands that let you control its +behavior during a code review, including the following: + +- Pause or resume automated reviews of the pull request. +- Manually request a review, when automated reviews are paused. +- Resolve all open comments authored by CodeRabbit. + +For more information, see [Control and manage code reviews](/guides/commands). + +### Generate improvements {#generate} + +You can command CodeRabbit to generate improvements to the branch under review. +CodeRabbit accomplishes this by publishing a new branch based on the branch under review, +and creating a new pull request for your own review. + +Available code-generation commands let you request the following from CodeRabbit: + +- Implement the suggestions for improvements that CodeRabbit has made in its earlier code review comments. +- Generate inline documentation for any undocumented functions that this pull request proposes to add. + +For more information, see [Generate improvements](/guides/generate-improvements). + +## What's next {#whats-next} + +- [Control and manage code reviews](/guides/commands) +- [Generate code improvements](/guides/generate-improvements) diff --git a/docs/guides/code-review-troubleshooting.md b/docs/guides/code-review-troubleshooting.md new file mode 100644 index 00000000..72539453 --- /dev/null +++ b/docs/guides/code-review-troubleshooting.md @@ -0,0 +1,17 @@ +--- +title: Code review troubleshooting +description: Troubleshooting CodeRabbit code reviews. +sidebar_label: Troubleshooting +--- + +This page is about troubleshooting interactive code review sessions with CodeRabbit. For more information about working with +CodeRabbit through chat, see [Control and manage code reviews](/guides/commands). + +If a CodeRabbit command doesn't seem to work: + +1. Check that you have the necessary repository permissions. +2. Verify the command syntax. +3. Look for any response from CodeRabbit in the PR comments. +4. Use `@coderabbitai help` for command guidance. + +Need help? Join our community on [Discord](https://discord.gg/coderabbit) or [contact our support team](/getting-started/support). diff --git a/docs/guides/commands.md b/docs/guides/commands.md index 8b8965a8..43e6283a 100644 --- a/docs/guides/commands.md +++ b/docs/guides/commands.md @@ -1,23 +1,154 @@ --- -title: CodeRabbit Commands -sidebar_label: CodeRabbit Commands -description: - CodeRabbit offers various commands that can be invoked as PR comments to - control the review process. -sidebar_position: 4 +title: Control and manage code reviews +description: Learn how to control CodeRabbit using commands in pull request comments --- -The following commands are available (invoked as PR comments): - -- `@coderabbitai pause` to pause the reviews on a PR. -- `@coderabbitai resume` to resume the paused reviews. -- `@coderabbitai ignore` to ignore the reviews on a PR. -- `@coderabbitai review` to trigger an incremental review. This is useful when - automatic reviews are disabled for the repository. -- `@coderabbitai full review` to do a full review from scratch and review all - the files again. -- `@coderabbitai summary` to regenerate the summary of the PR. -- `@coderabbitai resolve` resolve all the CodeRabbit review comments. -- `@coderabbitai configuration` to show the current CodeRabbit configuration for - the repository. -- `@coderabbitai help` to get help. +This page is about issuing direct commands to CodeRabbit during code reviews. +For a general overview of performing code reviews with CodeRabbit, see [Review pull requests](/guides/code-review-overview). + +You can control CodeRabbit's behavior with a specific pull request by mentioning the +username of its bot, `@coderabbitai`, alongside keywords in comments or the pull +request description, as specified by the next sections of this page. + +For a complete CodeRabbit command reference, see [Code review command reference](/reference/review-commands). + +## Control automatic code reviews {#flow} + +By default, CodeRabbit automatically reviews every new pull request created in +your repository. It updates its review with comments whenever the pull request has new commits +pushed to it. + +The following sections show you how to tell CodeRabbit to modify this behavior with +a specific pull request, such as pausing reviews, or resolving open comments. + +For more information about permanently configuring the behavior of CodeRabbit on +your repository, see [Add a configuration file](/getting-started/configure-coderabbit). + +### Pause and resume automatic code reviews {#pause-resume} + +You can tell CodeRabbit to pause its automatic reviews of a pull request. If +you do, then you can still manually request CodeRabbit to review changes using +the commands listed on [Code review command reference](/reference/review-commands). + +To pause automated reviews of a pull request, post the following comment to the +pull request: + +```text +@coderabbitai pause +``` + +To resume automated reviews after pausing them, post the following comment to the +pull request: + +```text +@coderabbitai resume +``` + +### Disable automatic code reviews {#ignore} + +To disable automatic code reviews for a pull request, add the following line +anywhere in the pull request description: + +```text +@coderabbitai ignore +``` + +As long as that text remains in the description, CodeRabbit will not +automatically review any commits associated with that pull request. +You can still [chat with CodeRabbit](/guides/agent_chat) and issue other commands in the pull +request comments. + +To enable automatic reviews on that pull request, delete "`@coderabbitai ignore`" +from the pull request description. CodeRabbit commences automatic reviews starting with +the next commit made to the branch under review. + +## Manually request code reviews {#request} + +You can ask CodeRabbit to perform a code review at any time. This can be useful +when you have paused automated code reviews. Manually requested reviews have +two types: + +- A _full review_ disregards any comments that CodeRabbit has already made + on this pull request, and generates a complete review of the entire pull request. + +- An _incremental review_ takes all comments that CodeRabbit has made since its most recent full review into consideration, and generates a review of only the new changes. + +To manually request a full review, post the following comment to the +pull request: + +```text +@coderabbitai full review +``` + +To manually request an incremental review, post the following comment to the +pull request: + +```text +@coderabbitai review +``` + +## Resolve comments {#resolve} + +To have CodeRabbit mark all of its previous comments as resolved, post the following comment to the +pull request: + +```text +@coderabbitai resolve +``` + +## Update information about the pull request {#update} + +The commands in this section request CodeRabbit to generate and post updated information +about the pull request itself. + +### Update the summary text {#summary} + +To have CodeRabbit update the generated summary of the branchโ€™s proposed changes +to the pull requestโ€™s description, post the following comment: + +```text +@coderabbitai summary +``` + +CodeRabbit updates the summary text to the description under the heading +"Summary by CodeRabbit". + +### Diagram the pull request history {#diagram} + +To have CodeRabbit post a comment that contains a sequence diagram which visualizes the +history of the pull request under review, post the following comment: + +```text +@coderabbitai generate sequence diagram +``` + +## Get information about CodeRabbit {#info} + +The commands in this section request CodeRabbit to display its own configuration +or documentation. + +### Display current configuration {#config} + +To have CodeRabbit post a comment listing out its current configuration +with your repository, post the following comment to the +pull request: + +```text +@coderabbitai configuration +``` + +### Display a quick-reference guide {#help} + +To have CodeRabbit post a comment to the pull request with a quick-reference +guide to its own commands and other features, post the following comment to the +pull request: + +```text +@coderabbitai help +``` + +## What's next {#whats-next} + +- [Generate code improvements](/guides/generate-improvements) +- [Best practices](/guides/code-review-best-practices) +- [Troubleshooting](/guides/code-review-troubleshooting) diff --git a/docs/guides/config-vscode.md b/docs/guides/config-vscode.md new file mode 100644 index 00000000..02f60d8c --- /dev/null +++ b/docs/guides/config-vscode.md @@ -0,0 +1,69 @@ +--- +title: Configure the VSCode extension +description: How to configure the CodeRabbit VSCode extension +--- + +This page is about configuring the CodeRabbit VSCode extension. For more information about the extension, see +[Review local changes](/code-editors). + +:::note +The instructions on this page are specific to using the extension with VSCode. If you are instead using a VSCode-compatible editor such as Cursor or Windsurf, then the steps that you need to follow are similar, but might require some adaptation. +::: + +## Find the settings screen {#find} + +To navigate to the settings screen for the CodeRabbit VSCode extension, follow these steps: + +1. Open the CodeRabbit activity bar/sidebar. + +1. In the sidebar, click on gear shaped icon on top right(beside logout icon). + +1. You can also search for CodeRabbit: Settings in the command palette to open the settings. + +The settings screen contains the following configuration controls. + +## Configure AI agent integration {#agent} + +The **Agent Type** setting lets you choose the extension's response to using the **Fix with AI** feature during code reviews. Your options are the following: + +- **Native**: The extension prompts the AI agent associated with your IDE to apply the suggested fix. + + This works only with VSCode, using Copilot. If you have this option selected when using a different IDE, then the extension instead copies the prompt to your clipboard. + +- **Claude Code**: The extension opens the Terminal pane of your IDE and tries to use the `claude` command-line program to apply the suggested fix to your code. You need to have Claude Code installed for this option to be effective. + +- **Codex CLI**: The extension opens the Terminal pane of your IDE and tries to use the `codex` command-line program to apply the suggested fix to your code. You need to have Codex CLI installed for this option to be effective. + +- **Cline**: The extension opens the `Cline` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Cline` extension installed for this option to be effective. + +- **Roo**: The extension opens the `Roo` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Roo` extension installed for this option to be effective. + +- **Kilo Code**: The extension opens the `Kilo Code` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Kilo Code` extension installed for this option to be effective. + +- **Clipboard**: The extension copies prompt text describing the suggested fix to your clipboard. From there, you can manually paste the prompt into the coding AI agent that you use with your IDE. + +For more information about the **Fix with AI** feature, see [Request help from your AI coding agent](/guides/use-vscode#agent). + +## Configure automatic review behavior {#auto-reviews} + +The **Auto Review Mode** setting lets you control the behavior of the automatic code reviews that the extension can perform after you make commits to your local Git repository. Your options are the following: + +- **Disabled**: The extension doesn't perform automatic code reviews. + +- **Prompt**: After every commit, the extension displays a dialog asking if you'd like it to perform a code review. + +- **Auto**: The extension always performs a review after every commit. + +For more information about this feature, see [Automatically review local commits](/guides/use-vscode#auto-reviews). + +## Set a review timeout {#timeout} + +The **Review Timeout** setting lets you specify how long the extension waits for a response from CodeRabbit remote servers before timing out a code review. The default value is `20`. + +To turn off timeouts, set this value to `0`. + +## What's next {#whats-next} + +- [Use the VSCode extension](/guides/use-vscode) + +- [Uninstall the VSCode extension](/guides/uninstall-vscode) diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md new file mode 100644 index 00000000..b2c401f2 --- /dev/null +++ b/docs/guides/configuration-overview.md @@ -0,0 +1,74 @@ +--- +title: Configure CodeRabbit +description: Learn the basics of configuring CodeRabbit for your organization. +sidebar_label: Overview +--- + +After you finish [integrating CodeRabbit with your Git platform](/platforms/), +you can configure CodeRabbit to best fit the needs of your Git platform's organization and repositories. + +## About CodeRabbit configuration + +CodeRabbit has [a lot of configuration options](/reference/configuration), with default settings that are designed to meet most needs. CodeRabbit is designed to work "out +of the box": if you don't change any of the +configuration settings away from the defaults, then CodeRabbit starts automatically +adding code reviews to new pull requests in your repositories. + +However, understanding how to configure CodeRabbit lets you tune its behavior +to the particulars of your team's code. A few advantages of manually configuring +CodeRabbit include the following: + +- Adjust the level of detail in CodeRabbit code reviews. +- Customize review instructions to meet your specific coding standards. +- Take advantage of agentic workflows that can speed up your review cycles. + +## Configuration methods {#methods} + +You can configure CodeRabbit in several ways, from global organization settings +down to configuration directives for specific repositories. + +### Organization settings {#org} + +If you want to apply the same CodeRabbit configuration to all of your organization's repositories, then +you can manage organizational settings using the CodeRabbit web UI. + +For more information, see [Set your organization preferences](/guides/organization-settings). + +### Repository settings {#repo} + +If you want to apply separate CodeRabbit configuration to your organization's different repositories, then you can +manage repository-specific CodeRabbit settings in two ways: + +- Add a `.coderabbit.yaml` file to the top level of your repository. +- Use the CodeRabbit web interface. + +For more information, see [Set your repository preferences](/guides/repository-settings). + +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file [as a best practice](/guides/setup-best-practices#yaml). + +## Configuration priority {#priority} + +CodeRabbit follows a specific hierarchy when determining which configuration settings to use. Understanding this priority system helps you manage your configuration effectively: + +### Priority order (highest to lowest) + +1. **Local `.coderabbit.yaml` file of head branch** +2. **Repository settings** (web UI) +3. **Organization settings** (web UI) + +### How priority works + +- **If you have a local `.coderabbit.yaml` file in your head branch**: All repository and organization settings are ignored. Only the local YAML file configuration is used. Anything not defined in that file uses default settings. +- **If you don't have a local YAML file but have enabled repository settings**: Organization settings are ignored. Only repository settings are used. +- **If you have organization settings and repository settings are disabled**: Only organization settings are used. + +### Configuration inheritance + +When a configuration source is active, it completely overrides all lower-priority sources. For example, if you set `reviews.tools.github-checks.timeout_ms` to `900000` in organization settings, but you have a local `.coderabbit.yaml` file that doesn't define this setting, CodeRabbit will use the default value of `90000` instead of the organization setting. + +This means that configuration is not merged or inherited - the highest priority source takes complete control over all settings. + +## Initial configuration {#initial} + +The [Initial configuration guide](/guides/initial-configuration) tours you through several settings that we +recommend that you review after you set up CodeRabbit with your organization. diff --git a/docs/guides/custom-reports.md b/docs/guides/custom-reports.md new file mode 100644 index 00000000..a22b359e --- /dev/null +++ b/docs/guides/custom-reports.md @@ -0,0 +1,725 @@ +--- +title: Customize reports +description: Learn how to create custom reports with CodeRabbit Pro's flexible reporting system +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +CodeRabbit Pro allows you to create custom reports tailored to your specific needs using a flexible prompt-based system. This guide will help you understand how to create effective custom reports. + +For a conceptual overview of reports in CodeRabbit, see [Generate reports](/guides/reports-overview). + +## Understanding Custom Reports + +Custom reports allow you to: + +- Define exactly what information you want to see +- Specify the format and structure of the report +- Set custom filtering and grouping rules +- Generate reports in different languages + +## Creating Custom Report Templates + +### Basic Structure + +A custom report template consists of instructions that tell CodeRabbit what information to include and how to present it. Here's a basic example: + +```text +Please provide a summary of: +- All merged pull requests +- Critical bug fixes +- Code review discussions + +Group by: +- Repository +- Team + +Format using: +- Bullet points for changes +- Tables for statistics +``` + +### Example for different languages + +Japanese: + +```text +ใƒฌใƒใƒผใƒˆใ‚’่‹ฑ่ชžใงใฏใชใๆ—ฅๆœฌ่ชžใง้€ไฟกใ—ใฆใใ ใ•ใ„ใ€‚ + +ไปฅไธ‹ใฎ่ฆ็ด„ใ‚’ๆไพ›ใ—ใฆใใ ใ•ใ„๏ผš +- ใ™ในใฆใฎใƒ—ใƒซใƒชใ‚ฏใ‚จใ‚นใƒˆๆดปๅ‹• +- ใ‚ณใƒผใƒ‰ใƒฌใƒ“ใƒฅใƒผใฎ่ญฐ่ซ– +``` + +French: + +```text +Veuillez envoyer le rapport en franรงais et non en anglais. + +Veuillez fournir un rรฉsumรฉ de : +- Toutes les activitรฉs de demandes de fusion +- Discussions sur la rรฉvision de code +``` + +### Available Data Points + +Your custom reports can access the following PR information that you can reference in your prompts: + +#### Pull Request Status + +Contained within the `` tag. + +- `Merged`: boolean (true/false) - Whether the PR has been merged +- `Draft`: boolean (true/false) - Whether the PR is in draft state +- `State`: string ("open"/"closed") - Current state of the PR +- `Mergeable`: boolean (true/false) - Whether the PR can be merged +- `Is stale`: boolean - Whether PR has been inactive for over 168 hours +- `PR Stage`: string - The current stage of open PRs in Open or Draft state, can be one of: + - "Needs Author Action" - PR requires author attention due to merge conflicts, draft status, or requested changes + - "Waiting for Author to Merge" - PR has approvals and is ready for author to merge + - "Waiting for Code Reviews" - PR is waiting for reviewers to approve + - undefined - PR is not in an open state (is merged or closed) + +#### Basic Information + +Contained within the `` tag. + +- `Pull request number`: number - The PR's identifier +- `Title`: string - PR title +- `URL`: string - Link to the PR +- `Author name`: string - PR creator's username +- `Created at`: datetime - When the PR was created +- `Last activity`: datetime - Most recent activity timestamp +- `Closed at`: datetime (if applicable) - When the PR was closed +- `Source branch`: string - Source branch name +- `Target branch`: string - Target branch name +- `Labels`: array of strings - All labels applied to the PR +- `Reviewers`: array of strings - Assigned reviewers' usernames + +#### Summarized PR Details + +- ``: string - Contains the body of your pull request (aka the PR description at the top of the PR page). +- ``: string - Contains a file by file summary of the changes made in the PR in markdown format. This summary is generated by CodeRabbit AI durring the PR review process. This includes several sections for each file that was changed: + - `filename`: string - The name of the file that was changed. + - `AI-generated summary of changes`: markdown - An overall summary of the changes made in the file. + - `Alterations to the declarations of exported or public entities`: markdown - A more specific breakdown of the changes made to the file such as exactly what was added, removed, or modified. + +#### Comments + +- ``: array of comment objects - Contains all the comments made on the PR. +- ``: object - Each indidvidual comment is wrapped in this tag and is an object with the following properties: + - ``: string - The username of the comment author. + - ``: datetime - The date and time the comment was created. + - ``: datetime - The date and time the comment was last updated. + - ``: markdown - The content of the comment. + +Here's an example prompt that uses these data points: + +```text +Use the to guide the content of the summary. Use the format shown in but do not include or refer the example's content in the final summary/report. + + +Generate a summary of each pull request in the following bullet point format: + +- PR Link: Provide a hyperlink to the pull request from the 'URL:' value +- Title: Provide the value of the 'Title:' field +- PR State: Provide the state of the PR based on the following conditions: + - If 'Merged: true' set 'PR State: ๐Ÿ”€ Merged' + - Else If 'Draft: true' set 'PR State: ๐Ÿ“ Draft' + - Else If 'State: open' or 'State: active' set 'PR State: ๐Ÿ’ฌ Open' + - Else If 'State: closed' or 'State: DECLINED' and 'Merged: false' set 'PR State: ๐Ÿ”’ Closed' + - Else set 'PR State: โ“ Unknown' + - If the PR is stale, add 'โš ๏ธ Stale' at the end of the PR State. +- Mergeable (if PR State is not 'Merged'): Provide the mergeable status of the PR as 'Mergeable' or 'Not Mergeable' based on the "Mergeable: " value. +- PR Stage (if PR State is not 'Merged'): Provide the stage of the PR based on the "PR Stage: " value. +- Summary: In under 50 words provide a short summary of the PR. +- Comments: In under 50 words provide a short summary of all comments found within , including each comments author username from . If there are no comments available, output 'No comments'. + + + +- **PR Link:** [#3001](https://github.com/mygithuborg/myrepo/pull/3001) +- **Title:** PR Title +- **PR State:** ๐Ÿ’ฌ Open +- **Mergeable:** Mergeable +- **PR Stage:** Waiting for Code Reviews +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#302](https://github.com/mygithuborg/thatrepo/pull/302) +- **Title:** PR Title +- **PR State:** ๐Ÿ’ฌ Open +- **Mergeable:** Mergeable +- **PR Stage:** Waiting for Author to Merge +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#3](https://github.com/mygithuborg/myotherrepo/pull/3) +- **Title:** PR Title +- **PR State:** ๐Ÿ”€ Merged +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#14](https://github.com/mygithuborg/frontend/pull/14) +- **Title:** PR Title +- **PR State:** ๐Ÿ’ฌ Open +- **Mergeable:** Mergeable +- **PR Stage:** Needs Author Action +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#13005](https://github.com/mygithuborg/backend/pull/13005) +- **Title:** PR Title +- **PR State:** ๐Ÿ”€ Merged +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#3006](https://github.com/mygithuborg/myrepo/pull/3006) +- **Title:** PR Title +- **PR State:** ๐Ÿ”€ Merged +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +- **PR Link:** [#3007](https://github.com/mygithuborg/myrepo/pull/3007) +- **Title:** PR Title +- **PR State:** ๐Ÿ“ Draft +- **Mergeable:** Not Mergeable +- **PR Stage:** Needs Author Action +- **Summary:** Summary of the PR. +- **Comments:** Summary of the PR comments or No comments. + +``` + +### Formatting Options + +CodeRabbit supports markdown formatting in custom reports. You can use: + +- Headers (`#`, `##`, `###`) +- Lists (bullet points and numbered) +- Tables +- Code blocks +- Bold and italic text +- Links + +### Headers and Titles + +The name you give to each report in the CodeRabbit menu will be used for the first line of any report or the subject for emails. For example if your report is named `Executive Summary Template` then this string will appear on the subject of your emails and start of all message chains. + +When using the `Preview Report` button in the CodeRabbit menu, the subject will begin with `Preview: `. + +The reports will also have an overall title describing the report content such as `Pull Request Summary Report (January 2025)`. + +To change these details of this overall title you should include specific instructions in your custom prompt with examples such as: + +```text +- Do not add a date to the titles like "Pull Request Summary Report (January 2025)" it should just be "Pull Request Summary Report" +``` + +### Language Support + +You can generate reports in multiple languages by specifying the ISO language code in your template. For example: + +```text +Language: fr +Please provide a summary of: +- All pull request activities +- Code review discussions +``` + +## Advanced Features + +### Filtering + +Include specific filtering instructions in your template: + +```text +Include only: +- PRs with "critical" or "bug" labels +- Changes to production code +- Reviews from senior developers + +Exclude: +- Automated commits +- Documentation changes +- Dependencies updates +``` + +### Custom Grouping + +Organize information using custom grouping rules: + +```text +Group by: +1. Priority (High/Medium/Low) +2. Component (Frontend/Backend/Infrastructure) +3. Team (Team A/Team B) + +Within each group, sort by: +- Activity date (newest first) +- Impact level +``` + +### Optional Data Sources + +You can also include optional data sources in your custom reports. By default, CodeRabbit will not include the following data sources. In a custom report you will see the option to include these data sources by clicking the `Select Optional Data Sources` button. This adds special XML tags to your prompt that allow you to include this data in your report. + +#### Bot Comments + +Bot comments are comments made by bots and Coderabbit AI on a PR. To enable bot comments you must include the tag `` in your prompt. + +These are very similar in structure to regular user comments but with a few key differences: + +- ``: array of comment objects - Contains all the comments made on the PR. +- ``: object - Each individual comment is wrapped in this tag and is an object with the following properties: + - ``: string - The username of the comment author. + - ``: datetime - The date and time the comment was created. + - ``: datetime - The date and time the comment was last updated. + - ``: markdown - The content of the comment. + +#### Issues and Tickets + +Issues and tickets brings in conversations, descriptions, and comments from Jira and Linear as part of your report if the ticket is linked in your PR description. To enable issues and tickets you must include the tag `` in your prompt. + +- ``: array of issue objects - Contains all the linked issues and tickets. +- ``: object - Each individual issue is wrapped in this tag and is an object with the following properties: + - ``: string - The title or thread ID of the issue. + - ``: string - The URL to the issue. + - ``: string - The unique identifier of the issue. + - ``: string - The username of who created the issue. + - ``: datetime - The date and time the issue was created. + - ``: datetime - The date and time the issue was last updated. + - ``: markdown - The content/description of the issue. This contains the following sections: + - ``: markdown - The description of the issue. + - ``: array of comment objects - Contains all the comments made on the issue. + +#### Remove PRs without a "Score Card/Chart" bot comment + +This option gives you the ability to create a report limited only to pull requests containing a "Score Card" or "Score Chart" bot comment from CodeRabbit or other bots. To enable issues and tickets you must include the tag `` in your prompt. + +> **IMPORTANT:** This will automatically remove any pull requests from your reports if they do not contain a "Score Card" or "Score Chart" bot comment. Using this option without setting up a flow to create these comments will result in `No new pull request activity in the last XYZ hours` errors. Do not enable this option unless you have created a "Score Card" or "Score Chart" bot comment flow. + +For example you can ask coderabbit to check serveral conditions on a pull request and produce a "Score Chart": + +
+Click to view example User Score Card/Chart Comment: + +![Score Card/Chart Trigger Comment Example](/img/guides/score-card-trigger-comment.png) + +```markdown +@coderabbitai +Use the to guide the content of the summary. Use the format shown in <\_example> but do not include or refer to the example's content in the final summary/report. + + + +**Instructions:** +Generate a weekly code review report for the author of this pull request only following scoring parameters. Calculate the scores and compile the results into a table so that the team-wise average score can be easily determined. +**Scoring Parameters:** + +1. **Basic Code Standards (Score out of 2)** + + - Avoidance of hard-coded values + - No repetition of code (DRY principle) + +2. **Code Readability (Score out of 2)** + + - Presence of meaningful comments + - Proper variable declaration using `const` and `let` + +3. **Error Handling (Score out of 4)** + + - Handling failure scenarios (e.g., try-catch, fallbacks) + - Proper loading state implementation (e.g., button click loading states) + - Handling edge cases (e.g., checking for undefined or missing values) + - Input validation (ensuring correct user inputs) + +4. **Circle CI Check Validation (Score: 0 or 1)** + - `0` โ†’ Not Passed + - `1` โ†’ Passed + +**Final Score Calculation:** +Combine the scores from the parameters above to derive the final code quality score (out of 5). +**Output Format:** +Provide the final report in a table format with the following columns (use shorthand notations), be sure to include this list at the top above the chart in the "Column Notation" section so users understand what the columns mean: + +- **User Name (User)** +- **Basic Code Standards (BCS) (out of 2)** +- **Code Readability (CR) (out of 2)** +- **Error Handling (EH) (out of 4)** +- **Shopify Theme Check (CI) (out of 1)** +- **Final Code Quality Score (FCQS) (out of 9)** + + + +<\_example> + +## Column Notation + +- **User Name (User)** +- **Basic Code Standards (BCS) (out of 2)** +- **Code Readability (CR) (out of 2)** +- **Error Handling (EH) (out of 4)** +- **Shopify Theme Check (CI) (out of 1)** +- **Final Code Quality Score (FCQS) (out of 9)** + +## Score Chart + +| User | BCS (2) | CR (3) | EH (2) | CI (1) | FCQS (9) | +| -------- | ------- | ------ | ------ | ------ | -------- | +| John Doe | 2 | 3 | 2 | 1 | 9 | + + +``` + +
+ +Then CodeRabbit will reply with a score for you pull request: + +
+Click to view resulting Score Card/Chart bot comment: + +![CodeRabbit Score Card/Chart Result Comment Example](/img/guides/score-card-result-comment.png) + +
+ +You can then utilize this in a report. We recommend your report looks specifically for these score cards and puts together a unified report: + +
+Click to view example Report Prompt when using Score Card/Chart: + +![Report Example](/img/guides/score-card-report-result.png) + +![Where to put this prompt](/img/guides/where-score-report-prompt-go.png) + +Prompt Example: + +```markdown +Use the to guide the content of the summary. Use the format shown in but do not include or refer to the example's content in the final summary/report. + + +**Instructions:** + +Locate the score chart comment in the . There will be a single comment with data on these fields: + +- **User Name (User)** +- **Basic Code Standards (BCS) (out of 2)** +- **Code Readability (CR) (out of 2)** +- **Error Handling (EH) (out of 4)** +- **Shopify Theme Check (CI) (out of 1)** +- **Final Code Quality Score (FCQS) (out of 9)** + +These details may also be in the form of a chart such as: + +## Score Chart + +| User | BCS (2) | CR (3) | EH (2) | CI (1) | FCQS (9) | +| -------- | ------- | ------ | ------ | ------ | -------- | +| John Doe | 2 | 3 | 2 | 1 | 9 | + +You will create a new chart averaging all the values from various pull requests for each author. Only include pull requests with a `Score Chart`. Do not invent or create score charts if none exist. + + + + + +## Column Notation + +- **User Name (User)** +- **Basic Code Standards (BCS) (out of 2)** +- **Code Readability (CR) (out of 2)** +- **Error Handling (EH) (out of 4)** +- **Shopify Theme Check (CI) (out of 1)** +- **Final Code Quality Score (FCQS) (out of 9)** + +## Score Chart + +| User | BCS (2) | CR (3) | EH (2) | CI (1) | FCQS (9) | PR URL | +| -------- | ------- | ------ | ------ | ------ | -------- | ------ | +| John Doe | 2 | 3 | 2 | 1 | 9 | URL | +| Alex Foo | 2 | 3 | 2 | 1 | 9 | URL | + + + + +``` + +
+ +**Best Practices for Score Cards/Charts:** + +- The reporting bot only has access to your comments and summary (like a project manager) if you want to make a report looking for these score card/chart comments make sure the reviewer does this ahead of time. +- Only include checks for very specific scenarios, such as a specific check failing or using tabs vs spaces. +- Do not use general rules without explaining specifically what they mean. If you add "Insure the pull request follows development best practices" you must define what "development best practices" actually mean or the AI will guess. +- Make one point for each specific check and make sure its a True/False condition. +- Instead of manually commenting on pull requests you can use the [Github Actions Bot](https://github.com/marketplace/actions/create-or-update-comment) to automatically comment on pull requests and trigger coderabbit score card/chart comments by including `@coderabbit` in the comment. + +## Best Practices + +1. **Be Specific** + + - Clearly define what should be included/excluded + - Use precise language to avoid ambiguity + - Specify exact metrics you want to track + +2. **Structure Matters** + + - Start with high-level summaries + - Use consistent grouping patterns + - Include clear section breaks + +3. **Keep it Relevant** + + - Focus on actionable information + - Avoid redundant data points + - Consider your audience's needs + +4. **Optimize Readability** + + - Use appropriate formatting + - Include visual breaks + - Maintain consistent styling + +5. **Use Examples** + - Include "do this" and "don't do this" examples (especially for titles) + - Demonstrate proper formatting patterns + - Show concrete use cases for different report types + - Help maintain consistency across teams + - Avoid ambiguity in report generation + +### Add Examples for Consistent Formatting + +Try to use `` and `` tag blocks to keep consistency across reports: + +```text +Use the to guide the content of the summary. Use the format shown in but do not include or refer the example's content in the final summary/report. + + +Generate release notes with the following sections: + +- Summary: A high-level summary of the overall change instead of specific files within 100 words. +- Changes: A bullet point list of all the significant changes made in this release. + +Significant changes include new features, bug fixes, and other notable changes. +Use a single sentence for each change without headings or categorization. +Do not include changes from PRs that have not been merged. +Don't show changes that are too insignificant and don't affect the end-user. +Use a single level of bullet points for each change. +Don't add links to the PRs. +Do not add a list of pull requests. +Do not show a random release date, version, etc. if they are not known. + + + +## Summary +[Summary of the release] + +## Changes +- [Summary of the change 1] +- [Summary of the change 2] +- [Summary of the change 3] +- ... +- [Summary of the change N] + +``` + +## Example Templates + +### Executive Summary Template + +```text +Provide a high-level overview: +1. Key metrics: + - Total PRs merged + - Average review time + - Code quality scores +2. Notable achievements +3. Blocking issues +4. Resource allocation + +Format: +- Use tables for metrics +- Bullet points for achievements +- Clear headers for sections +``` + +### Technical Deep Dive Template + +```text +Generate a detailed technical report: +1. Code changes: + - Architecture updates + - API modifications + - Database changes +2. Testing coverage +3. Performance impacts +4. Security considerations + +Include: +- Links to significant PRs +- Code snippets for major changes +- Technical debt analysis +``` + +## Advanced Example Templates + +Heres a more advanced example of a custom report template: + +### **Good Day Release Report** + +```text +**GPT Specialization:** +This GPT specializes in summarizing software release notes and optional summary paragraphs into a consistent, clear, and concise format. The goal is to streamline the presentation of release notes, making them easy to understand for a general audience. It prioritizes clarity, brevity, and coherence while highlighting important updates without unnecessary jargon. + +**Release Note Structure:** + +1. **Release Notes Organization** + The items in the release notes may not be in the desired order. It is crucial to group similar items together meaningfully. Review the list after the release notes are created and reorder items within each heading based on relevance. Use **PRODUCT FEATURE GROUPS** to understand which items are related. + +2. **General Release Note Guidelines** + - The title should be: `GoodDay Release v${versionNumber}` + +3. **Release Note Line Items** + - Reword individual release lines to maintain a consistent tone (happy and fun) + - Use past tense for descriptions + - Items in the ๐Ÿงผ Fixes group should begin with "Fixed" + - Consolidate duplicate or closely related items, and list the associated GitHub pull requests as a comma-delimited list at the end (e.g., GH-123, GH-456) + - Add links to Github App for each PR + +4. **GitHub App Links** + - each pr mentioned should include hyperlinking to the pull request such as [coderabbitai/mono/pull/2614](https://github.com/coderabbitai/mono/pull/2614) + +5. **Grouping Release Note Line Items** + - Replace any emoji in the provided content with the appropriate **RELEASE NOTE GROUP** + - Order the **RELEASE NOTE GROUP** according to the structure below + +6. **Release Note Groups** + - ๐Ÿš€ **Features**: New capabilities or enhancements + - ๐Ÿงผ **Fixes**: Bug fixes or problem resolutions + - ๐Ÿงฐ **Maintenance**: Documentation, cleanup, or technical changes + - ๐Ÿ“š **Other**: Anything else + +7. **PR Label Uses** + - Omit any PRs with the label `skip-changelog` + - Use the labels from related pull requests to group items together + - Map PR labels to release note groups using the table below: + + | RELEASE NOTE GROUP | LABELS | + |--------------------|-----------------| + | ๐Ÿš€ Features | feature, enhancement | + | ๐Ÿงผ Fixes | bug, fix | + | ๐Ÿงฐ Maintenance | design, docs | + | ๐Ÿ“š Other | other, tech | + +8. **Final Checks** + - Verify that the number of items matches the number of PRs included + - Ensure the PR links match the PR number and reflect the content of the changes +``` + +### **Nato's Special Report** + +```text +Generate a report of all pull requests in the following format: + +- As the first paragraph, start with "๐ŸŸฃ" if merged, "โšซ" if draft, "๐ŸŸข" if open, "๐Ÿ”ด" if closed + - On the same line, add the PR title in bold (and only the title; don't put anything else in bold after that) + - On the same line, add the PR browser link (do not use an api link) + - On the same line, add the last activity date in the format "Day Month Year, Hour:Minute AM/PM (Timezone)" in italic (don't put anything else in italic after that and make sure it's not bold) +- Make a new bullet-point list of high-level changes in the PR + - Start each change with a gitmoji followed by a very terse one-liner to mention at a high level what the change does and to what part of the application it applies to + - Do not start with verbose non-speak such as "The pull request enhances" or "This PR introduces". Keep it terse and straight to the point. Start change descriptions with a verb + - Do not end with justifications or reasons for the changes such as "... enhancing type safety". Stick to the facts, do not make up the outcome of a change + - Limit to the 4 most relevant changes + - Examples: "โœจ Add a rotating tagline on the home page", "๐Ÿ”ง Add func-style to ESLint", "๐Ÿ“ Add download badge to `README.md`", "โœ… Add unit tests for comment trees", "๐Ÿ‘ท Create a pipeline to publish to npmjs.org", "๐Ÿ› Fix comment submission in posts", "๐Ÿ“„ License under AGPL-3.0-or-later", "๐Ÿ“ฑ Change post view for mobile", "๐Ÿ’„ Make sidebar links blue", "๐Ÿฉน Fix unfollow button", "๐Ÿ”’๏ธ Limit login cookies to a specific subdomain", "๐Ÿฅ… Handle errors when commenting in a post", "๐Ÿ™ˆ Stop ignoring `.env` and start ignoring `.env.local` and `.env.*.local`", "โฌ†๏ธ Update lemmy-js-client to v0.19.4", "๐Ÿท๏ธ Define interfaces for pull request events", "๐Ÿ” Add environment variables for Bitbucket Server", "๐Ÿšš Rename exported client instances in test files", "๐Ÿท๏ธ Add type alias `EventKey` and its type guard `isEventKey`", "๐Ÿ—๏ธ Aggregate exports for pull request events in an index file" +- Start the next paragraph with "Blockers:" in bold + - Summarize any issues preventing the PR from progressing + - Some examples: "Waiting for merge", "Waiting for review", "Failing CI/CD", "Needs more tests", "Needs rebase", "@username is waiting for a response", etc. + - If the PR is stale, note it here +- Do not add a "Report" heading +- Make sure there is one empty line between each paragraph + +These are the available emojis and the type of change they represent. Do not using any other emoji. Make sure the change corresponds to the gitmoji. + + +๐ŸŽจ: Improve structure / format of the code. +โšก๏ธ: Improve performance. +๐Ÿ”ฅ: Remove code or files. +๐Ÿ›: Fix a bug. +๐Ÿš‘๏ธ: Critical hotfix. +โœจ: Introduce new features. +๐Ÿ“: Add or update documentation. +๐Ÿš€: Deploy stuff. +๐Ÿ’„: Add or update the UI and style files. +๐ŸŽ‰: Begin a project. +โœ…: Add, update, or pass tests. +๐Ÿ”’๏ธ: Fix security or privacy issues. +๐Ÿ”: Add or update secrets. +๐Ÿ”–: Release / Version tags. +๐Ÿšจ: Fix compiler / linter warnings. +๐Ÿšง: Work in progress. +๐Ÿ’š: Fix CI Build. +โฌ‡๏ธ: Downgrade dependencies. +โฌ†๏ธ: Upgrade dependencies. +๐Ÿ“Œ: Pin dependencies to specific versions. +๐Ÿ‘ท: Add or update CI build system. +๐Ÿ“ˆ: Add or update analytics or track code. +โ™ป๏ธ: Refactor code. +โž•: Add a dependency. +โž–: Remove a dependency. +๐Ÿ”ง: Add or update configuration files. +๐Ÿ”จ: Add or update development scripts. +๐ŸŒ: Internationalization and localization. +โœ๏ธ: Fix typos. +๐Ÿ’ฉ: Write bad code that needs to be improved. +โช๏ธ: Revert changes. +๐Ÿ”€: Merge branches. +๐Ÿ“ฆ๏ธ: Add or update compiled files or packages. +๐Ÿ‘ฝ๏ธ: Update code due to external API changes. +๐Ÿšš: Move or rename resources (e.g.: files, paths, routes). +๐Ÿ“„: Add or update license. +๐Ÿ’ฅ: Introduce breaking changes. +๐Ÿฑ: Add or update assets. +โ™ฟ๏ธ: Improve accessibility. +๐Ÿ’ก: Add or update comments in source code. +๐Ÿป: Write code drunkenly. +๐Ÿ’ฌ: Add or update text and literals. +๐Ÿ—ƒ๏ธ: Perform database related changes. +๐Ÿ”Š: Add or update logs. +๐Ÿ”‡: Remove logs. +๐Ÿ‘ฅ: Add or update contributor(s). +๐Ÿšธ: Improve user experience / usability. +๐Ÿ—๏ธ: Make architectural changes. +๐Ÿ“ฑ: Work on responsive design. +๐Ÿคก: Mock things. +๐Ÿฅš: Add or update an easter egg. +๐Ÿ™ˆ: Add or update a .gitignore file. +๐Ÿ“ธ: Add or update snapshots. +โš—๏ธ: Perform experiments. +๐Ÿ”๏ธ: Improve SEO. +๐Ÿท๏ธ: Add or update types. +๐ŸŒฑ: Add or update seed files. +๐Ÿšฉ: Add, update, or remove feature flags. +๐Ÿฅ…: Catch errors. +๐Ÿ’ซ: Add or update animations and transitions. +๐Ÿ—‘๏ธ: Deprecate code that needs to be cleaned up. +๐Ÿ›‚: Work on code related to authorization, roles and permissions. +๐Ÿฉน: Simple fix for a non-critical issue. +๐Ÿง: Data exploration/inspection. +โšฐ๏ธ: Remove dead code. +๐Ÿงช: Add a failing test. +๐Ÿ‘”: Add or update business logic. +๐Ÿฉบ: Add or update healthcheck. +๐Ÿงฑ: Infrastructure related changes. +๐Ÿง‘โ€๐Ÿ’ป: Improve developer experience. +๐Ÿ’ธ: Add sponsorships or money related infrastructure. +๐Ÿงต: Add or update code related to multithreading or concurrency. +๐Ÿฆบ: Add or update code related to validation. + +``` + +## Related Resources + +- [Schedule reports](/guides/scheduled-reports) +- [Generate reports on demand](/guides/ondemand-reports) +- [API Documentation](https://api.coderabbit.ai/api/swagger/) diff --git a/docs/guides/generate-improvements.md b/docs/guides/generate-improvements.md new file mode 100644 index 00000000..d194a7dd --- /dev/null +++ b/docs/guides/generate-improvements.md @@ -0,0 +1,102 @@ +--- +title: Generate improvements +description: Request coderabbit to generate its own code improvements during code reviews +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +This page is about using CodeRabbit to generate improvements to code under review. + +For a general overview of performing code reviews with CodeRabbit, see [Review pull requests](/guides/code-review-overview). + +## Overview of CodeRabbit code generation {#overview} + +:::note +This feature is available only on GitHub. +::: + +You can request CodeRabbit to generate improvements to a branch that it is currently reviewing. + +To do this, write out your request prompt in a comment addressed to `@coderabbitai`, +such as with the following examples: + +- `@coderabbitai Please implement the changes you suggested in your code review.` +- `@coderabbitai Add input validation with proper error messages to these new functions.` +- `@coderabbitai Break this large function into smaller, more focused methods.` + +In addition to this kind of free-form request, you can also give CodeRabbit keyword-based +commands for common code-generation requests, as described in [Code generation commands](#commands). +This includes the `plan` keyword, which acts as shorthand for the first prompt on the +previous list. + +After you give it a code-generation prompt or command, CodeRabbit delivers its suggested improvements by taking these steps: + +1. CodeRabbit posts a comment or two to the pull request, detailing its improvement plans. +1. CodeRabbit publishes a new branch, based on the open pull request's branch, to the remote repository. +1. CodeRabbit opens a new pull request based on this new branch, and links to it from the original pull request. + +CodeRabbit doesn't make any further changes to the new branch or to the new pull request +after it creates them. From that point on, it's fully up to you what to do with the new, suggested-change branch. + +The best practice is to effectively take ownership of the new branch for yourself, +deciding whether it's worth merging into the original pull request branch, and making +any further updates you'd like to make first. You can use comments in the new branch +to ask CodeRabbit to explain its changes, if needed, or to otherwise converse with +CodeRabbit about the suggested improvements. + +Because it's just an ordinary Git branch, the presence of the suggested-change branch +doesn't block the ongoing code review in the original pull request branch. You are +free to merge, defer, or close the suggested-change pull request that CodeRabbit made, using any method or timing that fits +your workflow. + +## Code generation commands {#commands} + +This section lists short commands that you can give CodeRabbit to have it accomplish +common code-generation tasks. For more complex tasks, you can instead write out full +prompts, as described in the previous section. + +For a complete CodeRabbit command reference, see [Code review command reference](/reference/review-commands). + +### Generate inline documentation {#docstrings} + +To have CodeRabbit generate missing documentation for function code added by +the pull request, post the following comment to the +pull request: + +```text +@coderabbitai generate docstrings +``` + +For more information about how CodeRabbit can generate inline documentation, including +the Git platforms and programming languages that this feature supports, see +[Docstrings](/finishing-touches/docstrings). + +### Generate solutions to open review comments {#plan} + +To have CodeRabbit generate and add a new repository branch with code improvements +that try to address its own code review comments, post the following comment to the +pull request: + +```text +@coderabbitai plan +``` + +Using this keyword is essentially shorthand for writing out a prompt like the following: + +```text +@coderabbitai Implement the changes that you suggested and apply them to this pull request. +``` + +If you want to give CodeRabbit more specific implement instructions other than a general +request to implement its own suggestions, then you can write out those instructions +as a full prompt, instead of using the one-word `plan` command. + +## What's next {#whats-next} + +- [Control and manage code reviews](/guides/commands) +- [Best practices](/guides/code-review-best-practices) +- [Troubleshooting](/guides/code-review-troubleshooting) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md new file mode 100644 index 00000000..826a7948 --- /dev/null +++ b/docs/guides/initial-configuration.md @@ -0,0 +1,200 @@ +--- +title: Initial configuration guide +description: A tour through some initial configuration setup. +--- + +This page provides a tour through a selection of key CodeRabbit configuration options. + +For a general overview of how configuration in CodeRabbit works, see [Configure CodeRabbit](/guides/configuration-overview). For an exhaustive reference of all configuration options, see [Configuration reference](/reference/configuration). + +## How to use this guide {#use} + +This guide walks you through several CodeRabbit configuration options that you +can set in order to tune CodeRabbit code review behavior for your repositories. + +The default behavior and settings of CodeRabbit +works for most repositories, in most situations. However, becoming familiar with +the key settings described by this page can help you tune the behavior of +CodeRabbit for the specific needs of your team. You can use this guide when initially setting up your organization and repositories with CodeRabbit, or you can return to it after using CodeRabbit +for a while, when you feel ready to customize its behavior. + +Each section in the guide links to specific entries in the configuration reference. Each entry in the linked reference specifies the location of its configuration setting, in either the CodeRabbit web UI or your `.coderabbit.yaml` file. + +## Data retention and knowledge base settings {#data-retention} + +These settings help you control how much data about your code that CodeRabbit retains. +CodeRabbit temporarily stores information about your repositories in order to tailored reviews more quickly and better tailored to your team's needs. You can opt of these features if your organization has stricter data-retention policies. + +For more information about CodeRabbit data-retention policies, see +[Data privacy and security](/#data-privacy-and-security). + +### Enable or disable data retention globally {#data-retention-setting} + +:::note +This setting is available only at the organization level, and not per-repository. +::: + +Your CodeRabbit organization has a data-retention setting which acts as a master-switch to all CodeRabbit features that require it to store its own data about your repositories. If you disable data retention, then none of your repositories can use knowledge base or caching features, even if you configure those repositories to enable them. + +We recommend leaving this on. However, if your use of CodeRabbit requires strict data retention policy, then you can turn this off. + +For more information, see +[Data retention](/reference/configuration#data-retention) in the configuration reference. + +### Configure cache use {#cache} + +By default, CodeRabbit keeps a temporary cache of data about your repository in order to make subsequent code reviews faster. If this conflicts with your organization's data-retention policies, then you can disable this feature. + +For more information, see +[Disable cache](/reference/configuration#disable-cache) in the configuration reference. + +### Configure knowledge base retention {#opt-out} + +By default, CodeRabbit keeps its own [_knowledge base_](/integrations/knowledge-base): a store of metadata about your repositories, your team's history of pull requests, linked issues, and learnings about how CodeRabbit should tailor its own review behavior to best serve your team. If this long-term knowledge base storage conflicts with your organization's data-retention policies, then you can disable this feature. + +For more information, see +[Opt out](/reference/configuration#opt-out) in the configuration reference. + +### Configure learnings {#learnings} + +CodeRabbit learns your team's review preferences by letting you [teach it your preferences in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these preferences, and applies them to subsequent code reviews in the same repository. + +This setting lets you set the scope of which stored learnings that CodeRabbit should apply to its code reviews. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. + +## Tune the length of code reviews {#content} + +By default, CodeRabbit writes thorough code reviews with several sub-sections. If you'd rather have CodeRabbit generated shorter reviews then you can change some of the following settings: + +- [Collapse walkthrough](/reference/configuration#collapse-walkthrough): wraps the detailed summary of proposed changes in collapsed-but-expandable container. (Off by default.) +- [Changed files summary](/reference/configuration#changed-files-summary): lists of files affected by this pull request. +- [Sequence diagrams](/reference/configuration#sequence-diagrams): includes a visual diagram of object interactions. +- [Assess linked issues](/reference/configuration#assess-linked-issues): assesses how well the pull request addresses any linked issues. +- [Related issues](/reference/configuration#related-issues): lists issues found in your issue tracker that might be related to this pull request. +- [Related pull requests](/reference/configuration#realted-prs): lists pull requests that might be related to this pull request. +- [Suggested labels](/reference/configuration#suggested-labels): Suggests labels for this pull request. +- [Suggested reviewers](/reference/configuration#suggested-reviewers): automatically suggest reviewers for PR +- [Poem](/reference/configuration#poem): generates a short poem about this pull request. + +## Adjust path-specific CodeRabbit behavior {#path} + +You can give CodeRabbit additional instructions for reviewing specific files or +locations in your repository, or configure CodeRabbit to disregard certain file paths +during code reviews. + +For an overview about using path-based instructions in CodeRabbit, see [Path-based instructions](/guides/review-instructions#path-based). + +### Add path filters {#filters} + +If your repository contains files or locations that CodeRabbit should disregard when preparing code reviewsโ€”or you want CodeRabbit to limit its consideration to only certain filesโ€”then you can define one or more _path filters_. Adding path filters to a large repository containing a lot of data, generated files, or other non-code content can let CodeRabbit work faster. + +For example, the following `.coderabbit.yaml` excerpt instructs CodeRabbit to take review context only the contents of directories named `src/` in your repository, while disregarding any individual files with `.bin` or `.csv` extensions. + +```yaml +path_filters: + - "!**/*.bin" + - "!**/*.csv" + - "**/src/**" +``` + +For more information, see [Path filters](/reference/configuration#path-filters) in the CodeRabbit configuration reference. + +### Add general path instructions {#review-path} + +You can set _path instructions_ that provide CodeRabbit with additional review instructions for various files or locations in your repository. Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. + +For example, to give CodeRabbit review instructions specific to JavaScript and TypeScript files, you can add a section like this to your repository's `.coderabbit.yaml` file: + +```yaml +path_instructions: + - path: `src/**/*.{ts,tsx,js}` + instructions: "Review the React.js, TypeScript, JavaScript code for best practices. Check for common security vulnerabilities, such as SQL injection, insecure dependencies, and sensitive data exposure." +``` + +For more information, see [Path instructions](/reference/configuration#path-instructions) in the configuration reference. + +### Add documentation or unit-test path instructions {#doc-path} + +Similar to the general path instructions described by the previous section, you +can define path-based instructions that direct CodeRabbit to generate inline +documentation or unit tests, with specific instructions associated with different +locations or filenames. + +For more information, see [Docstrings](/reference/configuration#docstrings) and [Unit tests](/reference/configuration#unit-tests) in the configuration reference. + +## Set Automatic review behavior {#auto} + +By default, CodeRabbit automatically generates incremental code reviews for every new or updated pull request made against a repository's default branch. These settings listed in this section let you tune the behavior. + +### Configure incremental reviews {#incremental} + +By default, CodeRabbit generates a new automated review comment every time the branch of an existing pull request gets an additional commit pushed to it. + +If you want to limit CodeRabbit to posting only an initial automated review for a new pull request, with no automated response to further updates, then you can turn off this incremental-review behavior. If you do turn it off, then you can still [manually request reviews](/guides/commands#request). + +For more information, see [Automatic incremental review](/reference/configuration#automatic-incremental-review) in the configuration reference. + +### Restrict automatic reviews to certain labels {#labels} + +If you want to be choosier about which pull requests CodeRabbit should automatically review, then you can restrict it to review only pull requests that you mark with certain labels. + +For more information, see [Labels](/reference/configuration#labels) in the configuration reference. + +### Automatically review more branches {#branches} + +If you want CodeRabbit to extend its automatic-review attention beyond the default branch of your repositoryโ€”that is, `main` or `master`, usuallyโ€”then you can give CodeRabbit a list of other branches that it is allowed to review. + +For more information, see [Base branches](/reference/configuration#base-branches) in the configuration reference. + +## Configure tools {#tools} + +CodeRabbit has access to dozens of industry-standard open-source tools to help it perform its code reviews. These tools include a variety of linters, security analyzers, and other utilities. For a full list, see [List of supported tools](/tools/list). CodeRabbit chooses which tools to apply to a given code review on a case-by-case basis. + +By default, CodeRabbit considers every tool available to it during code reviews. If you want CodeRabbit to disregard certain tools, then you can disable them. + +Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. For example, the following `.coderabbit.yaml` excerpt directs CodeRabbit to use configuration files in the repository's `/pmd-config` directory when using the `pmd` tool: + +```yaml +reviews: + tools: + pmd: + enabled: true + config_file: /pmd-config/*.yml +``` + +For more information, see [Tools](/reference/configuration#tools) in the configuration reference. + +## Other code review settings {#other} + +### Adjust code-review strictness {#profile} + +If you want CodeRabbit to apply a much stricter and more nitpicky stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. + +CodeRabbit is aware of nitpickier output from the linters and other tools that it applies to code reviews, but includes less of it in its own review comments when the profile is set to `chill`. To have CodeRabbit include more nitpicky tool output in reviews, use the `assertive` profile. + +For more information, see [Profile](/reference/configuration#profile) in the configuration reference. + +### Configure pull request approval {#request-changes} + +By default, CodeRabbit doesn't mark pull requests as approved after any code review, even if CodeRabbit doesn't have any further significant changes to suggest. This leaves the job of formal pull request approval entirely up to human reviewers. + +If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. If you do, then CodeRabbit can approve pull requests after it reviewed a pull request and had all of its comments resolved. + +This can be useful if you have a workflow that requires several reviewers to approve a pull request before anyone can merge it. For example, if you have configured your repository on your Git platform to require two approvals for any pull request, then activating this CodeRabbit setting lets you merge a pull request after approval from CodeRabbit plus one human reviewer. This can help reduce your team's code-review load. + +:::note +We recommend a policy of always requiring the approval of at least one human reviewer, even if you allow CodeRabbit to approve pull requests. As with an generative AI technology, CodeRabbit works best as a helpful partner to your team, and not as a replacement for human expertise or judgment. +::: + +For more information, see [Request Changes Workflow](/reference/configuration#request-changes-workflow) in the configuration reference. + +### Configure chat-based issue creation {#chat-issues} + +You can [ask CodeRabbit to create issues for you](https://docs.coderabbit.ai/guides/issue-creation) in the comments of a pull request that it's reviewing. + +If you have integrated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositoriesโ€”the default settingโ€”or disabling it entirely. + +For more information, see [Integrations](/reference/configuration#integrations) in the configuration reference. + +## What's next {#whats-next} + +- [Setup and configuration best practices](/guides/setup-best-practices) diff --git a/docs/guides/install-vscode.md b/docs/guides/install-vscode.md new file mode 100644 index 00000000..03dfa98c --- /dev/null +++ b/docs/guides/install-vscode.md @@ -0,0 +1,63 @@ +--- +title: Install the VSCode extension +description: How to install the CodeRabbit VSCode extension +--- + +This page is about installing the CodeRabbit VSCode extension. For more information about the extension, see +[Review local changes](/code-editors). + +:::note +The instructions on this page are specific to using the extension with VSCode. If you are instead using a VSCode-compatible editor such as Cursor or Windsurf, then the steps that you need to follow are similar, but might require some adaptation. +::: + +## Before you begin + +Before you can use the CodeRabbit VSCode extension, you need a CodeRabbit account. + +If you don't already have an account, you can create one by visiting [the CodeRabbit login page](https://app.coderabbit.ai/login?free-trial). + +## Install the extension + +To install the CodeRabbit extension, follow these steps: + +1. In the editor activity bar, click **Extensions**. + +1. In sidebar, type `coderabbit` into the **Search Extensions in Marketplace** search bar. After a moment, **CodeRabbit** appears in the sidebar as a search result. + +1. Select **CodeRabbit**. A summary of the CodeRabbit VSCode extension appears in the window's main pane, along with installation controls. + +1. If you would like your editor to automatically check for and apply future updates to the extension, then keep the **Auto Update** checkbox selected. Otherwise, clear the checkbox. + +1. Click **Install**. + +1. A **Log in to CodeRabbit to get started** dialog appears. Click **Login**. If the dialog gets dismissed or times out first, then you can follow these alternate steps: + + 1. Click the CodeRabbit icon in the VSCode activity bar. + + 1. Click the **Use CodeRabbit for Free** button. + +1. Grant VSCode permission to open your browser, if asked. + +1. In your web browser, log into your CodeRabbit account. + +1. After signing in, the browser will redirect you back to VSCode. If the redirect does not occur, follow these steps: + + 1. Copy the code displayed in the success window. + + 2. Click **Paste code from browser**. + + 3. Paste the code into the input field that appears. + +This connects your CodeRabbit account with the CodeRabbit VSCode extension. + +## Install using the marketplace website + +If you are using the VSCode IDE, and not an IDE that derives from it such as Cursor or Windsurf, then you can alternatively obtain and install the CodeRabbit VSCode extension by visiting [the extension's page on the Visual Studio Marketplace](https://coderabbit.link/vscode-docs). + +If you do install the extension this way, then you still need to connect your CodeRabbit account to the extension after installing it, as described in the previous section. + +## What's next + +- [Use the VSCode extension](/guides/use-vscode) + +- [Configure the VSCode extension](/guides/config-vscode) diff --git a/docs/guides/issue-chat.md b/docs/guides/issue-chat.md new file mode 100644 index 00000000..ee4f83a7 --- /dev/null +++ b/docs/guides/issue-chat.md @@ -0,0 +1,155 @@ +--- +title: Discuss issues and plan solutions +description: Learn how to use CodeRabbit's chat capabilities within issues +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +# Issue Chat + +CodeRabbit provides an intelligent chat interface directly within GitHub and GitLab issues. This allows developers to have natural conversations about code, get answers to questions, create AI powered code searches, plan features, and gain deeper insights into their codebase - all without leaving their issue tracking workflow. + +## Getting Started + +To start a conversation with CodeRabbit in any issue: + +1. Simply mention `@coderabbitai` (or your custom bot name if configured) in an issue comment +2. Ask your question or make your request in natural language +3. CodeRabbit will analyze the context and respond accordingly + +:::note +Organizations can configure a custom bot name by creating their own bot user. The bot will respond to mentions of that custom name instead of `@coderabbitai`. +::: + +![Github Chat Example](../../static/img/guides/chat-example.png) + +![Gitlab Chat Example](../../static/img/guides/gitlab-issue-chat.png) + +## Core Capabilities + +### Code Analysis + +When chatting in issues, CodeRabbit has access to your repository and powerful tools that allow it to analyze and understand your codebase like a real developer. This includes: + +- Full access to search and analyze the repository code +- Advanced static analysis capabilities +- Command line tools for code search and manipulation (e.g. grep, awk, sed, etc.) +- Complete git history and metadata information +- Access to past CodeRabbit learnings and insights + +This allows CodeRabbit to: + +- Search through code to find relevant examples +- Analyze code patterns and relationships +- Generate statistics and metrics +- Provide context-aware answers about the codebase +- Create AI powered code searches +- Use tribal knowledge from learnings to enhance responses + +![Script Execution Example](../../static/img/guides/chat-script-execution.png) + +![Chat Learnings Example](../../static/img/guides/chat-learnings-use.png) + +### Agentic Thought Chain + +When [agentic thought chain](./agent_chat.md) is enabled, CodeRabbit will use an agentic thought chain to plan out a response using multiple commands in series to articulate a more advanced response. + +![Agentic Thought Chain Example](../../static/img/guides/agentic-thought-chain.png) + +All scripts run in the Agentic Thought Chain are run in a secure sandboxed execution environment. + +### Feature Planning Support + +Issue chat is particularly valuable during feature planning phases: + +- **Code Impact Analysis**: Ask about which parts of the codebase might be affected by proposed changes +- **Pattern Discovery**: Find similar implementations or related code +- **Dependency Mapping**: Understand relationships between components +- **Technical Feasibility**: Get insights into potential challenges or approaches + +Example conversation: + +![Feature Planning Example](../../static/img/guides/feature-planning.png) + +## Additional Use Cases + +### Open Source Support + +Issue chat, like all Pro CodeRabbit features, is free for open source projects. CodeRabbit acts as a powerful support tool for open source maintainers by: + +- Answering common user questions with detailed, contextual responses +- Providing relevant code examples and implementation patterns +- Explaining error messages with debugging context and solutions +- Suggesting step-by-step debugging approaches with code snippets +- Helping triage and categorize issues +- Identifying potential duplicates and related issues +- Offering guidance on best practices and common pitfalls +- Reducing maintainer burden by handling routine support tasks + +Example: + +![Open Source Support Example](../../static/img/guides/open-source-support.png) + +### Documentation Assistance + +Use issue chat to generate high level descriptions of the code and services in your repositories. This can be used to create README documentation which can be used across platforms like [wikis](https://docs.github.com/en/communities/documenting-your-project-with-wikis), [Confluence](https://www.atlassian.com/software/confluence/guides), [Notion](https://www.notion.so/help/guides) and more: + +- Generate high level documentation +- Create usage examples and mermaid diagrams +- Provide content to assist in updating README files +- Write tutorials + +Example: + +![Documentation Assistance Example](../../static/img/guides/high-level-docs.png) + +### Marketing Content Generation + +CodeRabbit can assist with creating content on new features for social media posts, blogs, and more: + +- Release announcements +- Blog post drafts +- Social media content +- Community updates + +Example: + +![Marketing Content Example](../../static/img/guides/marketing-posts.png) + +## Best Practices + +1. **Be Specific** + + - Provide context in your questions + - Mention specific files or features when relevant + - Clarify your goals or requirements + +2. **Iterative Refinement** + + - Start with broad questions + - Follow up for more details + - Ask for clarification when needed + +3. **Collaborative Planning** + + - Include stakeholders in the conversation + - Use issue chat to document decisions + - Reference related issues or PRs + +4. **Keep Questions Focused** + - CodeRabbit works best with clear, specific questions + - Link to specific files, directories or pull requests to help refine answers and provide better context + - CodeRabbit does not generate API documentation, Swagger specs, or other technical documentation that requires high accuracy + - Break down complex questions into smaller, more manageable ones + - Use multiple messages to ask follow up questions if needed + +## Related Resources + +- [Agentic Chat](./agent_chat.md) +- [Issue Creation](./issue-creation.md) +- [Commands](./commands.md) +- [Tooling Guide](../tools/tools.md) diff --git a/docs/guides/issue-creation.md b/docs/guides/issue-creation.md new file mode 100644 index 00000000..f6228b57 --- /dev/null +++ b/docs/guides/issue-creation.md @@ -0,0 +1,50 @@ +--- +title: Create issues +description: Learn how to create issues directly through CodeRabbit +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +CodeRabbit provides seamless issue creation capabilities across multiple platforms including GitHub, GitLab, Jira, and Linear. You can create issues directly from pull request discussions or through the agentic chat interface. + +## Creating Issues Through Agentic Chat + +Using CodeRabbit's chat functions, you can create issues naturally through conversations in comments or comment threads. Simply mention `@coderabbitai` and ask to create an issue. + +![Creating issues inline](/img/guides/create-issue-inline.png) + +When using CodeRabbit's [agentic chat](./agent_chat.md), CodeRabbit will help you format and create the issue with appropriate details based on your description and desired issue platform. + +![Creating issues through agentic chat](/img/guides/create-issue-agentic.png) + +## Supported Platforms + +### GitHub Issues + +CodeRabbit can create GitHub issues directly in your repository. The integration works automatically without additional setup. + +### GitLab Issues + +Similar to GitHub, GitLab issue creation is supported out of the box. + +### Jira + +To create Jira issues, ensure you have [configured the Jira integration](../integrations/issue-integrations.md#jira) first. + +### Linear + +Make sure you have [set up the Linear integration](../integrations/issue-integrations.md#linear) to create Linear issues. + +## Tips for Issue Creation + +- Use natural language when creating issues through agentic chat +- Include code snippets when relevant +- Specify assignees if known +- Set appropriate priorities +- Add deadlines or milestones if applicable + +For more detailed information about issue tracking integrations, see our [Issue Integrations](../integrations/issue-integrations.md) guide. diff --git a/docs/guides/linked-issues.md b/docs/guides/linked-issues.md new file mode 100644 index 00000000..b802cb3b --- /dev/null +++ b/docs/guides/linked-issues.md @@ -0,0 +1,173 @@ +--- +title: Work with linked Issues +description: Learn how to effectively use linked issues with CodeRabbit for better pull request assessments +--- + +# Linked Issues + +CodeRabbit provides intelligent assessment of linked issues to validate whether pull requests properly address their requirements. This guide explains how to effectively use linked issues and write clear issue descriptions for optimal results. + +## Understanding Linked Issues + +A linked issue is one that is explicitly referenced in your pull request description using platform-specific syntax: + +- GitHub: `fixes #123`, `closes #123`, `resolves #123` +- GitLab: `closes #123`, `fixes #123`, or full URLs +- Jira/Linear: Full URLs to tickets + +When CodeRabbit detects linked issues, it analyzes them against your pull request changes to determine if the requirements are met: + +![Linked Issue Assessment Example](/img/guides/linked-issue.png) + +## Best Practices for Issue Writing + +### Issue Titles + +Create descriptive, technical titles that clearly state the goal: + +โœ… Good Examples: + +- "Add PrismaLint integration to configuration flow" +- "Fix race condition in user authentication" +- "Implement caching for GraphQL queries" + +โŒ Poor Examples: + +- "Fix bug" +- "Update code" +- "Improve performance" + +### Issue Descriptions + +Write comprehensive descriptions that provide clear technical context: + +1. **Problem Statement** + + - Clearly describe what needs to be changed + - Include technical details about affected components + - Reference specific files or functions if known + +2. **Expected Solution** + - Outline the desired implementation approach + - Include code examples or pseudo-code when relevant + - List specific acceptance criteria + +Example Description: + +```markdown +Problem: +The configuration system doesn't validate Prisma schema files before deployment, +leading to potential runtime errors. + +Solution: +Integrate PrismaLint into the configuration flow to: + +- Validate schema files during PR checks +- Enforce consistent naming conventions +- Prevent common Prisma anti-patterns + +Affected Components: + +- Configuration validation pipeline +- CI/CD workflow +- Schema validation logic + +Acceptance Criteria: + +- [ ] PrismaLint runs on all PR checks +- [ ] Failed validations block merging +- [ ] Clear error messages for schema issues +``` + +### Consistent Terminology + +Use consistent terminology between issues and pull requests: + +โœ… Good: + +- Use the same technical terms consistently +- Reference components with their exact names +- Maintain consistent naming patterns + +โŒ Poor: + +- Mixing different terms for the same component +- Using vague or non-technical language +- Inconsistent capitalization or formatting + +## Linking Issues Effectively + +### In Pull Requests + +1. **Direct References** + + ```markdown + Fixes #123 + Resolves organization/repo#456 + Closes https://github.com/org/repo/issues/789 + ``` + +2. **Multiple Issues** + + ```markdown + This PR addresses: + + - Fixes #123 + - Closes #456 + - Resolves https://jira.company.com/browse/PROJ-789 + ``` + +### Cross-References + +For better traceability: + +1. Add PR references in issue comments +2. Use complete URLs when linking external systems +3. Maintain bidirectional links between related issues + +## How CodeRabbit Assesses Linked Issues + +CodeRabbit evaluates linked issues by: + +1. Analyzing issue titles and descriptions +2. Comparing changes in the pull request +3. Validating if requirements are met +4. Providing an assessment with: + - โœ…: If the objective has been addressed in the PR. The 'Explanation' column will be left blank. + - โŒ: If the objective has not been addressed in the PR. Here a brief explanation is added to the 'Explanation' column. + - โ“: If it is unclear whether the objective has been addressed. Here a brief explanation is added to the 'Explanation' column. + +:::note +Only the issue title and description are considered in the assessment. Comments and discussion threads are not currently analyzed. +::: + +## Tips for Better Assessments + +1. **Be Specific** + + - Include clear, measurable objectives + - List specific technical requirements + - Reference affected code components + +2. **Provide Context** + + - Explain why changes are needed + - Document current behavior + - Describe expected outcomes + +3. **Use Technical Details** + + - Include file paths when known + - Reference specific functions or classes + - Mention relevant technologies + +4. **Keep It Focused** + - One main objective per issue + - Clear scope boundaries + - Specific acceptance criteria + +## Related Resources + +- [Add review instructions](/guides/review-instructions) +- [Issue Chat](./issue-chat.md) +- [Issue Creation](./issue-creation.md) diff --git a/docs/guides/ondemand-reports.md b/docs/guides/ondemand-reports.md index ae9bed7c..ee385622 100644 --- a/docs/guides/ondemand-reports.md +++ b/docs/guides/ondemand-reports.md @@ -1,8 +1,6 @@ --- -title: On-demand Reports -sidebar_label: On-demand Reports +title: Generate reports on demand description: CodeRabbit offers a way to generate on-demand reports using a simple API request -sidebar_position: 6 --- ```mdx-code-block @@ -12,6 +10,14 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` +## Overview + +This page is about using the CodeRabbit API to generate on-demand reports about your organization's usage of CodeRabbit. For a conceptual overview of reports in CodeRabbit, see [Generate reports](/guides/reports-overview). + +If you're new to CodeRabbit's reporting features, then we recommend starting with [Scheduled reports](/guides/scheduled-reports) to understand the available options and capabilities. + +## API Access + CodeRabbit offers a way to generate on-demand reports using the [CodeRabbit API](https://api.coderabbit.ai/api/swagger/). You will need an API Key to access the CodeRabbit API and generate an on-demand report. @@ -63,3 +69,8 @@ The on-demand report generation endpoints take in inputs as per the schema shown ``` [API Reference](https://api.coderabbit.ai/api/swagger/) + +## What's next + +- [Customize reports](/guides/custom-reports) +- [Scheduled reports](/guides/scheduled-reports) diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md new file mode 100644 index 00000000..5b00d77d --- /dev/null +++ b/docs/guides/organization-settings.md @@ -0,0 +1,30 @@ +--- +title: Set your organization preferences +description: Learn the basics of configuring CodeRabbit for your organization. +--- + +This page is about managing the default settings of CodeRabbit across your +whole Git platform organization. + +For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## About organization settings {#about} + +You can use the CodeRabbit web interface to set the CodeRabbit configuration +for all of the Git repositories associated with your organization. By default, all of your repositories apply your organization's CodeRabbit configuration. + +You have the option to define separate settings for some or +all of your individual repositories, instead. For more information, see [Set your repository preferences](/guides/repository-settings). + +## Browse and modify your organization settings {#modify} + +To view or modify your organizational settings, follow these steps: + +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). +1. In the sidebar, click **Organization Settings** > **Configuration**. +1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. + +## What's next {#whats-next} + +- [Initial configuration guide](/guides/initial-configuration) +- [Configuration best practices](/guides/setup-best-practices#configuration) diff --git a/docs/guides/reports-overview.md b/docs/guides/reports-overview.md new file mode 100644 index 00000000..4d8759ed --- /dev/null +++ b/docs/guides/reports-overview.md @@ -0,0 +1,38 @@ +--- +title: Generate reports +description: Learn about CodeRabbit's reporting capabilities, including scheduled and on-demand reports, and how to customize them +sidebar_label: Overview +--- + +```mdx-code-block +import ReportSchema from "@site/src/components/ReportSchema"; +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +You can track and analyze pull request activity across your organization's repositories by using the CodeRabbit reporting feature. + +## Scheduled and on-demand reports {#types} + +There are two ways to generate reports: + +- **[Scheduled Reports](/guides/scheduled-reports)**: Set up automated, recurring reports that are delivered to your team on a set schedule. Supported delivery channels include the following: + + - Email + - Discord + - Slack + - Teams + +- **[On-demand Reports](/guides/ondemand-reports)**: If you require customized integration of reports with your own tools and workflows, then you can generate reports programmatically through our API. + +For your first reports, we recommend exploring scheduled reports. Its web-based UI can help you get familiar with the options available to you. + +## Customize reports using natural language {#customize} + +For both scheduled and on-demand reports, you define the shape and content of your reports by providing a prompt that instructs CodeRabbit about report that you want, using natural language. The scheduled reports interface includes several example prompts that you can choose from, or you can write your own prompt. For more information, see [Customize reports](/guides/custom-reports). + +## What's next {#whats-next} + +- [Schedule reports](/guides/scheduled-reports) +- [Generate reports on demand](/guides/ondemand-reports) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md new file mode 100644 index 00000000..34ca9d56 --- /dev/null +++ b/docs/guides/repository-settings.md @@ -0,0 +1,43 @@ +--- +title: Set your repository preferences +description: Learn the basics of configuring CodeRabbit for your repository. +--- + +This page is about managing the settings of CodeRabbit for your +Git repository. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## About repository settings {#about} + +CodeRabbit provides two ways to manage its code-review behavior with each of your organization's repositories: + +- Add a `.coderabbit.yaml` file to your repository. +- View or modify your per-repository settings using the CodeRabbit web interface. + +If your repository contains a `.coderabbit.yaml` file at the top level of its default branch, +then CodeRabbit applies all of its settings to that repository's code reviews. CodeRabbit applies its own default values to any configuration settings not defined by your `.coderabbit.yaml` file. + +If your repository doesn't have a `.coderabbit.yaml` file, then CodeRabbit applies the configuration from the CodeRabbit web interface, instead. + +While the web interface provides an easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file [as a best practice](/guides/setup-best-practices#yaml). + +## Configure your repository with `.coderabbit.yaml` + +To add a `.coderabbit.yaml` file to your repository, merge a copy of [our template configuration file](/reference/yaml-template) +to the top level of your default branch. From there, you can update your repository's CodeRabbit configuration by updating the `.coderabbit.yaml` file exactly as you would any other text file in your repository. + +For more information about the `.coderabbit.yaml` file, see [Add a configuration file](/getting-started/configure-coderabbit). + +## Browse and modify your settings using the web interface {#modify} + +To view or modify your repository settings using the CodeRabbit web interface, follow these steps: + +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). +1. In the sidebar, click **Repositories**. +1. Click the gear-shaped **Settings** icon of the repository whose settings you want to view or modify. +1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guides/organization-settings) to this repository. +1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. + +## What's next {#whats-next} + +- [Initial configuration guide](/guides/initial-configuration) +- [Configuration best practices](/guides/setup-best-practices#configuration) diff --git a/docs/guides/review-instructions.md b/docs/guides/review-instructions.md index dfb8ff70..d74024de 100644 --- a/docs/guides/review-instructions.md +++ b/docs/guides/review-instructions.md @@ -1,17 +1,15 @@ --- -title: Review Instructions -sidebar_label: Review Instructions +title: Add review instructions description: CodeRabbit offers various customization options to tailor the reviews to your specific requirements. Customizations can be made using one of the below options. -sidebar_position: 3 --- The guide explains how to add custom review instructions for the entire project. Also, see the guide on how to [configure CodeRabbit](/getting-started/configure-coderabbit). -### Path-based instructions {#path-based} +## Path-based instructions {#path-based} This section explains how to add custom code review instructions for the entire project or specific file paths in your project using glob patterns. Developers @@ -21,6 +19,225 @@ instructions besides the standard review. > For example, you may want to enforce a style guide by file types or directories. +### Default Blocked Paths + +By default, CodeRabbit blocks certain file paths and extensions from being reviewed. If you want CodeRabbit to review any of these blocked paths, you can explicitly include them in your Path Filters configuration. + +
+View complete list of default blocked paths + +The following paths are blocked by default, grouped by category: + +#### Build and Dependency Directories + +| Path Pattern | Description | +| --------------------- | -------------------------- | +| `!**/dist/**` | Build output directory | +| `!**/node_modules/**` | Node.js dependencies | +| `!**/.svelte-kit/**` | SvelteKit build directory | +| `!**/.webpack/**` | Webpack build directory | +| `!**/.yarn/**` | Yarn cache directory | +| `!**/.docusaurus/**` | Docusaurus build directory | +| `!**/.temp/**` | Temporary files directory | +| `!**/.cache/**` | Cache directory | +| `!**/.next/**` | Next.js build directory | +| `!**/.nuxt/**` | Nuxt.js build directory | + +#### Lock Files + +| Path Pattern | Description | +| ----------------------- | ------------------ | +| `!**/package-lock.json` | npm lock file | +| `!**/yarn.lock` | Yarn lock file | +| `!**/pnpm-lock.yaml` | pnpm lock file | +| `!**/bun.lockb` | Bun lock file | +| `!**/*.lock` | Generic lock files | + +#### Generated Code + +| Path Pattern | Description | +| ---------------------- | -------------------------------------- | +| `!**/generated/**` | Generated code directory | +| `!**/@generated/**` | Generated code directory (alternative) | +| `!**/__generated__/**` | Generated code directory (alternative) | +| `!**/__generated/**` | Generated code directory (alternative) | +| `!**/_generated/**` | Generated code directory (alternative) | +| `!**/gen/**` | Generated code directory (alternative) | +| `!**/@gen/**` | Generated code directory (alternative) | +| `!**/__gen__/**` | Generated code directory (alternative) | +| `!**/__gen/**` | Generated code directory (alternative) | +| `!**/_gen/**` | Generated code directory (alternative) | + +#### Binary and Compiled Files + +| Path Pattern | Description | +| ------------- | ----------------------- | +| `!**/*.app` | Application bundle | +| `!**/*.bin` | Binary file | +| `!**/*.class` | Java compiled class | +| `!**/*.dll` | Windows dynamic library | +| `!**/*.dylib` | macOS dynamic library | +| `!**/*.exe` | Windows executable | +| `!**/*.o` | Object file | +| `!**/*.so` | Shared object file | +| `!**/*.wasm` | WebAssembly file | + +#### Archives and Compressed Files + +| Path Pattern | Description | +| ------------ | ----------------------- | +| `!**/*.bz2` | Bzip2 archive | +| `!**/*.gz` | Gzip archive | +| `!**/*.xz` | XZ archive | +| `!**/*.zip` | ZIP archive | +| `!**/*.7z` | 7-Zip archive | +| `!**/*.rar` | RAR archive | +| `!**/*.zst` | Zstandard archive | +| `!**/*.tar` | TAR archive | +| `!**/*.jar` | Java archive | +| `!**/*.war` | Web application archive | +| `!**/*.nar` | NAR archive | + +#### Media Files + +| Path Pattern | Description | +| ------------ | --------------- | +| `!**/*.mp3` | MP3 audio | +| `!**/*.wav` | WAV audio | +| `!**/*.wma` | WMA audio | +| `!**/*.mp4` | MP4 video | +| `!**/*.avi` | AVI video | +| `!**/*.mkv` | MKV video | +| `!**/*.wmv` | WMV video | +| `!**/*.m4a` | M4A audio | +| `!**/*.m4v` | M4V video | +| `!**/*.3gp` | 3GP video | +| `!**/*.3g2` | 3G2 video | +| `!**/*.rm` | RealMedia video | +| `!**/*.mov` | QuickTime video | +| `!**/*.flv` | Flash video | +| `!**/*.swf` | Flash animation | +| `!**/*.flac` | FLAC audio | +| `!**/*.ogg` | OGG audio | + +#### Images and Fonts + +| Path Pattern | Description | +| ------------- | ---------------------- | +| `!**/*.ico` | Icon file | +| `!**/*.svg` | SVG image | +| `!**/*.jpeg` | JPEG image | +| `!**/*.jpg` | JPEG image | +| `!**/*.png` | PNG image | +| `!**/*.gif` | GIF image | +| `!**/*.bmp` | BMP image | +| `!**/*.tiff` | TIFF image | +| `!**/*.webm` | WebM image | +| `!**/*.ttf` | TrueType font | +| `!**/*.otf` | OpenType font | +| `!**/*.woff` | Web Open Font Format | +| `!**/*.woff2` | Web Open Font Format 2 | +| `!**/*.eot` | Embedded OpenType font | + +#### Documents and Data Files + +| Path Pattern | Description | +| --------------- | ----------------------- | +| `!**/*.pdf` | PDF document | +| `!**/*.doc` | Word document | +| `!**/*.docx` | Word document | +| `!**/*.xls` | Excel spreadsheet | +| `!**/*.xlsx` | Excel spreadsheet | +| `!**/*.ppt` | PowerPoint presentation | +| `!**/*.pptx` | PowerPoint presentation | +| `!**/*.csv` | CSV data file | +| `!**/*.tsv` | TSV data file | +| `!**/*.dat` | Data file | +| `!**/*.db` | Database file | +| `!**/*.parquet` | Parquet data file | + +#### Development and System Files + +| Path Pattern | Description | +| -------------------- | ------------------- | +| `!**/tags` | Tags file | +| `!**/.tags` | Tags file | +| `!**/TAGS` | Tags file | +| `!**/.TAGS` | Tags file | +| `!**/.DS_Store` | macOS system file | +| `!**/.cscope.files` | Cscope files | +| `!**/.cscope.out` | Cscope output | +| `!**/.cscope.in.out` | Cscope input/output | +| `!**/.cscope.po.out` | Cscope output | +| `!**/*.log` | Log file | +| `!**/*.map` | Source map | +| `!**/*.out` | Output file | +| `!**/*.sum` | Checksum file | +| `!**/*.work` | Work file | +| `!**/*.md5sum` | MD5 checksum file | + +#### Game and 3D Assets + +| Path Pattern | Description | +| ------------------- | ---------------------- | +| `!**/*.tga` | Targa image | +| `!**/*.dds` | DirectDraw surface | +| `!**/*.psd` | Photoshop document | +| `!**/*.fbx` | FBX 3D model | +| `!**/*.obj` | OBJ 3D model | +| `!**/*.blend` | Blender file | +| `!**/*.dae` | COLLADA 3D model | +| `!**/*.gltf` | GL Transmission Format | +| `!**/*.hlsl` | HLSL shader | +| `!**/*.glsl` | GLSL shader | +| `!**/*.unity` | Unity scene | +| `!**/*.umap` | Unreal map | +| `!**/*.prefab` | Unity prefab | +| `!**/*.mat` | Material file | +| `!**/*.shader` | Shader file | +| `!**/*.shadergraph` | Shader graph | +| `!**/*.sav` | Save file | +| `!**/*.scene` | Scene file | +| `!**/*.asset` | Asset file | + +#### Python-specific Files + +| Path Pattern | Description | +| -------------- | --------------------- | +| `!**/*.pyc` | Python compiled file | +| `!**/*.pyd` | Python dynamic module | +| `!**/*.pyo` | Python optimized file | +| `!**/*.pkl` | Python pickle file | +| `!**/*.pickle` | Python pickle file | + +#### Go-specific Files + +| Path Pattern | Description | +| ---------------- | ------------------------------- | +| `!**/*.pb.go` | Protocol buffer Go file | +| `!**/*.pb.gw.go` | Protocol buffer gateway Go file | + +#### Terraform Files + +| Path Pattern | Description | +| ---------------------- | ---------------------- | +| `!**/*.tfstate` | Terraform state file | +| `!**/*.tfstate.backup` | Terraform state backup | + +#### Minified Files + +| Path Pattern | Description | +| ------------------ | ------------------------------ | +| `!**/*.min.js` | Minified JavaScript | +| `!**/*.min.js.map` | Minified JavaScript source map | +| `!**/*.min.js.css` | Minified CSS | + +
+ +You can also edit your path filters directly in the UI by navigating to: **Configuration** > **Review** > **Settings** > **Path Filters** + +CircleCI Integration + ### Sample Usage :::note diff --git a/docs/guides/roles.md b/docs/guides/roles.md new file mode 100644 index 00000000..c919f57d --- /dev/null +++ b/docs/guides/roles.md @@ -0,0 +1,138 @@ +--- +title: Control administrative access +description: Using the role-based authorization features of CodeRabbit +--- + +You can control which CodeRabbit +administrative features are available to your organization's user accounts by +assigning and updating account roles. + +## Overview of CodeRabbit roles {#overview} + +Every CodeRabbit account has exactly one role for each organization +that account is associated with. +For example, if you belong to two GitHub-based organizations that use +CodeRabbit, then you have one CodeRabbit role set for each of those two +organizations. + +CodeRabbit roles determine your ability to read or change various +billing, account management, and other administrative functions related to +an organization. The roles are as follows: + +- **Admin**: allows full read/write access to all CodeRabbit administrative features. +- **Member**: allows read-only access to a limited set of administrative settings. This role + is appropriate for most developers in an organization. +- **Billing Admin**: allows read/write access to features specific + to a subscription and billing management, and limited access to other administrative features. + +CodeRabbit users with the **Admin** role can modify the roles of other users in the +organization. + +For a complete list of the administrative functions available to each role, see +[Role permissions](#permissions). + +### CodeRabbit roles and Git platform roles {#and-upstream} + +Modifying an account's CodeRabbit role doesn't have any "upstream" +effect on that account's role or permissions in your organization's Git platform. +Similarly, changes to an account's role on your organization's Git platform don't +affect that account's CodeRabbit role. + +For example, if you have CodeRabbit integrated with a GitHub organization, and you change an account's CodeRabbit role from **Member** to **Admin**, then that account's +permission or ownership level with your GitHub organization doesn't change as a result. + +### CodeRabbit roles and developer features {#and-features} + +CodeRabbit roles affect only access to administrative features. Roles have no effect on using CodeRabbit developer features, such as automated code reviews. + +For example, if an organization has a Pro-tier +CodeRabbit account, then any user account with a seat assigned to it can use Pro-tier features with the organization's private repositories, regardless of that account's role. + +For more information on seat and subscription management, see [Manage your subscription](/getting-started/subscription-management). + +## Default roles {#defaults} + +CodeRabbit assigns every user account in your organization a default role, +using the following metrics: + +- If a user has an ownership-level role with the Git platform organizationโ€”for example, + **Admin** on GitHub, or **Owner** on Bitbucketโ€”then that user receives the default + CodeRabbit role of **Admin**. +- Otherwise, the user receives the **Member** role by default. + +You can update a user's role from its default setting by following the steps detailed in the next section. This requires that your own account +has an **Admin** role with the organization. + +CodeRabbit applies these defaults only when initially setting up for an +account within an organization. Subsequent "upstream" role changes don't affect +an account's CodeRabbit role. + +## View or set roles {#how-to} + +You can view and set roles from the CodeRabbit dashboard, as detailed in the +following sections. + +### View roles {#view-roles} + +To view a list of your organization's role assignments, follow these steps: + +1. Go to the [CodeRabbit dashboard](https://app.coderabbit.ai/settings/repositories). +1. At the top of the sidebar, select the organization whose user roles you want to view. +1. On the sidebar, click **Subscription**. + +This displays a table of all of the CodeRabbit **Admin** and **Member** accounts associated with the selected +organization. In this table, the **Role** column displays the CodeRabbit role for +each account. + +To view a list of accounts with the **Billing Admin** role, click the **Billing Admins** tab located above the table of user accounts. + +### Set roles {#set-roles} + +:::note +To modify users' CodeRabbit accounts, your own account must have the **Admin** role within your organization. +::: + +To change a user account's CodeRabbit role, follow these steps: + +1. Go to your organization's list of user accounts, as detailed in the previous section. + If you have the **Admin** role within this organization, then the **Role** column in the user accounts table contains selectable menus. +1. Click the menu in the user's **Role** column, and select the appropriate role from + the list. + +The only roles you can assign through this method are **Admin** and **Member**. +You can't grant the **Billing Admin** role to an existing user account. To add an account with the **Billing Admin** role, see the next section. + +### Add billing admin accounts {#billing} + +:::note +Billing Admin users don't require CodeRabbit seat licenses. You can add Billing Admin users regardless of how many seat licenses you have available. +::: + +To add a CodeRabbit user account with the **Billing Admin** role, follow these steps: + +1. Go to your organization's list of user accounts, as detailed in [View roles](#view-roles). +1. Click **Invite Billing Admin**. +1. Enter the name and email address of the billing administrator who you want to invite to the organization. + +This sends an email to the address that you specified. After the recipient completes the process of joining your organization in CodeRabbit, then their record appears in the user accounts list, under the **Billing Admins** tab. + +## Role permissions {#permissions} + +The following table lists the CodeRabbit administrative functionality +available to each of the CodeRabbit roles. + +| Resource | Admin | Member | Billing Admin | +| ----------------------- | ---------- | --------- | ------------- | +| Learning Resources | Read/Write | Read-only | No access | +| Metrics/Dashboard | Read/Write | No access | No access | +| Reports | Read/Write | Read-only | No access | +| Integrations | Read/Write | Read-only | No access | +| Repository Settings | Read/Write | Read-only | No access | +| Organization Settings | Read/Write | Read-only | No access | +| User Management | Read/Write | Read-only | Read-only | +| Subscription Management | Read/Write | Read-only | Read/Write | +| Billing Management | Read/Write | No access | Read/Write | + +## What's next {#whats-next} + +- [Manage your subscription](/getting-started/subscription-management) diff --git a/docs/guides/scheduled-reports.md b/docs/guides/scheduled-reports.md new file mode 100644 index 00000000..34c59032 --- /dev/null +++ b/docs/guides/scheduled-reports.md @@ -0,0 +1,257 @@ +--- +title: Schedule reports +description: Learn how to set up automated recurring reports with CodeRabbit Pro +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +CodeRabbit Pro offers automated recurring reports that provide insights into your GitHub organization's activities. These reports can be customized and delivered through various channels to help teams stay informed about development progress. + +For a conceptual overview of reports in CodeRabbit, see [Generate reports](/guides/reports-overview). + +## Setting Up a Recurring Report + +1. Navigate to **Recurring Reports** in the [CodeRabbit dashboard](https://app.coderabbit.ai/reports/recurring) +2. Click **Create Report** +3. Configure the following settings: + +### Schedule Configuration + +![Schedule Configuration](/img/guides/report-params.png) + +The schedule configuration allows you to set precise timing for your reports: + +#### Frequency Options + +- **Days of Week** + + - Select any combination of days (Sun-Sat) + - Set frequency (every 1-3 weeks) + - Ideal for weekly team syncs or sprint reviews + +- **Days of Month** + - Select specific dates (1-31) + - Special date handling: + - 31st: Runs on the last day of every month + - 30th: Skips February + - 29th: Only runs in February during leap years + +#### Time Settings + +- Set specific time for report generation +- Choose from comprehensive timezone list (e.g., America/New_York) +- Reports run at the specified time in the selected timezone + +:::tip Timezone Consideration +Choose a time that works for all team members, especially for distributed teams across different time zones. +::: + +### Report Parameters + +Reports can be filtered using multiple parameters: + +- **Repositories**: Select specific repositories to monitor +- **Labels**: Filter by GitHub labels with operators: + - IN: Match any selected label + - ALL: Match all selected labels +- **Users**: Filter by specific GitHub users +- **Teams**: Filter by organization teams + - Note: Team filtering is not available for GitLab repositories + +:::note Parameter Configuration +Each parameter can be: + +- Added or removed as needed +- Combined with other parameters for precise filtering +- Modified using different operators + ::: + +### Report Content + +Reports include comprehensive PR information: + +- PR metadata: + - Title and description + - Creation and last activity dates + - Status (merged, mergeable, draft) + - State (open, closed, merged) +- Collaboration details: + - Labels and reviewers + - Comments and discussions + - Team associations +- Repository context +- Author information + +:::info Stale PR Detection +PRs are marked as stale after 168 hours (7 days) of inactivity. This helps identify potential workflow bottlenecks. +::: + +### Report Templates + +CodeRabbit offers several built-in templates: + +1. **Daily Standup Report**: A concise summary of pull requests and activities. +2. **Sprint Report**: A structured overview of sprint goals, completed tasks, in-progress work, and blockers. +3. **Release Notes**: A high-level changelog with summary and significant changes. +4. **[Custom Templates](custom-reports.md)**: Create your own format using prompts. Allows for endless customization such as native language reporting (Japanese, Spanish, French, etc.), custom formatting, custom titles, and more. + +Example custom prompt: + +```text +Please provide a summary of: +- All pull request activities +- Related issues and comments +- Code review discussions +- Quality gate status + +Do not include: +- Bot conversations +- Sequence diagrams +``` + +### Communication Channels + +Configure where your reports will be delivered: + +![Report Delivery Platforms](/img/guides/report-platforms.png) + +#### Email + +- Enter individual email addresses +- Use distribution lists for team-wide delivery + +#### Slack/Discord + +1. Connect your workspace through OAuth +2. Select target channels +3. CodeRabbit bot will be installed automatically +4. If installation fails check the [slack service](https://slack-status.com/) or [discord status](https://discordstatus.com/) page for any outages. + +#### Microsoft Teams + +1. Create a webhook in your Teams channel +2. Add the webhook URL to CodeRabbit +3. Select target channels + +:::tip +Create separate reports if you need to send to multiple channels with different formats. Learn more about [custom report formats](./custom-reports.md). +::: + +## Managing Reports + + + +### Preview Reports + +Test your configuration using the **Preview Report** button to generate a sample report instantly. + +### Grouping Options + +Reports can be organized hierarchically using groups and subgroups: + +#### Primary Grouping + +Select from these options to organize your main report structure: + +- **None**: No grouping, flat list of items +- **Repository**: Group by source repository +- **Label**: Group by PR labels +- **Team**: Group by team ownership +- **User**: Group by PR author + +#### Subgrouping + +After selecting a primary group, you can add a secondary level of organization: + +- Choose any remaining grouping option for further categorization +- Subgroups create a nested hierarchy within primary groups +- Select "None" to use only primary grouping + +:::tip +Choose grouping options that match your team's workflow. For example: + +- Use Repository โ†’ Team for large multi-team organizations +- Use User โ†’ Label to track individual contributions by type +- Use Team โ†’ Repository to monitor team activity across repos + +::: + +### Report Lifecycle Management + +Control your reports through their entire lifecycle: + +#### Editing Reports + +- Make your desired changes to any configuration settings +- Click the **Save** button to apply your changes +- Changes take effect from the next scheduled run + +:::tip +Remember to click **Save** when you're done making changes. Your modifications will be discarded if you navigate away without saving. +::: + +#### Disabling Reports + +- Toggle the **Active** switch to temporarily pause a report +- Disabled reports: + - Maintain their configuration + - Skip scheduled runs + - Can be re-enabled at any time + - Show "Disabled" status in the dashboard + +#### Deleting Reports + +- Click the **Delete** button (trash icon) next to the report +- Confirm deletion in the modal +- Note: This action is permanent and cannot be undone +- All report history and configuration will be removed + +:::warning +Deleting a report will immediately stop all scheduled runs and remove access to historical reports. Consider disabling instead of deleting if you might need the report again. +::: + +## Best Practices + +1. **Scheduling** + + - Align report timing with your team's workflow + - Consider timezone differences for distributed teams + +2. **Content** + + - Keep prompts focused on actionable information + - Use grouping to improve readability + - Exclude unnecessary details that may create noise + +3. **Distribution** + - Use channels your team actively monitors + - Consider creating separate reports for different audiences (e.g., management vs. development team) + +## Related Resources + +- [Custom Reports](./custom-reports.md) +- [On-demand Reports](./ondemand-reports.md) +- [API Documentation](https://api.coderabbit.ai/api/swagger/) + +## What's next + +- [Customize reports](/guides/custom-reports) +- [Generate reports on demand](/guides/ondemand-reports) diff --git a/docs/guides/setup-best-practices.md b/docs/guides/setup-best-practices.md new file mode 100644 index 00000000..c6caa094 --- /dev/null +++ b/docs/guides/setup-best-practices.md @@ -0,0 +1,131 @@ +--- +title: "Setup and configuration best practices" +description: Best practices for seting up CodeRabbit. +sidebar_label: Setup and configuration +--- + +This page contains our best-practice advice for setting up CodeRabbit, and then +configuring its code review behavior. + +## Setup best practices {#setup} + +This section lists our recommendations for setting up CodeRabbit with your +Git platform, and integrating CodeRabbit with other tools and services. + +### Give CodeRabbit its own user account {#user} + +CodeRabbit works best when it has a user account all to itself on your Git platform. +Your team treats this account as a bot or service accountโ€”even on platforms that don't +have a formal concept of separate service accounts, such as Bitbucket Cloud. + +If you use GitHub, then CodeRabbit sets up a service account named `CodeRabbitAI` for you as soon as you connect your GitHub organization to CodeRabbit. On other platforms, such as Bitbucket Cloud or Gitlab, you must set this account up yourself. + +For platform-specific instructions about setting up this user, see +[Integrate with Git platforms](/platforms/). + +### Let CodeRabbit read your issue tracker {#issues} + +CodeRabbit can report on whether the changes proposed by a pull request +successfully address specific, ticketed issues referenced by that pull request. + +For this to work, CodeRabbit needs read access to your team's issue management system. + +If you use the built-in issue management of either GitHub or GitLab, then +CodeRabbit issue integration works without any further setup. + +If you use issue management systems external from your Git platform, then you need to +take additional steps to integrate CodeRabbit with your team's issues. + +These are the external issue management systems that CodeRabbit supports: + +- Jira +- Linear + +For more information, see [Integrate issue tracking](/integrations/issue-integrations/). + +### Set up basic reports for your team {#reports} + +CodeRabbit has a flexible reporting feature that can help keep your whole team +up-to-date about the latest changes to your repositories. We recommend setting +up at least the following scheduled reports, using templates available +through the CodeRabbit web interface: + +- A daily standup report, grouped by contributor. +- Regular release notes, grouped by repository. + +For more information, see [Generate reports](/guides/reports-overview). + +## Configuration best practices {#configuration} + +This section lists our recommendations for configuring the way that CodeRabbit +works with your individual repositories. + +### Fine-tune reviews using YAML files {#yaml} + +CodeRabbit gives you two ways to configure how it works with your team's repositories: + +- The **Organization Settings** and **Repositories** pages of [the + CodeRabbit web interface](https://app.coderabbit.ai/login) +- A [`.coderabbit.yaml` file](/getting-started/configure-coderabbit/) in your repository + +The web interface lets you set up your organization's code review +preferences rapidly, and can help you get familiar with CodeRabbit configuration options. + +We recommend adding a `.coderabbit.yaml` file to repositories, as well. Using this file has several advantages over using only the web interface: + +- It applies version control to your repository's CodeRabbit settings, letting you track changes, view configuration history, and revert to previous configurations as needed. +- During code reviews, CodeRabbit loads the file along with rest of your repository. This means that you can include setting changes as part of a pull request, and CodeRabbit both analyzes and applies these settings during its review. +- The file makes the repository's CodeRabbit settings transparent to all of the repository's contributors. + +Repository-level settings defined by a `.coderabbit.yaml` take precedence over the +settings defined for that repository or for your organization using the CodeRabbit web interface. + +For more information, see [Add a configuration file](/getting-started/configure-coderabbit/). + +### Speed up reviews by adding path filters {#filters} + +If your repository contains a lot of data or other content that CodeRabbit +doesn't need for code review context, then you can include _path filters_ in +your repository configuration. For example, a filter of `!dist/**` tells CodeRabbit +to disregard everything in your repository's top-level `dist` directory when +preparing a code review. + +Reducing the number of contextual files that CodeRabbit needs to read and analyze +when preparing a code review can help make its code reviews faster. + +You can define path filters using the CodeRabbit +web interface, or with [a `.coderabbit.yaml` file](/getting-started/configure-coderabbit/). + +### Trust the defaults {#defaults} + +CodeRabbit gives you control over a number of its core code-review features, letting you deactivate them entirely for your repositories if needed. We have chosen the default settings to meet the needs of most organizations and situations, and recommend leaving these settings at their default values if possible: + +- **Cache**: Keep [the cache](/reference/caching) enabled to let CodeRabbit temporarily remember details about your repository + between reviews, which improves review speed. +- **Tools**: By default, CodeRabbit is allowed to use all of the [open-source linters and analyzer + tools](/tools) that are available to it during code reviews. This helps CodeRabbit keep its reviews broad and flexible. +- **Knowledge base**: CodeRabbit [knowledge base](/integrations/knowledge-base/) features, including learnings and issue tracking, can require data retention. If your organization needs to meet stricter data-retention policies, then you can opt out of using these features. + +You can configure your use of the above features using the CodeRabbit web interface, or [a `.coderabbit.yaml` file](/getting-started/configure-coderabbit/). + +### Write specific CI/CD error messages {#pipeline} + +CodeRabbit can analyze the logs of continuous integration (CI) or continuous +deployment (CD) tools in your pipeline. CodeRabbit can provide better remediation +advice about CI/CD failures during code reviews if your tools' error messages +are as specific as possible when reporting failures. + +For CodeRabbit to provide the best advice, configure your CI/CD failure output to include the following information: + +- File names associated with the failure. +- Line numbers that identify where the failure occurred in those files. +- An explanation of the failure, including relevant error codes or diffs. + +[This pull request](https://github.com/ff14-advanced-market-search/temp-fe/pull/47/files) shows an example of expanding the context of a CI error, +in this case including a diff to show why a code-formatter check failed. + +--- + +## What's next {#whats-next} + +- [Code review best practices](/guides/code-review-best-practices) diff --git a/docs/guides/uninstall-vscode.md b/docs/guides/uninstall-vscode.md new file mode 100644 index 00000000..27266d47 --- /dev/null +++ b/docs/guides/uninstall-vscode.md @@ -0,0 +1,25 @@ +--- +title: Uninstall the VSCode extension +description: How to uninstall the CodeRabbit VSCode extension +--- + +This page is about uninstalling the CodeRabbit VSCode extension. For more information about the extension, see +[Review local changes](/code-editors). + +:::note +The instructions on this page are specific to using the extension with VSCode. If you are instead using a VSCode-compatible editor such as Cursor or Windsurf, then the steps that you need to follow are similar, but might require some adaptation. +::: + +## Uninstall the extension + +To uninstall the VSCode extension, follow these steps: + +1. In the VSCode activity bar, click the CodeRabbit icon. + +1. In the CodeRabbit sidebar, click the door-shaped **Logout** icon. + +1. In the VSCode activity bar, click the **Extensions** icon. + +1. In the Extensions sidebar, click the gear-shaped **Manage** icon next to CodeRabbit in the list of installed extensions. + +1. Select **Uninstall**. diff --git a/docs/guides/use-vscode.md b/docs/guides/use-vscode.md new file mode 100644 index 00000000..169dc2a8 --- /dev/null +++ b/docs/guides/use-vscode.md @@ -0,0 +1,109 @@ +--- +title: Use the VSCode extension +description: How to review your code with the VSCode extension. +--- + +This page is about performing local code reviews using the CodeRabbit VSCode extension. For more information about the extension, see +[Review local changes](/code-editors). To learn how to install the extension, see [Install the VSCode extension](/guides/install-vscode). + +The CodeRabbit VSCode extension works by comparing changes in your current, checked-out Git branch against another branch in your local repository. You can use the extension to automatically perform full-branch changes after every commit, or make different kinds of comparisons by manually requesting a review. + +:::note +The instructions on this page are specific to using the extension with VSCode. If you are instead using a VSCode-compatible editor such as Cursor or Windsurf, then the steps that you need to follow are similar, but might require some adaptation. +::: + +## Automatically review local commits {#auto-reviews} + +You can let CodeRabbit automatically review commits that you make to your local Git repository. These automatic reviews compare all committed changes against the branch that your working branch is based on. + +To perform an automatic review, follow these steps: + +1. Perform a Git commit using VSCode or terminal. After you do this, a dialog appears in your VSCode window, asking **Would you like to start a review?** + +1. Click **Yes**. The CodeRabbit sidebar appears in your VSCode window. + +1. Wait for the review to complete. This might take a few minutes. To cancel a review in progress, click **Stop the review**. + +After the review completes, you can browse and respond to review comments as described in [Work with code reviews](#work). + +You can optionally configure the extension to either always or never perform automatic code reviews on commit, instead of displaying this yes-or-no dialog. For more information, see [Configure automatic review behavior](/guides/config-vscode#auto-reviews). + +For more control of code reviews performed using the CodeRabbit VSCode extension, you can manually request a review, as detailed in the following section. + +## Manually request code reviews {#manual-reviews} + +To manually review changes in a local Git branch using the CodeRabbit VSCode extension, follow these steps: + +1. Click the CodeRabbit icon in the VSCode activity bar. The CodeRabbit sidebar appears. + +1. If you want to compare your code changes to a branch other than its base branch, then follow these steps: + + 1. In the sidebar, under **Branch**, click the name of the base branch. A **Select a base branch** dialog appears, listing other branches in your local Git repository. + + 1. Select the name of a base branch to compare against. + +1. Select one of the review-action options from the menu at the bottom of the CodeRabbit sidebar: + + - To review all changes between the base branch and your current branch, including both committed and uncommitted changes, select **Review all changes**. This is the default selection. + + - To limit the review to only changes on your branch that you have committed, select **Review committed changes**. This includes commits that you have pushed to your remote repository, if any, as well as any local commits. + + - To limit the review to only uncommitted changes on your branch, select **Review uncommitted changes**. This includes both staged and unstaged changes. + +1. Refer to the list of **Files to review** in the sidebar. This list represents all of the files that the selected review action includes. To change this list of files, repeat the previous step to choose a different review action, or use Git features like `git stash` to selectively remove changes. + +1. To perform the review, click the button part of the menu. The CodeRabbit sidebar displays a **Review** section with the review's progress. + +1. Wait for the review to complete. This might take a few minutes. To cancel a review in progress, click **Stop the review**. + +After the review completes, you can browse and respond to review comments as described in the following section. + +## Work with code reviews {#work} + +The CodeRabbit VSCode extension presents code reviews as a series of actionable comments, connected to specific files and lines. It gives you tools to apply its suggestions quickly, when possible. + +### Browse comments {#browse} + +After the extension finishes its review, it adds any comments to the CodeRabbit sidebar under the **Files** heading in the **Reviews** section. + +Each item in **Files** is a comment referring to one or more lines in that file. Click the comment to see a detailed, inline comment in the editor, attached to the appropriate file and lines. + +You can react to these comments however you want: you can apply their advice literally, or let them guide you to find alternate solutions, or ignore them entirely. CodeRabbit comments are metadata stored with VSCode, and are not part of your files. The presence of comments doesn't block your use of version control. + +### Apply suggested changes {#apply} + +Whenever possible, the CodeRabbit VSCode extension attaches discrete change suggestion to comments in the form of code diffs. For example, if it detects a typo in a new function name, the extension might attach a diff with a suggested correction. + +If you agree with CodeRabbit about the suggested fix and want to apply to exactly as it proposes, click the checkmark-shaped **Apply suggested change** icon in the inline comment. The extension makes the change for you in the editor. + +### Request help from your AI coding agent {#agent} + +If CodeRabbit determines that an AI coding agent could help with resolving one of its comments, then it adds a star-shaped **Fix with AI** icon to the inline display of that comment. To have the extension generate a request for an AI agent to address the comment, click this icon. + +Depending upon your IDE and the current extension settings, the extension performs one of the following actions: + +- If you are using VSCode with Copilot installed, then the extension can send the request directly to Copilot. +- If you have Claude Code installed, then the extension can send the request to the `claude` command-line program. +- As a fallback, the extension can copy the request, phrased as an AI prompt, to your clipboard. You can then manually paste this prompt into the coding AI of your IDE. + +For more information about configuring this behavior, see [Configure AI agent integration](/guides/config-vscode#agent). + +### Ignore or collapse comments {#ignore} + +To remove a comment from the editor, click its **Ignore** icon. + +To remove a comment but keep an icon in the editor noting its presence, click its **Collapse** icon. + +To see an ignored or collapsed comment in the editor again, click its summary in the CodeRabbit sidebar. + +### Browse previous reviews {#previous} + +If you have performed reviews prior to the most recent review in the current VSCode window, then you can browse the comments from these reviews under the **Previous reviews** heading in the CodeRabbit sidebar. + +If a past review comment no longer applies to the current state of your code, then clicking that comment won't display a detailed comment or suggestion in the editor. + +## What's next {#whats-next} + +- [Configure the VSCode extension](/guides/config-vscode) + +- [Uninstall the VSCode extension](/guides/uninstall-vscode) diff --git a/docs/integrations/code-graph-analysis.md b/docs/integrations/code-graph-analysis.md new file mode 100644 index 00000000..5958640a --- /dev/null +++ b/docs/integrations/code-graph-analysis.md @@ -0,0 +1,64 @@ +--- +title: Analyze your code changes +description: Learn about CodeRabbit's intelligent graph-based code analysis. +--- + +# CodeRabbit Code Graph Analysis + +## What is Code Graph Analysis? + +Code Graph Analysis is an intelligent code analysis feature that enhances your code reviews by automatically mapping relationships between files in your codebase. By +understanding how your code connects and interacts, Code Graph provides concrete snippets of context that makes reviews more effective and insightful. + +## How Code Graph Analysis Enhances Your Reviews + +When reviewing code with CodeRabbit, Code Graph Analysis automatically: + +- **Maps symbol definitions and references** across your entire codebase +- **Analyzes commit history** to identify files that frequently change together +- **Builds relationship graphs** showing how different parts of your code connect +- **Enriches reviews with contextual information** about related code + +Code Graph Analysis is also available in the CodeRabbit Chat. CodeRabbit Chat will automatically analyze your codebase with it when the agent deems it necessary. + +## Key Features + +### Three Types of Contextual Information + +Code Graph Analysis adds three powerful layers of context to your reviews: + +1. **Definition Files**: Files containing definitions that are referenced in the current code +2. **Reference Files**: Files that reference symbols defined in the current code +3. **Related Files**: Files that appear related based on usage patterns and commit history + +### Language Support + +Code Graph Analysis works with: + +- Bash +- C +- C# +- C++ +- CSS +- Elixir +- Go +- Java +- JavaScript +- Kotlin +- Lua +- PHP +- Python +- Ruby +- Rust +- Scala +- Swift +- TSX +- TypeScript + +## Availability + +Code Graph Analysis is available on the Lite tier and above. + +--- + +Learn more about CodeRabbit's advanced features at [coderabbit.ai](https://coderabbit.ai) diff --git a/docs/integrations/issue-integrations.md b/docs/integrations/issue-integrations.md new file mode 100644 index 00000000..0ad69f54 --- /dev/null +++ b/docs/integrations/issue-integrations.md @@ -0,0 +1,87 @@ +--- +title: Integrate issue tracking +description: Learn about CodeRabbit's integrations with issue tracking systems like Jira and Linear. +--- + +CodeRabbit integrates with popular issue tracking systems to provide context from linked and related issues while reviewing code. + +## Jira {#jira} + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +### CodeRabbit App + +1. Navigate to [integrations][integrations] in the CodeRabbit app. +2. Toggle the Jira switch to enable the integration. + +Upon enabling the Jira integration, CodeRabbit will redirect you to the Jira login page. Enter your Jira credentials to authenticate the integration. + +### CodeRabbit Configuration + +1. Add Jira's Project Keys to the `knowledge_base.jira.project_keys` field in your project's CodeRabbit configuration file at `.coderabbit.yaml`. + +### Example Usage + +You can link an issue to your pull request, allowing CodeRabbit to assess whether your changes satisfy the issue's requirements. + +To link a Jira Issue, you can add the Jira Issue into the PR description as shown below. + +```text +// (Jira Project Key - Issue Number) +Closes CR-5 +``` + +You can also create new Jira issues directly through CodeRabbit. See our [Issue Creation guide](../guides/issue-creation.md#jira) for details. + +## Linear {#Linear} + +```mdx-code-block + +``` + +With CodeRabbit, you can easily link your pull requests with Linear. It makes your life simpler by automatically creating Linear issues with all the code context, keeping your issues and pull requests in sync both ways. Plus, it lets you generate issues straight from pull requests, track how you're hitting your goals, and even turn code review feedback into actionable tasks in Linear. + +### CodeRabbit App + +1. Navigate to [integrations][integrations] in the CodeRabbit app. +2. Toggle the Linear switch to enable the integration. + +Upon enabling the Linear integration, CodeRabbit will redirect you to the Linear login page. Enter your Linear credentials to authenticate the integration. + +### CodeRabbit Configuration + +1. Add Linear's Team Keys to the `knowledge_base.linear.team_keys` field in your project's CodeRabbit configuration file at `.coderabbit.yaml`. + +[integrations]: https://app.coderabbit.ai/integrations + +### Example Usage + +To link a Linear Issue, you can add the Linear Issue via the team key and issue number into the PR description as shown below. + +```text +// (Linear Team Key - Issue Number) +Closes ENG-123 +``` + +You can also create new Linear issues directly through CodeRabbit. Learn more in our [Issue Creation guide](../guides/issue-creation.md#linear). + +## GitHub + +```mdx-code-block + +``` + +GitHub issue integration works automatically without any additional setup required. + +### Example Usage + +To link a GitHub Issue, you can add the issue into the PR description as shown below. + +```text +// (# GitHub Issue Number) +Closes #123 +``` diff --git a/docs/integrations/knowledge-base.md b/docs/integrations/knowledge-base.md index d4c52540..1da862e0 100644 --- a/docs/integrations/knowledge-base.md +++ b/docs/integrations/knowledge-base.md @@ -1,84 +1,42 @@ --- -title: Knowledge Base +title: Apply your code review preferences description: Learn about CodeRabbit's internal knowledge base and its integrations with external services. -sidebar_label: Knowledge Base -sidebar_position: 4 --- CodeRabbit utilizes an internal knowledge base that integrates with several external services to provide a seamless review and issue management experience. -## Issues +## Issue Tracking Integration -The issues knowledge base allows CodeRabbit to use the context from linked and related issues while reviewing the code. - -### Jira {#jira} - -```mdx-code-block -import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; - - -``` - -#### CodeRabbit App - -1. Navigate to [integrations][integrations] in the CodeRabbit app. -2. Toggle the Jira switch to enable the integration. - -Upon enabling the Jira integration, CodeRabbit will redirect you to the Jira login page. Enter your Jira credentials to authenticate the integration. - -#### CodeRabbit Configuration - -1. Add Jira's Project Keys to the `knowledge_base.jira.project_keys` field in your project's CodeRabbit configuration file at `.coderabbit.yaml`. - -### Linear {#Linear} - -```mdx-code-block - -``` - -#### CodeRabbit App - -1. Navigate to [integrations][integrations] in the CodeRabbit app. -2. Toggle the Linear switch to enable the integration. - -Upon enabling the Linear integration, CodeRabbit will redirect you to the Linear login page. Enter your Linear credentials to authenticate the integration. - -#### CodeRabbit Configuration - -1. Add Linear's Team Keys to the `knowledge_base.linear.team_keys` field in your project's CodeRabbit configuration file at `.coderabbit.yaml`. - -[integrations]: https://app.coderabbit.ai/integrations +CodeRabbit can integrate with your issue tracking systems to provide better context during code reviews. For details on setting up issue tracking integrations, see our [Issue Integrations](./issue-integrations.md) guide. ## Learnings {#learnings} You can tell the bot to remember things about either specific lines in files, or generally about the entire repository, or even across repositories. -For example you can add a comment in a PR to chat directly with CodeRabbit. `@coderabbitai always remember to enforce camelCase`. +For example, you can add a comment in a PR to chat directly with CodeRabbit. `@coderabbitai always remember to enforce camelCase`. Or you can comment directly on some lines of code in the PR. `@coderabbitai do not complain about lack of error handling here, it is handled higher up the execution stack.` :::tip Video Tutorial -Watch our [video walkthrough on learnings](https://www.youtube.com/watch?v=Yu0cmmOYA-U) for more information. -::: - -## Self-hosted knowledge base {#self-hosted} -For self-hosted / on-premises deployments, you can enable the knowledge base features by setting `SELF_HOSTED_KNOWLEDGE_BASE=true` in the environment variables for your self-hosted docker image. +Watch our [video walkthrough on learnings](https://www.youtube.com/watch?v=Yu0cmmOYA-U) for more information. -You must also be running ChromaDB. Use image `chromadb/chroma:0.5.20`. In your CodeRabbit docker image environment variables, set `CHROMADB_URL` to point to the hostname where ChromaDB can be reached. For persistance of your ChromaDB data, mount `/chroma/chroma` in the container to a volume mount. For more information on ChromaDB docker deployment, including how to set up authentication, refer to the [official documentation](https://docs.trychroma.com/deployment/docker). CodeRabbit will use `CHROMA_CLIENT_AUTH_CREDENTIALS` if it is set. +::: -By default, CodeRabbit will store its data in the `coderabbitai/data` branch, unless you set a value for `SELF_HOSTED_KNOWLEDGE_BASE_BRANCH=`. +## Code Guidelines {#code_guidelines} -### Walkthrough +CodeRabbit will analyse and learn from your organisation's code guidelines, which you can set up in the knowledge base section. These guidelines will then be used to conduct thorough code reviews. -- Set up a ChromaDB service on your cloud provider of choice. There is extensive documentation for generic Docker deploys, as well as cloud native deployments, in the [official Chroma documentation](https://docs.trychroma.com/deployment) -- Configure your environment variables for your CodeRabbit self-hosted deploy to be able to access Chroma. Documentation is available for [GitHub](/self-hosted/github#prepare-an-env-file). -- Restart your CodeRabbit service so it has access to the new environment variable settings. -- Create a new PR in your SCM platform. -- Add a comment to the PR to tell CodeRabbit to remember something. +The following patterns are scanned by default. -`@coderabbitai always make sure to enforce camelCase` +```text +**/.cursorrules +.github/copilot-instructions.md +**/CLAUDE.md +**/.cursor/rules/* +**/.windsurfrules +**/.clinerules/* +**/.rules/* +``` -- CodeRabbit should respond that it has added a learning. -- Check out the branch called `coderabbit/data` in the repository (or whatever branch name you have set for `SELF_HOSTED_KNOWLEDGE_BASE_BRANCH`). It should contain a file called learnings.json with an entry containing what you told it to remember. -- Future PRs should utilize the contents of this learnings file. Congratulations! You have configured the CodeRabbit Self-hosted knowledge base. +![Illustration of code guidelines configuration](/img/knowledge-base/code-guidelines.png) diff --git a/docs/overview/introduction.md b/docs/overview/introduction.md index 6f2e2e5b..f937ac67 100644 --- a/docs/overview/introduction.md +++ b/docs/overview/introduction.md @@ -9,56 +9,101 @@ description: slug: "/" --- -## What is CodeRabbit? +# Introduction -> **CodeRabbit** is an AI-powered code reviewer that delivers context-aware feedback on pull requests within minutes, reducing the time and effort needed for manual code reviews. It provides a fresh perspective and catches issues that are often missed, enhancing the overall review quality. +This page provides a conceptual introduction to CodeRabbit. For a hands-on tutorial, see [Quickstart](/getting-started/quickstart/). -Developers can interact directly with the bot within the code, offering additional context, asking questions, or even having the bot generate code. Over time, **CodeRabbit** learns from user input and improves its suggestions. +**CodeRabbit** is an AI-powered code reviewer that delivers context-aware feedback on pull requests within minutes, reducing the time and effort needed for manual code reviews. It complements manual reviews by providing a fresh perspective and catching issues that manual reviews often miss, enhancing the overall review quality. -:::tip -See CodeRabbit in action and watch the demo video below to see how it delivers real-time, context-aware feedback on your pull requests in just a few minutes. -::: +Developers can interact directly with the CodeRabbit bot within their existing Git platform's pull request interface to add context, ask questions, or even have the bot generate code. Over time, CodeRabbit learns from user input and improves its suggestions.
-## Integration with GitHub, GitLab and Azure DevOps +## Core features -> **CodeRabbit** integrates with GitHub, GitLab and Azure DevOps repositories to deliver continuous and incremental reviews for each commit in a pull request (PR) or merge request (MR). Review feedback is automatically sent back to the PR/MR and can be committed directly. +Core CodeRabbit features include the following: -It works via a webhook, monitoring Pull Request (PR) and Merge Request (MR) events. A comprehensive review is performed when a PR or MR is created, and for -incremental commits and comments addressed to the bot. The feedback is then sent directly back to the Pull Request or Merge Request. +- Integrates rapidly with popular Git platforms and workflows. +- Applies dozens of open-source, industry-standard code analyzers to every commit. +- Implements code reviews as familiar pull-request comments. +- Works with contributors through natural-language conversation in comments. +- Learns and adapts to your team's code style and review preferences. +- Provides an observability dashboard of code-contribution activity. +- Practices strong privacy and security, with no retention of analyzed code. +- Offers free use for public repositories, and flexible pricing for private codebases. -![CodeRabbit Code Review Flow showing how AI integrates with GitHub and GitLab for continuous pull request feedback.](/img/about/coderabbit-flow.png "CodeRabbit Code Review Flow") +## Seamless workflow integration -## Data Privacy and Security +CodeRabbit shares its reviews as comments attached to pull requests, using the same Git platform that your team already uses. Further commits in the same pull review prompt CodeRabbit to make further reviews, using the earlier reviews as context. -> **CodeRabbit** does not use data collected from code reviews to train or influence its models. All queries to Large Language Models (LLMs) are ephemeral, with zero retention. No data is shared with third parties. +Each time that it performs a code review, CodeRabbit runs the relevant code changes through [an array of industry-standard code linters, security analyzers, and other tools](/tools/). CodeRabbit synthesizes the output of these tools into its reviews, offering a high-level analysis that can suggest areas for further focus and improvement. -- **Temporary Storage**: Code is temporarily stored in memory during the review process and deleted afterward. -- **Stored Embeddings**: While the code itself isnโ€™t stored, **CodeRabbit** stores embeddings based on chat conversations and workflow systems (Linear, Jira, GitHub/GitLab issues) to improve future reviews. -- **Compliance**: All data is kept confidential, isolated by organization, and complies with **SOC2 Type II** and **GDPR** standards. +Your team can have conversations with CodeRabbit about its reviews by replying to it with follow-up comments on pull requests, asking it questions or making observations about the review using natural language. CodeRabbit continues the conversation appropriately, offering further insights about the code changes, or adjusting its own review style based on feedback. -### Opting Out +### Customizable review preferences -You can opt out of data storage at any time without affecting your access to **CodeRabbit**. -:::warning -However, opting out may reduce the level of personalized review feedback. -::: +As you interact with CodeRabbit through chat, it learns the review preferences of your team, and applies them to all future reviews on a given repository. -## Try CodeRabbit Now +For example, if CodeRabbit uses a linter to suggest that your pull request use four-space indentations, but your team uses a two-space indentation style, then you can reply to CodeRabbit's pull-request comment to tell it exactly that. CodeRabbit acknowledges your feedback and adjusts all of its subsequent reviews with that repository appropriately. -> Ready to experience **CodeRabbit** in action? +For a video introduction to this feature, see [CodeRabbit Learnings](https://www.youtube.com/watch?v=Yu0cmmOYA-U). -:::tip -For open source projects CodeRabbit Pro is **_FREE_**, forever. +If you need to fine-tune CodeRabbit's behavior beyond this, then you can [add a CodeRabbit-specific configuration file](/getting-started/configure-coderabbit) to your repository, or use the CodeRabbit web UI to set further preferences. This file can include [path-based instructions](/guides/review-instructions) for how CodeRabbit should review different files within your codebase. -- No credit card required -- Unlimited public repositories +No matter how you tune and customize CodeRabbit, its default settings make it useful out of the box, able to meaningfully review pull requests within minutes of its introduction to a repository. -::: +### Git platform integration - +CodeRabbit integrates in just a few clicks with many popular Git platforms: + +- GitHub, GitHub Enterprise Cloud, GitHub Enterprise Server, +- GitLab, GitLab Self-Managed +- Azure DevOps +- Bitbucket Cloud + +For more information, see [Supported Git Platforms](/platforms/). + +### Issue-management integration + +You can integrate CodeRabbit with issue-management platforms. This lets you ask CodeRabbit to create tickets during code reviews, or chat with CodeRabbit about your code from within issue comments. Compatible platforms include the following: + +- GitHub Issues +- GitLab Issues +- Jira +- Linear + +For more information, see [Issue Creation](/guides/issue-creation) and [Issue Chat](/guides/issue-chat). + +## Data privacy and security + +CodeRabbit collects only the minimum amount of information needed to provide you with our code review services. Our privacy and security posture centers around protecting your data through ephemerality: + +- All queries to large language models (LLMs) exist in-memory only, with zero retention after each query completes. +- We don't use your code, code reviews, or other collected data to train LLMs. +- CodeRabbit doesn't share any collected customer data with third parties. +- We keep all customer data confidential, and isolated by organization. +- Our data collection and storage practices comply with SOC 2 and GDPR standards. + +For more information about how we protect your data, see [the CodeRabbit Trust Center](https://trust.coderabbit.ai). + +## Flexible pricing, free for public repositories + +Public repositories can use the Pro tier of CodeRabbit at no charge, including all of the code-review features described on this page. Rate limits might apply. + +For private repositories, a number of pricing tiers are available. These range from a Free tier that offers unlimited code-change summaries, to an Enterprise tier with access to advanced features and SLA support. For more information, see [Pricing](https://www.coderabbit.ai/pricing). + +## Review local changes from within VSCode + +As a separate, free product, CodeRabbit offers a VSCode extension that brings a subset of core CodeRabbit features to VSCode. This lets you use the power of CodeRabbit to tune and tidy your code changes locally before pushing your changes into a formal pull request for more thorough reviews. + +For more information, see [Review local changes](/code-editors). + +## What's next + +- [Quickstart](/getting-started/quickstart/) lets you experience your first CodeRabbit code review first-hand. + +- [Review local changes](/code-editors) guides you through installing and using a subset of CodeRabbit features directly from your code editor. + +- [Why CodeRabbit?](/overview/why-coderabbit) dives further into the philosophies and technologies that drive CodeRabbit. diff --git a/docs/overview/why-coderabbit.md b/docs/overview/why-coderabbit.md index ccad9f89..f04e347d 100644 --- a/docs/overview/why-coderabbit.md +++ b/docs/overview/why-coderabbit.md @@ -6,63 +6,435 @@ sidebar_position: 2 description: CodeRabbit is AI-powered code reviews built for modern development teams --- -As developers, we understand the critical value of code reviews - they're the backbone of maintaining code quality and knowledge sharing across teams. But let's be honest about the growing challenges: as codebases expand and development velocity increases, traditional code reviews often become a bottleneck. This is where CodeRabbit comes in, not to replace human reviewers, but to make their work more impactful and helpful. +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; -### Deep Understanding, Immediate Insights +# Why CodeRabbit? -Think about how you approach reviewing a complex pull request. You first try to understand the context, examine potential edge cases, and consider architectural implications. CodeRabbit performs this same thoughtful analysis, but delivers insights within minutes of PR submission. +Looking back at CodeRabbit's journey, our fundamental reasons remain unchanged: -For example, when examining a change to your authentication system, CodeRabbit doesn't just flag syntax issues - it analyzes the entire authentication flow, identifying potential security vulnerabilities in token handling or session management specific to your implementation: +- **To build the best code review experience in the tech** + +> This continues to be our core mission. It was clear to us then, as it is now, that development workflows are becoming increasingly complex โ€” and teams need intelligent automation to maintain quality while moving fast. + +- **In an ever-evolving tech space, we believe AI-powered code review is the future** + +> Just like Git revolutionized version control and CI/CD transformed deployments, we believe AI-assisted code review will become the standard for quality assurance. + +- **An insight that modern code review can be reimagined** + +We call this approach _contextual analysis_, which allows us to understand not just the code changes, but their implications across your entire codebase. This enables us to provide insights about: + +- Security vulnerabilities +- Performance impacts +- Architectural changes +- Best practices +- Knowledge sharing + +- **The conviction that our AI can provide a better Developer Experience (DevX)** + +Features such as: + +- Instant analysis +- On-demand Reports +- Review Instructions +- CodeRabbit Commands +- PR summary on the fly +- Visual diagrams +- Docstrings generation +- Custom review rules + +> All these features improve the developer experience by reducing review time, maintaining consistency, and sharing knowledge effectively across teams. + +These are CodeRabbit's foundational principles, but given the many _code review tools_ available today, let's explore why **you** should choose CodeRabbit: + +--- + +# CodeRabbit is AI-Powered + +Your intelligent code review companion that understands context. + +> From its foundation as a Generative AI-first platform, CodeRabbit has evolved to become the preferred code review tool among developers because of its speed, intelligence, adaptability, and support for features like contextual analysis, security scanning, and architectural insights. CodeRabbit supports all major programming languages and integrates with popular development [tools](/tools). + +:::info Get Started +If your team needs intelligent code reviews, CodeRabbit delivers. If you're new to AI-powered reviews, [sign up for a Free account](https://app.coderabbit.ai/login?free-trial), join the [Discord server](https://discord.gg/coderabbit), and start the journey with us. +::: + +## CodeRabbit is Context-Aware + +An AI architecture built for understanding, reliability, and efficiency + +
+
+
+
+

Intelligent Features

+
+
+
    +
  • Instant code understanding
  • +
  • Security vulnerability detection
  • +
  • Performance impact assessment
  • +
  • Architecture evaluation
  • +
+
+
+
+
+
+
+

Context Analysis

+
+
+ Understanding context means analyzing how code changes affect the entire system, not just the modified files. This approach contrasts with traditional code review tools that only look at direct changes. +
+
+
+
![CodeRabbit Review comment on a Auth Flow](/img/about/why-cr-auth-flow-cors.png "CodeRabbit Code Review Comment") -### Intelligence Through Integration +:::tip DID YOU KNOW? +CodeRabbit's AI can detect potential issues that would only surface in production, saving costly debugging time later. +::: + +## CodeRabbit is Adaptive + +Let the AI learn and grow with your team. + +Being an adaptive system means that CodeRabbit continuously learns from your team's practices and preferences without requiring manual configuration or rule setting. When reviewers accept or reject suggestions, CodeRabbit learns and applies these preferences to future reviews. + +### Real-World Example: Performance Optimization -CodeRabbit combines the specialized insights of over 20 analysis tools (ESLint, Semgrep, Checkov, and more) with AI understanding to provide meaningful, actionable feedback. But instead of drowning you in alerts, it provides curated, context-aware suggestions. +Here's a real example of how CodeRabbit identifies opportunities for performance improvement: -### Learning Your Team's DNA + + + ```typescript + const createdTools = await Promise.all( + tools.map(async (tool) => { + return prisma.tool.create({ + data: { + name: tool.name, + description: tool.description, + headline: tool.headline, + features: tool.features, + logo: tool.name, + categories: tool.categories || [], + tags: tool.tags || [], + stars: tool.stars || 0, + forks: tool.forks || 0, + lastUpdated: new Date(), + websiteUrl: tool.websiteUrl, + githubUrl: tool?.githubUrl, + documentation: tool?.documentation + }, + }); + }) + ); + ``` + + + ```typescript + const createdTools = await prisma.tool.createMany({ + data: tools.map((tool) => ({ + name: tool.name, + description: tool.description, + headline: tool.headline, + features: tool.features, + logo: tool.name, + categories: tool.categories || [], + tags: tool.tags || [], + stars: tool.stars || 0, + forks: tool.forks || 0, + lastUpdated: new Date(), + websiteUrl: tool.websiteUrl, + githubUrl: tool?.githubUrl, + documentation: tool?.documentation + })) + }); + ``` + + -What makes CodeRabbit truly valuable is its ability to learn and adapt to your team's codebase, practices, and standards. It doesn't just pattern match - it builds a deep understanding through direct interactions with your team. For example, when a reviewer indicates a preference: +:::note CodeRabbit's Analysis +The current implementation processes each tool creation sequentially. Consider using Prisma's `createMany` for better performance. This batch operation can significantly reduce database round trips and improve overall execution time. + + +::: + +### How CodeRabbit Adapts + +When suggesting improvements, CodeRabbit: + +
+
+
+
+

Analyzes Patterns

+
+
+
    +
  • Identifies common performance bottlenecks
  • +
  • Learns from your codebase's patterns
  • +
  • Suggests modern best practices
  • +
+
+
+
+
+
+
+

Provides Context

+
+
+
    +
  • Explains the reasoning behind suggestions
  • +
  • Highlights potential benefits
  • +
  • Offers committable suggestions
  • +
+
+
+
+
![CodeRabbit Learnings](/img/about/why-cr-learnings.png "How CodeRabbit learns and remembers org standards") -CodeRabbit will then: +:::tip Learning from Feedback +When you accept or reject these suggestions, CodeRabbit learns your team's preferences and adjusts future recommendations accordingly. This ensures that suggestions become increasingly relevant to your specific needs and coding standards. +::: + +## CodeRabbit is Integrated + +Seamless integration with your existing workflow. + +CodeRabbit combines insights from multiple specialized tools into a single, coherent review: + +
+
+
+
+

Security

+
+
+ Semgrep, Checkov +
+
+
+
+
+
+

Style

+
+
+ ESLint, Prettier +
+
+
+
+
+
+

Performance

+
+
+ Lighthouse +
+
+
+
+
+
+

Dependencies

+
+
+ Dependabot +
+
+
+
+ +But instead of flooding you with alerts, CodeRabbit provides curated, actionable feedback. + +## Tool Comparison -- Remember this preference for future reviews -- Apply this knowledge across the entire codebase -- Share this learning with the whole team through its review comments -- Maintain consistency with your established standards + + +- โœ… Most comprehensive and detailed code analysis +- โœ… Committable Suggestion +- โœ… Context-aware feedback +- โœ… Adaptive learning +- โœ… Strong data protection policies +- โœ… Chat capabilities with detailed explanations + + +- โŒ Provides basic data protection +- โŒ Conflicting suggestions +- โŒ No context awareness +- โŒ No detailed analysis +- โŒ Least transparent privacy +- โŒ Limited chat interaction +- โŒ Lacks actionable code suggestions + + -### Practical Impact on Your Workflow +## Impact on Your Workflow -When a developer opens a pull request, CodeRabbit: +When a developer opens a pull request, CodeRabbit comes into action: + +
+
+
+
+

Immediate Analysis

+
+
+
    +
  • Scans changed files and dependencies
  • +
  • Identifies security vulnerabilities
  • +
  • Evaluates performance impact
  • +
  • Checks architectural consistency
  • +
+
+
+
+
+
+
+

Communication

+
+
+
    +
  • Generates concise summary
  • +
  • Creates visual diagrams
  • +
  • Generates a changelist and walkthrough
  • +
  • Chat option
  • +
+
+
+
+
+
+
+

Continuous Learning

+
+
+
    +
  • Remembers team preferences
  • +
  • Adapts to coding patterns
  • +
  • Shares knowledge across teams
  • +
  • Maintains consistent standards
  • +
+
+
+
+
+ +:::note ENTERPRISE READY +CodeRabbit is built for production environments with: + +- SOC 2 Type II certification +- GDPR compliance +- Zero data retention +- Self-hosted options + ::: + +## Start Reviewing Code in Seconds + +> CodeRabbit makes it effortless to begin AI-powered code reviews. Our architecture enables instant setup and immediate code analysis, providing you with intelligent feedback within minutes. + +### Three Steps to Better Code Reviews + +1. **Sign in** with [GitHub](../platforms/github-com.md), [GitLab](../platforms/gitlab-com.mdx), or [Azure DevOps](../platforms/azure-devops.md) +2. Select and add repositories in CodeRabbit dashboard +3. That's it. You're good to go. + +:::tip INSTANT ACTIVATION +CodeRabbit starts analyzing your first pull request immediately - no complex configuration needed. +::: + +### What You'll Get + +
+
+
+
+

Immediate Benefits

+
+
+ - Instant PR analysis + - Security checks + - Style enforcement + - Performance insights +
+
+
+
+
+
+

Team Features

+
+
+ - Custom review rules + - Team preferences + - Knowledge sharing + - Workflow integration +
+
+
+
+
+
+

Advanced Tools

+
+
+ - Visual diagrams + - Impact analysis + - Batch suggestions + - Pattern detection +
+
+
+
-- Analyzes changes across the entire codebase context -- Generates a clear, actionable summary -- Creates visual sequence diagrams for complex changes -- Provides specific feedback and suggestions +### Quick Configuration Examples -This means human reviewers can focus on architectural decisions and knowledge sharing, rather than catching basic issues. + + + ```bash + # Example GitHub Reviews + https://github.com/appsmithorg/appsmith/pull/38270 + https://github.com/tyaga001/devtoolsacademy/pull/44 + https://github.com/openreplay/openreplay/pull/1858 -### Built for Production Teams + # Browse All Reviews + https://github.com/search?q=coderabbitai&type=pullrequests + ``` -For teams building production software, CodeRabbit provides: + + -- SOC 2 Type II and GDPR compliance for enterprise security requirements -- Self-hosted deployment options for complete control -- Zero data retention policy - code is analyzed in memory and immediately discarded +:::note SUPPORT AT EVERY STEP +Need help? read [quickstart](/getting-started/quickstart) or ask a question in [Discord community](https://discord.gg/coderabbit), and team is here to help. +::: -Want to see the impact yourself? Try CodeRabbit on your next complex refactoring PR - you might be surprised at the subtle implications it catches that could easily be missed in manual review. +## See the Difference -## Not convinced? Read more +Try CodeRabbit on your next pull request. Experience how AI-powered code review can: -You can read more about our custom [code review instructions](/guides/review-instructions) or how we verify issues using [knowledge bases](/integrations/knowledge-base) like Linear and Jira. +- Reduce review time by up to 90% +- Catch bugs before they reach production +- Share knowledge across your team +- Maintain consistent code quality -Join thousands of developers who are already benefiting from AI-powered code reviews. +> Start reading more about the custom [code review instructions](/guides/review-instructions) or how CodeRabbit verify issues using [knowledge bases](/integrations/knowledge-base) like Linear and Jira. -After signing up, join our active Discord community where you'll find CodeRabbit users and team members ready to help you get the most out of your code reviews. +Transform your code reviews now, [Start your free trial today](https://app.coderabbit.ai/login?free-trial) and join the Discord server and chat with CodeRabbit users and team. diff --git a/docs/platforms/azure-devops.md b/docs/platforms/azure-devops.md index 7accacc6..12b70765 100644 --- a/docs/platforms/azure-devops.md +++ b/docs/platforms/azure-devops.md @@ -70,7 +70,7 @@ you will need to add the Personal Access Token. management. - **Use the CodeRabbit logo as the profile picture** - This further ensures easy recognition. You can download our logo from - [here](/img/integrations/logo.svg "download"). + [here](/img/integrations/logo.png "download"). ### Key Points to Remember @@ -95,7 +95,8 @@ Follow these steps to generate the token: accessible organizations." 6. Enter a name and an expiry date for the token. 7. We need to have read & write access to "Work Items" & "Code" to post reviews - on pull requests. + on pull requests. If you are on the Pro tier also add "Build" access for pipeline + failure remediation. 8. Click "Create" ![CodeRabbit azure devOps personal access token creation form](/img/integrations/azure-access-token.png) diff --git a/docs/platforms/bitbucket-cloud.md b/docs/platforms/bitbucket-cloud.md new file mode 100644 index 00000000..385d46ed --- /dev/null +++ b/docs/platforms/bitbucket-cloud.md @@ -0,0 +1,132 @@ +--- +title: "Bitbucket Cloud" +description: "Learn how to integrate CodeRabbit with Bitbucket Cloud." +sidebar_label: "Bitbucket Cloud" +sidebar_position: 6 +--- + +CodeRabbit integrates with Bitbucket Cloud to enhance code review and collaboration by: + +- Automatically initiating code reviews for newly created merge requests. +- Displaying review comments and suggestions directly on merge requests. +- Enabling seamless interaction with the CodeRabbit bot for real-time feedback and assistance. + +This guide will assist you in effectively integrating CodeRabbit with Bitbucket Cloud. + +## Configure API Token + +To enable CodeRabbit to interact with your Bitbucket repositories, an API token is required. This token grants the +necessary permissions for interacting with the Bitbucket merge request and discussion APIs. + +1. Create a new Bitbucket account specifically for CodeRabbit and treat it as a service account. +2. Name the account "CodeRabbit". +3. If your Bitbucket workspace requires two-step verification, then you must also enable two-step verification on this + new account. +4. Generate an API Token to enable seamless integration between CodeRabbit and your Bitbucket repositories. + +We recommend creating a new user as a service account, associating this user to the workspace you'd like to install +CodeRabbit on, and providing CodeRabbit with the API token to allow access. During the installation process, CodeRabbit +will automatically configure the required webhook for seamless integration. + +:::note + +If you wish to change the review user, you must provide the API token for the new user who will post reviews and +comments. However, this requires manually removing the previous user from the projects and associated webhooks. Once +this is done, you will need to reinstall the CodeRabbit app for each project. + +::: + +### Recommendations + +- **Create a dedicated user for CodeRabbit** - This ensures the user is exclusively for CodeRabbit, allowing better + access control. +- **Use "CodeRabbit" as the username** - This makes the user easily recognizable for future reference. +- **Use a dedicated email address** - This helps in easy identification and management. +- **Use the CodeRabbit logo as the profile picture** - This further ensures easy recognition. You can download our logo + from [here](/img/integrations/logo.svg "download"). +- **Developer Access** Ensure the service account user has developer access to the projects that you wish to install + CodeRabbit on. + +#### Key Points to Remember + +- Code reviews will be attributed to the owner of the API token. + +#### Generating an API token + +Bitbucket provides an option to generate an API token for a new user. Follow these steps to generate the token: + +1. Log in using the user designated for CodeRabbit reviews. This user serves as a service account for managing reviews + and related activities. +2. Go to [API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens). +3. Click **Create API token with scopes**. +4. Enter a name easily recognizable for this API token usage and an expiration date based on your plan of using the + product. +5. On next step select **Bitbucket** +6. Ensure the following scopes are selected: + - read:account + - read:user:bitbucket + - write:issue:bitbucket + - read:issue:bitbucket + - read:workspace:bitbucket + - admin:project:bitbucket + - write:webhook:bitbucket + - read:webhook:bitbucket + - read:pipeline:bitbucket + - read:runner:bitbucket + - read:repository:bitbucket + - write:repository:bitbucket + - read:pullrequest:bitbucket + - write:pullrequest:bitbucket +7. Click **Create** +8. Note down the API token as it will only be displayed once. + +### Where to Provide CodeRabbit the API Token + +By default, if no API token is provided, CodeRabbit will prompt you to provide one during the installation process. +However, if you wish to provide the token beforehand, you can do so by navigating to the **Organization Settings** tab, +and selecting the **Bitbucket User** tab on the sidebar. Once entering the API token, the token will be validated and +saved for future use. + +You can confirm the correct user is being selected by verifying the user ID shown on the UI with the user ID of the +service account user you created. + +--- + +### Installing CodeRabbit into your Bitbucket Repositories + +1. Go to the [Repositories page](https://app.coderabbit.ai/settings/repositories) in the CodeRabbit app. +2. Select the checkbox next to the repositories where you want to install CodeRabbit. To install it on all repositories + at once, select the checkbox at the top. +3. Select **Install Repositories**. + +
+ Bitbucket Repo Install Modal +
+ +The webhook `https://coderabbit.ai/bitbucketHandler` will now be installed for the projects selected. + +
+ Bitbucket Webhook Example +
+ +### Troubleshooting + +:::note + +If you are experiencing issues with the webhook, such as CodeRabbit not being able to access the repository, or not +reviewing pull requests, you can manually delete the webhook to the repository. + +Then refresh the repository page in the CodeRabbit app and you can reinstall the webhook. + +If you cannot install the webhook please check that your Bitbucket user has the necessary permissions to install the +webhook and the API Token is properly configured. + +::: diff --git a/docs/platforms/github-com.md b/docs/platforms/github-com.md index b368ce74..60d919d7 100644 --- a/docs/platforms/github-com.md +++ b/docs/platforms/github-com.md @@ -7,7 +7,7 @@ sidebar_position: 1 This is a step-by-step guide to integrate CodeRabbit with your GitHub repositories. -> **CodeRabbit** is an AI code reviewer designed to ease the challenges of code review, supporting repository maintainers and teams. It not only reviews your PRs but also provides concise summaries, identifies potential issues, and offers insights that might be missed during manual reviews. +> **CodeRabbit** is an AI code reviewer designed to ease the challenges of code review, supporting repository maintainers and teams. It reviews your PRs and provides concise summaries, identifies potential issues, and offers insights that might be missed during manual reviews. ## How CodeRabbit Works? @@ -21,13 +21,13 @@ It preprocesses the PR content, builds context, leverages Large Language Models ### 1. Accessing CodeRabbit -Visit the [Code Rabbit login](https://app.coderabbit.ai/login?free-trial) page. You'll see all the authentication options, select "**Login with GitHub**" to proceed. +Visit the [CodeRabbit login](https://app.coderabbit.ai/login?free-trial) page. You'll see all the authentication options, select "**Login with GitHub**" to proceed. ![CodeRabbit Login](/img/integrations/login-self-hosted-github.png) ### 2. Authorization -When you choose **Login with GitHub** in step1 , you'll be prompted to authorize CodeRabbit. +When you choose **Login with GitHub** in step1, you'll be prompted to authorize CodeRabbit. > This step grants the necessary permissions for CodeRabbit to interact with your repositories and pull requests. @@ -53,15 +53,17 @@ If you opt to authorize all repositories during setup, CodeRabbit will automatic ### 5. CodeRabbit Configuration -You can configure CodeRabbit through a YAML file or using the [App's UI](https://app.coderabbit.ai/login). +You can configure CodeRabbit through a YAML file or using the [App's UI](https://app.coderabbit.ai/login?free-trial). -You can tailor CodeRabbit's functionality using the coderabbit.yaml file, which you place directly in your GitHub repository. This file mirrors the options available in the CodeRabbit user interface, with each setting in the YAML corresponding to a specific toggle in the UI. Configure CodeRabbit either through the coderabbit.yaml file or the interface, depending on your preference. +You can tailor CodeRabbit's functionality using the `.coderabbit.yaml` file, which you place directly in your GitHub repository. This file mirrors the options available in the CodeRabbit user interface, with each setting in the YAML corresponding to a specific toggle in the UI. Configure CodeRabbit either through the coderabbit.yaml file or the interface, depending on your preference. :::note -If a coderabbit.yaml file exists in your GitHub repository, it takes precedence over any UI settings. Choose either the YAML file or UI configuration - you don't need to use both. **Refer Coderabbit.yaml schema [here](https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json)** + +If a `.coderabbit.yaml` file exists in your GitHub repository, it takes precedence over any UI settings. Choose either the YAML file or UI configuration - you don't need to use both. **Refer CodeRabbit YAML schema [here](https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json)** + ::: -Once your coderabbit.yaml file is prepared according to your needs, simply place it in your GitHub repository, and you're all setโ€”CodeRabbit is now integrated. +Once your `.coderabbit.yaml` file is prepared according to your needs, simply place it in your GitHub repository, and you're all set โ€” CodeRabbit is now integrated. > When a pull request is created targeting the master branch, CodeRabbit automatically initiates its review process. It analyzes the changes and generates a summary and walkthrough of the modifications. The specific feedback and analysis provided by CodeRabbit are determined by the options you've configured in your YAML file. @@ -89,7 +91,7 @@ The sequence diagram illustrates the precise flow of interactions between the ob ![CodeRabbit Sequence Diagram](/img/integrations/coderabbit-sequence-diagram.png) -Also check out the response when i asked for what improvements can be done on the code level +Also, check out the response when asked for what improvements can be done on the code level. ![Code Improvements Suggested by CodeRabbit](/img/integrations/improvements.png) @@ -97,7 +99,7 @@ In addition to providing reviews and summaries, **CodeRabbit** can also detect c > For example, I accidentally set up both CodeRabbit Pro (The process we've been discussing) and the open-source version (Refer to [different config process](https://github.com/coderabbitai/ai-pr-reviewer?tab=readme-ov-file#install-instructions)) in my repository at the same time. -Interestingly, CodeRabbit automatically detects and alerts you about configuration conflicts. +CodeRabbit automatically detects and alerts you about configuration conflicts. ![Configuration Issues by CodeRabbit](/img/integrations/configuration.png) @@ -107,7 +109,7 @@ CodeRabbit generates detailed statistics and test plans for each pull request. ![Test Plan by CodeRabbit](/img/integrations/test-plan.png) -> CodeRabbit also allows you to configure **custom review instructions** based on your organization's needs, in case you want it to follow specific guidelines beyond the standard review, to learn more on [adding custom review instructions](https://docs.coderabbit.ai/guides/review-instructions/) +> CodeRabbit also allows you to configure **custom review instructions** based on your organization's needs, in case you want it to follow specific guidelines beyond the standard review, to learn more on [adding custom review instructions](/guides/review-instructions) Whether you manage a popular repository or are working on a smaller project, whether it's hosted on **GitLab, GitHub, or self-hosted GitHub or GitLab**, CodeRabbit can help streamline your development process. This AI Code Review assistant is designed to save you time by automating code reviews and offering insightful feedback. diff --git a/docs/platforms/github-enterprise-server.md b/docs/platforms/github-enterprise-server.md index cb0e8084..733607cb 100644 --- a/docs/platforms/github-enterprise-server.md +++ b/docs/platforms/github-enterprise-server.md @@ -75,8 +75,7 @@ steps below to [create a GitHub App](https://docs.github.com/en/enterprise-server@latest/apps/creating-github-apps/registering-a-github-app/registering-a-github-app): 1. Sign in to your GitHub Enterprise account. -2. In the upper-right corner of any page, click your profile photo, then click - **Settings**. +2. In the upper-right corner of any page, click your profile photo, then click **Settings**. 3. In the left sidebar, click **Developer settings** > **GitHub Apps** 4. Click **New GitHub App**. 5. Set the following fields: @@ -90,8 +89,10 @@ steps below to - **Webhook secret**: Use a secure string and keep it handy. - **Permissions**: - **Repository permissions**: + - **Actions**: Read-only - **Checks**: Read-only - **Contents**: Read and write + - **Commit statuses**: Read and write - **Discussions**: Read-only - **Issues**: Read and write - **Metadata**: Read-only @@ -110,6 +111,7 @@ steps below to - Pull request review thread - Push - Release + - **Where can this GitHub App be installed?**: Select `Any account` 6. Click **Create GitHub App**. Once the GitHub App has been created, click on **Generate a new client secret** @@ -129,6 +131,8 @@ Keep the following details handy: ![GitHub App Client ID & Secret](/img/integrations/github-app-client-id-secret.png) +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + ### **Step 4: CodeRabbit UI Onboarding** Submit the details that were accumulated in previous steps: @@ -166,4 +170,20 @@ Use this CodeRabbit IP if your instance requires IP whitelisting `35.222.179.152/32` and `34.170.211.100/32`. VPN tunneling is available as an add-on package. Please reach out to us at -[contact@coderabbit.ai](mailto:contact@coderabbit.ai) if you are interested. +[support@coderabbit.ai](mailto:support@coderabbit.ai) if you are interested. + +### **FAQ** + +#### Who should create the OAuth App and GitHub App? + +The OAuth App and GitHub App should be created by a user with administrative +privileges on the GitHub Enterprise Server instance. This user will be responsible for managing the integration with CodeRabbit. + +#### I see an error when trying to log in to CodeRabbit. What should I do? + +If you encounter an error during the login process, please ensure that: + +- The OAuth App and GitHub App are correctly configured with the right URLs and permissions. +- The browser local storage and cookies related to CodeRabbit are cleared. + +If the issue persists, contact our support team. diff --git a/docs/platforms/gitlab-com.md b/docs/platforms/gitlab-com.md deleted file mode 100644 index ebff5ce4..00000000 --- a/docs/platforms/gitlab-com.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Integrating CodeRabbit with GitLab.com -description: Learn how to integrate CodeRabbit and add to your GitLab workflow. -sidebar_label: GitLab.com -sidebar_position: 2 ---- - -This guide will assist you in effectively integrating CodeRabbit with SaaS GitLab. - -## How it works - -For the CodeRabbit app to post reviews on merge requests, it needs to interact with the GitLab API, which requires a Personal Access Token. This token can be generated either by using our default CodeRabbit user or by creating a Personal Access Token from one of your existing users. - -The CodeRabbit default user, named "coderabbitai", is already set up in GitLab SaaS and will be added to your project when you install the CodeRabbit app. During installation, the necessary webhook for the project will also be created. - -If your organization prefers to use an organization user, you can create a new user in GitLab and generate a Personal Access Token for that user, following [our recommendations](#recommendations). - -:::note - -Keep in mind that if you want to change the review user, you can either disable the organization user or add a new user via the CodeRabbit UI. However, this will require manually removing the previous user from the projects and associated webhooks. Afterward, you will need to reinstall the CodeRabbit app for each project. - -::: - -## GitLab Access Tokens - -To interact with the GitLab API, a **Personal Access Token** is required. This token can either be generated by using our default CodeRabbit user or by creating a **Personal Access Token** from one of your existing users. - -Upon first login to the application (immediately after the onboarding screen), you will need to choose based on your organization's requirements. - -![gitlab user modal choice](/img/integrations/gitlab_user_choice.png) - -**We recommend using the default CodeRabbit user** for most organizations, as it is pre-configured. However, we understand that some organizations may prefer more control over the user or have restrictions regarding user inclusion within their organization. - -### Personal Access Tokens - -If your organization opts to use another user within the organization, you can do so by [generating a personal access token](#generating-a-personal-access-token). - -![gitlab organization user modal choice](/img/integrations/gitlab_organization_user.png) - -#### Recommendations - -- **Create a dedicated user for CodeRabbit** - This ensures the user is exclusively for CodeRabbit, allowing better access control. -- **Use "CodeRabbit" as the username** - This makes the user easily recognizable for future reference. -- **Use a dedicated email address** - This helps in easy identification and management. -- **Use the CodeRabbit logo as the profile picture** - This further ensures easy recognition. You can download our logo from [here](/img/integrations/logo.svg "download"). - -#### Key Points to Remember - -- Personal access tokens have expiration dates. Ensure the expiration date covers the duration of your intended use of the CodeRabbit app. -- Code reviews will be attributed to the owner of the personal access token. -- If the personal access token expires, you can add a new one via the CodeRabbit UI: - - Navigate to the "GitLab User" page in the sidebar. - - Click the "Update" button on the displayed card to see the same modal as the initial login. - -### Generating a Personal Access Token - -GitLab provides an option to generate a personal access token for a new user. Follow these steps to generate the token: - -1. Log in as the user intended for CodeRabbit reviews. -2. Select your avatar on the left sidebar. -3. Choose "Edit Profile." -4. Select "Access Tokens" from the left sidebar. -5. Click "Add New Token." -6. Enter a name and an expiry date for the token. -7. If no expiry date is entered, it defaults to 365 days from the current date. -8. Ensure the following scopes are selected: `api`, `read_api`, `read_user`. -9. Click "Create Personal Access Token." -10. Note down the token as it will only be displayed once. - -![GitLab personal access token configuration page](/img/integrations/admin-access-token.png) diff --git a/docs/platforms/gitlab-com.mdx b/docs/platforms/gitlab-com.mdx new file mode 100644 index 00000000..c276cd35 --- /dev/null +++ b/docs/platforms/gitlab-com.mdx @@ -0,0 +1,154 @@ +--- +title: Integrating CodeRabbit with GitLab.com +description: Learn how to integrate CodeRabbit and add to your GitLab workflow. +sidebar_label: GitLab.com +sidebar_position: 2 +--- + +CodeRabbit integrates with GitLab to enhance code review and collaboration by: + +- Automatically initiating code reviews for newly created merge requests. +- Displaying review comments and suggestions directly on merge requests. +- Enabling seamless interaction with the CodeRabbit bot for real-time feedback and assistance. + +This guide will assist you in effectively integrating CodeRabbit with SaaS GitLab. + +## GitLab Access Tokens + +To enable CodeRabbit to interact with your GitLab repositories, an access token is required. This token grants the necessary permissions for interacting with the Merge Requests and Discussions APIs. + + 1. Personal Access Token (PAT): You can create a new GitLab account specifically for CodeRabbit, name it โ€œCodeRabbitโ€ and treat it as a service account. Then generate a PAT from it where PAT will enable seamless integration between CodeRabbit and your GitLab repositories. + 2. Group Access Token: If your organization uses GitLab Premium or Ultimate, you can generate a Group Access Token. This option automatically creates a bot user associated with the group for managing access and posting reviews. + +### Personal Access Token + +We recommend creating a new user as a service account, associating this user to the group you'd like to install CodeRabbit on, and providing CodeRabbit with the personal access token to allow access. During the installation process, CodeRabbit will automatically configure the required webhook for seamless integration. + +
+ GitLab user modal choice +
+ +:::note + +If you wish to change the review user, you must provide the access token for the new user who will post reviews and comments. However, this requires manually removing the previous user from the projects and associated webhooks. Once this is done, you will need to reinstall the CodeRabbit app for each project. + +::: + +
+ GitLab organization user modal
+choice +
+ +#### Recommendations + +- **Create a dedicated user for CodeRabbit** - This ensures the user is exclusively for CodeRabbit, allowing better access control. +- **Use "CodeRabbit" as the username** - This makes the user easily recognizable for future reference. +- **Use a dedicated email address** - This helps in easy identification and management. +- **Use the CodeRabbit logo as the profile picture** - This further ensures easy recognition. You can download our logo from [here](/img/integrations/logo.svg "download"). +- **Ensure Developer Access** - Ensure the dedicated user has (at least) **Developer** access to the group or projects that you wish to install CodeRabbit on. + +#### Key Points to Remember + +- Personal access tokens have expiration dates. Ensure the expiration date **covers the duration** of your intended use of CodeRabbit. +- Code reviews will be attributed to the owner of the personal access token. +- If the personal access token expires, you can add a new one via the CodeRabbit UI: + - Navigate to the **GitLab User** page in the sidebar. + - Enter the new Access token, and click the **Update** button on the page. + +#### Generating a Personal Access Token + +GitLab provides an option to generate a personal access token for a new user. Follow these steps to generate the token: + +1. Log in using the user designated for CodeRabbit reviews. This user serves as a service account for managing reviews and related activities. +2. Select your avatar on the left sidebar. +3. Choose **Edit Profile**. +4. Select **Access Tokens** from the left sidebar. +5. Click [Add New Token.](https://gitlab.com/-/user_settings/personal_access_tokens) +6. Enter a name and an expiry date for the token. +7. If no expiry date is entered, it defaults to 365 days from the current date. +8. Ensure the following scopes are selected: `api`, `read_api`, `read_user`. +9. Click **Create Personal Access Token** +10. Note down the token as it will only be displayed once. + +
+ GitLab personal access token configuration page +
+ +--- + +### Group Access Token + +Creating a Group Access Token in GitLab automatically generates a bot user. Ensure that the token is configured with Developer access. Once set up, you only need to provide this token for integration. Note that a Group Access Token is limited to the scope of the group where it was created. To configure additional groups, you will need to generate a separate Group Access Token for each group. + +:::note + +By default, GitLab restricts this option to users on the Premium or Ultimate tiers. + +::: + +#### Generating a Group Access Token + +1. Navigate to the group you wish to install CodeRabbit on. +2. Select **Settings** from the left sidebar. +3. Select **Access Tokens** within the Settings heading. +4. Create a Group Access Token. +5. Ensure the following scopes are selected: `api`. +6. Ensure Developer Access is provided. + +--- + +### Where to Provide CodeRabbit the Access Token + +By default, if no access token is provided, CodeRabbit will prompt you to provide one during the installation process. However, if you wish to provide the token beforehand, you can do so by navigating to the **Organization Settings** tab, and selecting the **GitLab User** tab on the sidebar. Once entering the token, the token will be validated and saved for future use. + +You can confirm the correct user is being selected by verifying the user ID shown on the UI with the user ID of the service account user you created. + +--- + +### Installing CodeRabbit into your GitLab Repositories + +1. Go to the [Repositories page](https://app.coderabbit.ai/settings/repositories) in the CodeRabbit app. +2. Select the checkbox next to the repositories where you want to install CodeRabbit. To install it on all repositories at once, select the checkbox at the top. +3. Select **Install Repositories**. + +
+ GitLab Repo Install Modal +
+ +The webhook `https://coderabbit.ai/gitlabHandler` will now be installed for the projects selected. + +
+ GitLab Webhook Example +
+ +### Troubleshooting + +:::note + +If you are experiencing issues with the webhook, such as coderabbit not being able to access the repository, or not reviewing pull requests, you can manually delete the webhook to the repository. + +Then refresh the repository page in the CodeRabbit app and you can reinstall the webhook. + +If you cannot install the webhook please check that your GitLab user has the necessary permissions to install the webhook and the PAT is not expired. + +::: diff --git a/docs/platforms/platforms.md b/docs/platforms/platforms.md index ab0cc068..d4cb1748 100644 --- a/docs/platforms/platforms.md +++ b/docs/platforms/platforms.md @@ -1,8 +1,6 @@ --- -title: Supported Git Platforms -sidebar_label: Supported Git Platforms +title: Integrate with Git platforms description: Overview of CodeRabbit's supported Git platforms. -sidebar_position: 1 --- CodeRabbit supports various Git platforms to provide code review for your repositories. For the cloud-hosted Git platforms, you can [login][login] to CodeRabbit and add your repositories. The following platforms are supported: @@ -13,28 +11,25 @@ CodeRabbit supports various Git platforms to provide code review for your reposi | ------------------------ | ---------------------------------------- | | GitHub.com | [Supported](github-com.md) | | GitHub Enterprise Server | [Supported](github-enterprise-server.md) | -| GitHub Self Hosted | [Supported](../self-hosted/github.md) | ## GitLab -| Host | Support | -| ------------------- | ------------------------------------- | -| GitLab.com | [Supported](gitlab-com.md) | -| GitLab Self Managed | [Supported](self-hosted-gitlab.md) | -| GitLab Self Hosted | [Supported](../self-hosted/gitlab.md) | +| Host | Support | +| ------------------- | ---------------------------------- | +| GitLab.com | [Supported](gitlab-com.mdx) | +| GitLab Self Managed | [Supported](self-hosted-gitlab.md) | ## Azure DevOps -| Host | Support | -| ------------------- | ------------------------------------------- | -| Azure DevOps | [Supported](azure-devops.md) | -| Azure DevOps Server | [Supported](../self-hosted/azure-devops.md) | +| Host | Support | +| ------------ | ---------------------------- | +| Azure DevOps | [Supported](azure-devops.md) | ## Bitbucket | Host | Support | | -------------------- | ---------------------------------------- | | Bitbucket Datacenter | [Supported](../self-hosted/bitbucket.md) | -| Bitbucket Cloud | Coming soon | +| Bitbucket Cloud | [Supported](./bitbucket-cloud.md) | -[login]: https://app.coderabbit.ai/login +[login]: https://app.coderabbit.ai/login?free-trial diff --git a/docs/platforms/self-hosted-gitlab.md b/docs/platforms/self-hosted-gitlab.md index 4ef7623c..3fa18a71 100644 --- a/docs/platforms/self-hosted-gitlab.md +++ b/docs/platforms/self-hosted-gitlab.md @@ -71,6 +71,8 @@ After the user is created, you can retrieve the **User ID** from that user's profile and generate an [**access token**](#generating-personal-access-token). The access token is used to post reviews on merge requests. +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + #### **Creating OAuth2 application** For self-managed GitLab, we recommend creating an instance-wide application @@ -120,4 +122,4 @@ Use this CodeRabbit IP if your instance requires IP whitelisting `35.222.179.152/32` and `34.170.211.100/32`. VPN tunneling is available as an add-on package. Please reach out to us at -[contact@coderabbit.ai](mailto:contact@coderabbit.ai) if you are interested. +[support@coderabbit.ai](mailto:support@coderabbit.ai) if you are interested. diff --git a/docs/reference/caching.md b/docs/reference/caching.md new file mode 100644 index 00000000..cea907c0 --- /dev/null +++ b/docs/reference/caching.md @@ -0,0 +1,20 @@ +# Caching + +CodeRabbit provides caching capabilities for code and dependencies to accelerate the review process. This feature enhances your development workflow by delivering faster feedback. + +## Security and Privacy + +- Cached data is encrypted (except for OSS projects) +- Cache expires after a maximum of one week +- Cached data is used exclusively for speeding up reviews + +## Configuration + +You can opt out of caching in two ways: + +1. **Disable Cache**: Configure `Review - Disable Cache` at either: + + - Organization level + - Repository level + +2. **Disable Data Retention**: Turn off the `Data Retention` setting in your Organization Settings to disable all data retention across your organization. diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md new file mode 100644 index 00000000..bd0b3e8e --- /dev/null +++ b/docs/reference/configuration.md @@ -0,0 +1,4357 @@ +--- +title: Configuration reference +description: Complete reference for all CodeRabbit configuration options. +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +This reference guide lists all of the code review configuration options that +CodeRabbit makes available. + +For an overview of how configuration works with CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## How to use this reference {#how-to} + +Each entry in this reference corresponds to a single CodeRabbit configuration setting, including an informational table and a description of what the setting does. The tables have two views, which you can select with a tab: + +- The **Web UI** tab displays the location and default value of the setting in the CodeRabbit web interface, for both [organization settings](/guides/organization-settings) and [repository settings](/guides/repository-settings). +- The **coderabbit.yaml** tab displays information about the field's location and datatype in [your repository's `.coderabbit.yaml` file](/getting-started/configure-coderabbit). + +## Global Settings + +### Data retention + + + + + + + + + + + + + +
LocationGeneral > Data Retention
Defaulttrue
+
+ + _This setting can be defined only in the web UI settings for your + organization._ + +
+ +If `true`, then CodeRabbit is allowed to retain enough data about your code +review history in order to enable the following features: + +- **Caching**: allows CodeRabbit to store data about your repository between + code reviews, improving the speed of subsequent reviews. +- **Knowledge base**: allows CodeRabbit to maintain its own database about + your repository and your team's code review preferences, which can improve + the quality and specificity of code reviews generated by CodeRabbit. + +If your organization operates under strict data-retention policies, then you can +disable data retention. Doing so immediately deletes any cache or knowledge-base data that CodeRabbit has collected for your organization, and prevents CodeRabbit from +retaining further cache or knowledge-base data. + +If you re-enable data retention, then CodeRabbit re-enables these features, and resumes collecting cache and knowledge-base data. + +### Early Access + + + + + + + + + + + + + +
LocationGeneral > Early Access
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`early_access`
Datatypeboolean
Defaultfalse
+
+
+ +If enabled, then CodeRabbit lets you use early-access features in your +code reviews. + +### Enable Free Tier + + + + + + + + + + + + + +
LocationGeneral > Enable Free Tier
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`enable_free_tier`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit allows free tier features for users not on a paid plan. + +For more information about payment tiers and features, see [Pricing](https://www.coderabbit.ai/pricing). + +### Language + + + + + + + + + + + + + +
LocationGeneral > Language
Defaulten-US
+
+ + + + + + + + + + + + + + + +
Field`language`
Datatypestring
Default"en-US"
+
+
+ +Defines the written language that CodeRabbit presents its review comments in. Defaults +to U.S. English. + +### Tone Instructions + + + + + + + + + + + + + +
LocationGeneral > Tone Instructions
Default
+
+ + + + + + + + + + + + + + + +
Field`tone_instructions`
Datatypestring
Default
+
+
+ +A natural-language description of the tone of voice that CodeRabbit should +apply to its review instructions, if you want a tone different from its +default. + +A few possible examples: + +- `Use an encouraging, supportive tone that celebrates good practices while gently suggesting improvements.` +- `Adopt a concise, matter-of-fact style that gets straight to the point without unnecessary pleasantries.` +- `Deliver all review comments in the style of a televised nature documentary, perhaps with David Attenborough hosting.` + +## Review + +### Basic Review Settings + +#### Abort On Close + + + + + + + + + + + + + +
LocationReview > Settings > Abort On Close
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.abort_on_close`
Datatypeboolean
Defaulttrue
+
+
+ +Abort the in-progress review if the pull request is closed or merged. + +#### Assess Linked Issues + + + + + + + + + + + + + +
LocationReview > Settings > Assess Linked Issues
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.assess_linked_issues`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then the reviews that CodeRabbit generates include assessments of how well a proposed code change addresses any issues that the pull request refers to. CodeRabbit considers issues referred to by number in the following locations: + +- The title of the pull request. +- The description of the pull request. +- (GitHub only) The **Development** field of the pull request. + +Besides this setting, issue assessment requires at least one of the following: + +- You use the built-in issue managemet system of GitHub or GitLab. +- You have integrated CodeRabbit with an external issue manager. + +For more information, see [Integrate issue tracking](/integrations/issue-integrations/) +and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/setup-best-practices#issues). + +#### Auto Apply Labels + + + + + + + + + + + + + +
LocationReview > Settings > Auto Apply Labels
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_apply_labels`
Datatypeboolean
Defaultfalse
+
+
+ +Automatically apply the suggested labels to the PR/MR. + +#### Auto Assign Reviewers + + + + + + + + + + + + + +
LocationReview > Settings > Auto Assign Reviewers
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_assign_reviewers`
Datatypeboolean
Defaultfalse
+
+
+ +Automatically assign suggested reviewers to the pull request + +#### Auto Title Instructions + + + + + + + + + + + + + +
LocationReview > Settings > Auto Title Instructions
Default
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_title_instructions`
Datatypestring
Default
+
+
+ +Custom instructions for auto-generating the PR/MR title. + +#### Auto Title Placeholder + + + + + + + + + + + + + +
LocationReview > Settings > Auto Title Placeholder
Default@coderabbitai
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_title_placeholder`
Datatypestring
Default"@coderabbitai"
+
+
+ +Add this keyword in the PR/MR title to auto-generate the title. + +#### Changed Files Summary + + + + + + + + + + + + + +
LocationReview > Settings > Changed Files Summary
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.changed_files_summary`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a summary of the changed files in the walkthrough. + +#### Collapse Walkthrough + + + + + + + + + + + + + +
LocationReview > Settings > Collapse Walkthrough
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.collapse_walkthrough`
Datatypeboolean
Defaultfalse
+
+
+ +Generate walkthrough in a markdown collapsible section. + +#### Commit Status + + + + + + + + + + + + + +
LocationReview > Settings > Commit Status
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.commit_status`
Datatypeboolean
Defaulttrue
+
+
+ +Set the commit status to 'pending' when the review is in progress and 'success' when it is complete. + +#### Disable Cache + + + + + + + + + + + + + +
LocationReview > Settings > Disable Cache
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.disable_cache`
Datatypeboolean
Defaultfalse
+
+
+ +Activate this setting to disallow CodeRabbit from caching your repository's code and dependencies. This forces CodeRabbit to download the code and dependencies fresh from the repository for every code review that it performs. + +When caching is allowed, then CodeRabbit stores a cache of code and metadata from +your repostory for up to seven days after its most recent code review. This cache +lets CodeRabbit save time and effort in between subsquent reviews of the same +repository. For more information, see [Caching](/reference/caching/). + +We recommend leaving this setting off, which allows caching, and can speed up +code reviews. For more information, see +[Trust the defaults](https://docs.coderabbit.ai/guides/setup-best-practices#defaults). + +:::note +The [Data Retention](#data-retention) setting overrides this one. If you disable +all data retention, then your repositories won't keep a cache. +::: + +#### Fail Commit Status + + + + + + + + + + + + + +
LocationReview > Settings > Fail Commit Status
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.fail_commit_status`
Datatypeboolean
Defaultfalse
+
+
+ +Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit for any reason. + +#### High Level Summary + + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.high_level_summary`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a high level summary of the changes in the PR/MR description. + +#### High Level Summary In Walkthrough + + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary In Walkthrough
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.high_level_summary_in_walkthrough`
Datatypeboolean
Defaultfalse
+
+
+ +Include the high level summary in the walkthrough comment. + +#### High Level Summary Placeholder + + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary Placeholder
Default@coderabbitai summary
+
+ + + + + + + + + + + + + + + +
Field`reviews.high_level_summary_placeholder`
Datatypestring
Default"@coderabbitai summary"
+
+
+ +Placeholder in the PR/MR description that gets replaced with the high level summary. + +#### Labeling Instructions + + + + + + + + + + + + + +
LocationReview > Settings > Labeling Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.labeling_instructions`
Datatypearray
Default[]
+
+
+ +Provide guidelines for suggesting labels for the PR/MR. When specific labels or instructions are provided, only those labels are considered, though previous examples are still used to inform the suggestions. If no such labels are provided, suggestions are based solely on previous PR/MRs. + +#### Path Filters + + + + + + + + + + + + + +
LocationReview > Settings > Path Filters
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.path_filters`
Datatypearray
Default[]
+
+
+ +Path filters, if defined, restrict the portions of your repository that CodeRabbit +uses for context when preparing code reviews. + +You can define a list of path specifications, relative to the root of your +repository, to use as path filters. + +Paths can be _exclude paths_, which start with a leading `!` character, or _include +paths_. If the list of paths contains at least one include path, then CodeRabbit +includes _only_ files that match the provided paths. + +For example, the following list of path filters instructs CodeRabbit to limit its reviews +only to files found in the `src` top-level directory, but exclude any `.bin` or `.csv` +files: + +```bash +src/** +!**/*.{bin,csv} +``` + +:::note +Under the hood, CodeRabbit uses your provided list of path filters as an argument +to [`git sparse-checkout`](https://git-scm.com/docs/git-sparse-checkout) when preparing its own copy of your repository for code review +context. +::: + +We strongly recommend defining path filters for any repositories that contain +a significant amount of generated files or data that has no contextual bearing on code reviews. +CodeRabbit can work faster if it can ignore files that aren't relevant to pull requests. +For more information, see [Speed up reviews by adding path filters](https://docs.coderabbit.ai/guides/setup-best-practices#filters). + +#### Path Instructions + + + + + + + + + + + + + +
LocationReview > Settings > Path Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.path_instructions`
Datatypearray
Default[]
+
+
+ +Path instructions are additional sets of instructions, expressed in natural lanaguge, +that you provide to CodeRabbit for reveiwing certain files in your repository. + +You associate each set of instuctions with a file path relative to the root +of your repository. Your path specification can use extended glob patterns. + +The following example defines a set of path instructions for all TypeScript +and JavaScript files in a reposistory's `src` directory: + + + + ![An example path instruction](/img/reference/path-instructions.png) + + +```yaml +path_instructions: + - path: src/**/*.{ts,tsx,js} + instructions: + - Review the React.js/TypeScript/JavaScript code for best practices + - Check for common security vulnerabilities such as: + - SQL Injection + - Insecure dependencies + - Sensitive data exposure +``` + + + +For further examples of path instructions specific to various programming langauges, +see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai/awesome-coderabbit/tree/main/configs). + +#### Poem + + + + + + + + + + + + + +
LocationReview > Settings > Poem
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.poem`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a poem in the walkthrough comment. + +#### Profile {#profile} + + + + + + + + + + + + + +
LocationReview > Settings > Profile
Defaultchill
+
+ + + + + + + + + + + + + + + +
Field`reviews.profile`
Datatypestring
Default"chill"
+
+
+ +An overall selector for the level of detail that CodeRabbit should apply to +its reviews. Valid values are the following: + +- **`Chill`**: CodeRabbit provides its usual level of commentary. +- **`Assertive`**: CodeRabbit provides significantly deeper or more verbose commentary, + as much as possible. + +The `Chill` profile is the default setting, and is appropriate for most coding +contexts. The `Assertive` profile mode can get quite nitpicky in some circumstances. We recommend leaving this setting in `Chill`, unless a wordier level of code critique would benefit your team's work. + +#### Related Issues + + + + + + + + + + + + + +
LocationReview > Settings > Related Issues
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.related_issues`
Datatypeboolean
Defaulttrue
+
+
+ +Include possibly related issues in the walkthrough. + +#### Related PRs + + + + + + + + + + + + + +
LocationReview > Settings > Related PRs
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.related_prs`
Datatypeboolean
Defaulttrue
+
+
+ +Include possibly related pull requests in the walkthrough. + +#### Request Changes Workflow + + + + + + + + + + + + + +
LocationReview > Settings > Request Changes Workflow
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.request_changes_workflow`
Datatypeboolean
Defaultfalse
+
+
+ +If enabled, then CodeRabbit marks a pull request as approved once all comments +that CodeRabbit made have been resolved. + +Enable this setting if you want to have CodeRabbit's approval count towards +a minimum number of approvals that your have configured your Git platform +to require before a pull request can be merged. + +#### Review Status + + + + + + + + + + + + + +
LocationReview > Settings > Review Status
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.review_status`
Datatypeboolean
Defaulttrue
+
+
+ +Post review details on each review. Additionally, post a review status when a review is skipped in certain cases. + +#### Sequence Diagrams + + + + + + + + + + + + + +
LocationReview > Settings > Sequence Diagrams
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.sequence_diagrams`
Datatypeboolean
Defaulttrue
+
+
+ +Generate sequence diagrams in the walkthrough. + +#### Suggested Labels + + + + + + + + + + + + + +
LocationReview > Settings > Suggested Labels
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.suggested_labels`
Datatypeboolean
Defaulttrue
+
+
+ +Suggest labels based on the changes in the pull request in the walkthrough. + +#### Suggested Reviewers + + + + + + + + + + + + + +
LocationReview > Settings > Suggested Reviewers
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.suggested_reviewers`
Datatypeboolean
Defaulttrue
+
+
+ +Suggest reviewers based on the changes in the pull request in the walkthrough. + +### Automatic Review + +#### Enable Automatic Review + + + + + + + + + + + + + +
LocationReview > Auto Review > Automatic Review
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit reviews new and updated pull requests automatically. For more information, see [Automatically review pull requests](https://docs.coderabbit.ai/guides/code-review-overview#review). + +If disabled, then CodeRabbit performs only reviews that you request manually. For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +Disabling this setting also effectively disables all of the other settings listed in this section. + +#### Automatic Incremental Review + + + + + + + + + + + + + +
LocationReview > Auto Review > Automatic Incremental Review
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.auto_incremental_review`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit performs automatic reviews of existing pull requests when their associated branches have commits pushed to them. These incremental reviews happen in addition to the initial code review that CodeRabbit generates after the pull request is first created. + +For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +We recommend leaving this option enabled. + +#### Base Branches {#base-branches} + + + + + + + + + + + + + +
LocationReview > Auto Review > Base Branches
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.base_branches`
Datatypearray
Default[]
+
+
+ +A list of branches that CodeRabbit performs automatic code reviews on, other +than the reposiorty's main branch (usually `main` or `master`.) + +For example, if you add `staging` as a base branch, then CodeRabbit automatically +reviews pull requests on both your repository's default branch and its `staging` branch. + +#### Drafts + + + + + + + + + + + + + +
LocationReview > Auto Review > Drafts
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.drafts`
Datatypeboolean
Defaultfalse
+
+
+ +If defined, then CodeRabbit automatically reviews pull requests marked as a draft +in your Git platform. + +#### Ignore Title Keywords + + + + + + + + + + + + + +
LocationReview > Auto Review > Ignore Title Keywords
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.ignore_title_keywords`
Datatypearray
Default[]
+
+
+ +Ignore reviewing if the title of the pull request contains any of these keywords (case-insensitive). + +#### Labels + + + + + + + + + + + + + +
LocationReview > Auto Review > Labels
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.auto_review.labels`
Datatypearray
Default[]
+
+
+ +If defined with at least one label, then CodeRabbit automatically reviews +only pull requests that have at least one of the labels in this list. + +In this case, you can manually request reviews of pull requests lacking a qualifying label. For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +### Finishing Touches + +#### Docstrings + + + + + + + + + + + + + +
LocationReview > Finishing Touches > Docstrings
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.finishing_touches.docstrings.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit can generate inline documentation for functions +added in a pull request. For more information, see [Docstrings](/finishing-touches/docstrings). + +#### Unit Tests + + + + + + + + + + + + + +
LocationReview > Finishing Touches > Unit Tests
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.finishing_touches.unit_tests.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit can generate unit tests for code +added in a pull request. For more information, see [Unit Test Generation](/finishing-touches/unit-test-generation). + +## Chat + +### Auto Reply + + + + + + + + + + + + + +
LocationChat > Auto Reply
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`chat.auto_reply`
Datatypeboolean
Defaulttrue
+
+
+ +Enable the bot to reply automatically without requiring the user to tag it. + +### Integrations + +### Jira + + + + + + + + + + + + + +
LocationChat > Jira
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`chat.integrations.jira.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Jira integration for opening issues, etc. 'auto' disables the integration for public repositories. + +### Linear + + + + + + + + + + + + + +
LocationChat > Linear
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`chat.integrations.linear.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Linear integration for opening issues, etc. 'auto' disables the integration for public repositories. + +## Knowledge Base + +### Basic settings + +#### Opt Out + + + + + + + + + + + + + +
LocationKnowledge Base > Opt Out
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.opt_out`
Datatypeboolean
Defaultfalse
+
+
+ +Disable all knowledge base features that require data retention. If you opt out after opting in, all of your existing knowledge base data will be removed from the system. + +#### Pull Requests + + + + + + + + + + + + + +
LocationKnowledge Base > Pull Requests
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.pull_requests.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of pull requests to use for the knowledge base. 'local' uses the repository's pull requests, 'global' uses the organization's pull requests, and 'auto' uses repository's pull requests for public repositories and organization's pull requests for private repositories. + +#### Web Search + + + + + + + + + + + + + +
LocationKnowledge Base > Web Search
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.web_search.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable the web search integration. + +### Issues + + + + + + + + + + + + + +
LocationKnowledge Base > Issues
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.issues.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledge base. 'local' uses the repository's issues, 'global' uses the organization's issues, and 'auto' uses repository's issues for public repositories and organization's issues for private repositories. + +### Jira + +#### Enable Jira + + + + + + + + + + + + + +
LocationKnowledge Base > Jira
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.jira.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Jira knowledge base integration. 'auto' disables the integration for public repositories. + +#### Project Keys + + + + + + + + + + + + + +
LocationKnowledge Base > Project Keys
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.jira.project_keys`
Datatypearray
Default[]
+
+
+ +Specify the Jira project keys to use for the knowledge base. + +### Learnings + + + + + + + + + + + + + +
LocationKnowledge Base > Learnings
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.learnings.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of learnings to use for the knowledge base. 'local' uses the repository's learnings, 'global' uses the organization's learnings, and 'auto' uses repository's learnings for public repositories and organization's learnings for private repositories. + +### Linear + +#### Enable Linear + + + + + + + + + + + + + +
LocationKnowledge Base > Linear
Defaultauto
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.linear.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Linear knowledge base integration. 'auto' disables the integration for public repositories. + +#### Team Keys + + + + + + + + + + + + + +
LocationKnowledge Base > Team Keys
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.linear.team_keys`
Datatypearray
Default[]
+
+
+ +Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. 'ENG' + +## Code Generation + +### Code Generation Language + + + + + + + + + + + + + +
LocationCode Generation > Language
Defaulten-US
+
+ + + + + + + + + + + + + + + +
Field`code_generation.docstrings.language`
Datatypestring
Default"en-US"
+
+
+ +Set the language for docstrings by using the corresponding ISO language code. + +### Docstring Path Instructions + + + + + + + + + + + + + +
LocationCode Generation > Path Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`code_generation.docstrings.path_instructions`
Datatypearray
Default[]
+
+
+ +Provide additional guidelines for docstring generation based on file paths. + +### Unit Test Path Instructions + + + + + + + + + + + + + +
LocationCode Generation > Unit Test Generation
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`code_generation.unit_tests.path_instructions`
Datatypearray
Default[]
+
+
+ +Provide additional guidelines for unit test generation based on file paths. + +## Tools + +CodeRabbit integrates with various third-party tools for enhanced code analysis. + +### actionlint + +actionlint is a static checker for GitHub Actions workflow files. + +#### Enable actionlint + + + + + + + + + + + + + +
LocationReview > Tools > Enable actionlint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.actionlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +is a static checker for GitHub Actions workflow files. + +### ast-grep + +Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.38.1 + +#### Essential Rules + + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Essential Rules
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.essential_rules`
Datatypeboolean
Defaulttrue
+
+
+ +Use ast-grep essentials package. + +#### Packages + + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Packages
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.packages`
Datatypearray
Default[]
+
+
+ +Predefined packages to be used. + +#### Rule Dirs + + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Rule Dirs
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.rule_dirs`
Datatypearray
Default[]
+
+
+ +List of rules directories. + +#### Util Dirs + + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Util Dirs
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.util_dirs`
Datatypearray
Default[]
+
+
+ +List of utils directories. + +### Biome + +Biome is a fast formatter, linter, and analyzer for web projects. + +#### Enable Biome + + + + + + + + + + + + + +
LocationReview > Tools > Enable Biome
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.biome.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Biome is a fast formatter, linter, and analyzer for web projects. + +### Brakeman + +Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2 + +#### Enable Brakeman + + + + + + + + + + + + + +
LocationReview > Tools > Enable Brakeman
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.brakeman.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. + +### Buf + +Buf offers linting for Protobuf files. + +#### Enable Buf + + + + + + + + + + + + + +
LocationReview > Tools > Enable Buf
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.buf.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Buf offers linting for Protobuf files. + +### checkmake + +checkmake is a linter for Makefiles. + +#### Enable checkmake + + + + + + + + + + + + + +
LocationReview > Tools > Enable checkmake
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.checkmake.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +checkmake is a linter for Makefiles. + +### Checkov + +Checkov is a static code analysis tool for infrastructure-as-code files. + +#### Enable Checkov + + + + + + + + + + + + + +
LocationReview > Tools > Enable Checkov
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.checkov.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Checkov is a static code analysis tool for infrastructure-as-code files. + +### CircleCI + +CircleCI tool is a static checker for CircleCI config files. + +#### Enable CircleCI + + + + + + + + + + + + + +
LocationReview > Tools > Enable CircleCI
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.circleci.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +CircleCI tool is a static checker for CircleCI config files. + +### Clippy + +Clippy is a collection of lints to catch common mistakes and improve your Rust code. + +#### Enable Clippy + + + + + + + + + + + + + +
LocationReview > Tools > Enable Clippy
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.clippy.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Clippy is a collection of lints to catch common mistakes and improve your Rust code. + +### Cppcheck + +Cppcheck is a static code analysis tool for the C and C++ programming languages. + +#### Enable Cppcheck + + + + + + + + + + + + + +
LocationReview > Tools > Enable Cppcheck
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.cppcheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Cppcheck is a static code analysis tool for the C and C++ programming languages. + +### detekt + +Detekt is a static code analysis tool for Kotlin files. + +#### Enable detekt + + + + + + + + + + + + + +
LocationReview > Tools > detekt > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.detekt.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable detekt. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > detekt > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.detekt.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the detekt configuration file relative to the repository. + +### dotenv-linter + +dotenv-linter is a tool for checking and fixing .env files for problems and best practices + +#### Enable dotenv-linter + + + + + + + + + + + + + +
LocationReview > Tools > Enable dotenv-linter
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.dotenvLint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +dotenv-linter is a tool for checking and fixing .env files for problems and best practices + +### ESLint + +ESLint is a static code analysis tool for JavaScript files. + +#### Enable ESLint + + + + + + + + + + + + + +
LocationReview > Tools > Enable ESLint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.eslint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +ESLint is a static code analysis tool for JavaScript files. + +### Flake8 + +Flake8 is a static code analysis tool for Python files. + +#### Enable Flake8 + + + + + + + + + + + + + +
LocationReview > Tools > Flake8 > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.flake8.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Flake8 is a static code analysis tool for Python files. + +### GitHub Checks + +GitHub Checks integration configuration. + +#### Enable GitHub Checks + + + + + + + + + + + + + +
LocationReview > Tools > GitHub Checks > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.github-checks.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable integration, defaults to true + +#### Timeout Ms + + + + + + + + + + + + + +
LocationReview > Tools > GitHub Checks > Timeout Ms
Default90000
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.github-checks.timeout_ms`
Datatypenumber
Default90000
+
+
+ +Time in milliseconds to wait for all GitHub Checks to conclude. + +### Gitleaks + +Gitleaks is a secret scanner. + +#### Enable Gitleaks + + + + + + + + + + + + + +
LocationReview > Tools > Enable Gitleaks
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.gitleaks.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Gitleaks is a secret scanner. + +### golangci-lint + +golangci-lint is a fast linters runner for Go. + +#### Enable golangci-lint + + + + + + + + + + + + + +
LocationReview > Tools > golangci-lint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.golangci-lint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable golangci-lint. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > golangci-lint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.golangci-lint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the golangci-lint configuration file relative to the repository. Useful when the configuration file is named differently than the default '.golangci.yml', '.golangci.yaml', '.golangci.toml', '.golangci.json'. + +### Hadolint + +Hadolint is a Dockerfile linter. + +#### Enable Hadolint + + + + + + + + + + + + + +
LocationReview > Tools > Enable Hadolint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.hadolint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Hadolint is a Dockerfile linter. + +### HTMLHint + +HTMLHint is a static code analysis tool for HTML files. + +#### Enable HTMLHint + + + + + + + + + + + + + +
LocationReview > Tools > HTMLHint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.htmlhint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable HTMLHint. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > HTMLHint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.htmlhint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the HTMLHint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.htmlhintrc'. + +### LanguageTool + +LanguageTool is a style and grammar checker for 30+ languages. + +#### Disabled Categories + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Disabled Categories
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.disabled_categories`
Datatypearray
Default[]
+
+
+ +IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always disabled. + +#### Disabled Rules + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Disabled Rules
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.disabled_rules`
Datatypearray
Default[]
+
+
+ +IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES are always disabled. + +#### Enable LanguageTool + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable LanguageTool + +#### Enabled Categories + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Categories
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_categories`
Datatypearray
Default[]
+
+
+ +IDs of categories to be enabled. + +#### Enabled Only + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Only
Defaultfalse
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_only`
Datatypeboolean
Defaultfalse
+
+
+ +Only the rules and categories whose IDs are specified with 'enabledRules' or 'enabledCategories' are enabled. + +#### Enabled Rules + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Rules
Default_Empty array_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_rules`
Datatypearray
Default[]
+
+
+ +IDs of rules to be enabled. The rule won't run unless 'level' is set to a level that activates the rule. + +#### Level + + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Level
Defaultdefault
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.level`
Datatypestring
Default"default"
+
+
+ +If set to 'picky', additional rules will be activated, i.e. rules that you might only find useful when checking formal text. + +### Luacheck + +Configuration for Lua code linting to ensure code quality + +#### Enable Luacheck + + + + + + + + + + + + + +
LocationReview > Tools > Enable Luacheck
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.luacheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Luacheck helps maintain consistent and error-free Lua code + +### markdownlint + +markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. + +#### Enable markdownlint + + + + + + + + + + + + + +
LocationReview > Tools > Enable markdownlint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.markdownlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. + +### OXC + +OXC is a JavaScript/TypeScript linter written in Rust. + +#### Enable OXC + + + + + + + + + + + + + +
LocationReview > Tools > Enable OXC
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.oxc.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +OXC is a JavaScript/TypeScript linter written in Rust. + +### PHPStan + +PHPStan is a tool to analyze PHP code. + +#### Enable PHPStan + + + + + + + + + + + + + +
LocationReview > Tools > PHPStan > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.phpstan.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. + +#### Level + + + + + + + + + + + + + +
LocationReview > Tools > PHPStan > Level
Defaultdefault
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.phpstan.level`
Datatypestring
Default"default"
+
+
+ +Specify the [rule level](https://phpstan.org/user-guide/rule-levels) to run. This setting is ignored if your configuration file already has a `level:` parameter. + +### PMD + +PMD is an extensible multilanguage static code analyzer. Itโ€™s mainly concerned with Java. + +#### Enable PMD + + + + + + + + + + + + + +
LocationReview > Tools > PMD > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.pmd.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable PMD. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > PMD > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.pmd.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the PMD configuration file relative to the repository. + +### PHPMD + +PHPMD is a static code analysis tool for PHP files. + +#### Enable PHPMD + + + + + + + + + + + + + +
LocationReview > Tools > Enable PHPMD
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.phpmd.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +PHPMD is a static code analysis tool for PHP files. + +### PHPCS + +PHPCS is a static code analysis and coding-standard checker for PHP (plus JS/CSS) files. + +#### Enable PHPCS + + + + + + + + + + + + + +
LocationReview > Tools > Enable PHPCS
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.phpcs.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +PHPCS is a static code analysis tool for PHP, JavaScript and CSS files. + +### Prisma Schema Linting + +Configuration for Prisma Schema linting to ensure schema file quality + +#### Enable Prisma Schema Linting + + + + + + + + + + + + + +
LocationReview > Tools > Enable Prisma Schema Linting
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.prismaLint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Prisma Schema linting helps maintain consistent and error-free schema files + +### Pylint + +Pylint is a Python static code analysis tool. + +#### Enable Pylint + + + + + + + + + + + + + +
LocationReview > Tools > Enable Pylint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.pylint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Pylint is a Python static code analysis tool. + +### Regal + +Regal is a linter and language server for Rego. + +#### Enable Regal + + + + + + + + + + + + + +
LocationReview > Tools > Enable Regal
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.regal.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Regal is a linter and language server for Rego. + +### RuboCop + +RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. + +#### Enable RuboCop + + + + + + + + + + + + + +
LocationReview > Tools > Enable RuboCop
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.rubocop.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. + +### Ruff + +Ruff is a Python linter and code formatter. + +#### Enable Ruff + + + + + + + + + + + + + +
LocationReview > Tools > Enable Ruff
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.ruff.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Ruff is a Python linter and code formatter. + +### Semgrep + +Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. + +#### Enable Semgrep + + + + + + + + + + + + + +
LocationReview > Tools > Semgrep > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.semgrep.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable Semgrep. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > Semgrep > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.semgrep.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the Semgrep configuration file relative to the repository. + +### ShellCheck + +ShellCheck is a static analysis tool that finds bugs in your shell scripts. + +#### Enable ShellCheck + + + + + + + + + + + + + +
LocationReview > Tools > Enable ShellCheck
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.shellcheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +ShellCheck is a static analysis tool that finds bugs in your shell. + +### Shopify Theme Check + +Configuration for Shopify Theme Check to ensure theme quality and best practices + +#### Enable Shopify Theme Check + + + + + + + + + + + + + +
LocationReview > Tools > Enable Shopify Theme Check
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.shopifyThemeCheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +A linter for Shopify themes that helps you follow Shopify theme & Liquid best practices + +### SQLFluff + +SQLFluff is an open source, dialect-flexible and configurable SQL linter. + +#### Enable SQLFluff + + + + + + + + + + + + + +
LocationReview > Tools > Enable SQLFluff
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.sqlfluff.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +SQLFluff is an open source, dialect-flexible and configurable SQL linter. + +### SwiftLint + +SwiftLint integration configuration object. + +#### Enable SwiftLint + + + + + + + + + + + + + +
LocationReview > Tools > SwiftLint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.swiftlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable SwiftLint. + +#### Config File + + + + + + + + + + + + + +
LocationReview > Tools > SwiftLint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.swiftlint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the SwiftLint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.swiftlint.yml' or '.swiftlint.yaml'. + +### YAMLlint + +YAMLlint is a linter for YAML files. + +#### Enable YAMLlint + + + + + + + + + + + + + +
LocationReview > Tools > Enable YAMLlint
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`reviews.tools.yamllint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +YAMLlint is a linter for YAML files. diff --git a/docs/reference/review-commands.md b/docs/reference/review-commands.md new file mode 100644 index 00000000..cb50b59c --- /dev/null +++ b/docs/reference/review-commands.md @@ -0,0 +1,48 @@ +--- +title: Code review commands +description: A list of commands that you can issue to CodeRabbit during code reviews. +--- + +This page lists the various commands that you can issue to CodeRabbit through +its chat interface during code reviews. For more information about working with +CodeRabbit through chat, see [Interact with CodeRabbit reviews](/guides/code-review-overview#interact). + +| Command | Description | Use Case | +| --------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------- | +| `@coderabbitai review` | Triggers an incremental review of new changes | When automatic reviews are disabled or you want to manually trigger a review | +| `@coderabbitai full review` | Performs a complete review of all files from scratch | When you want to get fresh insights on the entire PR | +| `@coderabbitai summary` | Regenerates the PR summary | When you want an updated overview after making changes | + +## Code review flow control + +| Command | Description | Use Case | +| ---------------------- | ---------------------------------------- | --------------------------------------------------- | +| `@coderabbitai pause` | Temporarily stops reviews on the PR | When you're making multiple rapid changes | +| `@coderabbitai resume` | Restarts reviews after a pause | When you're ready for CodeRabbit to review again | +| `@coderabbitai ignore` | Permanently disables reviews for this PR | When you want to handle the review process manually | + +## Comment management + +| Command | Description | Use Case | +| ----------------------- | --------------------------------------- | ------------------------------------------------------- | +| `@coderabbitai resolve` | Resolves all CodeRabbit review comments | When you've addressed all feedback and want to clean up | + +## Documentation commands + +| Command | Description | Use Case | +| ---------------------------------------- | -------------------------------------------- | --------------------------------------------------- | +| `@coderabbitai generate docstrings` | Generates docstrings for functions in the PR | When you need automatic documentation for your code | +| `@coderabbitai auto-generate unit tests` | Generates unit tests for the PR | When you need automatic unit testing for your code | +| `@coderabbitai configuration` | Shows current CodeRabbit settings | When you need to check or export your configuration | + +## Agentic chat commands + +| Command | Description | Use Case | +| -------------------- | ---------------------------------------------------------- | ---------------------------------------------------- | +| `@coderabbitai plan` | Get the agentic chat to plan an edit for previous comments | When you want CodeRabbit to change your code for you | + +## Help and support + +| Command | Description | Use Case | +| -------------------- | ------------------------------------------ | ------------------------------------------ | +| `@coderabbitai help` | Displays available commands and usage info | When you need guidance on using CodeRabbit | diff --git a/docs/reference/yaml-template.md b/docs/reference/yaml-template.md new file mode 100644 index 00000000..9fac39e2 --- /dev/null +++ b/docs/reference/yaml-template.md @@ -0,0 +1,192 @@ +--- +title: Configuration file template +--- + +You can use the following template as a basis for a new `.coderabbit.yaml` configuration file at the root level of your repository. + +If used as-is as a `.coderabbit.yaml` file, then this template sets the default, recommended values for [all CodeRabbit repository options](/reference/configuration). You can then update the values to best suit your team's code-review needs. + +For more information about using a `.coderabbit.yaml` file, see [Add a configuration file](/getting-started/configure-coderabbit). + +For a general overview of CodeRabbit configuration, see [Configure CodeRabbit](/guides/configuration-overview). + +```yaml +# yaml-language-server: $schema=https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json + +language: en-US +tone_instructions: "" +early_access: true +enable_free_tier: true +reviews: + profile: chill + request_changes_workflow: false + high_level_summary: true + high_level_summary_placeholder: "@coderabbitai summary" + high_level_summary_in_walkthrough: false + auto_title_placeholder: "@coderabbitai" + auto_title_instructions: "" + review_status: true + commit_status: true + fail_commit_status: false + collapse_walkthrough: false + changed_files_summary: true + sequence_diagrams: true + assess_linked_issues: true + related_issues: true + related_prs: true + suggested_labels: true + auto_apply_labels: false + suggested_reviewers: true + auto_assign_reviewers: false + poem: true + labeling_instructions: + - label: "" + instructions: "" + path_filters: [] + path_instructions: + - path: "" + instructions: "" + abort_on_close: true + disable_cache: false + auto_review: + enabled: true + auto_incremental_review: true + ignore_title_keywords: [] + labels: [] + drafts: false + base_branches: [] + finishing_touches: + docstrings: + enabled: true + unit_tests: + enabled: true + tools: + ast-grep: + rule_dirs: [] + util_dirs: [] + essential_rules: true + packages: [] + shellcheck: + enabled: true + ruff: + enabled: true + markdownlint: + enabled: true + github-checks: + enabled: true + timeout_ms: 90000 + languagetool: + enabled: true + enabled_rules: [] + disabled_rules: [] + enabled_categories: [] + disabled_categories: [] + enabled_only: false + level: default + biome: + enabled: true + hadolint: + enabled: true + swiftlint: + enabled: true + config_file: "" + phpstan: + enabled: true + level: default + golangci-lint: + enabled: true + config_file: "" + yamllint: + enabled: true + gitleaks: + enabled: true + checkov: + enabled: true + detekt: + enabled: true + config_file: "" + eslint: + enabled: true + flake8: + enabled: true + rubocop: + enabled: true + buf: + enabled: true + regal: + enabled: true + actionlint: + enabled: true + pmd: + enabled: true + config_file: "" + phpmd: + enabled: true + phpcs: + enabled: true + cppcheck: + enabled: true + semgrep: + enabled: true + config_file: "" + circleci: + enabled: true + clippy: + enabled: true + sqlfluff: + enabled: true + prismaLint: + enabled: true + pylint: + enabled: true + oxc: + enabled: true + shopifyThemeCheck: + enabled: true + luacheck: + enabled: true + brakeman: + enabled: true + dotenvLint: + enabled: true + htmlhint: + enabled: true + checkmake: + enabled: true +chat: + auto_reply: true + integrations: + jira: + usage: auto + linear: + usage: auto +knowledge_base: + opt_out: false + web_search: + enabled: true + code_guidelines: + enabled: true + filePatterns: [] + learnings: + scope: auto + issues: + scope: auto + jira: + usage: auto + project_keys: [] + linear: + usage: auto + team_keys: [] + pull_requests: + scope: auto +code_generation: + docstrings: + language: en-US + path_instructions: + - path: "" + instructions: "" + unit_tests: + path_instructions: + - path: "" + instructions: "" +``` diff --git a/docs/self-hosted/_category_.yaml b/docs/self-hosted/_category_.yaml index 1025807f..84f0b578 100644 --- a/docs/self-hosted/_category_.yaml +++ b/docs/self-hosted/_category_.yaml @@ -1,4 +1,4 @@ -label: Self-Hosted +label: Self-Hosted CodeRabbit position: 4 collapsible: true collapsed: false diff --git a/docs/self-hosted/azure-devops.md b/docs/self-hosted/azure-devops.md index e56f937c..a843e1a7 100644 --- a/docs/self-hosted/azure-devops.md +++ b/docs/self-hosted/azure-devops.md @@ -11,11 +11,13 @@ The self-hosted option is only available for CodeRabbit Enterprise customers wit ::: -## Create a Azure DevOps User +## Create an Azure DevOps User - **Username**: Set the username to "CodeRabbit" for easier identification (optional). - **Profile Image**: Use the CodeRabbitAI logo for the user image (optional). +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + ## Add User to Projects Add the CodeRabbit user to each project where you want CodeRabbit to post reviews, with rights to post reviews & open PRs. @@ -28,6 +30,7 @@ Generate a personal access token for the CodeRabbit user to be added in the `.en - `Code` - Full - `Work Items` - Read, write, and manage +- `Build` - Read Consult official CodeRabbitAI documentation for a detailed [guide](https://docs.coderabbit.ai/platforms/azure-devops#generating-a-personal-access-token) on creating personal access tokens. @@ -61,39 +64,69 @@ LLM_PROVIDER=azure-openai LLM_TIMEOUT=360000 AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= -## it is recommended to use gpt-4o-mini, o1-mini, and o1-preview deployments -AZURE_GPT4OMINI_DEPLOYMENT_NAME= -AZURE_O1MINI_DEPLOYMENT_NAME=[] -AZURE_O1_DEPLOYMENT_NAME=[] -## gpt-4o is optional -AZURE_GPT4O_DEPLOYMENT_NAME= -## gpt-4-turbo is optional: itโ€™s expensive but provides better reviews than gpt-4o -AZURE_GPT4TURBO_DEPLOYMENT_NAME=[] +# it is recommended to deploy text-embedding-3-large, gpt-4.1-mini, o4-mini, o3, gpt-4.1 (optionally). +AZURE_TEXT_EMBEDDING_3_LARGE_DEPLOYMENT_NAME= +AZURE_GPT41MINI_DEPLOYMENT_NAME= +AZURE_O4MINI_DEPLOYMENT_NAME= +AZURE_O3_DEPLOYMENT_NAME= +AZURE_GPT41_DEPLOYMENT_NAME=[] +# optionally, deploy gpt-4o-mini instead of gpt-4.1-mini +AZURE_GPT4OMINI_DEPLOYMENT_NAME=[] +# optionally, deploy o3-mini instead of o4-mini +AZURE_O3MINI_DEPLOYMENT_NAME=[] +# optionally, deploy o1 instead of o3 +AZURE_O1_DEPLOYMENT_NAME=[] + +# OAuth2 Configuration (optional) +# This will use client_credentials flow to get an access token, +# and use it to make requests to the LLM provider. +# Here is more information on this flow: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow#first-case-access-token-request-with-a-shared-secret +# It is expected that the response from the OAuth2 server will be in the format +# { +# "access_token": "", +# "token_type": "Bearer", +# "expires_in": 3599, +# } +OAUTH2_ENDPOINT=[] +OAUTH2_CLIENT_ID=[] +OAUTH2_CLIENT_SECRET=[] +OAUTH2_SCOPE=[] + +HTTP_PROXY=[] +HTTPS_PROXY=[] +NO_PROXY=[] # if using AWS Bedrock +# it is required to have access to claude-3-haiku, claude-3-5-haiku, claude-sonnet-4, claude-opus-4. +LLM_PROVIDER=bedrock-anthropic +LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= TEMP_PATH=/cache -AST_GREP_RULES_PATH=/home/jailuser/ast-grep-rules -AST_GREP_ESSENTIALS=ast-grep-essentials - SELF_HOSTED=azure-devops AZURE_DEVOPS_BOT_TOKEN= AZURE_DEVOPS_BOT_USERNAME= + CODERABBIT_LICENSE_KEY= -CODERABBIT_API_KEY=[] -ENABLE_LEARNINGS=[true] +CODERABBIT_API_KEY= ENABLE_METRICS=[true] +ENABLE_LEARNINGS=[true] +# if using CodeRabbit's learnings, also provide the following +# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. +OBJECT_STORE_URI=[] JIRA_HOST=[] JIRA_PAT=[] LINEAR_PAT=[] + +ENABLE_WEB_SEARCH=[true] +PERPLEXITY_API_KEY=[] ``` :::note @@ -115,7 +148,7 @@ docker pull /coderabbit-agent:latest ### Verify the image is up -You can query `/health` endpoint to verify that the coderabbit-agent service is up and running. +You can query `/health` endpoint to verify that the `coderabbit-agent` service is up and running. ```bash curl 127.0.0.1:8080/health diff --git a/docs/self-hosted/bitbucket.md b/docs/self-hosted/bitbucket.md index 9559b6e0..7e7faf2b 100644 --- a/docs/self-hosted/bitbucket.md +++ b/docs/self-hosted/bitbucket.md @@ -1,5 +1,5 @@ --- -title: Use Self-Hosted CodeRabbit With Bitbucket Datacenter +title: Use Self-Hosted CodeRabbit With Bitbucket Datacenter sidebar_label: Bitbucket Datacenter description: Instructions to self-host CodeRabbit and integrate it with Bitbucket Datacenter. sidebar_position: 4 @@ -16,6 +16,8 @@ The self-hosted option is only available for CodeRabbit Enterprise customers wit - **Username**: Set the username to "CodeRabbit" for easier identification (optional). - **Profile Image**: Use the CodeRabbitAI logo for the user image (optional). +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + ## Add User to Projects Add the CodeRabbit user to each project where you want CodeRabbit to post reviews, with permissions to: @@ -36,9 +38,9 @@ Generate a personal access token for the CodeRabbit user to be added in the `.en - "Comment Added" 3. **Add Webhook URL**: Enter the URL pointing to the CodeRabbit service, followed by `/bitbucket_server_webhooks` (e.g., `http://127.0.0.1:8080/bitbucket_server_webhooks`). -## Prepare an `.env` file +## Prepare a `.env` file -Create an `.env` file with the following content: +Create a `.env` file with the following content: ```bash # if using OpenAI @@ -54,38 +56,72 @@ LLM_PROVIDER=azure-openai LLM_TIMEOUT=360000 AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= -## it is recommended to use gpt-4o-mini, o1-mini, and o1-preview deployments -AZURE_GPT4OMINI_DEPLOYMENT_NAME= -AZURE_O1MINI_DEPLOYMENT_NAME=[] -AZURE_O1_DEPLOYMENT_NAME=[] -## gpt-4o is optional -AZURE_GPT4O_DEPLOYMENT_NAME= -## gpt-4-turbo is optional: itโ€™s expensive but provides better reviews than gpt-4o -AZURE_GPT4TURBO_DEPLOYMENT_NAME=[] +# it is recommended to deploy text-embedding-3-large, gpt-4.1-mini, o4-mini, o3, gpt-4.1 (optionally). +AZURE_TEXT_EMBEDDING_3_LARGE_DEPLOYMENT_NAME= +AZURE_GPT41MINI_DEPLOYMENT_NAME= +AZURE_O4MINI_DEPLOYMENT_NAME= +AZURE_O3_DEPLOYMENT_NAME= +AZURE_GPT41_DEPLOYMENT_NAME=[] +# optionally, deploy gpt-4o-mini instead of gpt-4.1-mini +AZURE_GPT4OMINI_DEPLOYMENT_NAME=[] +# optionally, deploy o3-mini instead of o4-mini +AZURE_O3MINI_DEPLOYMENT_NAME=[] +# optionally, deploy o1 instead of o3 +AZURE_O1_DEPLOYMENT_NAME=[] + +# OAuth2 Configuration (optional) +# This will use client_credentials flow to get an access token, +# and use it to make requests to the LLM provider. +# Here is more information on this flow: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow#first-case-access-token-request-with-a-shared-secret +# It is expected that the response from the OAuth2 server will be in the format +# { +# "access_token": "", +# "token_type": "Bearer", +# "expires_in": 3599, +# } +OAUTH2_ENDPOINT=[] +OAUTH2_CLIENT_ID=[] +OAUTH2_CLIENT_SECRET=[] +OAUTH2_SCOPE=[] + +HTTP_PROXY=[] +HTTPS_PROXY=[] +NO_PROXY=[] # if using AWS Bedrock +# it is required to have access to claude-3-haiku, claude-3-5-haiku, claude-sonnet-4, claude-opus-4. +LLM_PROVIDER=bedrock-anthropic +LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= # System Configuration TEMP_PATH=/cache -AST_GREP_RULES_PATH=/home/jailuser/ast-grep-rules -AST_GREP_ESSENTIALS=ast-grep-essentials + SELF_HOSTED=bitbucket-server + BITBUCKET_SERVER_URL=/rest BITBUCKET_SERVER_WEBHOOK_SECRET= BITBUCKET_SERVER_BOT_TOKEN= BITBUCKET_SERVER_BOT_USERNAME= + CODERABBIT_LICENSE_KEY= -CODERABBIT_API_KEY=[] -# Optional Features -ENABLE_LEARNINGS=[true] +CODERABBIT_API_KEY= ENABLE_METRICS=[true] +ENABLE_LEARNINGS=[true] +# if using CodeRabbit's learnings, also provide the following +# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. +OBJECT_STORE_URI=[] + JIRA_HOST=[] JIRA_PAT=[] + LINEAR_PAT=[] + +ENABLE_WEB_SEARCH=[true] +PERPLEXITY_API_KEY=[] ``` :::note @@ -107,7 +143,7 @@ docker pull us-docker.pkg.dev/coderabbitprod/self-hosted/coderabbit-agent:latest ### Verify the image is up -You can query `/health` endpoint to verify that the coderabbit-agent service is up and running. +You can query `/health` endpoint to verify that the `coderabbit-agent` service is up and running. ```bash curl 127.0.0.1:8080/health diff --git a/docs/self-hosted/github.md b/docs/self-hosted/github.md index 422b5e14..3031e45c 100644 --- a/docs/self-hosted/github.md +++ b/docs/self-hosted/github.md @@ -22,6 +22,7 @@ Set the following Repository permissions: - Issues: Read & write - Metadata: Read-only - Pull requests: Read & write +- Actions: Read-only Set the following Organization permissions: @@ -41,6 +42,8 @@ Set the following events: - Push - Release +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + ## Gather information from the GitHub App - App ID @@ -64,16 +67,42 @@ LLM_PROVIDER=azure-openai LLM_TIMEOUT=360000 AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= -## it is recommended to use gpt-4o-mini, o1-mini, and o1-preview deployments -AZURE_GPT4OMINI_DEPLOYMENT_NAME= -AZURE_O1MINI_DEPLOYMENT_NAME=[] -AZURE_O1_DEPLOYMENT_NAME=[] -## gpt-4o is optional -AZURE_GPT4O_DEPLOYMENT_NAME= -## gpt-4-turbo is optional: itโ€™s expensive but provides better reviews than gpt-4o -AZURE_GPT4TURBO_DEPLOYMENT_NAME=[] +# it is recommended to deploy text-embedding-3-large, gpt-4.1-mini, o4-mini, o3, gpt-4.1 (optionally). +AZURE_TEXT_EMBEDDING_3_LARGE_DEPLOYMENT_NAME= +AZURE_GPT41MINI_DEPLOYMENT_NAME= +AZURE_O4MINI_DEPLOYMENT_NAME= +AZURE_O3_DEPLOYMENT_NAME= +AZURE_GPT41_DEPLOYMENT_NAME=[] +# optionally, deploy gpt-4o-mini instead of gpt-4.1-mini +AZURE_GPT4OMINI_DEPLOYMENT_NAME=[] +# optionally, deploy o3-mini instead of o4-mini +AZURE_O3MINI_DEPLOYMENT_NAME=[] +# optionally, deploy o1 instead of o3 +AZURE_O1_DEPLOYMENT_NAME=[] + +# OAuth2 Configuration (optional) +# This will use client_credentials flow to get an access token, +# and use it to make requests to the LLM provider. +# Here is more information on this flow: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow#first-case-access-token-request-with-a-shared-secret +# It is expected that the response from the OAuth2 server will be in the format +# { +# "access_token": "", +# "token_type": "Bearer", +# "expires_in": 3599, +# } +OAUTH2_ENDPOINT=[] +OAUTH2_CLIENT_ID=[] +OAUTH2_CLIENT_SECRET=[] +OAUTH2_SCOPE=[] + +HTTP_PROXY=[] +HTTPS_PROXY=[] +NO_PROXY=[] # if using AWS Bedrock +# it is required to have access to claude-3-haiku, claude-3-5-haiku, claude-sonnet-4, claude-opus-4. +LLM_PROVIDER=bedrock-anthropic +LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= @@ -86,9 +115,6 @@ ANTHROPIC_BASE_URL=[] TEMP_PATH=/cache -AST_GREP_RULES_PATH=/home/jailuser/ast-grep-rules -AST_GREP_ESSENTIALS=ast-grep-essentials - SELF_HOSTED=github GH_WEBHOOK_SECRET= @@ -100,26 +126,20 @@ GITHUB_APP_PEM_FILE= CODERABBIT_LICENSE_KEY= -CODERABBIT_API_KEY=[] -# This will use your CodeRabbit API key to store learnings on our servers. -ENABLE_LEARNINGS=[true] +CODERABBIT_API_KEY= ENABLE_METRICS=[true] +ENABLE_LEARNINGS=[true] +# if using CodeRabbit's learnings, also provide the following +# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. +OBJECT_STORE_URI=[] JIRA_HOST=[] JIRA_PAT=[] LINEAR_PAT=[] -OAUTH2_ENDPOINT=[] -OAUTH2_CLIENT_ID=[] -OAUTH2_CLIENT_SECRET=[] - -# Set to true to use the on-prem knowledge base features. This will take precedence over the ENABLE_LEARNINGS flag above. -SELF_HOSTED_KNOWLEDGE_BASE=[true] -# The branch which CodeRabbit will store the knowledge base json files in. -SELF_HOSTED_KNOWLEDGE_BASE_BRANCH=[coderabbitai/data] -# URL to the host running ChromaDB 0.5.20. -CHROMADB_URL=[http://chromadb:8000] +ENABLE_WEB_SEARCH=[true] +PERPLEXITY_API_KEY=[] ``` :::note @@ -129,7 +149,7 @@ CHROMADB_URL=[http://chromadb:8000] - For `GITHUB_APP_PEM_FILE`, flatten the PEM file by replacing newlines with `\n`. - For `GITHUB_HOSTNAME`, use GitHub Enterprise server's hostname, for example, โ€œgithub.acme-inc.comโ€ - You can generate `CODERABBIT_API_KEY` from CodeRabbit UI -> Organizations Settings -> API Keys. -- Refer to the [Self-hosted knowledge base](/integrations/knowledge-base#self-hosted) section for details on the `ON_PREM_KNOWLEDGE_BASE`. +- When `ENABLE_LEARNINGS` is set to `true`, CodeRabbit will use `CODERABBIT_API_KEY` to store learnings on our servers. ::: @@ -152,7 +172,7 @@ docker run --env-file .env --publish 127.0.0.1:8080:8080 /coder ### Verify the image is up -You can query `/health` endpoint to verify that the coderabbit-agent service is up and running. +You can query `/health` endpoint to verify that the `coderabbit-agent` service is up and running. ```bash curl 127.0.0.1:8080/health diff --git a/docs/self-hosted/gitlab.md b/docs/self-hosted/gitlab.md index b594b509..cd35c19f 100644 --- a/docs/self-hosted/gitlab.md +++ b/docs/self-hosted/gitlab.md @@ -16,6 +16,8 @@ The self-hosted option is only available for CodeRabbit Enterprise customers wit - **Username**: Set the username to "CodeRabbit" for easier identification (optional). - **Profile Image**: Use the CodeRabbitAI logo for the user image (optional). +We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. + ## Add User to Projects Add the CodeRabbit user to each project where you want CodeRabbit to post reviews, with at least `Developer` access. @@ -42,9 +44,9 @@ Consult official CodeRabbitAI documentation for a detailed [guide](https://docs. - Issues events - Merge request events -## Prepare an `.env` file +## Prepare a `.env` file -Create an `.env` file with the following content: +Create a `.env` file with the following content: ```bash # if using OpenAI @@ -60,16 +62,42 @@ LLM_PROVIDER=azure-openai LLM_TIMEOUT=360000 AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= -## it is recommended to use gpt-4o-mini, o1-mini, and o1-preview deployments -AZURE_GPT4OMINI_DEPLOYMENT_NAME= -AZURE_O1MINI_DEPLOYMENT_NAME=[] -AZURE_O1_DEPLOYMENT_NAME=[] -## gpt-4o is optional -AZURE_GPT4O_DEPLOYMENT_NAME= -## gpt-4-turbo is optional: itโ€™s expensive but provides better reviews than gpt-4o -AZURE_GPT4TURBO_DEPLOYMENT_NAME=[] +# it is recommended to deploy text-embedding-3-large, gpt-4.1-mini, o4-mini, o3, gpt-4.1 (optionally). +AZURE_TEXT_EMBEDDING_3_LARGE_DEPLOYMENT_NAME= +AZURE_GPT41MINI_DEPLOYMENT_NAME= +AZURE_O4MINI_DEPLOYMENT_NAME= +AZURE_O3_DEPLOYMENT_NAME= +AZURE_GPT41_DEPLOYMENT_NAME=[] +# optionally, deploy gpt-4o-mini instead of gpt-4.1-mini +AZURE_GPT4OMINI_DEPLOYMENT_NAME=[] +# optionally, deploy o3-mini instead of o4-mini +AZURE_O3MINI_DEPLOYMENT_NAME=[] +# optionally, deploy o1 instead of o3 +AZURE_O1_DEPLOYMENT_NAME=[] + +# OAuth2 Configuration (optional) +# This will use client_credentials flow to get an access token, +# and use it to make requests to the LLM provider. +# Here is more information on this flow: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow#first-case-access-token-request-with-a-shared-secret +# It is expected that the response from the OAuth2 server will be in the format +# { +# "access_token": "", +# "token_type": "Bearer", +# "expires_in": 3599, +# } +OAUTH2_ENDPOINT=[] +OAUTH2_CLIENT_ID=[] +OAUTH2_CLIENT_SECRET=[] +OAUTH2_SCOPE=[] + +HTTP_PROXY=[] +HTTPS_PROXY=[] +NO_PROXY=[] # if using AWS Bedrock +# it is required to have access to claude-3-haiku, claude-3-5-haiku, claude-sonnet-4, claude-opus-4. +LLM_PROVIDER=bedrock-anthropic +LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= @@ -82,23 +110,30 @@ ANTHROPIC_BASE_URL=[] TEMP_PATH=/cache -AST_GREP_RULES_PATH=/home/jailuser/ast-grep-rules -AST_GREP_ESSENTIALS=ast-grep-essentials - SELF_HOSTED=gitlab GITLAB_BOT_TOKEN= GITLAB_WEBHOOK_SECRET= +# if seeing '500 Internal Server Error' in CodeRabbit logs when trying to post review comments, +# make sure to set the following environment variable to 1500 (1.5 seconds). +GITLAB_PUBLISH_DELAY=[] + CODERABBIT_LICENSE_KEY= -CODERABBIT_API_KEY=[] -ENABLE_LEARNINGS=[true] +CODERABBIT_API_KEY= ENABLE_METRICS=[true] +ENABLE_LEARNINGS=[true] +# if using CodeRabbit's learnings, also provide the following +# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. +OBJECT_STORE_URI=[] JIRA_HOST=[] JIRA_PAT=[] LINEAR_PAT=[] + +ENABLE_WEB_SEARCH=[true] +PERPLEXITY_API_KEY=[] ``` :::note diff --git a/docs/tools/actionlint.md b/docs/tools/actionlint.md index 0fa4f628..ab787e0d 100644 --- a/docs/tools/actionlint.md +++ b/docs/tools/actionlint.md @@ -1,7 +1,7 @@ --- -title: Actionlint -sidebar_label: Actionlint -description: CodeRabbit's guide to Actionlint. +title: actionlint +sidebar_label: actionlint +description: CodeRabbit's guide to actionlint. --- ```mdx-code-block @@ -10,7 +10,7 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Actionlint](https://github.com/rhysd/actionlint/) is a static checker for +[`actionlint`](https://github.com/rhysd/actionlint/) is a static checker for GitHub Actions workflow files. ## Files @@ -26,4 +26,4 @@ CodeRabbit will use the default configuration. ## Links -- [Actionlint Configuration](https://github.com/rhysd/actionlint/blob/main/docs/config.md/) +- [`actionlint` Configuration](https://github.com/rhysd/actionlint/blob/main/docs/config.md/) diff --git a/docs/tools/brakeman.md b/docs/tools/brakeman.md new file mode 100644 index 00000000..d9fac002 --- /dev/null +++ b/docs/tools/brakeman.md @@ -0,0 +1,40 @@ +--- +title: Brakeman +sidebar_label: Brakeman +description: CodeRabbit's guide to Brakeman. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Brakeman](https://brakemanscanner.org/) is a static analysis tool which checks Ruby on Rails applications for security vulnerabilities. It scans your application's code for potential security issues and provides detailed reports about any vulnerabilities it finds. + +## Supported Files + +Brakeman will run on files with the following extensions: + +- `Gemfile` +- `*.rb` +- `*.erb` + +## Features + +Brakeman can detect many critical vulnerabilities such as: + +- SQL injection +- Cross-site scripting (XSS) +- Mass assignment +- Remote code execution +- And many more security vulnerabilities +- Out of date package versions +- Etc + +## Links + +- [Brakeman Official Website](https://brakemanscanner.org/) +- [Brakeman GitHub Repository](https://github.com/presidentbeef/brakeman) +- [Brakeman Documentation](https://brakemanscanner.org/docs/) +- [Warning Types](https://brakemanscanner.org/docs/warning_types/) diff --git a/docs/tools/checkmake.md b/docs/tools/checkmake.md new file mode 100644 index 00000000..8d623ca1 --- /dev/null +++ b/docs/tools/checkmake.md @@ -0,0 +1,30 @@ +--- +title: Checkmake +sidebar_label: Checkmake +description: CodeRabbit's guide to Checkmake. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Checkmake](https://github.com/mrtazz/checkmake) is a linter for Makefiles. + +## Files + +Checkmake will run checks against any `Makefile`. + +## Configuration + +Checkmake supports the following config files: + +- `checkmake.yml` +- `checkmake.yaml` + +CodeRabbit will use the default settings based on the profile selected if no config file is found. + +## Links + +- [Checkmake Configuration](https://github.com/mrtazz/checkmake#configuration) diff --git a/docs/tools/circleci.md b/docs/tools/circleci.md index ebd2318a..b7b54fb9 100644 --- a/docs/tools/circleci.md +++ b/docs/tools/circleci.md @@ -1,7 +1,7 @@ --- -title: CircleCi -sidebar_label: CircleCi -description: CodeRabbit's guide to CircleCi. +title: CircleCI +sidebar_label: CircleCI +description: CodeRabbit's guide to CircleCI. --- ```mdx-code-block @@ -10,11 +10,11 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[CircleCi](https://circleci.com/) is a static checker and validator for circleci config files. +[CircleCI](https://circleci.com/) is a static checker and validator for circleci config files. ## Files -We look for `CircleCi Configuration` files specifically in the following directory: +We look for `CircleCI Configuration` files specifically in the following directory: - `.circleci/config.yml` - `.circleci/config.yaml` @@ -25,4 +25,4 @@ CodeRabbit will use the default configuration. ## Links -- [CircleCi Configuration](https://circleci.com/docs/configuration-reference/) +- [CircleCI Configuration](https://circleci.com/docs/configuration-reference/) diff --git a/docs/tools/clippy.md b/docs/tools/clippy.md new file mode 100644 index 00000000..257af0e3 --- /dev/null +++ b/docs/tools/clippy.md @@ -0,0 +1,50 @@ +--- +title: Clippy +sidebar_label: Clippy +description: CodeRabbit's guide to Clippy. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Clippy](https://github.com/rust-lang/rust-clippy) is a collection of lints to catch common mistakes and improve your Rust code. It is the official linter for the Rust programming language. + +## Supported Files + +Clippy will run on files with the following extensions: + +- `*.rs` + +## Configuration + +Clippy supports the following configuration files: + +- `clippy.toml` +- `.clippy.toml` + +:::note + +Clippy does not require configuration to run. If no configuration file is found, it will use default settings. + +A Cargo.toml is required. + +::: + +## Features + +Clippy can detect many code quality issues such as: + +- Style violations +- Common mistakes +- Performance issues +- Deprecated code patterns +- And many more Rust-specific issues + +## Links + +- [Clippy GitHub Repository](https://github.com/rust-lang/rust-clippy) +- [Clippy Documentation](https://rust-lang.github.io/rust-clippy/master/) +- [Available Lints](https://rust-lang.github.io/rust-clippy/master/index.html) diff --git a/docs/tools/detekt.md b/docs/tools/detekt.md index 2a504a37..865dd69d 100644 --- a/docs/tools/detekt.md +++ b/docs/tools/detekt.md @@ -1,7 +1,7 @@ --- -title: Detekt -sidebar_label: Detekt -description: CodeRabbit's guide to Detekt. +title: detekt +sidebar_label: detekt +description: CodeRabbit's guide to detekt. --- ```mdx-code-block @@ -10,23 +10,23 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Detekt](https://detekt.dev/) is a static code analysis tool specifically designed for Kotlin projects +[`detekt`](https://detekt.dev/) is a static code analysis tool specifically designed for Kotlin projects ## Files -Detekt will run on files with the following extensions: +`detekt` will run on files with the following extensions: - `.kt` - `.kts` ## Configuration -Detekt uses a YAML style configuration file. +`detekt` uses a YAML style configuration file. -Detekt supports the following config files: +`detekt` supports the following config files: -- User-defined config file set at `reviews.tools.detekt.config_file` in your project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ Detekt โ†’ Config File" field in CodeRabbit's settings page. +- User-defined config file set at `reviews.tools.detekt.config_file` in your project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ `detekt` โ†’ Config File" field in CodeRabbit's settings page. ## Links -- [Detekt Configuration](https://detekt.dev/docs/introduction/configurations/) +- [`detekt` Configuration](https://detekt.dev/docs/introduction/configurations/) diff --git a/docs/tools/dotenv.md b/docs/tools/dotenv.md new file mode 100644 index 00000000..cac2613f --- /dev/null +++ b/docs/tools/dotenv.md @@ -0,0 +1,33 @@ +--- +title: Dotenv Linter +sidebar_label: Dotenv Linter +description: CodeRabbit's guide to Dotenv Linter. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Dotenv Linter](https://github.com/dotenv-linter/dotenv-linter) is a lightning-fast linter for `.env` files. It helps ensure your environment files are consistent, typo-free, and follow best practices. + +:::note + +Dotenv Linter does not require configuration to run and automatically anlysises `.env` files. If no configuration file is found, it will use default settings. + +::: + +## Features + +Dotenv Linter can detect: + +- Key duplication +- Missing values +- Incorrect formatting +- Invalid characters +- And many more issues + +## Links + +- [Dotenv Linter GitHub Repository](https://github.com/dotenv-linter/dotenv-linter) diff --git a/docs/tools/flake8.md b/docs/tools/flake8.md new file mode 100644 index 00000000..a1a18881 --- /dev/null +++ b/docs/tools/flake8.md @@ -0,0 +1,46 @@ +--- +title: Flake8 +sidebar_label: Flake8 +description: CodeRabbit's guide to Flake8. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Flake8](https://flake8.pycqa.org/) is a Python linting utility that wraps PyFlakes, pycodestyle, and Mccabe to check your Python or Jupiter Notebook code for style and logical errors. + +## Supported Files + +Flake8 will run on files with the following extensions: + +- `*.py` +- `*.ipynb` (using nbqa) + +## Configuration + +Flake8 supports the following config files: + +- `.flake8` + +CodeRabbit will not run Flake8 if no config file is found. + +## Features + +Flake8 can detect many issues such as: + +- Style violations (PEP 8) +- Logical errors and unused imports +- Code complexity issues +- Syntax errors +- And many more + +## Links + +- [Flake8 Official Website](https://flake8.pycqa.org/) +- [Flake8 GitHub Repository](https://github.com/pycqa/flake8) +- [Flake8 Documentation](https://flake8.pycqa.org/en/latest/) +- [Flake8 Configuration](https://flake8.pycqa.org/en/latest/user/configuration.html) +- [nbqa Documentation](https://github.com/nbQA-dev/nbQA) diff --git a/docs/tools/htmlhint.md b/docs/tools/htmlhint.md new file mode 100644 index 00000000..c8fd61ea --- /dev/null +++ b/docs/tools/htmlhint.md @@ -0,0 +1,31 @@ +--- +title: HTMLHint +sidebar_label: HTMLHint +description: CodeRabbit's guide to HTMLHint. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[HTMLHint](https://htmlhint.com/) is a static code analysis tool for HTML. + +## Files + +HTMLHint will run checks against `*.html` files. + +## Configuration + +HTMLHint supports the following config files: + +- `.htmlhintrc` +- `.htmlhintrc.json` +- `htmlhintrc.json` + +CodeRabbit will use the default settings based on the profile selected if no config file is found. + +## Links + +- [HTMLHint Configuration](https://htmlhint.com/docs/user-guide/getting-started) diff --git a/docs/tools/list.md b/docs/tools/list.md new file mode 100644 index 00000000..f81880a3 --- /dev/null +++ b/docs/tools/list.md @@ -0,0 +1,90 @@ +--- +title: List of supported tools +description: Overview of CodeRabbit's supported linters and security analysis tools +--- + +This is a list of the third-party open-source linters and security analysis tools that CodeRabbit uses to generate code reviews. + +For more information about fine-tuning the CodeRabbit configuration of a tool, click that tool's name in the following list. + +For an overview of how CodeRabbit uses these tools when generating code reviews, as well as general information about controlling their use, see [Configure third-party tools](/tools/). + +| Technology | Tools | Category | +| :-------------------------- | :--------------------------------------------------------- | :-------------------------------------------------- | +| All | [Gitleaks][Gitleaks], [Pipeline Remediation][Pipeline] | Code Security, CI/CD | +| Azure DevOps Pipelines | [Pipeline Remediation][Pipeline] | CI/CD Failure Remediation | +| CircleCI | [CircleCI][CircleCI], [Pipeline Remediation][Pipeline] | Configuration Validation, CI/CD Failure Remediation | +| CloudFormation | [Checkov][Checkov] | Code Security | +| Cppcheck | [Cppcheck][Cppcheck] | Code Quality | +| CSS | [Biome][Biome] | Code Quality | +| Docker | [Hadolint][Hadolint], [Checkov][Checkov] | Code Quality, Code Security | +| Environment Files (.env) | [Dotenv Linter][DotenvLinter] | Code Quality | +| GitHub Actions | [actionlint][actionlint], [Pipeline Remediation][Pipeline] | Code Quality, CI/CD Failure Remediation | +| GitLab Pipelines | [Pipeline Remediation][Pipeline] | CI/CD Failure Remediation | +| Go | [golangci-lint][golangci-lint] | Code Quality | +| Helm | [Checkov][Checkov] | Code Security | +| HTML | [HTMLHint][HTMLHint] | Code Quality | +| Javascript | [Biome][Biome], [oxlint][oxlint] | Code Quality | +| JSON, JSONC | [Biome][Biome] | Code Quality | +| JSX | [Biome][Biome], [oxlint][oxlint] | Code Quality | +| Kotlin | [detekt][detekt] | Code Quality | +| Kubernetes | [Checkov][Checkov] | Code Security | +| Lua | [Luacheck][Luacheck] | Code Quality | +| Makefile | [Checkmake][Checkmake] | Code Quality | +| Markdown | [markdownlint][markdownlint], [LanguageTool][LanguageTool] | Code Quality, Grammar Checking | +| PHP | [PHPStan][PHPStan], [PHPMD][PHPMD], [PHPCS][PHPCS] | Code Quality | +| Plaintext | [LanguageTool][LanguageTool] | Grammar and Spell Checking | +| Java | [PMD][PMD] | Code Quality | +| Protobuf | [Buf][Buf] | Code Quality | +| Python | [Ruff][Ruff], [Pylint][Pylint], [Flake8][Flake8] | Code Quality | +| Jupyter Notebooks | [Ruff][Ruff], [Pylint][Pylint], [Flake8][Flake8] | Code Quality | +| Regal | [Regal][Regal] | Code Quality | +| Ruby | [RuboCop][RuboCop], [Brakeman][Brakeman] | Code Quality, Code Security | +| Rust | [Clippy][Clippy] | Code Quality | +| Semgrep | [Semgrep][Semgrep] | Code Security | +| Shell (sh, bash, ksh, dash) | [ShellCheck][ShellCheck] | Code Quality | +| Shopify | [Shopify CLI][ShopifyCLI] | Code Quality | +| SQL | [SQLFluff][SQLFluff] | Code Quality | +| Swift | [SwiftLint][SwiftLint] | Code Quality | +| Terraform | [Checkov][Checkov] | Code Security | +| TSX | [Biome][Biome], [oxlint][oxlint] | Code Quality | +| Typescript | [Biome][Biome], [oxlint][oxlint] | Code Quality | +| YAML | [YAMLlint][YAMLlint] | Code Quality | +| Prisma | [Prisma Lint][PrismaLint] | Code Quality | + +[ShellCheck]: /tools/shellcheck.md +[SQLFluff]: /tools/sqlfluff.md +[Ruff]: /tools/ruff.md +[markdownlint]: /tools/markdownlint.md +[LanguageTool]: /tools/languagetool.md +[Biome]: /tools/biome.md +[Hadolint]: /tools/hadolint.md +[SwiftLint]: /tools/swiftlint.md +[PHPStan]: /tools/phpstan.md +[golangci-lint]: /tools/golangci-lint.md +[YAMLlint]: /tools/yamllint.md +[Gitleaks]: /tools/gitleaks.md +[Checkov]: /tools/checkov.md +[detekt]: /tools/detekt.md +[RuboCop]: /tools/rubocop.md +[Buf]: /tools/buf.md +[actionlint]: /tools/actionlint.md +[Regal]: /tools/regal.md +[PMD]: /tools/pmd.md +[Cppcheck]: /tools/cppcheck.md +[CircleCI]: /tools/circleci.md +[Semgrep]: /tools/semgrep.md +[Pipeline]: /tools/pipeline-remediation.md +[PrismaLint]: /tools/prisma-lint.md +[oxlint]: /tools/oxlint.md +[ShopifyCLI]: /tools/shopify-cli.md +[Luacheck]: /tools/luacheck.md +[Brakeman]: /tools/brakeman.md +[Clippy]: /tools/clippy.md +[Pylint]: /tools/pylint.md +[DotenvLinter]: /tools/dotenv.md +[HTMLHint]: /tools/htmlhint.md +[Checkmake]: /tools/checkmake.md +[PHPMD]: /tools/phpmd.md +[PHPCS]: /tools/phpcs.md +[Flake8]: /tools/flake8.md diff --git a/docs/tools/luacheck.md b/docs/tools/luacheck.md new file mode 100644 index 00000000..3a8414b6 --- /dev/null +++ b/docs/tools/luacheck.md @@ -0,0 +1,49 @@ +--- +title: Luacheck +sidebar_label: Luacheck +description: CodeRabbit's guide to Luacheck. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Luacheck](https://github.com/mpeterv/luacheck) is a static analyzer and linter for Lua code that detects various issues such as undefined global variables, unused variables and values, accessing uninitialized variables, unreachable code, and more. + +## Supported Files + +Luacheck will run on files with the following extensions: + +- `.lua` + +## Configuration + +Luacheck supports the following configuration files: + +- `.luacheckrc` +- `luacheckrc` +- `.luacheckrc.lua` +- `luacheckrc.lua` + +:::note + +Luacheck does not require configuration to run. If no configuration file is found, it will use default settings. + +::: + +## Features + +Luacheck can detect: + +- Usage of undefined global variables +- Unused variables and values +- Accessing uninitialized variables +- Unreachable code +- And many more issues + +## Links + +- [Luacheck GitHub Repository](https://github.com/mpeterv/luacheck) +- [Luacheck Documentation](https://luacheck.readthedocs.io/) diff --git a/docs/tools/markdownlint.md b/docs/tools/markdownlint.md index 5b741843..0e883437 100644 --- a/docs/tools/markdownlint.md +++ b/docs/tools/markdownlint.md @@ -1,7 +1,7 @@ --- -title: Markdownlint -sidebar_label: Markdownlint -description: CodeRabbit's guide to Markdownlint. +title: markdownlint +sidebar_label: markdownlint +description: CodeRabbit's guide to markdownlint. --- ```mdx-code-block @@ -10,7 +10,7 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Markdownlint](https://github.com/DavidAnson/markdownlint) is a linter for Markdown. +[`markdownlint-cli2`](https://github.com/DavidAnson/markdownlint) is a linter for Markdown. ## Files @@ -21,7 +21,7 @@ Markdownlint will run on files with the following extensions: ## Configuration -Markdownlint supports the following config files: +`markdownlint-cli2` supports the following config files: - `.markdownlint.jsonc` - `.markdownlint.json` @@ -32,4 +32,4 @@ CodeRabbit will use the default settings based on the profile selected if no con ## Links -- [Markdownlint Configuration](https://github.com/DavidAnson/markdownlint?tab=readme-ov-file#configuration) +- [`markdownlint-cli2` Configuration](https://github.com/DavidAnson/markdownlint?tab=readme-ov-file#configuration) diff --git a/docs/tools/oxlint.md b/docs/tools/oxlint.md new file mode 100644 index 00000000..fd5e7e2c --- /dev/null +++ b/docs/tools/oxlint.md @@ -0,0 +1,50 @@ +--- +title: Oxlint +sidebar_label: Oxlint +description: CodeRabbit's guide to Oxlint. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Oxlint](https://oxc.rs/docs/guide/usage/linter) is a blazingly fast JavaScript/TypeScript linter written in Rust that is 50-100x faster than ESLint. + +## Supported Files + +Oxlint will run on files with the following extensions: + +- `.js` +- `.mjs` +- `.cjs` +- `.jsx` +- `.ts` +- `.mts` +- `.cts` +- `.tsx` +- `.vue` +- `.astro` +- `.svelte` + +## Configuration + +Oxlint supports the following configuration file: + +- `.oxlintrc.json` + +:::note + +If no Oxlint config file is found and Biome is enabled, CodeRabbit will use Biome instead as Oxlint functionality is included within Biome. + +If Biome is not enabled or an Oxlint config file is found, CodeRabbit will use the `.oxlintrc.json` Oxlint config to run. + +Oxlint does not require configuration to run if Biome is disabled and Oxlint is enabled. + +::: + +## Links + +- [Oxlint GitHub Repository](https://github.com/oxc-project/oxc/releases/) +- [Oxlint Website](https://oxc.rs/docs/guide/usage/linter) diff --git a/docs/tools/phpcs.md b/docs/tools/phpcs.md new file mode 100644 index 00000000..468e23dc --- /dev/null +++ b/docs/tools/phpcs.md @@ -0,0 +1,56 @@ +--- +title: PHPCS +sidebar_label: PHPCS +description: CodeRabbit's guide to PHPCS. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[PHPCS](https://github.com/squizlabs/PHP_CodeSniffer) (PHP CodeSniffer) is a development tool that ensures your code conforms to a coding standard. It is an essential tool for any development team that wants to ensure their code is consistent and follows best practices. + +## Files + +PHPCS will run on files with the following extensions: + +- `.php` + +## Features + +PHPCS can detect and fix various coding standard violations including: + +- **PSR Standards**: Enforces PSR-1, PSR-2, PSR-12, and other coding standards +- **Custom Standards**: Supports custom coding standards and rules +- **Auto-fixing**: Can automatically fix many coding standard violations +- **Custom Rules**: Allows creation of custom sniff rules +- **Multiple Standards**: Can enforce multiple coding standards simultaneously + +## Popular Standards + +PHPCS supports many coding standards including: + +- **PSR-1**: Basic Coding Standard +- **PSR-2**: Coding Style Guide +- **PSR-12**: Extended Coding Style +- **Squiz**: Squiz Labs coding standard +- **PEAR**: PEAR coding standard +- **Zend**: Zend Framework coding standard + +## Configuration + +PHPCS requires a configuration file to run. CodeRabbit will only run PHPCS if one of the following configuration files is found: + +- `phpcs.xml` - XML configuration file +- `phpcs.xml.dist` - Distributed XML configuration file + +CodeRabbit will not run PHPCS if no configuration file is found. + +## Links + +- [PHPCS GitHub Repository](https://github.com/squizlabs/PHP_CodeSniffer) +- [PHPCS Documentation](https://github.com/squizlabs/PHP_CodeSniffer/wiki) +- [Available Coding Standards](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Coding-Standards) +- [Creating Custom Standards](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Coding-Standards#creating-a-coding-standard) diff --git a/docs/tools/phpmd.md b/docs/tools/phpmd.md new file mode 100644 index 00000000..84df5b11 --- /dev/null +++ b/docs/tools/phpmd.md @@ -0,0 +1,44 @@ +--- +title: PHPMD +sidebar_label: PHPMD +description: CodeRabbit's guide to PHPMD. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[PHPMD](https://phpmd.org/) (PHP Mess Detector) is a static analysis tool for PHP that detects potential problems in your code such as possible bugs, suboptimal code, overcomplicated expressions, and unused parameters, variables, methods, and classes. + +## Files + +PHPMD will run on files with the following extensions: + +- `.php` + +## Features + +PHPMD can detect various code quality issues including: + +- **Clean Code Rules**: Detects code smells and violations of clean code principles +- **Controversial Rules**: Identifies potentially problematic code patterns +- **Design Rules**: Finds design-related issues and architectural problems +- **Naming Rules**: Checks for naming convention violations +- **Unused Code Rules**: Detects unused variables, parameters, methods, and classes +- **Size Rules**: Identifies overly complex methods and classes + +### Review Mode Behavior + +CodeRabbit's review mode affects which PHPMD rules are applied: + +- **Chill Mode**: Only checks for unused code (`unusedcode` rule set) +- **Nitpick Mode**: Checks all rule sets including clean code, code size, controversial rules, design issues, naming conventions, and unused code (`cleancode,codesize,controversial,design,naming,unusedcode`) + +## Links + +- [PHPMD Official Website](https://phpmd.org/) +- [PHPMD GitHub Repository](https://github.com/phpmd/phpmd) +- [PHPMD Documentation](https://phpmd.org/documentation/index.html) +- [Available Rules](https://phpmd.org/rules/index.html) diff --git a/docs/tools/pipeline-remediation.md b/docs/tools/pipeline-remediation.md new file mode 100644 index 00000000..2beb0213 --- /dev/null +++ b/docs/tools/pipeline-remediation.md @@ -0,0 +1,177 @@ +--- +title: Pipeline Failure Remediation +sidebar_label: Pipeline Remediation +description: CodeRabbit's automated pipeline failure detection and remediation capabilities. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +## Overview + +Are pipeline failures holding up your pull requests? Is your latest code failing to build and digging through the failure logs is an absolute nightmare? CodeRabbit's Pipeline Failure Remediation tool automatically detects and fixes build failures across your CI/CD pipelines. + +Our intelligent AI system analyzes pipeline failures in real-time, providing inline comments and actionable suggestions to quickly resolve issues. We support multiple CI/CD platforms and integrate with popular security scanning tools to provide comprehensive remediation guidance. + +## Example Remediations + +With CodeRabbit CI/CD Pipeline Remediation, you have coderabbit automatically review the output of any tooling you desire. Here are some examples of the types of common issues we can help you fix: + +### Docker Build Issues + +- Missing build dependencies +- Base image compatibility +- Multi-stage build optimization +- Cache utilization improvements + +Docker Build Remediation + +### Java Build & Testing + +- Maven/Gradle dependency conflicts +- Compilation errors +- Test failures +- Memory allocation issues + +Java Build Remediation + +### Kubernetes Deployments + +- Service configuration validation +- Resource allocation optimization +- Network policy fixes +- Security context remediation + +Kubernetes Configuration + +### NPM Package Management + +- Package resolution conflicts +- Version compatibility issues +- Security vulnerability patches +- Build script optimization + +NPM Dependencies + +### Python Environment + +- Package dependency resolution +- Virtual environment setup +- Test framework configuration +- Code style compliance + +Python Build Issues + +### Security Scanning + +- SAST finding remediation +- Code injection prevention +- Security best practices +- Compliance validation + +Security Scan Results + +### Terraform and Infrastructure as Code + +- Resource configuration validation +- State management issues +- Provider compatibility +- Security group optimization + +Terraform Configuration + +## Supported Platforms + +### GitHub Actions + +- Automatic detection of workflow failures +- Inline fixes for common build issues +- Integration with GitHub Checks +- Support for custom actions and workflows + +### GitLab CI/CD + +- GitLab CI/CD Pipeline failure analysis +- Integration with GitLab Advanced Security +- Support for DAST (Dynamic Application Security Testing) findings +- Remediation for SAST (Static Application Security Testing) issues + +GitLab CI/CD + +GitLab Security Integration + +### CircleCI + +- CircleCI Pipeline failure analysis +- Job-level error analysis +- Configuration validation +- Dependency resolution + +CircleCI Integration + +### Azure DevOps Pipelines + +- Azure DevOps CI/CD Pipeline failure analysis +- Integration with Azure DevOps Checks +- Support for custom tasks and pipelines +- Remediation for build issues + +Azure DevOps Integration + +## Common Use Cases + +Our tool handles a wide range of pipeline failures including: + +### Build Failures + +- Docker build issues +- Node.js dependency conflicts +- Java compilation errors +- Python package resolution +- Go module management + +### Infrastructure as Code + +- Kubernetes manifest validation +- Terraform template errors +- CloudFormation stack issues +- Ansible playbook failures + +### Security Pipeline Integration + +- SAST finding remediation +- DAST vulnerability fixes +- Dependency scanning +- Container security + +### Testing Failures + +- Unit test failures +- Integration test errors +- End-to-end test issues +- Performance test threshold violations + +## How It Works + +1. **Detection**: CodeRabbit monitors your pipeline runs and automatically detects failures +2. **Analysis**: Our AI analyzes the failure logs and context to determine the root cause +3. **Remediation**: We provide inline suggestions and automated fixes where possible +4. **Learning**: The system learns from successful fixes to improve future recommendations + +## Best Practices + +1. **Keep Dependencies Updated**: Regular dependency updates help prevent build failures +2. **Use Lock Files**: Lock files ensure consistent builds across environments +3. **Implement Caching**: Proper caching strategies speed up builds and reduce failures +4. **Monitor Resource Usage**: Ensure sufficient resources are allocated to prevent timeouts +5. **Maintain Clean Tests**: Well-maintained tests reduce false positives + +## Links + +- [GitHub Actions Configuration](https://docs.github.com/en/actions) +- [GitLab CI/CD Documentation](https://docs.gitlab.com/ee/ci/) +- [CircleCI Documentation](https://circleci.com/docs/) +- [Azure DevOps Pipeline Documentation](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-devops) diff --git a/docs/tools/prisma-lint.md b/docs/tools/prisma-lint.md new file mode 100644 index 00000000..33a36904 --- /dev/null +++ b/docs/tools/prisma-lint.md @@ -0,0 +1,46 @@ +--- +title: Prisma Lint +sidebar_label: Prisma Lint +description: CodeRabbit's guide to Prisma Lint. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Prisma Lint](https://github.com/loop-payments/prisma-lint) is a linter for Prisma schema files that helps enforce consistent conventions and best practices in your Prisma schemas. + +## Files + +Prisma Lint will run on files with the following extensions: + +- `.prisma` + +## Configuration + +Prisma Lint supports the following config files: + +- `.prismalintrc.json` +- `.prismalintrc` +- `.prismalintrc.js` +- `.prismalintrc.yaml` +- `.prismalintrc.yml` +- `prismalint.config.js` +- User-defined config file set at `reviews.tools.prismalint.config_file` in your project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ Prisma Lint โ†’ Config File" field in CodeRabbit's settings page. + +:::note + +By default, Prisma Lint looks for schema files at `prisma/schema.prisma`. If you have a custom schema path specified in the `prisma.schema` field within `package.json`, that will be used instead. + +::: + +## Rule Configuration + +Rules can be configured in your `.prismalintrc.json` file. See the [Prisma Lint Rules Documentation](https://github.com/loop-payments/prisma-lint/blob/main/RULES.md) for more information on the available rules and their configuration options. + +## Links + +- [Prisma Lint GitHub Repository](https://github.com/loop-payments/prisma-lint) +- [Prisma Lint Rules Documentation](https://github.com/loop-payments/prisma-lint/blob/main/RULES.md) diff --git a/docs/tools/pylint.md b/docs/tools/pylint.md new file mode 100644 index 00000000..6c45484d --- /dev/null +++ b/docs/tools/pylint.md @@ -0,0 +1,50 @@ +--- +title: Pylint +sidebar_label: Pylint +description: CodeRabbit's guide to Pylint. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Pylint](https://pylint.pycqa.org/) is a static code analysis tool for Python or Jupiter Notebooks. It checks your Python code for errors, enforces a coding standard, and looks for code smells. + +## Supported Files + +Pylint will run on files with the following extensions: + +- `*.py` +- `.ipynb` (using nbqa) + +## Configuration + +Pylint supports the following config files: + +- `.pylintrc` +- `pylintrc` +- `.pylintrc.toml` +- `pylintrc.toml` + +CodeRabbit will not run Pylint if no config file is found. + +## Features + +Pylint can detect many issues such as: + +- Coding standard violations (PEP8) +- Unused variables and imports +- Undefined variables +- Code smells and refactoring suggestions +- Error-prone constructs +- And many more + +## Links + +- [Pylint Official Website](https://pylint.pycqa.org/) +- [Pylint GitHub Repository](https://github.com/pylint-dev/pylint) +- [Pylint Documentation](https://pylint.pycqa.org/en/latest/) +- [Message Control](https://pylint.pycqa.org/en/latest/user_guide/message-control.html) +- [nbqa Documentation](https://github.com/nbQA-dev/nbQA) diff --git a/docs/tools/regal.md b/docs/tools/regal.md index 0783ebdd..d05be084 100644 --- a/docs/tools/regal.md +++ b/docs/tools/regal.md @@ -10,7 +10,7 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Regal](https://docs.styra.com/regal/) is a linter and language server for Rego. +[Regal](https://docs.styra.com/regal/) is a linter and language server for Rego, the language of [Open Policy Agent](http://openpolicyagent.org) (OPA). ## Files @@ -20,12 +20,10 @@ Regal will run on files with the following extensions: ## Configuration -Regal uses a YAML style configuration file. We look for the following config file: +Regal uses a YAML configuration file located at `.regal/config.yaml`. -- `.regal/config.yaml` - -CodeRabbit will use the default settings based on the profile selected if no config file is found. +CodeRabbit will use the default settings based on the profile selected if no configuration file is found. ## Links -- [Regal Configuration](https://docs.styra.com/regal#configuration/) +- [Regal Configuration](https://docs.styra.com/regal#configuration) diff --git a/docs/tools/rubocop.md b/docs/tools/rubocop.md index 9bb68286..45a24de7 100644 --- a/docs/tools/rubocop.md +++ b/docs/tools/rubocop.md @@ -1,7 +1,7 @@ --- -title: Rubocop -sidebar_label: Rubocop -description: CodeRabbit's guide to Rubocop. +title: RuboCop +sidebar_label: RuboCop +description: CodeRabbit's guide to RuboCop. --- ```mdx-code-block @@ -10,11 +10,11 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Rubocop](https://rubocop.org/) A Ruby static code analyzer and formatter, based on the community Ruby style guide. +[RuboCop](https://rubocop.org/) A Ruby static code analyzer and formatter, based on the community Ruby style guide. ## Files -Rubocop will run on the following files and extensions: +RuboCop will run on the following files and extensions: - `.rb` - `.arb` @@ -72,7 +72,7 @@ Rubocop will run on the following files and extensions: ## Configuration -Rubocop uses a YAML style configuration file. We look for the following files anywhere in the repository: +RuboCop uses a YAML style configuration file. We look for the following files anywhere in the repository: - `.rubocop.yml` - `.rubocop.yaml` @@ -81,4 +81,4 @@ CodeRabbit will use the default settings based on the profile selected if no con ## Links -- [Rubocop Configuration](https://docs.rubocop.org/rubocop/1.65/configuration.html/) +- [RuboCop Configuration](https://docs.rubocop.org/rubocop/1.65/configuration.html/) diff --git a/docs/tools/ruff.md b/docs/tools/ruff.md index fe897d7b..97ebacde 100644 --- a/docs/tools/ruff.md +++ b/docs/tools/ruff.md @@ -10,13 +10,14 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Ruff](https://docs.astral.sh/ruff/) is a linter for Python. +[Ruff](https://docs.astral.sh/ruff/) is a linter for Python or Jupiter Notebooks. ## Files Ruff will run on files with the following extensions: - `.py` +- `.ipynb` (using nbqa) ## Configuration @@ -31,3 +32,4 @@ CodeRabbit will use the default settings based on the profile selected if no con ## Links - [Ruff Configuration](https://docs.astral.sh/ruff/configuration/) +- [nbqa Documentation](https://github.com/nbQA-dev/nbQA) diff --git a/docs/tools/semgrep.md b/docs/tools/semgrep.md index 0442acfb..441dcf38 100644 --- a/docs/tools/semgrep.md +++ b/docs/tools/semgrep.md @@ -10,14 +10,13 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Semgrep](https://semgrep.dev/) is a static analysis tool designed to scan code -for security vulnerabilities and code quality issues. +[Semgrep](https://github.com/semgrep/semgrep) is an open-source static analysis tool designed to scan code for security vulnerabilities and code quality issues. ## Configuration -Semgrep uses a YAML style configuration file. By default we will automatically +Semgrep uses a YAML style configuration file. By default, we will automatically use the following files if any are set in the root directory of your -repostitory. +repository. - `semgrep.yml` or `semgrep.yaml` - `semgrep.config.yml` or `semgrep.config.yaml` @@ -28,10 +27,12 @@ Semgrep supports the following config files: project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ Semgrep โ†’ Config File" field in CodeRabbit's settings page. -Due to licensing, CodeRabbit does not ship with the [community-created Semgrep rules](https://github.com/returntocorp/semgrep-rules), but you're free to use these in your own `semgrep.yml` config file. +Due to licensing, CodeRabbit does not ship with the [community-created Semgrep rules](https://github.com/returntocorp/semgrep-rules). :::note -CodeRabbit will only run Semgrep if your repository contains a Semgrep config file. This config must use the default file names or you must define the path to this file in the `.coderabbit.yaml` or config UI. + +CodeRabbit will only run Semgrep if your repository contains a Semgrep config file. This config must use the default file names, or you must define the path to this file in the `.coderabbit.yaml` or config UI. + ::: ## Links @@ -41,43 +42,21 @@ CodeRabbit will only run Semgrep if your repository contains a Semgrep config fi ## Files -Semgrep will run on the following files and extensions: - -- `Apex` -- `Bash` -- `.c` -- `.cpp` -- `.cs` -- `.clj` -- `.dart` -- `Dockerfile` -- `.ex` -- `.html` -- `.go` -- `.java` -- `.js` -- `.jsx` -- `.json` -- `.jl` -- `.jsonnet` -- `.kt` -- `.kts` -- `Lisp` -- `.lua` -- `.ml` -- `.php` -- `.py` -- `.r` -- `.rb` -- `.rs` -- `.scala` -- `Scheme` -- `.sol` -- `.swift` -- `.tf` -- `.ts` -- `.tsx` -- `.yaml` -- `.xml` -- `ERB` -- `Jinja` +Semgrep will run on the following files types: + +- C/C++ +- C# +- Go +- Java +- JavaScript +- Kotlin +- Python +- TypeScript +- Ruby +- Rust +- JSX +- PHP +- Scala +- Swift +- Terraform +- JSON diff --git a/docs/tools/shopify-cli.md b/docs/tools/shopify-cli.md new file mode 100644 index 00000000..934a6345 --- /dev/null +++ b/docs/tools/shopify-cli.md @@ -0,0 +1,56 @@ +--- +title: Shopify CLI +sidebar_label: Shopify CLI +description: CodeRabbit's guide to Shopify CLI. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[Shopify CLI](https://github.com/Shopify/cli) is a command-line tool that helps you build Shopify apps, themes, and custom storefronts. It provides functionality for initializing, building, developing, and deploying Shopify projects. + +## Validation Rules + +The tool checks for: + +### Theme Validation + +- Liquid syntax errors +- Theme requirements compliance +- Asset organization +- Performance best practices +- Accessibility standards + +### App Validation + +- App extension configuration +- Function implementation +- API version compatibility +- Security best practices + +## Common Issues + +The tool helps identify and fix: + +1. Theme Issues: + + - Invalid Liquid syntax + - Missing required templates + - Performance bottlenecks + - Accessibility violations + +2. App Issues: + - Invalid API usage + - Missing dependencies + - Configuration errors + - Security vulnerabilities + +## Links + +- [Shopify CLI GitHub Repository](https://github.com/Shopify/cli) +- [Shopify CLI Theme Documentation](https://shopify.dev/docs/api/shopify-cli/theme) +- [Shopify CLI App Documentation](https://shopify.dev/docs/apps/tools/cli) +- [Theme Development Requirements](https://shopify.dev/docs/themes/store/requirements) diff --git a/docs/tools/sqlfluff.md b/docs/tools/sqlfluff.md new file mode 100644 index 00000000..9eb959f7 --- /dev/null +++ b/docs/tools/sqlfluff.md @@ -0,0 +1,41 @@ +--- +title: SQLFluff +sidebar_label: SQLFluff +description: CodeRabbit's guide to SQLFluff. +--- + +```mdx-code-block +import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; + + +``` + +[SQLFluff](https://github.com/sqlfluff/sqlfluff) is a SQL linter and auto-formatter for standardizing SQL code. + +## Files + +SQLFluff will run on files with the following extensions: + +- `.sql` + +## Configuration + +SQLFluff supports the following config files: + +- User-defined config file set at `reviews.tools.sqlfluff.config_file` in your project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ SQLFluff โ†’ Config File" field in CodeRabbit's settings page. +- `setup.cfg` +- `tox.ini` +- `pep8.ini` +- `.sqlfluff` +- `pyproject.toml` + +:::note + +CodeRabbit will only run SQLFluff if your repository contains a SQLFluff config file. This config must use one of the default file names listed above, or you must define the path to this file in the `.coderabbit.yaml` or config UI. + +::: + +## Links + +- [SQLFluff Configuration](https://docs.sqlfluff.com/en/stable/configuration.html) +- [SQLFluff Rules Reference](https://docs.sqlfluff.com/en/stable/rules.html) diff --git a/docs/tools/tools.md b/docs/tools/tools.md index 27313ab9..45b376c5 100644 --- a/docs/tools/tools.md +++ b/docs/tools/tools.md @@ -1,10 +1,10 @@ --- -title: Supported Tools -sidebar_label: Supported Tools +title: Configure third-party tool use description: Overview of CodeRabbit's supported linters and security analysis tools. -sidebar_position: 1 --- +This page provides an overview of how CodeRabbit uses third-party open-source tools to deliver its multifaceted code reviews. For a complete list of supported tools, see [Supported tools](/tools/list). + ```mdx-code-block import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; @@ -13,6 +13,8 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; CodeRabbit supports various linters and security analysis tools to improve the code review process. The output of these tools is used to enhance the feedback provided by CodeRabbit, making it possible to provide 1-click fixes for common issues. +All tool runs are done in a secure sandboxed execution environment. + ## Enabling/Disabling Tools You can enable or disable tools by setting `reviews.tools..enabled` in your project's `.coderabbit.yaml` file or setting the "Review โ†’ Tools โ†’ Tool โ†’ Enabled" field in CodeRabbit's settings page. @@ -40,58 +42,6 @@ Remove extraneous f prefix (F541) ``` -## Supported Tools - -| Technology | Tools | Category | -| :-------------------------- | :--------------------------------------------------------- | :----------------------------- | -| All | [Gitleaks][Gitleaks] | Code Security | -| CircleCi | [CircleCi][CircleCi] | Configuration Validation | -| CloudFormation | [Checkov][Checkov] | Code Security | -| Cppcheck | [Cppcheck][Cppcheck] | Code Quality | -| CSS | [Biome][Biome] | Code Quality | -| Docker | [Hadolint][Hadolint], [Checkov][Checkov] | Code Quality, Code Security | -| GitHub Actions | [Actionlint][Actionlint] | Code Quality | -| Go | [golangci-lint][golangci-lint] | Code Quality | -| Helm | [Checkov][Checkov] | Code Security | -| Javascript | [Biome][Biome] | Code Quality | -| JSON, JSONC | [Biome][Biome] | Code Quality | -| JSX | [Biome][Biome] | Code Quality | -| Kotlin | [Detekt][Detekt] | Code Quality | -| Kubernetes | [Checkov][Checkov] | Code Security | -| Markdown | [Markdownlint][Markdownlint], [LanguageTool][LanguageTool] | Code Quality, Grammar Checking | -| PHP | [PHPStan][PHPStan] | Code Quality | -| Plaintext | [LanguageTool][LanguageTool] | Grammar and Spell Checking | -| Java | [PMD][PMD] | Code Quality | -| Protobuf | [Buf][Buf] | Code Quality | -| Python | [Ruff][Ruff] | Code Quality | -| Regal | [Regal][Regal] | Code Quality | -| Ruby | [Rubocop][Rubocop] | Code Quality | -| Semgrep | [Semgrep][Semgrep] | Code Security | -| Shell (sh, bash, ksh, dash) | [ShellCheck][ShellCheck] | Code Quality | -| Swift | [SwiftLint][SwiftLint] | Code Quality | -| Terraform | [Checkov][Checkov] | Code Security | -| TSX | [Biome][Biome] | Code Quality | -| Typescript | [Biome][Biome] | Code Quality | -| YAML | [YamlLint][YamlLint] | Code Quality | - -[ShellCheck]: ./shellcheck.md -[Ruff]: ./ruff.md -[Markdownlint]: ./markdownlint.md -[LanguageTool]: ./languagetool.md -[Biome]: ./biome.md -[Hadolint]: ./hadolint.md -[SwiftLint]: ./swiftlint.md -[PHPStan]: ./phpstan.md -[golangci-lint]: ./golangci-lint.md -[YamlLint]: ./yamllint.md -[Gitleaks]: ./gitleaks.md -[Checkov]: ./checkov.md -[Detekt]: ./detekt.md -[Rubocop]: ./rubocop.md -[Buf]: ./buf.md -[Actionlint]: ./actionlint.md -[Regal]: ./regal.md -[PMD]: ./pmd.md -[Cppcheck]: ./cppcheck.md -[CircleCi]: ./circleci.md -[Semgrep]: ./semgrep.md +## What's next + +- For a complete list of tools that CodeRabbit supports, see [Supported tools](/tools/list). diff --git a/docs/tools/yamllint.md b/docs/tools/yamllint.md index 293a4e57..31649cf0 100644 --- a/docs/tools/yamllint.md +++ b/docs/tools/yamllint.md @@ -1,7 +1,7 @@ --- -title: Yamllint -sidebar_label: Yamllint -description: CodeRabbit's guide to Yamllint. +title: YAMLlint +sidebar_label: YAMLlint +description: CodeRabbit's guide to YAMLlint. --- ```mdx-code-block @@ -10,18 +10,18 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` -[Yamllint](https://yamllint.readthedocs.io/en/stable/) is a linter for YAML. +[YAMLlint](https://yamllint.readthedocs.io/en/stable/) is a linter for YAML. ## Files -Yamllint will run on files with the following extensions: +YAMLlint will run on files with the following extensions: - `.yaml` - `.yml` ## Configuration -Yamllint supports the following config files: +YAMLlint supports the following config files: - `.yamllint` - `.yamllint.yaml` @@ -31,4 +31,4 @@ CodeRabbit will use the default settings based on the profile selected if no con ## Links -- [Yamllint Configuration](https://yamllint.readthedocs.io/en/stable/configuration.html) +- [YAMLlint Configuration](https://yamllint.readthedocs.io/en/stable/configuration.html) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 738de2d3..f4cd07ca 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -126,6 +126,48 @@ const config: Config = { }, } }, + [ + "@inkeep/cxkit-docusaurus", + { + SearchBar: { + baseSettings: { + apiKey: process.env.INKEEP_API_KEY, + primaryBrandColor: "#FF570A", + }, + aiChatSettings: { + chatSubjectName: "CodeRabbit", + aiAssistantAvatar: "https://www.coderabbit.ai/favicon.ico", + getHelpOptions: [ + { + name: "Discord", + icon: { + builtIn: "FaDiscord", + }, + action: { + type: "open_link", + url: "https://discord.gg/coderabbit", + }, + }, + { + name: "Contact Us", + icon: { + builtIn: "IoChatbubblesOutline", + }, + action: { + type: "open_link", + url: "https://www.coderabbit.ai/contact-us", + }, + }, + ], + exampleQuestions: [ + "What is CodeRabbit?", + "How to integrate CodeRabbit with GitHub?", + "How to set up a AI Code Review?", + ], + }, + }, + }, + ], ], presets: [ diff --git a/package.json b/package.json index 42ad5773..7c53d492 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "deploy": "docusaurus deploy", "clear": "docusaurus clear", "serve": "docusaurus serve", + "format": "prettier --write .", "lint": "markdownlint-cli2 \"**/*.md\" && prettier --check .", "lint:fix": "markdownlint-cli2 \"**/*.md\" --fix; prettier --list-different --write .", "write-translations": "docusaurus write-translations", @@ -22,6 +23,7 @@ "@docusaurus/plugin-client-redirects": "^3.6.1", "@docusaurus/plugin-content-blog": "^3.6.1", "@docusaurus/preset-classic": "^3.6.1", + "@inkeep/cxkit-docusaurus": "^0.5.52", "@mdx-js/react": "^3.1.0", "autoprefixer": "^10.4.20", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3539e2b0..75704ea5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@docusaurus/preset-classic': specifier: ^3.6.1 version: 3.6.1(@algolia/client-search@5.14.2)(@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2)(typescript@5.6.3) + '@inkeep/cxkit-docusaurus': + specifier: ^0.5.52 + version: 0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': specifier: ^3.1.0 version: 3.1.0(@types/react@18.3.12)(react@18.3.1) @@ -989,12 +992,54 @@ packages: resolution: {integrity: sha512-nS3WCvepwrnBEgSG5vQu40XG95lC9Jeh/odV5u5IhU1eQFEGDst9xBi6IK5yZdsGvbuaXBZLZtOqWYtuuFa/rQ==} engines: {node: '>=18.0'} + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@inkeep/cxkit-color-mode@0.5.52': + resolution: {integrity: sha512-Mm9ax+2yP+T4F9ICP2eQqqpnm1BaiVUbmuhOF3oNOEQVR8X9sENeSU6X6JIJnFKtVSXYb/AMRe1U4/c5wJzvww==} + + '@inkeep/cxkit-docusaurus@0.5.52': + resolution: {integrity: sha512-Mv89214Gt0qe2djAHKpzCu1SQlpQ+dj4tqSFKNO4w5f54qRdLgaQ4Av1LFC2d3PRV1rp4KA6XNjiNC/z2PrP2w==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@inkeep/cxkit-primitives@0.5.52': + resolution: {integrity: sha512-xq5ZGC8RX9qhelIbAvRM3EN7cFuwjYUERsoH6cwgyjtk5PnN3HoChlxuA18x1v9mqp8Bv3/lu4Bz0TDNUdiSxQ==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@inkeep/cxkit-react@0.5.52': + resolution: {integrity: sha512-kNa+cvjH/JrWHVTh9DcYTgX/J6J4h2tyOh7FvK41zvbdKuAOarzQGWJMLvmAsDm4Z4tmPe104Yvm3nrmsrfTOA==} + + '@inkeep/cxkit-styled@0.5.52': + resolution: {integrity: sha512-QLtJJ+/ufNG3PqrSMfwHSKWwOhnB4i0qOhsrNiAyNcOtQ5fMZdaAlShAjHDH2ye68sfw2tsyEBxXgZuxHji9dw==} + + '@inkeep/cxkit-theme@0.5.52': + resolution: {integrity: sha512-2MWJc+J2n1d4gWkB3A+g4ZSmWxvi/nqxAgEOquiDDWWTrTWCEI8uk8MsWubtCBa73aEOa/tMTKiGYGjbdSCpgw==} + + '@inkeep/cxkit-types@0.5.52': + resolution: {integrity: sha512-2AwsCpeB37wU8I+uhMsP2wFu/8goodgTvqL/V/QIaTGDBw62E1qsA6kjt+5V7rzkLzR658aSUOtL9D1G9zc31Q==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1071,6 +1116,466 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/react-arrow@1.1.1': + resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.2': + resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.2': + resolution: {integrity: sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.3': + resolution: {integrity: sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.1': + resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.2': + resolution: {integrity: sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.3': + resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.5': + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.2': + resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.6': + resolution: {integrity: sha512-E4ozl35jq0VRlrdc4dhHrNSV0JqBb4Jy73WAhBEK7JoYnQ83ED5r0Rb/XdVKw89ReAJN38N492BAPBZQ57VmqQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-popover@1.1.6': + resolution: {integrity: sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.1': + resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.2': + resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.3': + resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.4': + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.1': + resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.2': + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.1': + resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.2': + resolution: {integrity: sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.6': + resolution: {integrity: sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.1': + resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.1.2': + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tabs@1.1.2': + resolution: {integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.6': + resolution: {integrity: sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.1': + resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-visually-hidden@1.1.2': + resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -1200,6 +1705,9 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tanem/svg-injector@10.1.68': + resolution: {integrity: sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==} + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -1291,12 +1799,18 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@18.19.86': + resolution: {integrity: sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==} + '@types/node@22.9.0': resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} @@ -1309,6 +1823,9 @@ packages: '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/qs@6.9.17': resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} @@ -1417,6 +1934,19 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@zag-js/dom-query@1.8.2': + resolution: {integrity: sha512-bn6Pxga19PJzpDb+Oh326kn1sgVfO97mxRzRFqzrKz9NuANGlCblmv2NTYmhfppqE1nt9QyLLhyQ2BLbzwouLg==} + + '@zag-js/focus-trap@1.8.2': + resolution: {integrity: sha512-GzKdicdiVjlOOsNzmmRAZVccs902PXnoyO+qkzXlIsr8+RPRgtPlZthIp6wtr4CJ2vLOMByvrEt7wCNSIoDzxA==} + + '@zag-js/types@1.8.2': + resolution: {integrity: sha512-J+94HhFAPOBchNdGcmvqjB8nbQFgKHcqGoPl5vNTKlcoibN0yFjn4XFZoQU6uCf8sPhNg6NUNTkluR5YjybyJA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -1442,6 +1972,10 @@ packages: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -1482,6 +2016,9 @@ packages: resolution: {integrity: sha512-aYjI4WLamMxbhdJ2QAA99VbDCJOGzMOdT2agh57bi40n86ufkhZSIAf6mkocr7NmtBLtwCnSHvD5NJ+Ky5elWw==} engines: {node: '>= 14.0.0'} + altcha-lib@1.2.0: + resolution: {integrity: sha512-S5WF8QLNRaM1hvK24XPhOLfu9is2EBCvH7+nv50sM5CaIdUCqQCd0WV/qm/ZZFGTdSoKLuDp+IapZxBLvC+SNg==} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1526,6 +2063,10 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -1537,6 +2078,9 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -1641,6 +2185,10 @@ packages: resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1716,6 +2264,9 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -1756,10 +2307,17 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colorjs.io@0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + combine-promises@1.2.0: resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} engines: {node: '>=10'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -2036,6 +2594,10 @@ packages: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -2056,6 +2618,9 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -2135,6 +2700,10 @@ packages: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -2189,6 +2758,10 @@ packages: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -2196,6 +2769,14 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -2286,6 +2867,10 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -2407,14 +2992,25 @@ packages: vue-template-compiler: optional: true + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2456,9 +3052,21 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2516,6 +3124,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -2552,6 +3164,14 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-yarn@3.0.0: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2617,6 +3237,9 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -2676,6 +3299,12 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + humps@2.0.1: + resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -2859,6 +3488,10 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -3074,6 +3707,10 @@ packages: resolution: {integrity: sha512-s73fU2CQN7WCgjhaQUQ8wYESQNzGRNOKDd+3xgVqu8kuTEhmwepd/mxOv1LR2oV046ONrTLBFsM7IoKWNvmy5g==} engines: {node: '>=18'} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + mdast-util-directive@3.0.0: resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} @@ -3145,6 +3782,10 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -3391,10 +4032,23 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -3472,6 +4126,15 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + openai@4.78.1: + resolution: {integrity: sha512-drt0lHZBd2lMyORckOXFPQTmnGLWSLt8VK0W9BhOKWpMFBEoHMoz5gxMPmVq5icp+sOrsbMnsmZTVHUlKvD1Ow==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -3600,6 +4263,9 @@ packages: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} + path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3908,6 +4574,11 @@ packages: peerDependencies: react: '>=16.0.0' + prism-react-renderer@2.4.1: + resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} + peerDependencies: + react: '>=16.0.0' + prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -3915,6 +4586,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -4015,6 +4690,17 @@ packages: peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-hook-form@7.54.2: + resolution: {integrity: sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-icons@5.4.0: + resolution: {integrity: sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==} + peerDependencies: + react: '*' + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -4031,6 +4717,12 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' + react-markdown@9.0.3: + resolution: {integrity: sha512-Yk7Z94dbgYTOrdk41Z74GoKA7rThnsbbqBTRYuxoe08qvfQ9tJVhmAKw6BJS/ZORG7kTy/s1QvYzSuaoBA1qfw==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + react-monaco-editor@0.55.0: resolution: {integrity: sha512-GdEP0Q3Rn1dczfKEEyY08Nes5plWwIYU4sWRBQO0+jsQWQsKMHKCC6+hPRwR7G/4aA3V/iU9jSmWPzVJYMVFSQ==} peerDependencies: @@ -4038,6 +4730,26 @@ packages: monaco-editor: ^0.44.0 react: '>=16 <= 18' + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-router-config@5.1.1: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: @@ -4054,6 +4766,28 @@ packages: peerDependencies: react: '>=15' + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-svg@16.3.0: + resolution: {integrity: sha512-MvoQbITgkmpPJYwDTNdiUyoncJFfoa0D86WzoZuMQ9c/ORJURPR6rPMnXDsLOWDCAyXuV9nKZhQhGyP0HZ0MVQ==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-textarea-autosize@8.5.7: + resolution: {integrity: sha512-2MqJ3p0Jh69yt9ktFIaZmORHXw4c4bxSIhCeWiFwmJ9EYKgLmuNII3e9c9b2UO+ijl4StnpZdqpxNIhTdHvqtQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -4150,6 +4884,9 @@ packages: remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + remark-mdx@3.1.0: resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} @@ -4508,6 +5245,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + tailwindcss@3.4.15: resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} engines: {node: '>=14.0.0'} @@ -4573,6 +5313,9 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4612,6 +5355,9 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -4685,22 +5431,77 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urijs@1.19.11: - resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + + url-loader@4.1.1: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-composed-ref@1.4.0: + resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-isomorphic-layout-effect@1.2.0: + resolution: {integrity: sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-latest@1.3.0: + resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - url-loader@4.1.1: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: - file-loader: + '@types/react': optional: true + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -4742,6 +5543,13 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-bundle-analyzer@4.10.2: resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} engines: {node: '>= 10.13.0'} @@ -4802,6 +5610,9 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -6636,12 +7447,133 @@ snapshots: - uglify-js - webpack-cli + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.13 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.9': {} + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 + '@inkeep/cxkit-color-mode@0.5.52': {} + + '@inkeep/cxkit-docusaurus@0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@inkeep/cxkit-react': 0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + merge-anything: 5.1.7 + path: 0.12.7 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - supports-color + - zod + + '@inkeep/cxkit-primitives@0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@inkeep/cxkit-color-mode': 0.5.52 + '@inkeep/cxkit-theme': 0.5.52 + '@inkeep/cxkit-types': 0.5.52 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-avatar': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popover': 1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-tabs': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@zag-js/focus-trap': 1.8.2 + altcha-lib: 1.2.0 + aria-hidden: 1.2.4 + dequal: 2.0.3 + humps: 2.0.1 + merge-anything: 5.1.7 + openai: 4.78.1 + prism-react-renderer: 2.4.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-hook-form: 7.54.2(react@18.3.1) + react-icons: 5.4.0(react@18.3.1) + react-markdown: 9.0.3(@types/react@18.3.12)(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.12)(react@18.3.1) + react-svg: 16.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.7(@types/react@18.3.12)(react@18.3.1) + rehype-raw: 7.0.0 + remark-gfm: 4.0.1 + unist-util-visit: 5.0.0 + use-sync-external-store: 1.5.0(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - supports-color + - zod + + '@inkeep/cxkit-react@0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@inkeep/cxkit-styled': 0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - react + - react-dom + - supports-color + - zod + + '@inkeep/cxkit-styled@0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@inkeep/cxkit-primitives': 0.5.52(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + class-variance-authority: 0.7.1 + clsx: 2.1.1 + merge-anything: 5.1.7 + tailwind-merge: 2.6.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - react + - react-dom + - supports-color + - zod + + '@inkeep/cxkit-theme@0.5.52': + dependencies: + colorjs.io: 0.5.2 + + '@inkeep/cxkit-types@0.5.52': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -6718,40 +7650,460 @@ snapshots: - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1)': + '@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.12 + react: 18.3.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@polka/url@1.0.0-next.28': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/react-arrow@1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-arrow@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-avatar@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-checkbox@1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-collection@1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-collection@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-hover-card@1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-popover@1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-popper@1.2.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-popper@1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-portal@1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-portal@1.1.4(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-presence@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-primitive@2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-primitive@2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-roving-focus@1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-scroll-area@1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-select@2.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-slot@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-slot@1.1.2(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-tabs@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@types/mdx': 2.0.13 + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: '@types/react': 18.3.12 + + '@radix-ui/react-tooltip@1.1.6(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.3(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 - '@nodelib/fs.scandir@2.1.5': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@nodelib/fs.stat@2.0.5': {} + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@nodelib/fs.walk@1.2.8': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@pkgjs/parseargs@0.11.0': - optional: true + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@pnpm/config.env-replace@1.1.0': {} + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@pnpm/network.ca-file@1.0.2': + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': dependencies: - graceful-fs: 4.2.10 + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@pnpm/npm-conf@2.3.1': + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 - '@polka/url@1.0.0-next.28': {} + '@radix-ui/react-visually-hidden@1.1.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/rect@1.1.0': {} '@sideway/address@4.1.5': dependencies: @@ -6903,6 +8255,12 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tanem/svg-injector@10.1.68': + dependencies: + '@babel/runtime': 7.26.0 + content-type: 1.0.5 + tslib: 2.8.1 + '@trysound/sax@0.2.0': {} '@types/acorn@4.0.6': @@ -7010,12 +8368,21 @@ snapshots: '@types/ms@0.7.34': {} + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 22.9.0 + form-data: 4.0.2 + '@types/node-forge@1.3.11': dependencies: '@types/node': 22.9.0 '@types/node@17.0.45': {} + '@types/node@18.19.86': + dependencies: + undici-types: 5.26.5 + '@types/node@22.9.0': dependencies: undici-types: 6.19.8 @@ -7026,6 +8393,8 @@ snapshots: '@types/prop-types@15.7.13': {} + '@types/prop-types@15.7.14': {} + '@types/qs@6.9.17': {} '@types/range-parser@1.2.7': {} @@ -7175,6 +8544,22 @@ snapshots: '@xtuc/long@4.2.2': {} + '@zag-js/dom-query@1.8.2': + dependencies: + '@zag-js/types': 1.8.2 + + '@zag-js/focus-trap@1.8.2': + dependencies: + '@zag-js/dom-query': 1.8.2 + + '@zag-js/types@1.8.2': + dependencies: + csstype: 3.1.3 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -7194,6 +8579,10 @@ snapshots: address@1.2.2: {} + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -7265,6 +8654,8 @@ snapshots: '@algolia/requester-fetch': 5.14.2 '@algolia/requester-node-http': 5.14.2 + altcha-lib@1.2.0: {} + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -7300,12 +8691,18 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + array-flatten@1.1.1: {} array-union@2.1.0: {} astring@1.9.0: {} + asynckit@0.4.0: {} + at-least-node@1.0.0: {} autoprefixer@10.4.20(postcss@8.4.49): @@ -7447,6 +8844,11 @@ snapshots: normalize-url: 8.0.1 responselike: 3.0.0 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -7531,6 +8933,10 @@ snapshots: ci-info@3.9.0: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -7565,8 +8971,14 @@ snapshots: colorette@2.0.20: {} + colorjs.io@0.5.2: {} + combine-promises@1.2.0: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -7854,6 +9266,8 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 + delayed-stream@1.0.0: {} + depd@1.1.2: {} depd@2.0.0: {} @@ -7864,6 +9278,8 @@ snapshots: destroy@1.2.0: {} + detect-node-es@1.1.0: {} + detect-node@2.1.0: {} detect-port-alt@1.1.6: @@ -7963,6 +9379,12 @@ snapshots: dependencies: is-obj: 2.0.0 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer@0.1.2: {} eastasianwidth@0.2.0: {} @@ -8002,10 +9424,23 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} + es-errors@1.3.0: {} es-module-lexer@1.5.4: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -8095,6 +9530,8 @@ snapshots: '@types/node': 22.9.0 require-like: 0.1.2 + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} events@3.3.0: {} @@ -8259,10 +9696,24 @@ snapshots: typescript: 5.6.3 webpack: 5.96.1 + form-data-encoder@1.7.2: {} + form-data-encoder@2.1.4: {} + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + format@0.2.2: {} + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -8301,8 +9752,28 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@6.0.1: {} github-slugger@1.5.0: {} @@ -8381,6 +9852,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + got@12.6.1: dependencies: '@sindresorhus/is': 5.6.0 @@ -8422,6 +9895,12 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + has-yarn@3.0.0: {} hasown@2.0.2: @@ -8570,6 +10049,8 @@ snapshots: html-tags@3.3.1: {} + html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} html-webpack-plugin@5.6.3(webpack@5.96.1): @@ -8644,6 +10125,12 @@ snapshots: human-signals@2.1.0: {} + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + humps@2.0.1: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -8770,6 +10257,8 @@ snapshots: is-typedarray@1.0.0: {} + is-what@4.1.16: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -8974,6 +10463,8 @@ snapshots: markdown-it: 14.1.0 markdownlint-micromark: 0.1.12 + math-intrinsics@1.1.0: {} + mdast-util-directive@3.0.0: dependencies: '@types/mdast': 4.0.4 @@ -9173,6 +10664,10 @@ snapshots: dependencies: fs-monkey: 1.0.6 + merge-anything@5.1.7: + dependencies: + is-what: 4.1.16 + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -9563,6 +11058,8 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 + node-domexception@1.0.0: {} + node-emoji@2.1.3: dependencies: '@sindresorhus/is': 4.6.0 @@ -9570,6 +11067,10 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-forge@1.3.1: {} node-releases@2.0.18: {} @@ -9633,6 +11134,18 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + openai@4.78.1: + dependencies: + '@types/node': 18.19.86 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + opener@1.5.2: {} p-cancelable@3.0.0: {} @@ -9757,6 +11270,11 @@ snapshots: path-type@5.0.0: {} + path@0.12.7: + dependencies: + process: 0.11.10 + util: 0.10.4 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -10033,10 +11551,18 @@ snapshots: clsx: 2.1.1 react: 18.3.1 + prism-react-renderer@2.4.1(react@18.3.1): + dependencies: + '@types/prismjs': 1.26.5 + clsx: 2.1.1 + react: 18.3.1 + prismjs@1.29.0: {} process-nextick-args@2.0.1: {} + process@0.11.10: {} + prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -10170,6 +11696,14 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 + react-hook-form@7.54.2(react@18.3.1): + dependencies: + react: 18.3.1 + + react-icons@5.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + react-is@16.13.1: {} react-json-view-lite@1.5.0(react@18.3.1): @@ -10182,6 +11716,23 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' webpack: 5.96.1 + react-markdown@9.0.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + '@types/hast': 3.0.4 + '@types/react': 18.3.12 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.2 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 18.3.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + react-monaco-editor@0.55.0(@types/react@18.3.12)(monaco-editor@0.44.0)(react@18.3.1): dependencies: '@types/react': 18.3.12 @@ -10189,6 +11740,25 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 + react-remove-scroll-bar@2.3.8(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.26.0 @@ -10219,6 +11789,32 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + react-style-singleton@2.2.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-svg@16.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.0 + '@tanem/svg-injector': 10.1.68 + '@types/prop-types': 15.7.14 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-textarea-autosize@8.5.7(@types/react@18.3.12)(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.0 + react: 18.3.1 + use-composed-ref: 1.4.0(@types/react@18.3.12)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -10375,6 +11971,17 @@ snapshots: transitivePeerDependencies: - supports-color + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-mdx@3.1.0: dependencies: mdast-util-mdx: 3.0.0 @@ -10792,6 +12399,8 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 + tailwind-merge@2.6.0: {} + tailwindcss@3.4.15: dependencies: '@alloc/quick-lru': 5.2.0 @@ -10863,6 +12472,8 @@ snapshots: totalist@3.0.1: {} + tr46@0.0.3: {} + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -10890,6 +12501,8 @@ snapshots: uc.micro@2.1.0: {} + undici-types@5.26.5: {} + undici-types@6.19.8: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -10990,8 +12603,50 @@ snapshots: optionalDependencies: file-loader: 6.2.0(webpack@5.96.1) + use-callback-ref@1.3.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-composed-ref@1.4.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-isomorphic-layout-effect@1.2.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-latest@1.3.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + use-isomorphic-layout-effect: 1.2.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} + util@0.10.4: + dependencies: + inherits: 2.0.3 + utila@0.4.0: {} utility-types@3.11.0: {} @@ -11030,6 +12685,10 @@ snapshots: web-namespaces@2.0.1: {} + web-streams-polyfill@4.0.0-beta.3: {} + + webidl-conversions@3.0.1: {} + webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -11161,6 +12820,11 @@ snapshots: websocket-extensions@0.1.4: {} + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which@1.3.1: dependencies: isexe: 2.0.0 diff --git a/sidebars.ts b/sidebars.ts index 5f41290e..3cc53ff0 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -29,13 +29,198 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs" const sidebars: SidebarsConfig = { docsSidebar: [ { - type: "autogenerated", - dirName: ".", + type: "category", + collapsed: true, + label: "Get started with CodeRabbit", + items: ["overview/introduction", "getting-started/quickstart"], }, { - type: "link", - label: "API Reference", - href: "https://api.coderabbit.ai/api/swagger/", + type: "category", + collapsed: true, + label: "Add CodeRabbit to your repository", + items: [ + "platforms/platforms", + { + type: "category", + collapsed: true, + label: "Supported Git platforms", + items: [ + "platforms/github-com", + "platforms/github-enterprise-server", + "platforms/gitlab-com", + "platforms/self-hosted-gitlab", + "platforms/azure-devops", + "platforms/bitbucket-cloud", + ], + }, + "getting-started/adding-organizations", + "getting-started/upgrading-permissions", + { + type: "category", + collapsed: true, + label: "Self-host CodeRabbit", + items: [ + "self-hosted/github", + "self-hosted/gitlab", + "self-hosted/azure-devops", + "self-hosted/bitbucket", + ], + }, + ], + }, + { + type: "category", + collapsed: true, + label: "Manage your account", + items: ["getting-started/subscription-management", "guides/roles"], + }, + { + type: "category", + collapsed: true, + label: "Configure CodeRabbit", + items: [ + "guides/configuration-overview", + "guides/organization-settings", + "guides/repository-settings", + "getting-started/configure-coderabbit", + "guides/initial-configuration", + "integrations/knowledge-base", + "guides/review-instructions", + "tools/tools", + "guides/roles", + ], + }, + { + type: "category", + collapsed: true, + label: "Review pull requests", + items: [ + "guides/code-review-overview", + "guides/commands", + "guides/generate-improvements", + "guides/code-review-troubleshooting", + "guides/agent_chat", + { + type: "category", + collapsed: true, + label: "Analyze and improve your code", + items: [ + "integrations/code-graph-analysis", + "finishing-touches/docstrings", + "finishing-touches/unit-test-generation", + ], + }, + ], + }, + { + type: "category", + collapsed: true, + label: "Create and resolve issues", + items: [ + "integrations/issue-integrations", + "guides/issue-chat", + "guides/issue-creation", + "guides/linked-issues", + ], + }, + { + type: "category", + collapsed: true, + label: "Review local changes", + items: [ + "guides/about-vscode", + "guides/install-vscode", + "guides/use-vscode", + "guides/config-vscode", + "guides/uninstall-vscode", + ], + }, + { + type: "category", + collapsed: true, + label: "Generate reports", + items: [ + "guides/reports-overview", + "guides/scheduled-reports", + "guides/ondemand-reports", + "guides/custom-reports", + ], + }, + { + type: "category", + collapsed: true, + label: "Best practices", + items: [ + "guides/setup-best-practices", + "guides/code-review-best-practices", + ], + }, + { + type: "category", + collapsed: true, + label: "Reference", + items: [ + { + type: "link", + label: "CodeRabbit API", + href: "https://api.coderabbit.ai/api/swagger/", + }, + "reference/review-commands", + "reference/configuration", + "reference/yaml-template", + { + type: "category", + label: "Supported tools", + collapsed: true, + items: [ + "tools/list", + "tools/actionlint", + "tools/biome", + "tools/buf", + "tools/checkov", + "tools/circleci", + "tools/cppcheck", + "tools/detekt", + "tools/eslint", + "tools/flake8", + "tools/gitleaks", + "tools/golangci-lint", + "tools/hadolint", + "tools/languagetool", + "tools/luacheck", + "tools/markdownlint", + "tools/oxlint", + "tools/phpcs", + "tools/phpmd", + "tools/phpstan", + "tools/pipeline-remediation", + "tools/pmd", + "tools/prisma-lint", + "tools/regal", + "tools/rubocop", + "tools/ruff", + "tools/semgrep", + "tools/shellcheck", + "tools/sqlfluff", + "tools/swiftlint", + "tools/yamllint", + ], + }, + "reference/caching", + ], + }, + { + type: "category", + collapsed: true, + label: "Resources", + items: [ + "getting-started/support", + "overview/why-coderabbit", + "faq", + "early-access", + "future-development", + "changelog", + ], }, ], } diff --git a/src/css/custom.css b/src/css/custom.css index 161e174a..7365089e 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -39,6 +39,8 @@ --ifm-navbar-height: 5rem; --ifm-font-family-base: "Poppins", "Work Sans", sans-serif; --ifm-background-color-primary: #f6f6f1; + --ifm-background-color-secondary: #e8e8e8; + --ifm-breadcrumb-item-background-active: #ffe9e2; } [data-theme="dark"] { @@ -51,6 +53,8 @@ --ifm-color-primary-lightest: #171717; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); --ifm-background-color-primary: #171717; + --ifm-background-color-secondary: #232323; + --ifm-breadcrumb-item-background-active: #3f322e; } #__docusaurus { @@ -90,19 +94,6 @@ a[docid="docs"] > svg { align-items: center; } -@media screen and (max-width: 480px) { - a.navbar__item.navbar__link[docid="docs"] { - display: none !important; - } -} - -@media screen and (max-width: 480px) { - a.navbar__item.navbar__link[href="https://coderabbit.ai/blog"] - { - display: none; - } -} - [data-theme="light"] img[src$="#gh-dark-mode-only"], [data-theme="dark"] img[src$="#gh-light-mode-only"] { display: none; @@ -115,6 +106,8 @@ a[docid="docs"] > svg { overflow: hidden; max-width: 100%; background: #000; + border-radius: 1rem; + border: 4px solid var(--ifm-background-color-secondary); } .video-container iframe { @@ -157,19 +150,6 @@ a[docid="docs"] > svg { align-items: center; } -@media screen and (max-width: 480px) { - a.navbar__item.navbar__link[docid="docs"] { - display: none !important; - } -} - -@media screen and (max-width: 480px) { - a.navbar__item.navbar__link[href="https://coderabbit.ai/blog"] - { - display: none; - } -} - /* Light mode Discord icon */ /* .header-discord-link:before { -webkit-filter: invert(100%); @@ -263,39 +243,95 @@ a[docid="docs"] > svg { } /* Light mode specific styles */ -[data-theme="light"] { - .navbar-icon-link::before { - opacity: 0.7; - } +[data-theme="light"] .navbar-icon-link::before { + opacity: 0.7; +} - .navbar-icon-link:hover::before { - opacity: 0.9; - } +[data-theme="light"] .navbar-icon-link:hover::before { + opacity: 0.9; +} - .discord-link::before { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36' fill='%23424242'%3E%3Cpath d='M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z'/%3E%3C/svg%3E"); - } +[data-theme="light"] .discord-link::before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36' fill='%23424242'%3E%3Cpath d='M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z'/%3E%3C/svg%3E"); +} - .github-link::before { - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='%23424242'%3E%3Cpath d='M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E"); - } +[data-theme="light"] .github-link::before { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='%23424242'%3E%3Cpath d='M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E"); } /* Dark mode specific styles */ -[data-theme="dark"] { - .navbar-icon-link::before { - opacity: 0.85; - } +[data-theme="dark"] .navbar-icon-link::before { + opacity: 0.85; +} + +[data-theme="dark"] .navbar-icon-link:hover::before { + opacity: 1; +} + +[data-theme="dark"] .discord-link::before { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36' fill='%23fff'%3E%3Cpath d='M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z'/%3E%3C/svg%3E"); +} + +[data-theme="dark"] .github-link::before { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E"); +} - .navbar-icon-link:hover::before { - opacity: 1; +.center-image { + text-align: center; +} + +@media screen and (max-width: 480px) { + a.navbar__item.navbar__link[href="/"] { + display: none; } +} - .discord-link::before { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36' fill='%23fff'%3E%3Cpath d='M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z'/%3E%3C/svg%3E"); +@media screen and (max-width: 480px) { + a.navbar__item.navbar__link[href*="https://docs.coderabbit.ai"] + { + display: none; } +} - .github-link::before { - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E"); +@media screen and (max-width: 480px) { + a.navbar__item.navbar__link[href*="https://coderabbit.ai/blog"] + { + display: none; } } + +/* Disable automatic next/previous pagination links */ +.pagination-nav { + display: none; +} +/* ===== MARKDOWN STYLES ===== */ +.theme-doc-markdown.markdown { + line-height: 1.8rem; +} +/* ===== BREADCRUMB STYLES ===== */ + +.breadcrumbs { + display: flex; + gap: 0.5rem; + overflow-x: auto; + white-space: nowrap; +} +.breadcrumbs::-webkit-scrollbar { + display: none; +} +.breadcrumbs__item { + display: flex; + align-items: center; + white-space: nowrap; + gap: 1rem; +} +.breadcrumbs__link { + transition: color 0.2s ease; + background-color: var(--ifm-background-color-secondary); +} + +.breadcrumbs__item--active .breadcrumbs__link { + font-weight: 600; + cursor: default; + background-color: var(--ifm-breadcrumb-item-background-active); +} diff --git a/static/img/faq/add-repository.png b/static/img/faq/add-repository.png new file mode 100644 index 00000000..e69c4a7c Binary files /dev/null and b/static/img/faq/add-repository.png differ diff --git a/static/img/faq/coderabbit-github-menu.png b/static/img/faq/coderabbit-github-menu.png new file mode 100644 index 00000000..c599ca95 Binary files /dev/null and b/static/img/faq/coderabbit-github-menu.png differ diff --git a/static/img/faq/github-app-settings.png b/static/img/faq/github-app-settings.png new file mode 100644 index 00000000..ff120953 Binary files /dev/null and b/static/img/faq/github-app-settings.png differ diff --git a/static/img/faq/gitlab-webhook.png b/static/img/faq/gitlab-webhook.png new file mode 100644 index 00000000..a233f902 Binary files /dev/null and b/static/img/faq/gitlab-webhook.png differ diff --git a/static/img/faq/seat-assignment.png b/static/img/faq/seat-assignment.png new file mode 100644 index 00000000..073194be Binary files /dev/null and b/static/img/faq/seat-assignment.png differ diff --git a/static/img/faq/select-repos.png b/static/img/faq/select-repos.png new file mode 100644 index 00000000..1c1222ff Binary files /dev/null and b/static/img/faq/select-repos.png differ diff --git a/static/img/getting-started/billing-history.png b/static/img/getting-started/billing-history.png new file mode 100644 index 00000000..8fd36af6 Binary files /dev/null and b/static/img/getting-started/billing-history.png differ diff --git a/static/img/getting-started/change-plan.png b/static/img/getting-started/change-plan.png new file mode 100644 index 00000000..e41f00ce Binary files /dev/null and b/static/img/getting-started/change-plan.png differ diff --git a/static/img/getting-started/change-seats.png b/static/img/getting-started/change-seats.png new file mode 100644 index 00000000..cc736ac5 Binary files /dev/null and b/static/img/getting-started/change-seats.png differ diff --git a/static/img/getting-started/check-for-new-orgs.png b/static/img/getting-started/check-for-new-orgs.png new file mode 100644 index 00000000..d0049686 Binary files /dev/null and b/static/img/getting-started/check-for-new-orgs.png differ diff --git a/static/img/getting-started/download-invoice.png b/static/img/getting-started/download-invoice.png new file mode 100644 index 00000000..5451693d Binary files /dev/null and b/static/img/getting-started/download-invoice.png differ diff --git a/static/img/getting-started/edit-subscription.png b/static/img/getting-started/edit-subscription.png new file mode 100644 index 00000000..065d0cc2 Binary files /dev/null and b/static/img/getting-started/edit-subscription.png differ diff --git a/static/img/getting-started/grant-permission.png b/static/img/getting-started/grant-permission.png new file mode 100644 index 00000000..e9654574 Binary files /dev/null and b/static/img/getting-started/grant-permission.png differ diff --git a/static/img/getting-started/manage-subscription.png b/static/img/getting-started/manage-subscription.png new file mode 100644 index 00000000..1234acf9 Binary files /dev/null and b/static/img/getting-started/manage-subscription.png differ diff --git a/static/img/getting-started/permission-warning.png b/static/img/getting-started/permission-warning.png new file mode 100644 index 00000000..6283c930 Binary files /dev/null and b/static/img/getting-started/permission-warning.png differ diff --git a/static/img/getting-started/quickstart-comment.png b/static/img/getting-started/quickstart-comment.png new file mode 100644 index 00000000..9813172b Binary files /dev/null and b/static/img/getting-started/quickstart-comment.png differ diff --git a/static/img/getting-started/subscription-page.png b/static/img/getting-started/subscription-page.png new file mode 100644 index 00000000..8fb90f96 Binary files /dev/null and b/static/img/getting-started/subscription-page.png differ diff --git a/static/img/getting-started/updated-permissions.png b/static/img/getting-started/updated-permissions.png new file mode 100644 index 00000000..37ef9038 Binary files /dev/null and b/static/img/getting-started/updated-permissions.png differ diff --git a/static/img/guides/agentic-thought-chain.png b/static/img/guides/agentic-thought-chain.png new file mode 100644 index 00000000..1fd49a55 Binary files /dev/null and b/static/img/guides/agentic-thought-chain.png differ diff --git a/static/img/guides/chat-example.png b/static/img/guides/chat-example.png new file mode 100644 index 00000000..3acb40e1 Binary files /dev/null and b/static/img/guides/chat-example.png differ diff --git a/static/img/guides/chat-learnings-use.png b/static/img/guides/chat-learnings-use.png new file mode 100644 index 00000000..f1b3a2f1 Binary files /dev/null and b/static/img/guides/chat-learnings-use.png differ diff --git a/static/img/guides/chat-script-execution.png b/static/img/guides/chat-script-execution.png new file mode 100644 index 00000000..4cd29f97 Binary files /dev/null and b/static/img/guides/chat-script-execution.png differ diff --git a/static/img/guides/create-issue-agentic.png b/static/img/guides/create-issue-agentic.png new file mode 100644 index 00000000..a7ad04ae Binary files /dev/null and b/static/img/guides/create-issue-agentic.png differ diff --git a/static/img/guides/create-issue-inline.png b/static/img/guides/create-issue-inline.png new file mode 100644 index 00000000..873df82f Binary files /dev/null and b/static/img/guides/create-issue-inline.png differ diff --git a/static/img/guides/example-report-1.png b/static/img/guides/example-report-1.png new file mode 100644 index 00000000..d88931a5 Binary files /dev/null and b/static/img/guides/example-report-1.png differ diff --git a/static/img/guides/example-report-2.png b/static/img/guides/example-report-2.png new file mode 100644 index 00000000..98a54896 Binary files /dev/null and b/static/img/guides/example-report-2.png differ diff --git a/static/img/guides/feature-planning.png b/static/img/guides/feature-planning.png new file mode 100644 index 00000000..017d3e4b Binary files /dev/null and b/static/img/guides/feature-planning.png differ diff --git a/static/img/guides/gitlab-issue-chat.png b/static/img/guides/gitlab-issue-chat.png new file mode 100644 index 00000000..0b6a1f69 Binary files /dev/null and b/static/img/guides/gitlab-issue-chat.png differ diff --git a/static/img/guides/high-level-docs.png b/static/img/guides/high-level-docs.png new file mode 100644 index 00000000..702c5dee Binary files /dev/null and b/static/img/guides/high-level-docs.png differ diff --git a/static/img/guides/linked-issue.png b/static/img/guides/linked-issue.png new file mode 100644 index 00000000..ba585890 Binary files /dev/null and b/static/img/guides/linked-issue.png differ diff --git a/static/img/guides/marketing-posts.png b/static/img/guides/marketing-posts.png new file mode 100644 index 00000000..ce607fd4 Binary files /dev/null and b/static/img/guides/marketing-posts.png differ diff --git a/static/img/guides/open-source-support.png b/static/img/guides/open-source-support.png new file mode 100644 index 00000000..14c35530 Binary files /dev/null and b/static/img/guides/open-source-support.png differ diff --git a/static/img/guides/path-filters.png b/static/img/guides/path-filters.png new file mode 100644 index 00000000..9f398a51 Binary files /dev/null and b/static/img/guides/path-filters.png differ diff --git a/static/img/guides/report-params.png b/static/img/guides/report-params.png new file mode 100644 index 00000000..abde1754 Binary files /dev/null and b/static/img/guides/report-params.png differ diff --git a/static/img/guides/report-platforms.png b/static/img/guides/report-platforms.png new file mode 100644 index 00000000..f762091e Binary files /dev/null and b/static/img/guides/report-platforms.png differ diff --git a/static/img/guides/score-card-report-result.png b/static/img/guides/score-card-report-result.png new file mode 100644 index 00000000..15b51539 Binary files /dev/null and b/static/img/guides/score-card-report-result.png differ diff --git a/static/img/guides/score-card-result-comment.png b/static/img/guides/score-card-result-comment.png new file mode 100644 index 00000000..1ea43248 Binary files /dev/null and b/static/img/guides/score-card-result-comment.png differ diff --git a/static/img/guides/score-card-trigger-comment.png b/static/img/guides/score-card-trigger-comment.png new file mode 100644 index 00000000..2f690948 Binary files /dev/null and b/static/img/guides/score-card-trigger-comment.png differ diff --git a/static/img/guides/where-score-report-prompt-go.png b/static/img/guides/where-score-report-prompt-go.png new file mode 100644 index 00000000..3b26a1f1 Binary files /dev/null and b/static/img/guides/where-score-report-prompt-go.png differ diff --git a/static/img/integrations/azure-access-token.png b/static/img/integrations/azure-access-token.png index 9ce2b44b..2b3111b1 100644 Binary files a/static/img/integrations/azure-access-token.png and b/static/img/integrations/azure-access-token.png differ diff --git a/static/img/integrations/bitbucket-app-password-modal.png b/static/img/integrations/bitbucket-app-password-modal.png new file mode 100644 index 00000000..fd6c556b Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-modal.png differ diff --git a/static/img/integrations/bitbucket-app-password-page.png b/static/img/integrations/bitbucket-app-password-page.png new file mode 100644 index 00000000..c9e25cbe Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-page.png differ diff --git a/static/img/integrations/bitbucket-app-password-permissions.png b/static/img/integrations/bitbucket-app-password-permissions.png new file mode 100644 index 00000000..7e27e6af Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-permissions.png differ diff --git a/static/img/integrations/bitbucket-webhook.png b/static/img/integrations/bitbucket-webhook.png new file mode 100644 index 00000000..687c9b78 Binary files /dev/null and b/static/img/integrations/bitbucket-webhook.png differ diff --git a/static/img/integrations/gitlab-repo-install.png b/static/img/integrations/gitlab-repo-install.png new file mode 100644 index 00000000..498443ee Binary files /dev/null and b/static/img/integrations/gitlab-repo-install.png differ diff --git a/static/img/integrations/gitlab-webhook.png b/static/img/integrations/gitlab-webhook.png new file mode 100644 index 00000000..e02e0bfa Binary files /dev/null and b/static/img/integrations/gitlab-webhook.png differ diff --git a/static/img/integrations/login-self-hosted-github.png b/static/img/integrations/login-self-hosted-github.png index 99f511c6..35e76ed1 100644 Binary files a/static/img/integrations/login-self-hosted-github.png and b/static/img/integrations/login-self-hosted-github.png differ diff --git a/static/img/integrations/logo.png b/static/img/integrations/logo.png new file mode 100644 index 00000000..18eb4911 Binary files /dev/null and b/static/img/integrations/logo.png differ diff --git a/static/img/integrations/self-hosted-github-host-url.png b/static/img/integrations/self-hosted-github-host-url.png index b8224720..2cb6d671 100644 Binary files a/static/img/integrations/self-hosted-github-host-url.png and b/static/img/integrations/self-hosted-github-host-url.png differ diff --git a/static/img/knowledge-base/code-guidelines.png b/static/img/knowledge-base/code-guidelines.png new file mode 100644 index 00000000..638a656f Binary files /dev/null and b/static/img/knowledge-base/code-guidelines.png differ diff --git a/static/img/reference/path-instructions.png b/static/img/reference/path-instructions.png new file mode 100644 index 00000000..adcb5884 Binary files /dev/null and b/static/img/reference/path-instructions.png differ diff --git a/static/img/tools/az-devops-pipeline.png b/static/img/tools/az-devops-pipeline.png new file mode 100644 index 00000000..b06dafab Binary files /dev/null and b/static/img/tools/az-devops-pipeline.png differ diff --git a/static/img/tools/circle-cicd.png b/static/img/tools/circle-cicd.png new file mode 100644 index 00000000..9af6cf95 Binary files /dev/null and b/static/img/tools/circle-cicd.png differ diff --git a/static/img/tools/docker-build-cicd.png b/static/img/tools/docker-build-cicd.png new file mode 100644 index 00000000..01e6ed58 Binary files /dev/null and b/static/img/tools/docker-build-cicd.png differ diff --git a/static/img/tools/gitlab-advanced-security.png b/static/img/tools/gitlab-advanced-security.png new file mode 100644 index 00000000..94dc3d75 Binary files /dev/null and b/static/img/tools/gitlab-advanced-security.png differ diff --git a/static/img/tools/gitlab-cicd.png b/static/img/tools/gitlab-cicd.png new file mode 100644 index 00000000..0f9c029f Binary files /dev/null and b/static/img/tools/gitlab-cicd.png differ diff --git a/static/img/tools/java-cicd.png b/static/img/tools/java-cicd.png new file mode 100644 index 00000000..b90ec904 Binary files /dev/null and b/static/img/tools/java-cicd.png differ diff --git a/static/img/tools/kubernetes-cicd.png b/static/img/tools/kubernetes-cicd.png new file mode 100644 index 00000000..3b8beb53 Binary files /dev/null and b/static/img/tools/kubernetes-cicd.png differ diff --git a/static/img/tools/npm-cicd.png b/static/img/tools/npm-cicd.png new file mode 100644 index 00000000..f0402362 Binary files /dev/null and b/static/img/tools/npm-cicd.png differ diff --git a/static/img/tools/python-cicd.png b/static/img/tools/python-cicd.png new file mode 100644 index 00000000..cab40924 Binary files /dev/null and b/static/img/tools/python-cicd.png differ diff --git a/static/img/tools/semgrep-cicd.png b/static/img/tools/semgrep-cicd.png new file mode 100644 index 00000000..261cfb5e Binary files /dev/null and b/static/img/tools/semgrep-cicd.png differ diff --git a/static/img/tools/terraform-cicd.png b/static/img/tools/terraform-cicd.png new file mode 100644 index 00000000..ede7a0c2 Binary files /dev/null and b/static/img/tools/terraform-cicd.png differ diff --git a/static/schema/schema.v2.json b/static/schema/schema.v2.json index 105ad584..4dcaeba6 100644 --- a/static/schema/schema.v2.json +++ b/static/schema/schema.v2.json @@ -82,6 +82,8 @@ "zh", "crh-UA", "crh", + "cs-CZ", + "cs", "nb", "no", "nl-NL", @@ -91,7 +93,19 @@ "fa-IR", "sv-SE", "de-LU", - "fr-FR" + "fr-FR", + "bg-BG", + "bg", + "he-IL", + "he", + "hi-IN", + "hi", + "vi-VN", + "vi", + "th-TH", + "th", + "bn-BD", + "bn" ], "default": "en-US", "description": "Set the language for reviews by using the corresponding ISO language code." @@ -136,11 +150,21 @@ "default": "@coderabbitai summary", "description": "Placeholder in the PR/MR description that gets replaced with the high level summary." }, + "high_level_summary_in_walkthrough": { + "type": "boolean", + "default": false, + "description": "Include the high level summary in the walkthrough comment." + }, "auto_title_placeholder": { "type": "string", "default": "@coderabbitai", "description": "Add this keyword in the PR/MR title to auto-generate the title." }, + "auto_title_instructions": { + "type": "string", + "default": "", + "description": "Auto Title Instructions | Custom instructions for auto-generating the PR/MR title." + }, "review_status": { "type": "boolean", "default": true, @@ -151,6 +175,11 @@ "default": true, "description": "Set the commit status to 'pending' when the review is in progress and 'success' when it is complete." }, + "fail_commit_status": { + "type": "boolean", + "default": false, + "description": "Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit for any reason." + }, "collapse_walkthrough": { "type": "boolean", "default": false, @@ -186,11 +215,21 @@ "default": true, "description": "Suggest labels based on the changes in the pull request in the walkthrough." }, + "auto_apply_labels": { + "type": "boolean", + "default": false, + "description": "Automatically apply the suggested labels to the PR/MR." + }, "suggested_reviewers": { "type": "boolean", "default": true, "description": "Suggest reviewers based on the changes in the pull request in the walkthrough." }, + "auto_assign_reviewers": { + "type": "boolean", + "default": false, + "description": "Automatically assign suggested reviewers to the pull request" + }, "poem": { "type": "boolean", "default": true, @@ -223,7 +262,7 @@ "type": "string" }, "default": [], - "description": "Specify file patterns to exclude or include for a review. Accepts glob patterns. Example: !dist/**, src/**" + "description": "Specify file patterns to include or exclude in a review using glob patterns (e.g., !dist/**, src/**). These patterns also apply to 'git sparse-checkout', including specified patterns and ignoring excluded ones (starting with '!') when cloning the repository." }, "path_instructions": { "type": "array", @@ -236,7 +275,7 @@ }, "instructions": { "type": "string", - "maxLength": 3000, + "maxLength": 20000, "description": "Provides specific additional guidelines for code review based on file paths." } }, @@ -251,6 +290,11 @@ "default": true, "description": "Abort the in-progress review if the pull request is closed or merged." }, + "disable_cache": { + "type": "boolean", + "default": false, + "description": "Disable caching of code and dependencies. This will force CodeRabbit to download the code and dependencies fresh from the repository each time." + }, "auto_review": { "type": "object", "properties": { @@ -297,6 +341,39 @@ "additionalProperties": false, "default": {} }, + "finishing_touches": { + "type": "object", + "properties": { + "docstrings": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Docstrings | Allow CodeRabbit to generate docstrings for PRs/MRs." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Docstrings | Options for generating Docstrings for your PRs/MRs." + }, + "unit_tests": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Unit Tests | Allow CodeRabbit to generate unit tests for PRs/MRs." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Unit Tests | Options for generating unit tests for your PRs/MRs." + } + }, + "additionalProperties": false, + "default": {} + }, "tools": { "type": "object", "properties": { @@ -308,6 +385,7 @@ "items": { "type": "string" }, + "default": [], "description": "List of rules directories." }, "util_dirs": { @@ -315,6 +393,7 @@ "items": { "type": "string" }, + "default": [], "description": "List of utils directories." }, "essential_rules": { @@ -332,7 +411,8 @@ } }, "additionalProperties": false, - "description": "Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.31.1" + "default": {}, + "description": "Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.38.1" }, "shellcheck": { "type": "object", @@ -340,12 +420,12 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable ShellCheck | ShellCheck is a static analysis tool that finds bugs in your shell. | Enable shellcheck integration. | v0.10.0" + "description": "Enable ShellCheck | ShellCheck is a static analysis tool that finds bugs in your shell. | Enable ShellCheck integration. | v0.10.0" } }, "additionalProperties": false, "default": {}, - "description": "Shellcheck is a static analysis tool that finds bugs in your shell scripts." + "description": "ShellCheck is a static analysis tool that finds bugs in your shell scripts." }, "ruff": { "type": "object", @@ -353,7 +433,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Ruff | Ruff is a Python linter and code formatter. | Enable ruff integration. | v0.8.2" + "description": "Enable Ruff | Ruff is a Python linter and code formatter. | Enable Ruff integration. | v0.11.9" } }, "additionalProperties": false, @@ -366,12 +446,12 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Markdownlint | Markdownlint is a static analysis tool for Node.js with a library of rules to enforce standards and consistency for Markdown files. | Enable markdownlint integration. | v0.37.0" + "description": "Enable markdownlint | markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. | Enable markdownlint integration. | v0.17.2" } }, "additionalProperties": false, "default": {}, - "description": "Markdownlint is a static analysis tool to enforce standards and consistency for Markdown files." + "description": "markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files." }, "github-checks": { "type": "object", @@ -383,10 +463,10 @@ }, "timeout_ms": { "type": "number", - "maximum": 300000, + "maximum": 900000, "minimum": 0, "default": 90000, - "description": "Time in milliseconds to wait for all GitHub Checks to conclude." + "description": "Time in milliseconds to wait for all GitHub Checks to conclude. Default 90 seconds, max 15 minutes (900000ms)." } }, "additionalProperties": false, @@ -406,6 +486,7 @@ "items": { "type": "string" }, + "default": [], "description": "IDs of rules to be enabled. The rule won't run unless 'level' is set to a level that activates the rule." }, "disabled_rules": { @@ -413,6 +494,7 @@ "items": { "type": "string" }, + "default": [], "description": "IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES are always disabled." }, "enabled_categories": { @@ -420,6 +502,7 @@ "items": { "type": "string" }, + "default": [], "description": "IDs of categories to be enabled." }, "disabled_categories": { @@ -427,6 +510,7 @@ "items": { "type": "string" }, + "default": [], "description": "IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always disabled." }, "enabled_only": { @@ -494,7 +578,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable PHPStan | PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. | v2.0.3" + "description": "Enable PHPStan | PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. | v2.1.15" }, "level": { "type": "string", @@ -520,13 +604,39 @@ "default": {}, "description": "PHPStan is a tool to analyze PHP code." }, + "phpmd": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable PHPMD | PHPMD is a tool to find potential problems in PHP code. | v2.15.0" + } + }, + "additionalProperties": false, + "default": {}, + "description": "PHPMD is a tool to find potential problems in PHP code." + }, + "phpcs": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable PHP CodeSniffer | PHP CodeSniffer is a PHP linter and coding standard checker. | v3.7.2" + } + }, + "additionalProperties": false, + "default": {}, + "description": "PHP CodeSniffer is a PHP linter and coding standard checker." + }, "golangci-lint": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true, - "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v1.62.2" + "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v1.64.8" }, "config_file": { "type": "string", @@ -543,12 +653,12 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Yamllint | yamllint is a linter for YAML files. | Enable yamllint integration. | v1.35.1" + "description": "Enable YAMLlint | YAMLlint is a linter for YAML files. | Enable YAMLlint integration. | v1.37.1" } }, "additionalProperties": false, "default": {}, - "description": "yamllint is a linter for YAML files." + "description": "YAMLlint is a linter for YAML files." }, "gitleaks": { "type": "object", @@ -556,7 +666,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Gitleaks | Gitleaks is a secret scanner. | Enable Gitleaks integration. | v8.21.2" + "description": "Enable Gitleaks | Gitleaks is a secret scanner. | Enable Gitleaks integration. | v8.26.0" } }, "additionalProperties": false, @@ -582,11 +692,11 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Detekt | Detekt is a static code analysis tool for Kotlin files. | v1.23.7" + "description": "Enable detekt | detekt is a static code analysis tool for Kotlin files. | v1.23.8" }, "config_file": { "type": "string", - "description": "Optional path to the Detekt configuration file relative to the repository." + "description": "Optional path to the detekt configuration file relative to the repository." } }, "additionalProperties": false, @@ -606,13 +716,26 @@ "default": {}, "description": "ESLint is a static code analysis tool for JavaScript files." }, + "flake8": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Flake8 | Flake8 is a Python linter that wraps PyFlakes, pycodestyle and Ned Batchelder's McCabe script. | v7.2.0" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Flake8 is a Python linter that wraps PyFlakes, pycodestyle and Ned Batchelder's McCabe script." + }, "rubocop": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true, - "description": "Enable Rubocop | RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. | v1.69.1" + "description": "Enable RuboCop | RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. | v1.75.5" } }, "additionalProperties": false, @@ -625,7 +748,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Buf | Buf offers linting for Protobuf files. | v1.47.2" + "description": "Enable Buf | Buf offers linting for Protobuf files. | v1.54.0" } }, "additionalProperties": false, @@ -638,7 +761,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Regal | Regal is a linter and language server for Rego. | v0.29.2" + "description": "Enable Regal | Regal is a linter and language server for Rego. | v0.33.1" } }, "additionalProperties": false, @@ -651,7 +774,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Actionlint | is a static checker for GitHub Actions workflow files. | v1.7.4" + "description": "Enable actionlint | is a static checker for GitHub Actions workflow files. | v1.7.7" } }, "additionalProperties": false, @@ -664,11 +787,11 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Pmd | PMD is an extensible multilanguage static code analyzer. Itโ€™s mainly concerned with Java. | v7.8.0" + "description": "Enable PMD | PMD is an extensible multilanguage static code analyzer. Itโ€™s mainly concerned with Java. | v7.13.0" }, "config_file": { "type": "string", - "description": "Optional path to the Pmd configuration file relative to the repository." + "description": "Optional path to the PMD configuration file relative to the repository." } }, "additionalProperties": false, @@ -681,7 +804,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Cppcheck | Cppcheck is a static code analysis tool for the C and C++ programming languages. | v2.10-2" + "description": "Enable Cppcheck | Cppcheck is a static code analysis tool for the C and C++ programming languages. | v2.17.1" } }, "additionalProperties": false, @@ -694,7 +817,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.99.0" + "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.122.0" }, "config_file": { "type": "string", @@ -711,12 +834,155 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable CircleCi | CircleCi tool is a static checker for CircleCi config files. | v0.1.31151" + "description": "Enable CircleCI | CircleCI tool is a static checker for CircleCI config files. | v0.1.31687" } }, "additionalProperties": false, "default": {}, - "description": "CircleCi tool is a static checker for CircleCi config files." + "description": "CircleCI tool is a static checker for CircleCI config files." + }, + "clippy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Clippy | Clippy is a collection of lints to catch common mistakes and improve your Rust code. | Enable Clippy integration." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Clippy is a collection of lints to catch common mistakes and improve your Rust code." + }, + "sqlfluff": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable SQLFluff | SQLFluff is an open source, dialect-flexible and configurable SQL linter. | v3.4.0" + } + }, + "additionalProperties": false, + "default": {}, + "description": "SQLFluff is an open source, dialect-flexible and configurable SQL linter." + }, + "prismaLint": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Prisma Schema linting | Prisma Schema linting helps maintain consistent and error-free schema files | v0.10.1" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Configuration for Prisma Schema linting to ensure schema file quality" + }, + "pylint": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Pylint | Pylint is a Python static code analysis tool. | v3.3.7" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Pylint is a Python static code analysis tool." + }, + "oxc": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable OXC | OXC is a JavaScript/TypeScript linter written in Rust. | v0.16.10" + } + }, + "additionalProperties": false, + "default": {}, + "description": "OXC is a JavaScript/TypeScript linter written in Rust." + }, + "shopifyThemeCheck": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Shopify Theme Check | A linter for Shopify themes that helps you follow Shopify theme & Liquid best practices | cli 3.77.1 | theme 3.58.2" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Configuration for Shopify Theme Check to ensure theme quality and best practices" + }, + "luacheck": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Lua code linting | Luacheck helps maintain consistent and error-free Lua code | v1.2.0" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Configuration for Lua code linting to ensure code quality" + }, + "brakeman": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable Brakeman | Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2" + }, + "dotenvLint": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable dotenv-linter | dotenv-linter is a tool for checking and fixing .env files for problems and best practices | v3.3.0" + } + }, + "additionalProperties": false, + "default": {}, + "description": "dotenv-linter is a tool for checking and fixing .env files for problems and best practices" + }, + "htmlhint": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable HTMLHint | HTMLHint is a static code analysis tool for HTML files. | Enable HTMLHint integration. | v1.5.0" + } + }, + "additionalProperties": false, + "description": "HTMLHint is a static code analysis tool for HTML files.", + "default": {} + }, + "checkmake": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable checkmake | checkmake is a linter for Makefiles. | v0.2.2" + } + }, + "additionalProperties": false, + "default": {}, + "description": "checkmake is a linter for Makefiles." } }, "additionalProperties": false, @@ -735,6 +1001,39 @@ "type": "boolean", "default": true, "description": "Enable the bot to reply automatically without requiring the user to tag it." + }, + "integrations": { + "type": "object", + "properties": { + "jira": { + "type": "object", + "properties": { + "usage": { + "type": "string", + "enum": ["auto", "enabled", "disabled"], + "default": "auto", + "description": "Jira | Enable the Jira integration for opening issues, etc. 'auto' disables the integration for public repositories." + } + }, + "additionalProperties": false, + "default": {} + }, + "linear": { + "type": "object", + "properties": { + "usage": { + "type": "string", + "enum": ["auto", "enabled", "disabled"], + "default": "auto", + "description": "Linear | Enable the Linear integration for opening issues, etc. 'auto' disables the integration for public repositories." + } + }, + "additionalProperties": false, + "default": {} + } + }, + "additionalProperties": false, + "default": {} } }, "additionalProperties": false, @@ -746,7 +1045,40 @@ "opt_out": { "type": "boolean", "default": false, - "description": "Opt out | Opt out of all knowledge base features." + "description": "Opt Out | Disable all knowledge base features that require data retention. If you opt out after opting in, all of your existing knowledge base data will be removed from the system." + }, + "web_search": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Web Search | Enable the web search integration." + } + }, + "additionalProperties": false, + "default": {} + }, + "code_guidelines": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enabled | Enable CodeRabbit to enforce your organization's coding standards during reviews." + }, + "filePatterns": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "File Patterns | Specify files for your coding guideline documents in this section. CodeRabbit will scan these files to understand your team's standards and apply them during code reviews. Multiple files supported. File names are case-sensitive. Common files like: (**/.cursorrules, .github/copilot-instructions.md, **/CLAUDE.md, **/GEMINI.md, **/.cursor/rules/*, **/.windsurfrules, **/.clinerules/*, **/.rules/*, **/AGENT.md) are included by default." + } + }, + "additionalProperties": false, + "default": {}, + "description": "CodeRabbit will analyse and learn from your organization's code guidelines, which you can mention in the file patterns section. These guidelines will then be used to conduct thorough code reviews." }, "learnings": { "type": "object", @@ -777,6 +1109,12 @@ "jira": { "type": "object", "properties": { + "usage": { + "type": "string", + "enum": ["auto", "enabled", "disabled"], + "default": "auto", + "description": "Jira | Enable the Jira knowledge base integration. 'auto' disables the integration for public repositories." + }, "project_keys": { "type": "array", "items": { @@ -792,6 +1130,12 @@ "linear": { "type": "object", "properties": { + "usage": { + "type": "string", + "enum": ["auto", "enabled", "disabled"], + "default": "auto", + "description": "Linear | Enable the Linear knowledge base integration. 'auto' disables the integration for public repositories." + }, "team_keys": { "type": "array", "items": { @@ -820,9 +1164,184 @@ }, "additionalProperties": false, "default": {} + }, + "code_generation": { + "type": "object", + "properties": { + "docstrings": { + "type": "object", + "properties": { + "language": { + "type": "string", + "enum": [ + "de", + "de-DE", + "de-AT", + "de-CH", + "en", + "en-US", + "en-AU", + "en-GB", + "en-CA", + "en-NZ", + "en-ZA", + "es", + "es-AR", + "fr", + "fr-CA", + "fr-CH", + "fr-BE", + "nl", + "nl-BE", + "pt-AO", + "pt", + "pt-BR", + "pt-MZ", + "pt-PT", + "ar", + "ast-ES", + "ast", + "be-BY", + "be", + "br-FR", + "br", + "ca-ES", + "ca", + "ca-ES-valencia", + "ca-ES-balear", + "da-DK", + "da", + "de-DE-x-simple-language", + "el-GR", + "el", + "eo", + "fa", + "ga-IE", + "ga", + "gl-ES", + "gl", + "it", + "ja-JP", + "ja", + "km-KH", + "km", + "ko-KR", + "ko", + "pl-PL", + "pl", + "ro-RO", + "ro", + "ru-RU", + "ru", + "sk-SK", + "sk", + "sl-SI", + "sl", + "sv", + "ta-IN", + "ta", + "tl-PH", + "tl", + "tr", + "uk-UA", + "uk", + "zh-CN", + "zh", + "crh-UA", + "crh", + "cs-CZ", + "cs", + "nb", + "no", + "nl-NL", + "de-DE-x-simple-language-DE", + "es-ES", + "it-IT", + "fa-IR", + "sv-SE", + "de-LU", + "fr-FR", + "bg-BG", + "bg", + "he-IL", + "he", + "hi-IN", + "hi", + "vi-VN", + "vi", + "th-TH", + "th", + "bn-BD", + "bn" + ], + "default": "en-US", + "description": "Set the language for docstrings by using the corresponding ISO language code." + }, + "path_instructions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "File path glob pattern. Example: **/*.js" + }, + "instructions": { + "type": "string", + "maxLength": 20000, + "description": "Provides additional guidelines for docstring generation based on file paths." + } + }, + "required": ["path", "instructions"], + "additionalProperties": false + }, + "default": [], + "description": "Path Instructions | Provide additional guidelines for docstring generation based on file paths." + } + }, + "additionalProperties": false, + "default": { + "path_instructions": [] + }, + "description": "Settings related to the generation of docstrings." + }, + "unit_tests": { + "type": "object", + "properties": { + "path_instructions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "File path glob pattern. Example: **/*.js" + }, + "instructions": { + "type": "string", + "maxLength": 20000, + "description": "Provides additional guidelines for unit test generation based on file paths." + } + }, + "required": ["path", "instructions"], + "additionalProperties": false + }, + "default": [], + "description": "Unit Test Generation | Provide additional guidelines for unit test generation based on file paths." + } + }, + "additionalProperties": false, + "default": { + "path_instructions": [] + }, + "description": "Settings related to the generation of unit tests." + } + }, + "additionalProperties": false, + "default": {} } }, - "additionalProperties": false + "additionalProperties": true } }, "$schema": "http://json-schema.org/draft-07/schema#"