From ba8e69c75f9178f388b178aa095d6c7988c0de43 Mon Sep 17 00:00:00 2001 From: Omar G Ghafour Date: Tue, 30 Sep 2025 13:51:30 -0400 Subject: [PATCH] Add files via upload --- learnings (2).csv | 1398 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1398 insertions(+) create mode 100644 learnings (2).csv diff --git a/learnings (2).csv b/learnings (2).csv new file mode 100644 index 0000000..4a4cb51 --- /dev/null +++ b/learnings (2).csv @@ -0,0 +1,1398 @@ +Learning,Repository,File,Pull Request,URL,Created By,Created At,Updated At +"The `satisfies` keyword is a TypeScript feature introduced in TypeScript 4.9 to perform a type-only check that a type ""satisfies"" an interface or type alias without affecting runtime code. This should be considered valid in TypeScript contexts.","pr-reviewer-saas","src/review_filehunk.ts","486","","NatoBoram","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `getIssuesByRepo` method in the `RepoClient` interface is currently optional and properly handled, with plans to make it non-optional in the future when it is expanded to all clients.","pr-reviewer-saas","src/repo_client/repo_client.ts","488","","coderabbit-amank","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `jk_chrootlaunch` utility is part of jailkit and is installed in the Dockerfile, as clarified by the user.","pr-reviewer-saas","src/node.ts","565","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The user has clarified that the commented-out code related to the event listener in `Header.jsx` is intentionally retained for potential future use.","code-rabbit-ui","src/components/Header/Header.jsx","400","","coderabbit-amank","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `#client` property in the `LinearClient` class is optional and requires asynchronous authorization before use. Initialization in the constructor is not possible due to the async nature of the authorization process, and the current implementation includes error handling to ensure the client is not used before being authorized.","pr-reviewer-saas","src/issue_client/linear_client.ts","440","","bemijonathan","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"- The `IssuesIndex` class is part of the `src/issues-index.ts` file and interacts with the Pinecone index for issues. +- The `getIssues` method retrieves issues from the Pinecone index using text queries. +- The `upsertIssues` method updates or inserts issue records into the Pinecone index. +- The `IssueRecord` interface contains metadata about issues. +- The `generateIssueId` method creates a unique identifier for each issue. +- Error handling and logging are implemented within the `IssuesIndex` class methods.","pr-reviewer-saas","src/issues-index.ts","484","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `systemMessagePrefix` contains a fixed knowledge cutoff date and is not dynamic. Error handling for `classifyCommand` is managed by the calling function, not within `classifyCommand` itself. The list of commands is part of the business logic and is not dynamic.","pr-reviewer-saas","src/prompts.ts","578","","NatoBoram","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"NatoBoram has indicated that while `startLine` and `endLine` should probably be `readonly` to align with the immutability goals, a refactor is not currently feasible. This preference should be remembered for future reviews to avoid suggesting changes that require a refactor when it's not the right time.","pr-reviewer-saas","src/review/review.ts","502","","NatoBoram","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"Reinstated the learning about the match score based on euclidean distance and the threshold logic in Pinecone index queries.","pr-reviewer-saas","src/issues-index.ts","484","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"Always flag inconsistencies in the use of ""sub-rule"" or ""subrule"" for clarity and consistency in documentation related to ""AST-Grep"" integration.","coderabbit-docs","docs/integrations/ast-grep.md","21","","guritfaq","June 10th 2024, 3:44:11 pm","June 28th 2024, 8:44:52 am" +"The project `coderabbitai/pr-reviewer-saas` is configured for ESModules and supports top-level `await` due to the `""type"": ""module""` setting in `package.json`.","pr-reviewer-saas","src/index.ts","874","","NatoBoram","June 10th 2024, 3:44:11 pm","June 28th 2024, 8:46:40 am" +"The match score in the context of the Pinecone index queries is based on euclidean distance, and the logic for filtering matches uses a threshold where matches with a score greater than the `matchThreshold` are excluded.","pr-reviewer-saas","src/issues-index.ts","484","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"Error handling for the `compareDiffSummaries` function is managed in the parent function.","pr-reviewer-saas","src/prompts.ts","508","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The match score for Pinecone index queries is based on Euclidean distance, and matches are filtered based on whether their score is less than or equal to a defined `matchThreshold`.","pr-reviewer-saas","src/env.ts","434","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"New lines in the `renderEndHunk` function are managed during the final rendering process, not within the function itself.","pr-reviewer-saas","src/prompts.ts","513","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `/pinecone/issues/cron` endpoint in `src/index.ts` is designed to trigger the issue indexing scheduler and responds with a success message. The response should correctly use the property `success` instead of `sucess`.","pr-reviewer-saas","src/index.ts","488","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The user has clarified that `db.repositorySettingsOrg` is the correct usage of the new DB client introduced in the PR and that `db.orgSettings` was part of the previous version. ","coderabbit-functions","coderabbitHandler/src/functions.ts","464","","karan925","June 10th 2024, 3:44:11 pm","May 1st 2025, 6:23:45 pm" +"The match score in `src/review.ts` is based on euclidean distance, and the logic is such that matches with a score greater than the `matchThreshold` are filtered out, not less than.","pr-reviewer-saas","src/learnings-index.ts","484","","harjotgill","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The `getIssuesByRepo` method in the `RepoClient` class is designed to always return an object, ensuring that the calling function `processIssuesInRepo` can rely on this behavior without additional null or undefined checks.","pr-reviewer-saas","src/issues-index.ts","488","","coderabbit-amank","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The user has requested to make the test case more deterministic by checking for specific issue IDs rather than just the count of issues detected.","pr-reviewer-saas","src/issue_client/issue_client.test.ts","440","","NatoBoram","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"For future reviews, thoroughly check and recommend any improvements for grammatical or syntactical errors.","coderabbit-docs","docs/integrations/self-hosted-gitlab.md","26","","karan925","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"The environment for the project natively supports the `fetch` API, and the use of polyfills has been noted to cause issues.","pr-reviewer-saas","","","https://github.com/coderabbitai/pr-reviewer-saas/pull/861","NatoBoram","June 10th 2024, 3:44:11 pm","June 10th 2024, 3:44:11 pm" +"Ensure that reviews are conducted at the start and end of workdays to mitigate timezone issues.","mono","","","https://github.com/coderabbitai/mono/pull/1231","NatoBoram","July 23rd 2024, 12:30:28 pm","July 23rd 2024, 12:30:28 pm" +"Prefer to avoid using `as` casting in the codebase.","mono","packages/common/src/interfaces/types.ts","1632","","NatoBoram","October 15th 2024, 4:37:31 pm","October 15th 2024, 4:37:31 pm" +"TSConfig files do not comply with JSON specs. Comments on the format of TSConfig files should not be made in future reviews.","mono","githubActions/tsconfig.rollup.json","1053","","NatoBoram","July 4th 2024, 12:07:32 pm","July 4th 2024, 12:07:32 pm" +"TSConfig files are not standard JSON files, and comments about JSON standards should not be made for these files in future reviews.","mono","githubActions/tsconfig.rollup.json","1053","","NatoBoram","July 4th 2024, 12:08:01 pm","July 4th 2024, 12:08:01 pm" +"A caret (`^`) in the version specifier (e.g., `^3.23.8`) allows for updates within the same major version but not including the next major version.","mono","packages/schemas/package.json","1053","","NatoBoram","July 4th 2024, 11:28:41 am","July 4th 2024, 11:28:41 am" +"NatoBoram has requested that comments about version ranges should not be made in future reviews.","mono","packages/functions-client/package.json","1053","","NatoBoram","July 4th 2024, 11:29:03 am","July 4th 2024, 11:29:03 am" +"Azure DevOps API does not support pipeline checks, so in `pr-reviewer-saas/src/event-client/azure-client.ts`, the `getCheckRunByRef` method should return an empty object.","mono","pr-reviewer-saas/src/event-client/azure-client.ts","1632","","NatoBoram","October 15th 2024, 4:38:35 pm","October 15th 2024, 4:38:35 pm" +"Azure DevOps does not support checks, so the `getCheckRunByRef` and `getCheckRunAnnotations` methods in `azure-client.ts` can return empty values.","mono","pr-reviewer-saas/src/event-client/azure-client.ts","1632","","NatoBoram","October 15th 2024, 4:38:45 pm","October 15th 2024, 4:38:45 pm" +"In the Bitbucket Server webhook events, the `createdDate` and `updatedDate` properties are numbers without clear documentation, so they should be kept as `number` types.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","4","","NatoBoram","September 20th 2024, 2:30:44 pm","September 20th 2024, 2:30:44 pm" +"In DTOs where the property names are defined externally, avoid suggesting renaming properties even if they conflict with reserved words.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","4","","NatoBoram","September 20th 2024, 2:31:28 pm","September 20th 2024, 2:31:28 pm" +"The help command for CodeRabbit can be invoked using `@coderabbitai help` to get detailed information and tips on available commands.","mono","","","https://github.com/coderabbitai/mono/pull/1264","guritfaq","July 25th 2024, 2:45:37 pm","July 25th 2024, 2:45:37 pm" +"Errors should be processed within each tool module to provide specific error messages.","mono","pr-reviewer-saas/src/utils/utils.ts","1578","","petrisorcoderabbit","September 20th 2024, 6:34:43 am","September 20th 2024, 6:34:43 am" +"In `pr:reviewer:updated` events, when the official documentation is incomplete or inconsistent, accept the existing code comments as accurate.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","4","","NatoBoram","September 20th 2024, 2:33:31 pm","September 20th 2024, 2:33:31 pm" +"The help command for CodeRabbit can be invoked using `@coderabbitai help` to get detailed information and tips on available commands. In PR #1264, tips were moved from walkthrough comments to the help command for more extensive and detailed assistance.","mono","","","https://github.com/coderabbitai/mono/pull/1264","karan925","July 25th 2024, 3:03:30 pm","July 25th 2024, 3:03:30 pm" +"The help command for CodeRabbit can be invoked using `@coderabbitai help` to get detailed information and tips on available commands. In PR #1264, tips were moved from walkthrough comments to the help command for more extensive and detailed assistance.","mono","","","https://github.com/coderabbitai/mono/pull/1264","hasit","July 25th 2024, 2:57:49 pm","July 25th 2024, 2:57:49 pm" +"In the `BitbucketServerEventClient` class, the private member `#headers` is important to keep even if it's not currently being used.","mono","pr-reviewer-saas/src/event-client/bitbucket-server-client.ts","1632","","NatoBoram","October 15th 2024, 4:40:15 pm","October 15th 2024, 4:40:15 pm" +"In Azure DevOps, `pr.url` refers to the API URL, while `pr._links.web.href` provides the browser URL.","mono","","","https://github.com/coderabbitai/mono/issues/1572","alexcoderabbitai","September 20th 2024, 12:24:16 pm","May 1st 2025, 3:29:15 pm" +"`ORGANIZATION` and `USER` are enums in the codebase. We prefer to use them in this case. ","mono","coderabbitHandler/src/utils/repositories.ts","1372","","karan925","August 22nd 2024, 6:16:17 pm","May 1st 2025, 3:31:49 pm" +"In TypeScript code, when writing functions or getters that return `undefined`, it's unnecessary to explicitly write `return undefined`; simply using `return` without specifying a value suffices, as `return` defaults to `undefined`.","mono","pr-reviewer-saas/src/event-client/bitbucket-server-client.ts","1632","","NatoBoram","October 15th 2024, 4:44:00 pm","October 15th 2024, 4:44:00 pm" +"In `pr-reviewer-saas/src/utils/env.ts`, including `envBitbucketServer()` into the `env` object causes the inferred TypeScript type to exceed the maximum length the compiler will serialize, so we should avoid doing that.","mono","pr-reviewer-saas/src/utils/env.ts","1632","","NatoBoram","October 15th 2024, 4:44:56 pm","October 15th 2024, 4:44:56 pm" +"alexcoderabbitai is working on Shopify theme command unit tests in the mono repository and experiencing issues with CircleCI failing despite tests passing locally.","mono","","","https://github.com/coderabbitai/mono/pull/4350","alexcoderabbitai","May 1st 2025, 3:42:08 pm","May 1st 2025, 3:42:08 pm" +"In the `repoEventToRepoRepository` function in `bitbucket_server_event_client_utils.ts`, if neither 'repository' nor 'new' exists in the event, it indicates that multiple repositories are present, but we cannot return multiple repositories here.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1632","","NatoBoram","October 15th 2024, 5:24:03 pm","October 15th 2024, 5:24:03 pm" +"In the function `handleChangeEvent` in `coderabbitHandler/src/routes/marketplace/change_event.ts`, checking `subscription.status != ""cancelled""` is sufficient to cover other statuses such as `'in_trial'` and `'non_renewing'`.","mono","coderabbitHandler/src/routes/marketplace/change_event.ts","1985","","karan925","November 12th 2024, 9:44:01 pm","November 12th 2024, 9:44:01 pm" +"When formatting pull request information, avoid using AI for the Title and Blockers sections, as it can introduce inconsistent grouping and incorrect links.","mono","","","https://github.com/coderabbitai/mono/issues/1588","alexcoderabbitai","September 20th 2024, 3:15:54 pm","September 20th 2024, 3:15:54 pm" +"The 'Summary and Insights' section should be generated by AI but must be plain text without any markdown formatting, bold text, links, or special characters.","mono","","","https://github.com/coderabbitai/mono/issues/1588","alexcoderabbitai","September 20th 2024, 3:15:54 pm","September 20th 2024, 3:15:54 pm" +"When identifying blockers for open pull requests, consider factors such as staleness (no activity for over a week), review status, comment threads (unresolved discussions or unanswered questions), and failed automated checks like CI/CD pipelines or SAST tool failures.","mono","","","https://github.com/coderabbitai/mono/issues/1588","alexcoderabbitai","September 20th 2024, 3:15:54 pm","September 20th 2024, 3:15:54 pm" +"When creating a new marketplace subscription, we always provide a free trial, so setting `subscription_status` to `IN_TRIAL` in `createSubscriptionInDB` is intentional.","mono","coderabbitHandler/src/services/subscriptions.service.ts","1985","","karan925","November 12th 2024, 9:58:19 pm","November 12th 2024, 9:58:19 pm" +"In the `chatMetricsRouter`, the combination of `issue_url`, `thread_id`, and `repo_url` is unique for search purposes but not individually unique across the table, which is why `upsert` is not used.","mono","apps/db-api-server/src/routers/chat-metrics.ts","1371","","GurinderRawala","August 21st 2024, 2:57:51 pm","August 21st 2024, 2:57:51 pm" +"In the 'pr-reviewer-saas' project targeting ESNext, specifying the radix in `parseInt` is unnecessary because the default is 10.","mono","pr-reviewer-saas/src/schedulers/issues-scheduler.ts","1632","","NatoBoram","October 15th 2024, 5:21:18 pm","October 15th 2024, 5:21:18 pm" +"In this project, it's acceptable to omit braces for single-line `if` statements.","mono","pr-reviewer-saas/src/knowledge-base/issues-index.ts","1632","","NatoBoram","October 15th 2024, 5:21:43 pm","October 15th 2024, 5:21:43 pm" +"In the `pr-reviewer-saas/src/platform-client/bitbucket-server-client.ts` file, the `getPullRequests` method for the Bitbucket Server Client only needs to load the first page, and pagination support is not necessary.","mono","pr-reviewer-saas/src/platform-client/bitbucket-server-client.ts","1632","","NatoBoram","October 15th 2024, 5:25:39 pm","October 15th 2024, 5:25:39 pm" +"In the `setupJailAndCopyUtilities` function, the `-k` flag was added alongside the existing `-f` flag in the command executed by `execa`.","mono","","","https://github.com/coderabbitai/mono/pull/1380","harjotgill","August 21st 2024, 11:14:02 pm","August 21st 2024, 11:14:02 pm" +"When requesting the user to ensure something specific, end the review message with `[verify]` for clarity.","mono","coderabbitHandler/src/routes/webhook_handler/handle_webhook.ts","1279","","NatoBoram","August 1st 2024, 12:07:55 pm","August 1st 2024, 12:07:55 pm" +"The logic for filtering learning records based on the match score in `src/review.ts` is such that only records with a score greater than 0.6 are considered good matches and should be added to the `learnings` array. The user clarified that the original implementation was correct, and the bot's suggestion was based on a misunderstanding of the intended logic.","pr-reviewer-saas","src/review.ts","477","","harjotgill","June 10th 2024, 3:44:11 pm","August 16th 2024, 12:02:50 pm" +"In the `BaseReviewTask` class, ensure that the logic for setting `productReason` correctly handles the `overrideTrialToPro` flag to avoid overriding the ""paid_user"" assignment when `isInTrial` is true.","mono","coderabbitHandler/src/review/baseReviewTask.ts","1358","","karan925","August 16th 2024, 6:54:04 pm","August 16th 2024, 6:54:04 pm" +"The `verificationCompleted` flag in the `ParsedReviewComment` interface is updated to `true` in the `pr-reviewer-saas/src/review-filehunks.ts` file.","mono","pr-reviewer-saas/src/review/review.ts","1438","","harjotgill","September 3rd 2024, 1:51:04 am","September 3rd 2024, 1:51:04 am" +"@alexcoderabbitai prefers detailed, actionable responses that directly address code issues with specific solutions and examples.","mono","","","https://github.com/coderabbitai/mono/issues/1477","alexcoderabbitai","September 12th 2024, 12:25:13 am","September 12th 2024, 12:25:13 am" +"The mono repo uses dedicated packages (db-api-server, db-api-client, db-client) for handling database operations, suggesting a structured approach to database management.","mono","","","https://github.com/coderabbitai/mono/issues/1513","alexcoderabbitai","September 12th 2024, 4:51:06 pm","September 12th 2024, 4:51:06 pm" +"Context creation in the codebase includes sources such as pull requests, commits, issues (GitHub and other platforms), and Jira tickets, as evidenced by files like context.ts, issues.ts, and various webhook handlers.","mono","","","https://github.com/coderabbitai/mono/issues/1513","alexcoderabbitai","September 12th 2024, 4:51:06 pm","September 12th 2024, 4:51:06 pm" +"GitHub Action failure logs can be used as context for automatic PR comments in CodeRabbit by extracting logs, analyzing them, and integrating the results into the existing PR review and comment generation system.","mono","","","https://github.com/coderabbitai/mono/issues/1514","alexcoderabbitai","September 12th 2024, 4:58:41 pm","September 12th 2024, 4:58:41 pm" +"CodeRabbit's codebase is a monorepo containing multiple packages and applications, including a UI component, various backend services, and integration with multiple Git providers (GitHub, GitLab, Azure DevOps).","mono","","","https://github.com/coderabbitai/mono/issues/1515","alexcoderabbitai","September 12th 2024, 5:03:58 pm","September 12th 2024, 5:03:58 pm" +"CodeRabbit's architecture includes microservices-like components, with separate packages for database operations, API clients, and cloud functions.","mono","","","https://github.com/coderabbitai/mono/issues/1515","alexcoderabbitai","September 12th 2024, 5:03:58 pm","September 12th 2024, 5:03:58 pm" +"CodeRabbit uses TypeScript extensively throughout its codebase, with opportunities for improving type safety and addressing TODO comments related to typing issues.","mono","","","https://github.com/coderabbitai/mono/issues/1515","alexcoderabbitai","September 12th 2024, 5:03:58 pm","September 12th 2024, 5:03:58 pm" +"When filtering mapped results in TypeScript, ensure the filtering condition matches the logic used in the mapping function. For example, if null is used to represent invalid items in the map function, use `item !== null` in the filter function rather than checking for undefined.","mono","coderabbitHandler/src/services/backend_service/backend_service.ts","1507","","karan925","September 12th 2024, 5:22:52 pm","September 12th 2024, 5:22:52 pm" +"When creating very large diagrams that will turn out very wide, @alexcoderabbitai prefers using `graph LR` instead of `graph TD`. Smaller graphs are fine as `graph TD`.","mono","","","https://github.com/coderabbitai/mono/issues/1477","alexcoderabbitai","September 13th 2024, 9:26:55 am","September 13th 2024, 9:26:55 am" +"The `pr-reviewer-saas` package contains important schedulers like `standup-summary-scheduler.ts` and `ondemand-report.ts`.","mono","","","https://github.com/coderabbitai/mono/issues/1489","alexcoderabbitai","September 16th 2024, 7:42:56 pm","September 16th 2024, 7:42:56 pm" +"In our codebase, logging sensitive information like API keys in debug logs is acceptable because debug logs are only accessible in development mode and not in production.rrtwergerwgerfge","mono","pr-reviewer-saas/src/api/license-check.ts","1552","","karan925","September 24th 2024, 1:50:01 pm","May 1st 2025, 6:38:38 pm" +"In standup reports, filter out interactions with 'coderabbitai' or 'coderabbit' in the code, not in the prompt.","mono","","","https://github.com/coderabbitai/mono/issues/1489","alexcoderabbitai","September 17th 2024, 6:16:41 pm","September 17th 2024, 6:16:41 pm" +"Include insights and blockers in standup reports, summarizing any issues preventing progress, such as pending reviews or requested changes.","mono","","","https://github.com/coderabbitai/mono/issues/1489","alexcoderabbitai","September 17th 2024, 6:16:41 pm","September 17th 2024, 6:16:41 pm" +"`CODERABBIT_API_KEY` and `SELF_HOSTED` are optional and can be `undefined`; ensure that their existence is validated before use.","mono","pr-reviewer-saas/src/api-client/dbApiClient.ts","1552","","karan925","September 18th 2024, 8:26:23 pm","September 18th 2024, 8:26:23 pm" +"Combining constant declarations and type assertions in TypeScript can reduce type safety when multiple keys are involved. It's better to keep them separate to maintain strict type checking.","bitbucket","src/server/webhooks/events/project/event.ts","5","","NatoBoram","September 23rd 2024, 3:20:07 pm","September 23rd 2024, 3:20:07 pm" +"For new integrations like MS Teams, we should utilize Courier's built-in support to simplify development instead of creating separate clients and routes.","mono","","","https://github.com/coderabbitai/mono/issues/1505","alexcoderabbitai","September 23rd 2024, 3:14:08 pm","September 23rd 2024, 3:14:08 pm" +"When validating event keys, remember that the keys could be human-friendly names, so checks should be performed against the values, not the keys.","bitbucket","src/server/webhooks/events/repo/event.ts","5","","NatoBoram","September 23rd 2024, 3:20:37 pm","September 23rd 2024, 3:20:37 pm" +"When detecting mentions of `@coderabbit` or `@coderabbitai`, ensure the matching logic only identifies exact usernames and does not match substrings within other usernames to avoid false positives.","mono","pr-reviewer-saas/src/review/review.ts","1551","","cr-ruhanmuzaffar","September 19th 2024, 11:00:55 am","September 19th 2024, 11:00:55 am" +"In the `coderabbit-ui` codebase, routing is configured within `App.tsx`, and new pages are added by updating the routes in `App.tsx` instead of a separate `routes.tsx` file.","mono","coderabbit-ui/src/pages/Help/Help.tsx","1646","","alexcoderabbitai","September 29th 2024, 6:37:05 pm","September 29th 2024, 6:37:05 pm" +"In the `coderabbit-ui` codebase, when reviewing `App.tsx`, ensure that routes are formatted consistently and recommend fixes to team members if inconsistencies are found.","mono","coderabbit-ui/src/pages/Help/Help.tsx","1646","","alexcoderabbitai","September 29th 2024, 6:45:09 pm","September 29th 2024, 6:45:09 pm" +"When handling tool errors, catch the error, generate an error string using `getToolErrorMessage` with the appropriate `ToolNames` and the error, add the error string to the warnings array (e.g., `allWarnings`), and log the error.","mono","pr-reviewer-saas/src/tools/pmd/command.ts","1578","","cr-ruhanmuzaffar","September 25th 2024, 5:00:27 am","September 25th 2024, 5:00:27 am" +"We should use the constants defined in `comments/commenter.ts` for ""auto-generated comment"" tags instead of hardcoding strings, to ensure consistency when filtering out bot comments in reports.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","1617","","alexcoderabbitai","September 25th 2024, 11:49:51 am","September 25th 2024, 11:49:51 am" +"We aim to avoid using `any` in TypeScript code unless absolutely necessary.","mono","pr-reviewer-saas/src/api/license-check.ts","1620","","karan925","September 25th 2024, 5:29:22 pm","September 25th 2024, 5:29:22 pm" +"If a middleware may send a response body in case of an error, it's appropriate to keep the Response body type as 'unknown' rather than 'void'.","mono","pr-reviewer-saas/src/api/license-check.ts","1620","","karan925","September 25th 2024, 6:52:48 pm","September 25th 2024, 6:52:48 pm" +"All bot comments should be filtered out from the communications section of the Daily Standup Report to focus on communication between actual reviewers.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","1617","","alexcoderabbitai","September 25th 2024, 9:50:44 pm","September 25th 2024, 9:50:44 pm" +"When using a `break` statement in a loop to exit upon a condition, appending to variables like `toolName` within the loop is acceptable since it will only occur once.","mono","pr-reviewer-saas/src/tools/golangci-lint/command.ts","1626","","cr-ruhanmuzaffar","September 26th 2024, 6:59:14 am","September 26th 2024, 6:59:14 am" +"The user wants to implement directives similar to ESLint comments to trigger CodeRabbit's functionality from code comments.","mono","","","https://github.com/coderabbitai/mono/pull/1619","alexcoderabbitai","September 26th 2024, 10:29:50 am","September 26th 2024, 10:29:50 am" +"The sender email for email reports is configured in the Courier service, not in the codebase.","mono","","","https://github.com/coderabbitai/mono/issues/1628","alexcoderabbitai","September 26th 2024, 12:56:33 pm","September 26th 2024, 12:56:33 pm" +"In the `license.ts` file, using `repository.html` as a fallback for `pr_url` when creating a review event is acceptable to provide at least some information.","mono","pr-reviewer-saas/src/api/routes/public/license.ts","1620","","karan925","September 26th 2024, 8:59:28 pm","September 26th 2024, 8:59:28 pm" +"When the user asks for assistance, ensure to execute scripts and examine the files in question before responding.","mono","coderabbit-ui/src/components/ui/support-widget.tsx","1637","","alexcoderabbitai","September 27th 2024, 2:19:03 pm","September 27th 2024, 2:19:03 pm" +"The support widget should have an opaque background to prevent it from being transparent.","mono","coderabbit-ui/src/components/ui/support-widget.css","1637","","alexcoderabbitai","September 27th 2024, 2:36:57 pm","September 27th 2024, 2:36:57 pm" +"The project uses Tailwind CSS and shadcn/ui components for styling and UI elements. Prefer using `shadcn/ui` components like `Dialog` or `Popover` for modals and popups.","mono","coderabbit-ui/src/components/ui/support-widget.tsx","1637","","GurinderRawala","September 27th 2024, 3:01:54 pm","September 27th 2024, 3:01:54 pm" +"When asked to help write files, always take inspiration from the current codebase when recommending changes. Don't make stuff up from scratch; look at what is already here and then make suggestions that are similar.","mono","","","https://github.com/coderabbitai/mono/pull/1637","alexcoderabbitai","September 27th 2024, 3:06:09 pm","September 27th 2024, 3:06:09 pm" +"When implementing UI components, use `tailwind` and `shadcn/ui` components, taking inspiration from the current codebase, and utilize existing `Dialog` components where possible.","mono","coderabbit-ui/src/components/ui/support-widget.tsx","1637","","alexcoderabbitai","September 27th 2024, 3:24:52 pm","September 27th 2024, 3:24:52 pm" +"Do not leave code review comments about ensuring code handles optional properties when ESLint is used by the project to handle such issues.","bitbucket","src/server/webhooks/events/pr/comment_edited.ts","7","","NatoBoram","September 27th 2024, 3:25:40 pm","September 27th 2024, 3:25:40 pm" +"When someone adds packages or installs packages to `./coderabbit-ui/package.json` in the `coderabbit-ui` project, advise them not to, and instead suggest running `pnpm dlx shadcn@latest add [component]` if the same functionality can be achieved without installing extra packages.","mono","","","https://github.com/coderabbitai/mono/pull/1637","alexcoderabbitai","September 27th 2024, 4:39:53 pm","September 27th 2024, 4:39:53 pm" +"The `PullRequest` interface definitions come from Atlassian, and any inconsistencies should be preserved to reflect the original source.","bitbucket","src/server/webhooks/events/pr/deleted.ts","8","","NatoBoram","September 30th 2024, 2:58:52 pm","September 30th 2024, 2:58:52 pm" +"In `src/server/webhooks/events/pr`, interfaces like `PullRequest` are auto-generated from Quicktype and Atlassian's docs and should be kept minimally changed to avoid maintenance burden.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","8","","NatoBoram","September 30th 2024, 3:00:39 pm","September 30th 2024, 3:00:39 pm" +"When working with environment variables in `coderabbit-ui/`, always start the env var name with the `VITE_` prefix.","mono","coderabbit-ui/src/components/ui/zendesk-widget.tsx","1652","","alexcoderabbitai","September 30th 2024, 3:57:02 pm","September 30th 2024, 3:57:02 pm" +"Prefer adding third-party widgets like Zendesk directly in `index.html` instead of injecting them via React components.","mono","","","https://github.com/coderabbitai/mono/pull/1652","alexcoderabbitai","September 30th 2024, 5:28:00 pm","September 30th 2024, 5:28:00 pm" +"The team prefers to keep the `SupportWidget` component in the codebase as a fallback in case ad blockers interfere with third-party plugins like Zendesk.","mono","coderabbit-ui/src/App.tsx","1656","","alexcoderabbitai","September 30th 2024, 7:24:37 pm","September 30th 2024, 7:24:37 pm" +"When `SupportWidget` is removed from `App.tsx`, note that it was completely deleted, including both the import statement and its usage, rather than being commented out.","mono","","","https://github.com/coderabbitai/mono/pull/1656","alexcoderabbitai","September 30th 2024, 8:56:53 pm","September 30th 2024, 8:56:53 pm" +"When reviewing code changes, carefully verify whether code is removed or commented out, and describe it accurately in the review comments.","mono","","","https://github.com/coderabbitai/mono/pull/1656","alexcoderabbitai","September 30th 2024, 8:57:25 pm","September 30th 2024, 8:57:25 pm" +"The `deploy-billing` pipelines handle the deployment of the Billing service to both development and production environments. + +**Development Pipeline** (`.github/workflows/deploy-billing-dev.yaml`): + +- **Triggers**: + - Automatically on pushes to the `main` branch affecting files in the `billing/**` path. + - Manually via `workflow_dispatch`. +- **Environment**: + - Runs on `ubuntu-latest` with a timeout of 15 minutes. + - Uses Node.js 20 and `pnpm` package manager. +- **Authentication**: + - Authenticates with Google Cloud using credentials from `${{ secrets.GOOGLECLOUDSA }}`. +- **Steps**: + - Checks out the repository (`actions/checkout@v4`). + - Sets up `pnpm` and Node.js (`pnpm/action-setup@v4`, `actions/setup-node@v4`). + - Installs dependencies (`pnpm install`). + - Builds the Billing project (`pnpm build --filter=@coderabbitai/billing`). + - Performs ESBuild in the `billing` directory (`pnpm run esbuild`). + - Deploys the Billing functions to Google Cloud Functions using `gcloud functions deploy` with specified configurations (runtime `nodejs20`, trigger `http`, security settings, and region `us-central1`). + +**Production Pipeline** (`.github/workflows/deploy-billing-prod.yaml`): + +- **Triggers**: + - Manually via `workflow_dispatch`. + - Executes only if the branch name starts with `release`. +- **Environment**: + - Runs on `ubuntu-latest` with a timeout of 15 minutes. + - Uses Node.js 20 and `pnpm` package manager. +- **Authentication**: + - Authenticates with Google Cloud using credentials from `${{ secrets.PRODGOOGLECLOUDFUNCTIONS }}`. +- **Steps**: + - Similar to the development pipeline, including checkout, setup, installation, build, ESBuild, and deployment steps. + - Deploys to the production environment using `gcloud functions deploy` with the same configurations as the development pipeline.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:31:27 am","October 7th 2024, 11:31:27 am" +"The `.github/workflows` directory contains GitHub Actions workflow files that automate tasks such as building, testing, and deploying various components of the project.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"In `src/ast-grep/examples/example.rs`, functions are intentionally written with and without docstrings to test such scenarios.","rabbits-lab","src/ast-grep/examples/example.rs","56","","NatoBoram","May 23rd 2025, 2:45:42 pm","May 23rd 2025, 2:45:42 pm" +"Production deployment workflows are manually triggered and can only run on branches starting with `release`. After changes are merged into `main`, the `release` branch must be updated from `main` before triggering production workflows.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"Development deployment workflows are triggered automatically on pushes to the `main` branch affecting specific directories or can be manually triggered. The development environment is accessible via the dev cluster at [https://coderabbit.uw.r.appspot.com/](https://coderabbit.uw.r.appspot.com/) and is connected to specific repositories like `coderabbit-ui`, `pr-reviewer_test`, `jira-integration-oauth`, `coderabbit-docs`, and `jira.js`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"Each service in the project has dedicated workflows for deployment to development and production environments, named with the pattern `deploy-[service]-dev.yaml` and `deploy-[service]-prod.yaml`. For example, `deploy-billing-dev.yaml` and `deploy-billing-prod.yaml` deploy the Billing service.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"Workflows authenticate with Google Cloud using appropriate credentials (`GCP_PROJECT_PROD_SA_KEY` for production and `GCP_PROJECT_DEV_SA_KEY` for development) and use services like Google Cloud Functions, Cloud Run, and App Engine for deployment.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"The project uses `pnpm` and Node.js 20 for package management and building processes in the workflows.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"Docker-based services use Docker Buildx for building images and push them to Google Artifact Registry or Google Container Registry before deployment.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"End-to-end tests are run for certain services after deployment using workflows like `e2e-reviewer.yaml`, which triggers tests via a Cloud Function.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"The `checkov-policy-update.yaml` workflow updates Checkov severity mappings by scraping policy severity information from the Checkov documentation repository `hlxsites/prisma-cloud-docs`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"The `labeler.yaml` workflow automates the labeling of pull requests based on the files changed, using configurations specified in `labeler-sync.yaml` and `labeler.yaml`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 11:20:00 am","October 7th 2024, 11:20:00 am" +"The `build-push-coderabbit-agent.yaml` workflow builds and pushes the CodeRabbit Agent Docker image to Google Artifact Registry. It is manually triggered via `workflow_dispatch` and runs on branches starting with `release-coderabbit-agent`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `checkov-policy-update.yaml` workflow updates the Checkov severity mapping by scraping policy information from the `hlxsites/prisma-cloud-docs` repository. It runs weekly on Sundays and can be manually triggered.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-billing` pipelines (`deploy-billing-dev.yaml` and `deploy-billing-prod.yaml`) automate the deployment of the Billing service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `billing/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-chargebee` pipelines (`deploy-chargebee-dev.yaml` and `deploy-chargebee-prod.yaml`) deploy the `chargebeeHandler` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `chargebeeHandler/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"Learning: The `deploy-billing` pipelines (`deploy-billing-dev.yaml` and `deploy-billing-prod.yaml`) automate the deployment of the Billing service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `billing/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `build-push-coderabbit-agent.yaml` workflow builds and pushes the CodeRabbit Agent Docker image to Google Artifact Registry. It is manually triggered and runs on branches starting with `release-coderabbit-agent`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `checkov-policy-update.yaml` workflow updates the Checkov severity mapping by scraping policy information from the `hlxsites/prisma-cloud-docs` repository. It runs weekly on Sundays and can be manually triggered.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-chargebee` pipelines (`deploy-chargebee-dev.yaml` and `deploy-chargebee-prod.yaml`) deploy the `chargebeeHandler` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `chargebeeHandler/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-coderabbit` pipelines (`deploy-coderabbit-dev.yaml` and `deploy-coderabbit-prod.yaml`) deploy the `coderabbit-handler` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `coderabbitHandler/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-coderabbitproxy` pipelines (`deploy-coderabbitproxy-dev.yaml` and `deploy-coderabbitproxy-prod.yaml`) deploy the `coderabbit-handler-proxy` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `apps/coderabbit-handler-proxy/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-dbapiserver` pipelines (`deploy-dbapiserver-dev.yaml` and `deploy-dbapiserver-prod.yaml`) deploy the `db-api-server` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `apps/db-api-server/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-github` pipelines (`deploy-github-dev.yaml` and `deploy-github-prod.yaml`) deploy the `githubActions` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `githubActions/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-reviewer` pipelines (`deploy-reviewer-dev.yaml` and `deploy-reviewer-prod.yaml`) deploy the `pr-reviewer-saas` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `pr-reviewer-saas/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `deploy-ui` pipelines (`deploy-ui-dev.yaml` and `deploy-ui-prod.yaml`) deploy the `coderabbit-ui` application to Google App Engine in development and production environments. The development pipeline triggers on pushes to `main` affecting `coderabbit-ui/**`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `e2e-reviewer.yaml` workflow triggers end-to-end tests for the Reviewer service by invoking a Cloud Function endpoint. It is manually triggered via `workflow_dispatch`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `github-pages.yaml` workflow builds and deploys documentation or static site content to GitHub Pages. It runs on pushes to `main` and uses `pnpm` for package management.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Learning: The `grafana-internal-prod-deploy.yaml` workflow deploys the internal Grafana service to production. It is triggered by a `repository_dispatch` event of type `trigger-grafana-micro-frontend` and deploys to Google Cloud Run.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"Within the codebase, it's acceptable to use the old import path (`../../src/index.js`) internally; the new path (`../../src/server/index.js`) is only mandatory for external packages.","bitbucket","tests/server/client.ts","10","","NatoBoram","October 1st 2024, 12:56:20 pm","October 1st 2024, 12:56:20 pm" +"Currently, there's no existing user context in `coderabbit-ui/src` that provides `email` and `orgName`. To access these values, we may need to create a `UserContext` or fetch the data from an API.","mono","coderabbit-ui/src/components/ui/zendesk-widget.tsx","1661","","alexcoderabbitai","October 1st 2024, 1:12:00 pm","October 1st 2024, 1:12:00 pm" +"Learning: The `labeler.yaml` workflow automates the labeling of pull requests based on changed files. It runs on pull requests targeting `main` and uses configurations from `labeler-sync.yaml` and `labeler.yaml`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:02:16 pm","October 7th 2024, 12:02:16 pm" +"When exporting modules in TypeScript, ensure that the export paths reference the correct file extensions or omit the extension when appropriate to avoid missing file errors.","bitbucket","src/server/webhooks/events/index.ts","11","","NatoBoram","October 1st 2024, 2:29:01 pm","October 1st 2024, 2:29:01 pm" +"The `deploy-coderabbit` pipelines (`deploy-coderabbit-dev.yaml` and `deploy-coderabbit-prod.yaml`) deploy the `coderabbit-handler` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `coderabbitHandler/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-coderabbitproxy` pipelines (`deploy-coderabbitproxy-dev.yaml` and `deploy-coderabbitproxy-prod.yaml`) deploy the `coderabbit-handler-proxy` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `apps/coderabbit-handler-proxy/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-dbapiserver` pipelines (`deploy-dbapiserver-dev.yaml` and `deploy-dbapiserver-prod.yaml`) deploy the `db-api-server` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `apps/db-api-server/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-github` pipelines (`deploy-github-dev.yaml` and `deploy-github-prod.yaml`) deploy the `githubActions` service to Google Cloud Functions in development and production environments. The development pipeline triggers on pushes to `main` affecting `githubActions/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-reviewer` pipelines (`deploy-reviewer-dev.yaml` and `deploy-reviewer-prod.yaml`) deploy the `pr-reviewer-saas` service to Google Cloud Run in development and production environments. The development pipeline triggers on pushes to `main` affecting `pr-reviewer-saas/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `deploy-ui` pipelines (`deploy-ui-dev.yaml` and `deploy-ui-prod.yaml`) deploy the `coderabbit-ui` application to Google App Engine in development and production environments. The development pipeline triggers on pushes to `main` affecting `coderabbit-ui/**` and via `workflow_dispatch`, while the production pipeline is manually triggered and runs on branches starting with `release`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `e2e-reviewer.yaml` workflow triggers end-to-end tests for the Reviewer service by invoking a Cloud Function endpoint. It is manually triggered via `workflow_dispatch`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `github-pages.yaml` workflow builds and deploys documentation or static site content to GitHub Pages. It runs on pushes to the `main` branch and uses `pnpm` for package management.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `grafana-internal-prod-deploy.yaml` workflow deploys the internal Grafana service to production. It is triggered by a `repository_dispatch` event of type `trigger-grafana-micro-frontend` and deploys to Google Cloud Run.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"The `labeler.yaml` workflow automates labeling of pull requests based on changed files. It runs on pull requests targeting the `main` branch and uses configurations from `labeler-sync.yaml` and `labeler.yaml`.","mono","","","https://github.com/coderabbitai/mono/issues/1695","alexcoderabbitai","October 7th 2024, 12:15:25 pm","October 7th 2024, 12:15:25 pm" +"For organizations, use the existing `subscription_id` as the `tenant_id` in Firebase to ensure consistency across organization and self-hosted accounts.","mono","apps/db-api-server/schema.zmodel","1665","","guritfaq","October 2nd 2024, 12:11:10 am","October 2nd 2024, 12:11:10 am" +"In `src/javascript/for_pagination.ts`, the unconventional `for` loop in the `allPages()` function is intentionally written that way as part of the exercise.","rabbits-lab","src/javascript/for_pagination.ts","18","","NatoBoram","October 7th 2024, 5:08:31 pm","October 7th 2024, 5:08:31 pm" +"In `src/javascript/for_pagination.ts`, the `getContent` function uses `slice()`, so input validation for `limit` and `start` is considered unnecessary because `slice()` will handle invalid values by throwing an error or returning unexpected data.","rabbits-lab","src/javascript/for_pagination.ts","18","","NatoBoram","October 7th 2024, 5:08:04 pm","October 7th 2024, 5:08:04 pm" +"In the 'Daily Standup Report' prompt template in `packages/db-client/src/enums/schedule_prompt.ts`, we should remove the 'Conversations' section from the default reports. Including conversations can lead to hallucinations due to insufficient context, as most PR discussions occur outside of GitHub, such as in calls or messaging channels like Slack.","mono","packages/db-client/src/enums/schedule_prompt.ts","1696","","alexcoderabbitai","October 7th 2024, 7:17:46 pm","October 7th 2024, 7:17:46 pm" +"The dev environment and `pr-reviewer_test` are not reliable test environments for reports, as unpredictable results occur when used live.","mono","","","https://github.com/coderabbitai/mono/pull/1681","alexcoderabbitai","October 4th 2024, 1:19:08 pm","October 4th 2024, 1:19:08 pm" +"In the React project at `./coderabbit-ui/src/components/ui/`, we use kebab-case for filenames, replacing spaces with dashes.","mono","","","https://github.com/coderabbitai/mono/issues/1672","alexcoderabbitai","October 4th 2024, 1:35:37 pm","October 4th 2024, 1:35:37 pm" +"Firebase tenant IDs are auto-generated and cannot be manually set. In the `organizations` model in `apps/db-api-server/schema.zmodel`, the `tenant_id` field is used to store the Firebase tenant ID to map the relationship between an organization/self-hosted instance and the Firebase tenant. Therefore, it is acceptable for the `tenant_id` field to be nullable and have a unique constraint.","mono","apps/db-api-server/schema.zmodel","1665","","GurinderRawala","October 4th 2024, 2:39:17 pm","October 4th 2024, 2:39:17 pm" +"In TypeScript projects, dependencies that are only imported using `import type` and are not used at runtime can remain in `devDependencies` instead of `dependencies` in `package.json`.","rabbits-lab","package.json","17","","NatoBoram","October 4th 2024, 5:03:45 pm","October 4th 2024, 5:03:45 pm" +"Prefer using built-in JavaScript functions or existing components over adding new dependencies when possible.","mono","coderabbit-ui/src/pages/learnings/Learnings.tsx","1700","","alexcoderabbitai","October 8th 2024, 8:02:40 am","October 8th 2024, 8:02:40 am" +"Always search for `.js`, `.ts`, `.tsx`, `.json`, `.yaml`, and `.html` files in the mono repository when analyzing files. Provide exact file paths, line numbers, and code changes when detailing implementation steps.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:59:48 am","October 6th 2024, 8:59:48 am" +"Always run the command `git ls-files | awk -F. '/\./{print $NF}' | sort | uniq -c | sort -nr` when asked about changing exact files and lines of code to avoid hallucinating files or recommending changes from different languages.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:59:48 am","October 6th 2024, 8:59:48 am" +"Always run the command `git ls-files | awk -F. '/\./{print $NF}' | sort | uniq -c | sort -nr` when asked about changing exact files and lines of code, to avoid hallucinating files or recommending changes from different languages.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:59:48 am","October 6th 2024, 8:59:48 am" +"- When we can connect a pipeline failure to an exact line of code in the file diff, we should include this status in the review description and review comments.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:31:29 am","October 6th 2024, 8:31:29 am" +"- We may want to add new run condition triggers such as `workflow_run` events in our GitHub Actions workflows.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:31:29 am","October 6th 2024, 8:31:29 am" +"- The project is written in TypeScript, not Python.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:36:32 am","October 6th 2024, 8:36:32 am" +"CodeRabbit should automate creating, updating, and closing Jira and GitLab issues based on code review suggestions, applicable to both initial and follow-up reviews.","mono","","","https://github.com/coderabbitai/mono/issues/1682","alexcoderabbitai","October 6th 2024, 8:36:57 am","October 6th 2024, 8:36:57 am" +"- Always provide examples in TypeScript and never in any other language.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:39:44 am","October 6th 2024, 8:39:44 am" +"Always search for `.js`, `.ts`, `.tsx`, `.json`, `.yaml`, and `.html` files in the mono repo when analyzing files.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 8:59:48 am","October 6th 2024, 8:59:48 am" +"Always search for `.js`, `.ts`, `.tsx`, `.json`, `.yaml`, and `.html` files in the mono repo when asked about changing exact files and lines of code.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:26 am","October 6th 2024, 9:00:26 am" +"- I should always search for files with extensions `.js`, `.ts`, `.tsx`, `.json`, `.yaml`, and `.html` when analyzing the mono repository.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- When asked about changing exact files and lines of code, I should always run the command `git ls-files | awk -F. '/\./{print $NF}' | sort | uniq -c | sort -nr` to avoid hallucinating files or recommending changes from different languages.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- Always include `.yml` in addition to `.yaml` when searching for YAML files.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- I should always search for files with extensions `.js`, `.ts`, `.tsx`, `.json`, `.yaml`, `.yml`, and `.html` when analyzing the mono repository.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- When running shell scripts, ensure that `rg` commands use correct glob patterns to match file extensions.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- Adjust shell scripts to produce expected outputs by correcting command syntax and options.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"- When running shell scripts, use multiple '-g' options with 'rg' to correctly specify file globs.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 9:00:51 am","October 6th 2024, 9:00:51 am" +"When ""ci/cd"" is mentioned, it refers to generic pipeline jobs like GitHub Actions, CircleCI, GitLab pipelines, cron jobs, etc., and not literally pipelines named ""CI"" and ""CD"".","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 6th 2024, 6:00:09 pm","October 6th 2024, 6:00:09 pm" +"In the `coderabbitHandler` project, methods like `isValidRequest` may have different implementations across different base classes, and inconsistencies between them may not necessarily indicate an issue.","mono","coderabbitHandler/src/review/azureDevopsReviewTask.ts","1721","","petrisorcoderabbit","October 14th 2024, 7:16:17 am","October 14th 2024, 7:16:17 am" +"When updating `fileHunk.toolOutputs[toolName]` using the spread operator, existing properties like `runFailureCount` and `errors` are preserved unless explicitly overwritten. Specifying `name` and `findings` after the spread operator will only overwrite those specific properties.","mono","pr-reviewer-saas/src/tools/yamllint/command.ts","1722","","cr-ruhanmuzaffar","October 11th 2024, 8:03:09 am","October 11th 2024, 8:03:09 am" +"In this codebase, ESLint requires the use of the optional chaining operator `?.` when accessing properties like `errors`, even if they have been initialized.","mono","pr-reviewer-saas/src/tools/cppcheck/command.ts","1722","","cr-ruhanmuzaffar","October 11th 2024, 8:03:25 am","October 11th 2024, 8:03:25 am" +"In the `coderabbitHandler/src/utils/gitlab-utils.ts` file, the `generateWebhookSecret` function intentionally returns the hashed version of the generated key as the webhook secret, as per the project's requirements.","mono","coderabbitHandler/src/utils/gitlab-utils.ts","1721","","petrisorcoderabbit","October 14th 2024, 7:22:09 am","October 14th 2024, 7:22:09 am" +"In JavaScript, using the spread operator on `fileHunk.toolOutputs[toolName]` without initializing it is acceptable in this codebase, as it will not cause an error even if it's undefined.","mono","pr-reviewer-saas/src/tools/cppcheck/command.ts","1722","","cr-ruhanmuzaffar","October 11th 2024, 8:06:15 am","October 11th 2024, 8:06:15 am" +"In the `coderabbit-ui` codebase, when reviewing `App.tsx`, ensure that routes are formatted consistently and recommend fixes to team members if inconsistencies are found.","mono","coderabbit-ui/src/pages/Help/Help.tsx","1646","","alexcoderabbitai","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The PR Reviewer SaaS clones repositories locally using `git` and `gh` commands in `pr-reviewer-saas/src/event-client/github-client.ts`, running tools from `pr-reviewer-saas/src/tools` for code analysis.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","October 15th 2024, 1:54:19 pm","October 15th 2024, 1:54:19 pm" +"When handling tool errors, catch the error, generate an error string using `getToolErrorMessage` with the appropriate `ToolNames` and the error, add the error string to the warnings array (e.g., `allWarnings`), and log the error.","mono","pr-reviewer-saas/src/tools/pmd/command.ts","1578","","cr-ruhanmuzaffar","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"When validating event keys, remember that the keys could be human-friendly names, so checks should be performed against the values, not the keys.","bitbucket","src/server/webhooks/events/repo/event.ts","5","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"In the `chatMetricsRouter`, the combination of `issue_url`, `thread_id`, and `repo_url` is unique for search purposes but not individually unique across the table, which is why `upsert` is not used.","mono","apps/db-api-server/src/routers/chat-metrics.ts","1371","","GurinderRawala","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The user has clarified that `db.repositorySettingsOrg` is the correct usage of the new DB client introduced in the PR and that `db.orgSettings` was part of the previous version.","coderabbit-functions","coderabbitHandler/src/functions.ts","464","","karan925","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"When exporting modules in TypeScript, ensure that the export paths reference the correct file extensions or omit the extension when appropriate to avoid missing file errors.","bitbucket","src/server/webhooks/events/index.ts","11","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The `#client` property in the `LinearClient` class is optional and requires asynchronous authorization before use. Initialization in the constructor is not possible due to the async nature of the authorization process, and the current implementation includes error handling to ensure the client is not used before being authorized.","pr-reviewer-saas","src/issue_client/linear_client.ts","440","","bemijonathan","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"When requesting the user to ensure something specific, end the review message with `[verify]` for clarity.","mono","coderabbitHandler/src/routes/webhook_handler/handle_webhook.ts","1279","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"New lines in the `renderEndHunk` function are managed during the final rendering process, not within the function itself.","pr-reviewer-saas","src/prompts.ts","513","","harjotgill","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"When the user asks for assistance, ensure to execute scripts and examine the files in question before responding.","mono","coderabbit-ui/src/components/ui/support-widget.tsx","1637","","alexcoderabbitai","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"We aim to avoid using `any` in TypeScript code unless absolutely necessary.","mono","pr-reviewer-saas/src/api/license-check.ts","1620","","karan925","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The `getIssuesByRepo` method in the `RepoClient` interface is currently optional and properly handled, with plans to make it non-optional in the future when it is expanded to all clients.","pr-reviewer-saas","src/repo_client/repo_client.ts","488","","coderabbit-amank","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"NatoBoram has requested that comments about version ranges should not be made in future reviews.","mono","packages/functions-client/package.json","1053","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"Do not leave code review comments about ensuring code handles optional properties when ESLint is used by the project to handle such issues.","bitbucket","src/server/webhooks/events/pr/comment_edited.ts","7","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"`CODERABBIT_API_KEY` and `SELF_HOSTED` are optional and can be `undefined`; ensure that their existence is validated before use.","mono","pr-reviewer-saas/src/api-client/dbApiClient.ts","1552","","karan925","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"In the `coderabbit-ui` frontend project, it's acceptable to include Firebase public configuration keys (e.g., `VITE_FIREBASE_CONFIG`) in version-controlled files like `.env.dev`, as they are intended for use in the frontend SDK and safe to expose.","mono","coderabbit-ui/.env.dev","1665","","GurinderRawala","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The user has requested to make the test case more deterministic by checking for specific issue IDs rather than just the count of issues detected.","pr-reviewer-saas","src/issue_client/issue_client.test.ts","440","","NatoBoram","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The match score in the context of the Pinecone index queries is based on euclidean distance, and the logic for filtering matches uses a threshold where matches with a score greater than the `matchThreshold` are excluded.","pr-reviewer-saas","src/issues-index.ts","484","","harjotgill","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"Error handling for the `compareDiffSummaries` function is managed in the parent function.","pr-reviewer-saas","src/prompts.ts","508","","harjotgill","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"The logic for filtering learning records based on the match score in `src/review.ts` is such that only records with a score greater than 0.6 are considered good matches and should be added to the `learnings` array. The user clarified that the original implementation was correct, and the bot's suggestion was based on a misunderstanding of the intended logic.","pr-reviewer-saas","src/review.ts","477","","harjotgill","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"Currently, there's no existing user context in `coderabbit-ui/src` that provides `email` and `orgName`. To access these values, we may need to create a `UserContext` or fetch the data from an API.","mono","coderabbit-ui/src/components/ui/zendesk-widget.tsx","1661","","alexcoderabbitai","October 8th 2024, 11:37:11 am","October 8th 2024, 11:37:11 am" +"In `pr-reviewer-saas/src/tools`, various static analysis tools are defined and used to scan the code. These tools include linters, security scanners, and formatters for multiple programming languages.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","October 15th 2024, 1:54:19 pm","October 15th 2024, 1:54:19 pm" +"`shell-script-instructions.ts` in `pr-reviewer-saas/src/prompts/templates/` contains templates that instruct the AI assistant on generating shell scripts to perform deeper codebase analysis during reviews.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","October 15th 2024, 1:54:19 pm","October 15th 2024, 1:54:19 pm" +"The `crypto` module exports a `UUID` type in TypeScript, so importing `UUID` from `crypto` is valid.","mono","pr-reviewer-saas/src/platform-client/platform-client.ts","1632","","NatoBoram","October 15th 2024, 4:13:40 pm","October 15th 2024, 4:13:40 pm" +"In `pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts`, when mapping over `pr.reviewers` and using `.filter(truthy)`, any `undefined` values resulting from `r.user?.name` are effectively filtered out, so additional checks for `undefined` in the mapping are unnecessary.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1632","","NatoBoram","October 15th 2024, 4:24:57 pm","October 15th 2024, 4:24:57 pm" +"In the `pr-reviewer-saas` project, the target environment is ESNext, so ES2022 features like the `cause` property in the `Error` constructor are acceptable.","mono","pr-reviewer-saas/src/platform-client/bitbucket-server-client.ts","1632","","NatoBoram","October 15th 2024, 4:23:36 pm","October 15th 2024, 4:23:36 pm" +"In Bitbucket Server integrations in `pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts`, date fields like `pr.closedDate` and `pr.createdDate` are in units of 1/10 milliseconds (centiseconds), and should be multiplied by 100 when converting to JavaScript `Date` objects.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1632","","NatoBoram","October 15th 2024, 4:24:30 pm","October 15th 2024, 4:24:30 pm" +"In `src/javascript/for_pagination.ts`, the unconventional `for` loop in the `allPages()` function is intentionally written that way as part of the exercise.","rabbits-lab","src/javascript/for_pagination.ts","18","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"Errors should be processed within each tool module to provide specific error messages.","mono","pr-reviewer-saas/src/utils/utils.ts","1578","","petrisorcoderabbit","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `systemMessagePrefix` contains a fixed knowledge cutoff date and is not dynamic. Error handling for `classifyCommand` is managed by the calling function, not within `classifyCommand` itself. The list of commands is part of the business logic and is not dynamic.","pr-reviewer-saas","src/prompts.ts","578","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In the Bitbucket Server webhook events, the `createdDate` and `updatedDate` properties are numbers without clear documentation, so they should be kept as `number` types.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","4","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"When using a `break` statement in a loop to exit upon a condition, appending to variables like `toolName` within the loop is acceptable since it will only occur once.","mono","pr-reviewer-saas/src/tools/golangci-lint/command.ts","1626","","cr-ruhanmuzaffar","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `maybeStrings` function in `src/env.ts` was refactored to improve clarity and modularity by separating string manipulation into a separate utility function `parseStringToList`.","pr-reviewer-saas","src/env.ts","879","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In DTOs where the property names are defined externally, avoid suggesting renaming properties even if they conflict with reserved words.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","4","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `/pinecone/issues/cron` endpoint in `src/index.ts` is designed to trigger the issue indexing scheduler and responds with a success message. The response should correctly use the property `success` instead of `sucess`.","pr-reviewer-saas","src/index.ts","488","","harjotgill","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"If a middleware may send a response body in case of an error, it's appropriate to keep the Response body type as 'unknown' rather than 'void'.","mono","pr-reviewer-saas/src/api/license-check.ts","1620","","karan925","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"`ORGANIZATION` and `USER` are enums in the codebase.","mono","coderabbitHandler/src/utils/repositories.ts","1372","","karan925","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"A caret (`^`) in the version specifier (e.g., `^3.23.8`) allows for updates within the same major version but not including the next major version.","mono","packages/schemas/package.json","1053","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In our codebase, logging sensitive information like API keys in debug logs is acceptable because debug logs are only accessible in development mode and not in production.","mono","pr-reviewer-saas/src/api/license-check.ts","1552","","karan925","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The project uses Tailwind CSS and shadcn/ui components for styling and UI elements. Prefer using `shadcn/ui` components like `Dialog` or `Popover` for modals and popups.","mono","coderabbit-ui/src/components/ui/support-widget.tsx","1637","","GurinderRawala","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"Within the codebase, it's acceptable to use the old import path (`../../src/index.js`) internally; the new path (`../../src/server/index.js`) is only mandatory for external packages.","bitbucket","tests/server/client.ts","10","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The filtering logic for bot comments is implemented in `./pr-reviewer-saas/src/schedulers/standup-utils.ts`, which connects to `prompts.ts`. Previously, it was filtering out bot comments, but the new version only filters out references to direct bot commands like `@coderabbitai pause`.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","1571","","alexcoderabbitai","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `getRecordCount` method in `src/pinecone.ts` should return 0 in case of an error, as per user preference.","pr-reviewer-saas","src/pinecone.ts","477","","harjotgill","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The match score in `src/review.ts` is based on euclidean distance, and the logic is such that matches with a score greater than the `matchThreshold` are filtered out, not less than.","pr-reviewer-saas","src/learnings-index.ts","484","","harjotgill","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The team prefers to keep the `SupportWidget` component in the codebase as a fallback in case ad blockers interfere with third-party plugins like Zendesk.","mono","coderabbit-ui/src/App.tsx","1656","","alexcoderabbitai","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"When working with environment variables in `coderabbit-ui/`, always start the env var name with the `VITE_` prefix.","mono","coderabbit-ui/src/components/ui/zendesk-widget.tsx","1652","","alexcoderabbitai","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `PullRequest` interface definitions come from Atlassian, and any inconsistencies should be preserved to reflect the original source.","bitbucket","src/server/webhooks/events/pr/deleted.ts","8","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"Always flag inconsistencies in the use of ""sub-rule"" or ""subrule"" for clarity and consistency in documentation related to ""AST-Grep"" integration.","coderabbit-docs","docs/integrations/ast-grep.md","21","","guritfaq","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In the `getConfig` function in `pr-reviewer-saas/src/tools/pmd/command.ts`, the redundant variable assignment of `configFilePath` and `settingsConfigFile` is intentional and used for logging purposes.","mono","pr-reviewer-saas/src/tools/pmd/command.ts","1578","","cr-ruhanmuzaffar","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"Firebase tenant IDs are auto-generated and cannot be manually set. In the `organizations` model in `apps/db-api-server/schema.zmodel`, the `tenant_id` field is used to store the Firebase tenant ID to map the relationship between an organization/self-hosted instance and the Firebase tenant. Therefore, it is acceptable for the `tenant_id` field to be nullable and have a unique constraint.","mono","apps/db-api-server/schema.zmodel","1665","","GurinderRawala","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In the `license.ts` file, using `repository.html` as a fallback for `pr_url` when creating a review event is acceptable to provide at least some information.","mono","pr-reviewer-saas/src/api/routes/public/license.ts","1620","","karan925","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In `src/server/webhooks/events/pr`, interfaces like `PullRequest` are auto-generated from Quicktype and Atlassian's docs and should be kept minimally changed to avoid maintenance burden.","bitbucket","src/server/webhooks/events/pr/reviewer_updated.ts","8","","NatoBoram","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `indexIssuesInPineCone` function intentionally logs errors and continues processing subsequent batches to ensure maximum throughput and resilience in batch operations. This is part of a strategy where error handling will be enhanced in a future iteration.","pr-reviewer-saas","src/issues-index.ts","505","","coderabbit-amank","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The support widget should have an opaque background to prevent it from being transparent.","mono","coderabbit-ui/src/components/ui/support-widget.css","1637","","alexcoderabbitai","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"When detecting mentions of `@coderabbit` or `@coderabbitai`, ensure the matching logic only identifies exact usernames and does not match substrings within other usernames to avoid false positives.","mono","pr-reviewer-saas/src/review/review.ts","1551","","cr-ruhanmuzaffar","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The `getIssuesByRepo` method in the `RepoClient` class is designed to always return an object, ensuring that the calling function `processIssuesInRepo` can rely on this behavior without additional null or undefined checks.","pr-reviewer-saas","src/issues-index.ts","488","","coderabbit-amank","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"The user has clarified that the commented-out code related to the event listener in `Header.jsx` is intentionally retained for potential future use.","code-rabbit-ui","src/components/Header/Header.jsx","400","","coderabbit-amank","October 8th 2024, 11:37:07 am","October 8th 2024, 11:37:07 am" +"In TypeScript projects, dependencies that are only imported using `import type` and are not used at runtime can remain in `devDependencies` instead of `dependencies` in `package.json`.","rabbits-lab","package.json","17","","NatoBoram","October 8th 2024, 11:37:14 am","October 8th 2024, 11:37:14 am" +"In the 'PR State' determination for standup reports, the 'Merged: true' condition should always be checked first because a PR cannot be both merged and open.","mono","packages/db-client/src/enums/schedule_prompt.ts","1594","","alexcoderabbitai","October 8th 2024, 11:37:14 am","October 8th 2024, 11:37:14 am" +"For future reviews, thoroughly check and recommend any improvements for grammatical or syntactical errors.","coderabbit-docs","docs/integrations/self-hosted-gitlab.md","26","","karan925","October 8th 2024, 11:37:14 am","October 8th 2024, 11:37:14 am" +"In the `coderabbit-ui` codebase, routing is configured within `App.tsx`, and new pages are added by updating the routes in `App.tsx` instead of a separate `routes.tsx` file.","mono","coderabbit-ui/src/pages/Help/Help.tsx","1646","","alexcoderabbitai","October 8th 2024, 11:37:14 am","October 8th 2024, 11:37:14 am" +"When `effectiveDate` is sourced directly from GitHub events, it can be assumed to be a valid date string, and explicit validation may not be required.","mono","coderabbitHandler/src/services/subscriptions.service.ts","1985","","karan925","November 12th 2024, 9:47:45 pm","November 12th 2024, 9:47:45 pm" +"Shorthand method syntax in interfaces (like `method(): void` instead of `method: () => void`) is forbidden by the project's linter rules.","mono","pr-reviewer-saas/src/code-graph/build-graphs.ts","4823","","helizaga","May 23rd 2025, 3:51:19 am","May 23rd 2025, 3:51:19 am" +"In `pr-reviewer-saas/src/docstring/generate_docstrings.ts`, the check for empty applied docstrings is already done before calling `postDocstringsPr`, so it's unnecessary to add additional checks within `postDocstringsPr`.","mono","pr-reviewer-saas/src/docstring/generate_docstrings.ts","2182","","NatoBoram","December 4th 2024, 4:01:25 pm","December 4th 2024, 4:01:25 pm" +"In the `openPr` method of `pr-reviewer-saas/src/event-client/github-client.ts`, when creating a new pull request, it's intentional to set `base` to `pr.head.ref` because the new PR is meant to be merged into the original PR's head branch.","mono","pr-reviewer-saas/src/event-client/github-client.ts","2182","","NatoBoram","December 4th 2024, 4:06:41 pm","December 4th 2024, 4:06:41 pm" +"In `docs/early-access.md`, references to 'experimental' are intentional because the page discusses both experimental and beta features.","coderabbit-docs","docs/finishing-touches/docstrings.md","168","","NatoBoram","December 10th 2024, 3:50:23 pm","December 10th 2024, 3:50:23 pm" +"The phrasing ""CodeRabbit currently processes over X pull requests across multiple languages including..."" is acceptable.","coderabbit-docs","docs/overview/why-coderabbit.md","155","","NatoBoram","December 3rd 2024, 11:46:32 am","December 3rd 2024, 11:46:32 am" +"The `dbAPI` used in TypeScript files such as `pr-reviewer-saas/src/main.ts` does not support transactions, so wrapping update operations in transactions is not possible.","mono","pr-reviewer-saas/src/main.ts","2186","","GurinderRawala","December 9th 2024, 5:45:30 pm","December 9th 2024, 5:45:30 pm" +"In the TypeScript file `pr-reviewer-saas/src/schedulers/standup-utils.ts`, whenever there's an annoying title we want to remove from the scheduled reports or standup report features, we should add the title to the `annoyingHeaders` variable.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","1712","","alexcoderabbitai","October 9th 2024, 9:37:09 am","October 9th 2024, 9:37:09 am" +"Workflow runs can be accessed from `pull_request` and `commit` events when a workflow is triggered by a PR, allowing us to attach the workflow run to the PR using the run ID.","mono","","","https://github.com/coderabbitai/mono/issues/1689","alexcoderabbitai","October 9th 2024, 11:56:35 am","October 9th 2024, 11:56:35 am" +"In TypeScript code, avoid using `return await` in `async` functions when returning Promises, as it is redundant and may violate ESLint rule `@typescript-eslint/return-await`.","mono","apps/db-api-server/src/routers/subscriptions.ts","1713","","karan925","October 9th 2024, 3:16:00 pm","October 9th 2024, 3:16:00 pm" +"In TypeScript, when wrapping asynchronous operations like `ctx.prisma.subscriptions.findMany` in a `try/catch` block, use `await` to ensure exceptions are properly caught.","mono","apps/db-api-server/src/routers/subscriptions.ts","1713","","karan925","October 9th 2024, 3:18:46 pm","October 9th 2024, 3:18:46 pm" +"In this project, avoid suggesting `try-catch` blocks for error handling when reading files in TypeScript code.","rabbits-lab","src/ast-grep/generate_docstrings.ts","25","","NatoBoram","November 15th 2024, 1:43:01 pm","November 15th 2024, 1:43:01 pm" +"The `rabbits-lab` project is a test project.","rabbits-lab","src/ast-grep/generate_docstrings.ts","25","","NatoBoram","November 15th 2024, 1:42:11 pm","November 15th 2024, 1:42:11 pm" +"Avoid suggesting try/catch blocks in code reviews unless specifically requested.","rabbits-lab","src/ast-grep/generate_docstrings.ts","25","","NatoBoram","November 15th 2024, 1:43:16 pm","November 15th 2024, 1:43:16 pm" +"In the 'rabbits-lab' project, logging sensitive information like the `completion` object is acceptable in code that runs in the sandbox environment, since it's not production.","rabbits-lab","src/ast-grep/generate_docstrings.ts","25","","NatoBoram","November 15th 2024, 1:43:35 pm","November 15th 2024, 1:43:35 pm" +"In the 'rabbits-lab' project, particularly in 'src/ast-grep/main.ts', crashing is intentional and expected behavior.","rabbits-lab","src/ast-grep/main.ts","25","","NatoBoram","November 15th 2024, 1:42:35 pm","November 15th 2024, 1:42:35 pm" +"The file `pr-reviewer-saas/src/platform-client/event_client_type.ts` exists and should be correctly referenced in import statements.","mono","pr-reviewer-saas/src/event-client/parse-issues.ts","1632","","NatoBoram","October 16th 2024, 12:52:30 pm","October 16th 2024, 12:52:30 pm" +"In PRs focused on Bitbucket integration, suggestions for general codebase improvements may be considered out of scope.","mono","pr-reviewer-saas/src/platform-client/platform-client.ts","1632","","NatoBoram","October 16th 2024, 12:55:49 pm","October 16th 2024, 12:55:49 pm" +"The file `src/server/openapi/openapi-typescript.ts` is an auto-generated file.","bitbucket","src/server/openapi/openapi-typescript.ts","15","","NatoBoram","October 17th 2024, 4:43:42 pm","October 17th 2024, 4:43:42 pm" +"The model name `gpt-4o-2024-08-06` is valid and should not be flagged as invalid in future code reviews.","rabbits-lab","src/ast-grep/generate_docstrings.ts","25","","NatoBoram","November 15th 2024, 1:57:00 pm","November 15th 2024, 1:57:00 pm" +"For scheduled GitHub Actions workflows that run at specific times without additional triggers, adding concurrency control may not be necessary, as parallel runs are unlikely.","mono",".github/workflows/update-type-aware-rules.yml","1988","","cr-ruhanmuzaffar","November 13th 2024, 4:10:36 am","November 13th 2024, 4:10:36 am" +"In `coderabbitHandler/src/services/repositories.service.ts`, the function `getOrgSubscriptionDetails` handles the ""deleted"" action by utilizing the first condition, which covers cases where the organization has an existing subscription.","mono","coderabbitHandler/src/services/repositories.service.ts","1985","","karan925","November 18th 2024, 8:57:44 pm","November 18th 2024, 8:57:44 pm" +"The file `src/server/openapi/openapi-typescript.ts` is an auto-generated file and should be excluded from code reviews.","bitbucket","src/server/openapi/openapi-typescript.ts","15","","NatoBoram","October 17th 2024, 4:43:57 pm","October 17th 2024, 4:43:57 pm" +"In the `pr-reviewer-saas` project, methods marked as `async` must include at least one `await` expression to satisfy the ESLint `@typescript-eslint/require-await` rule. Using `await Promise.resolve()` is acceptable in such cases.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 17th 2024, 4:15:21 pm","October 17th 2024, 4:15:21 pm" +"The file `src/server/openapi/openapi-typescript.ts` is auto-generated and should not be manually reviewed or modified.","bitbucket","src/server/openapi/openapi-typescript.ts","15","","NatoBoram","October 17th 2024, 4:43:44 pm","October 17th 2024, 4:43:44 pm" +"In `pr-reviewer-saas`, attempting to create a check run via the GitHub API (e.g., using `this.client.rest.checks.create`) results in a 403 error due to insufficient permissions ('Resource not accessible by integration'). Therefore, we cannot create check runs on GitHub and must continue to use locally created check run annotations without sending them to GitHub.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 17th 2024, 4:13:04 pm","October 17th 2024, 4:13:04 pm" +"In the GitHub API, the `downloadWorkflowRunLogs` method returns a response where `data` is empty, and the logs URL is provided in the `url` field. The logs need to be downloaded from this URL.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 17th 2024, 4:06:14 pm","October 17th 2024, 4:06:14 pm" +"In `pr-reviewer-saas`, the `GitHubActionLogs` class creates fake check run annotations locally without sending them to GitHub. These annotations are used internally by the system, particularly in `pr-reviewer-saas/src/tools/check-run/check-run.ts`, to process log lines as if they were outputs of a tool.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 17th 2024, 4:11:24 pm","October 17th 2024, 4:11:24 pm" +"During heavy development of the Bitbucket Server integration in `pr-reviewer-saas/src/event-client/bitbucket-server-client.ts`, it's acceptable to log raw file contents in the `#calculateDiff` method for debugging purposes.","mono","pr-reviewer-saas/src/event-client/bitbucket-server-client.ts","1778","","petrisorcoderabbit","October 18th 2024, 6:01:07 am","October 18th 2024, 6:01:07 am" +"In the `BitbucketServerEventClient` class in `pr-reviewer-saas/src/event-client/bitbucket-server-client.ts`, when using the Bitbucket Server API to compare commits, the `from` parameter should be the head commit (`headSha`), and the `to` parameter should be the base commit (`baseSha`), which is the reverse of typical expectations.","mono","pr-reviewer-saas/src/event-client/bitbucket-server-client.ts","1778","","petrisorcoderabbit","October 18th 2024, 6:44:09 am","October 18th 2024, 6:44:09 am" +"In the `processCheckRunAnnotations` method, using `annotation.path.endsWith(fileHunk.repoFile.filename)` is acceptable as it matches the existing behavior and is intentional.","mono","pr-reviewer-saas/src/tools/check-run/check-run.ts","1774","","alexcoderabbitai","October 18th 2024, 11:23:23 am","October 18th 2024, 11:23:23 am" +"In `BitbucketServerEventClient.postReview`, since `lineType` is not tracked internally, it's acceptable for code reviews to stay on new lines.","mono","pr-reviewer-saas/src/event-client/bitbucket-server-client.ts","1777","","NatoBoram","October 18th 2024, 11:05:01 am","October 18th 2024, 11:05:01 am" +"In `pr-reviewer-saas/src/event-client/github-action-logs.ts`, within the `GitHubActionLogs` class, the character limit for log truncation is set to 100,000 characters. We may need to lower this limit in the future if necessary.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 18th 2024, 10:14:17 am","October 18th 2024, 10:14:17 am" +"In `pr-reviewer-saas/src/tools/check-run/check-run.ts`, the `processFailedActionLogs` function includes code necessary for maintaining the `async/await` syntax to ensure the function remains `async`. This is important because changing it to a synchronous function (`void` return type) is disallowed by ESLint rules. Do not suggest removing this code even if it appears unnecessary.","mono","pr-reviewer-saas/src/tools/check-run/check-run.ts","1774","","alexcoderabbitai","October 18th 2024, 10:06:40 am","October 18th 2024, 10:06:40 am" +"In the 'rabbits-lab' repository, test code in TypeScript files (e.g., `src/bitbucket-server/post_multiline_comment.ts`) may omit error handling such as try-catch blocks around asynchronous API calls.","rabbits-lab","src/bitbucket-server/post_multiline_comment.ts","19","","NatoBoram","October 18th 2024, 12:33:42 pm","October 18th 2024, 12:33:42 pm" +"The Bitbucket Server's schema is incorrect, leading to incorrect TypeScript definitions generated from it.","rabbits-lab","src/bitbucket-server/post_multiline_comment.ts","19","","NatoBoram","October 18th 2024, 12:33:15 pm","October 18th 2024, 12:33:15 pm" +"In the `src/winston` directory, the `logger.js` file does not exist; only `logger.ts` is present.","rabbits-lab","src/express/assign.ts","20","","NatoBoram","October 18th 2024, 12:55:15 pm","October 18th 2024, 12:55:15 pm" +"In `src/openai/function_calling.ts`, the import statement `import { ... } from ""openai/resources/index.js""` should remain unchanged since it references a third-party library, and modifying it may cause issues.","rabbits-lab","src/gitlab/reply_discussion_note.ts","20","","NatoBoram","October 18th 2024, 12:56:10 pm","October 18th 2024, 12:56:10 pm" +"In TypeScript projects, do not suggest creating `.d.ts` files for modules written in TypeScript (`.ts` files), as the `.ts` files already provide type information.","rabbits-lab","src/gitlab/show_mr_note.ts","20","","NatoBoram","October 18th 2024, 12:54:43 pm","October 18th 2024, 12:54:43 pm" +"In `pr-reviewer-saas`, ensure that the `MAX_LOG_LENGTH` in `GitHubActionLogs` is set appropriately so that the log content does not exceed the maximum token limits of the models consuming the annotations, to prevent issues during processing.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","1774","","alexcoderabbitai","October 19th 2024, 10:13:28 am","October 19th 2024, 10:13:28 am" +"The file `coderabbit-ui/src/pages/InviteSelfHostedAdmin/InviteSelfHostedAdmin.tsx` is for internal use only.","mono","coderabbit-ui/src/pages/InviteSelfHostedAdmin/InviteSelfHostedAdmin.tsx","1785","","GurinderRawala","October 21st 2024, 10:28:59 am","October 21st 2024, 10:28:59 am" +"The user prefers not to refactor type guard functions into a generic function if it results in more code.","bitbucket","src/server/interfaces/schema_rest_pull_request_activity.ts","17","","NatoBoram","October 21st 2024, 2:52:57 pm","October 21st 2024, 2:52:57 pm" +"In `src/handle_azure_devops.ts`, error handling for `commentOnPr` is managed in the parent function, so additional error handling within `commentOnPr` is unnecessary.","e2e-reviewer","src/handle_azure_devops.ts","34","","NatoBoram","November 19th 2024, 1:42:47 pm","November 19th 2024, 1:42:47 pm" +"When processing failed action logs in `check-run.ts`, use tool calling or structured output with Zod schema to extract an array of findings from logs, where each finding has the fields Filename, StartLine, EndLine, Severity, and Message.","mono","pr-reviewer-saas/src/tools/check-run/check-run.ts","2037","","alexcoderabbitai","November 19th 2024, 1:57:49 pm","November 19th 2024, 1:57:49 pm" +"In `src/handle_azure_devops.ts`, the `message` parameter in the `commentOnPr` function is trimmed upstream, so additional input validation in `commentOnPr` is not necessary.","e2e-reviewer","src/handle_azure_devops.ts","34","","NatoBoram","November 19th 2024, 1:42:02 pm","November 19th 2024, 1:42:02 pm" +"When handling sign-out failures in `intercept-request.ts`, use `logger.info` instead of `logger.error` to avoid showing error messages in production when the user might not be logged in using Firebase Auth.","mono","coderabbit-ui/src/grafana/intercept-request.ts","1816","","GurinderRawala","October 22nd 2024, 10:50:15 am","October 22nd 2024, 10:50:15 am" +"Authentication data is only stored in `sessionStorage`. There is no need to clear `localStorage` or cookies upon logout.","mono","coderabbit-ui/src/grafana/intercept-request.ts","1816","","GurinderRawala","October 22nd 2024, 10:52:37 am","October 22nd 2024, 10:52:37 am" +"In `src/markdown.ts`, when documenting functions in TypeScript code, avoid adding JSDoc comments that are redundant or simply restate what is already clear from the code. Comments should provide additional insights beyond what is expressed in the code.","e2e-reviewer","src/markdown.ts","34","","NatoBoram","November 19th 2024, 1:41:14 pm","November 19th 2024, 1:41:14 pm" +"In `src/handle_github.ts`, within the `handleGitHub` function, operations such as `commentOnPr` should be run synchronously rather than in parallel using `Promise.all`, as they are intended to execute in sequence.","e2e-reviewer","src/handle_github.ts","34","","NatoBoram","November 19th 2024, 1:41:47 pm","November 19th 2024, 1:41:47 pm" +"Avoid extracting message strings to constants in `src/handle_github.ts` if it adds unnecessary complexity to the string handling.","e2e-reviewer","src/handle_github.ts","34","","NatoBoram","November 19th 2024, 1:41:47 pm","November 19th 2024, 1:41:47 pm" +"In `pr-reviewer-saas/src/docstring/apply_docstrings.ts`, within the `createEdits` function, the code `if (docstringful.funcdocs.docstring)` checks whether `docstring` is defined before mapping over it, so additional null checks are unnecessary.","mono","pr-reviewer-saas/src/docstring/apply_docstrings.ts","2182","","NatoBoram","December 4th 2024, 3:49:24 pm","December 4th 2024, 3:49:24 pm" +"In documentation files, ensure all markdown image tags follow SEO guidelines and maintain consistency across Docs Pull Requests.","coderabbit-docs","docs/about/features.md","115","","aravindputrevu","October 24th 2024, 6:08:27 am","October 24th 2024, 6:08:27 am" +"In this codebase, it's acceptable for the `unprefixHtmlComments` function in `pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts` to assume that the prefix `[//]: ` only appears with HTML comments, without additional validation.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1839","","NatoBoram","October 24th 2024, 12:33:14 pm","October 24th 2024, 12:33:14 pm" +"In `src/ast-grep/has_comment.ts`, the functions `hasCommentJs` and `hasCommentTs` are intentionally kept separate, even if they are currently identical, because they are expected to diverge in functionality in the future.","rabbits-lab","src/ast-grep/has_comment.ts","26","","NatoBoram","November 19th 2024, 4:48:36 pm","November 19th 2024, 4:48:36 pm" +"In the `prefixHtmlComments` function in `bitbucket_server_event_client_utils.ts`, HTML comments at the start of strings are handled correctly, as confirmed by unit tests.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1839","","NatoBoram","October 24th 2024, 1:58:25 pm","October 24th 2024, 1:58:25 pm" +"The `prefixHtmlComments` function does not support nested HTML comments by design.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1839","","NatoBoram","October 24th 2024, 1:58:25 pm","October 24th 2024, 1:58:25 pm" +"The function `add_binary` in `src/ast-grep/examples/example.py` is not used in production code.","rabbits-lab","src/ast-grep/examples/example.py","26","","NatoBoram","November 19th 2024, 4:35:03 pm","November 19th 2024, 4:35:03 pm" +"When `rewriteRelativeImportExtensions` is enabled in the TypeScript configuration (e.g., in `tsconfig.json`), including explicit `.ts` extensions in import statements is acceptable.","pr-reviewer-client","src/client/client.ts","30","","NatoBoram","October 24th 2024, 6:18:22 pm","October 24th 2024, 6:18:22 pm" +"In this project, avoid adding new dependencies like `rimraf` for cross-platform compatibility in scripts; Windows users are expected to use Linux.","pr-reviewer-client","package.json","30","","NatoBoram","October 24th 2024, 6:19:49 pm","October 24th 2024, 6:19:49 pm" +"In `src/types/azure_events.ts`, the `AzureDevOpsEvent` type alias is reserved for future use.","pr-reviewer-client","src/types/azure_events.ts","30","","NatoBoram","October 24th 2024, 6:19:17 pm","October 24th 2024, 6:19:17 pm" +"In `src/ast-grep/examples/example.py`, functions are intentionally written with and without docstrings to test such scenarios.","rabbits-lab","src/ast-grep/examples/example.py","26","","NatoBoram","November 19th 2024, 4:43:26 pm","November 19th 2024, 4:43:26 pm" +"In `src/client/bitbucket_server_webhooks.ts`, prefer to keep the implementation simple without adding extra input validation and error handling.","pr-reviewer-client","src/client/bitbucket_server_webhooks.ts","28","","NatoBoram","October 24th 2024, 5:42:36 pm","October 24th 2024, 5:42:36 pm" +"In `src/api/settings.ts`, the duplication of `""tokens_exhausted""` in both `ProductReasonFree` and `ProductReasonPro` is intentional and should remain as is.","pr-reviewer-client","src/api/settings.ts","30","","NatoBoram","October 24th 2024, 6:18:05 pm","October 24th 2024, 6:18:05 pm" +"When the `rewriteRelativeImportExtensions` option is enabled in `tsconfig.json`, explicit file extensions (e.g., `.ts`) are required in import statements. Avoid suggesting their removal.","pr-reviewer-client","src/client/gitlab.ts","30","","NatoBoram","October 24th 2024, 6:17:10 pm","October 24th 2024, 6:17:10 pm" +"The `Reviewer` and `Identity` interfaces in `src/types/azure_events.ts` may be updated independently, and the code is probably auto-generated.","pr-reviewer-client","src/types/azure_events.ts","30","","NatoBoram","October 24th 2024, 6:18:59 pm","October 24th 2024, 6:18:59 pm" +"In `pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts`, when implementing the `unprefixHtmlComments` function, avoid using regex for simplicity, as it's not considered simpler.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1839","","NatoBoram","October 24th 2024, 6:48:02 pm","October 24th 2024, 6:48:02 pm" +"Avoid suggesting regex-based solutions, as the user finds regexes less maintainable.","mono","pr-reviewer-saas/src/event-client/bitbucket_server_event_client_utils.ts","1839","","NatoBoram","October 24th 2024, 6:48:20 pm","October 24th 2024, 6:48:20 pm" +"In JavaScript, arrow functions start with a `lexical_declaration` matching `const`, `var`, or `let`, which contains a `variable_declarator` with both an `identifier` (name) and an `arrow_function` (value).","rabbits-lab","src/ast-grep/find_functions.ts","26","","NatoBoram","November 19th 2024, 4:46:29 pm","November 19th 2024, 4:46:29 pm" +"Code files in `src/ast-grep/examples/` are examples not used in production, so input validation and robust error handling are not necessary.","rabbits-lab","src/ast-grep/examples/example.js","26","","NatoBoram","November 19th 2024, 4:48:12 pm","November 19th 2024, 4:48:12 pm" +"In `src/ast-grep/lang_guidelines.ts`, for the Python docstring examples, it's acceptable if the code is not fully Pythonic as long as the indentation is consistent.","rabbits-lab","src/ast-grep/lang_guidelines.ts","26","","NatoBoram","November 19th 2024, 4:50:15 pm","November 19th 2024, 4:50:15 pm" +"When refactoring tests in `find_functions.test.ts`, using `lang.toLowerCase()` to derive file extensions may not be accurate; instead, use an explicit mapping from `Lang` values to their corresponding file extensions.","rabbits-lab","src/ast-grep/find_functions.test.ts","26","","NatoBoram","November 19th 2024, 4:48:14 pm","November 19th 2024, 4:48:14 pm" +"Elixir files can have extensions `'.ex'` and `'.exs'`; tests and utilities should account for both when processing Elixir code.","rabbits-lab","src/ast-grep/find_functions.test.ts","26","","NatoBoram","November 19th 2024, 4:48:14 pm","November 19th 2024, 4:48:14 pm" +"In this project, `src/index.ts` should not import `main.ts` because `main.ts` contains runtime code and entry point logic.","e2e-reviewer","src/index.ts","32","","NatoBoram","October 25th 2024, 12:42:06 pm","October 25th 2024, 12:42:06 pm" +"In the `checkIfCustomerIdIsSelfHostedInstanceId` function, logging `data` with `id` and `host_url` at the info level is acceptable, as `host_url` is not considered sensitive information in this context.","mono","coderabbitHandler/src/utils/chargebee.ts","1851","","cr-ruhanmuzaffar","October 25th 2024, 9:26:54 am","October 25th 2024, 9:26:54 am" +"When handling errors in `pr-reviewer-saas/src/event-client/github-client.ts`, ensure that error messages do not expose internal details to customers. Errors should be logged appropriately without throwing exceptions that might be presented to end-users.","mono","pr-reviewer-saas/src/event-client/github-client.ts","2182","","NatoBoram","December 4th 2024, 4:08:09 pm","December 4th 2024, 4:08:09 pm" +"In the function `createBitbucketServerEvent` in `src/bitbucket_server_event.ts`, it's acceptable for the function to crash when `author.user.id` is `undefined` or invalid, so handling potential `NaN` results when converting IDs with `Number()` is not necessary.","e2e-reviewer","src/bitbucket_server_event.ts","33","","NatoBoram","October 28th 2024, 4:06:22 pm","October 28th 2024, 4:06:22 pm" +"Default values in `.env` can be customized or overridden in `.env.local`, so setting defaults in `.env` files does not reduce configurability.","e2e-reviewer",".env","33","","NatoBoram","October 28th 2024, 3:49:19 pm","October 28th 2024, 3:49:19 pm" +"For Teams integration, users provide their own webhook, which is saved in the `channel` column of the `schedule` table. The corresponding entry in the `integrations` table has `service` set to `TEAMS`, with no access tokens stored.","mono","","","https://github.com/coderabbitai/mono/pull/1864","alexcoderabbitai","October 28th 2024, 3:19:31 pm","October 28th 2024, 3:19:31 pm" +"For TEAMS integration, users provide their own webhook URL, which should be saved in the `channel` field of the `schedule` table. An entry must be created in the `integrations` table with `service` set to `TEAMS`, including `id` and `owner_id`. Access tokens are not stored for TEAMS.","mono","","","https://github.com/coderabbitai/mono/pull/1864","alexcoderabbitai","October 28th 2024, 3:20:09 pm","October 28th 2024, 3:20:09 pm" +"The `BITBUCKET_SERVER_BASE_URL` environment variable is private and should be loaded using `secretUrl` instead of `envUrl`.","e2e-reviewer","src/env.ts","33","","NatoBoram","October 28th 2024, 4:07:25 pm","October 28th 2024, 4:07:25 pm" +"Bitbucket's API returns timestamps that may require multiplication by 100 when converting to Date objects in JavaScript.","e2e-reviewer","src/bitbucket_server_event.ts","33","","NatoBoram","October 28th 2024, 4:35:47 pm","October 28th 2024, 4:35:47 pm" +"In this codebase, `BITBUCKET_SERVER_PROJECT_KEY` and `BITBUCKET_SERVER_REPOSITORY_SLUG` are considered sensitive information and should be retrieved using `secretString`.","e2e-reviewer","src/env.ts","33","","NatoBoram","October 28th 2024, 4:09:20 pm","October 28th 2024, 4:09:20 pm" +"Accessing properties like `env.BITBUCKET_SERVER_TO_REF` in `src/handle_bitbucket_server.ts` requires a check for `env.ENABLE_BITBUCKET_SERVER` due to conditional types in the `Env` type.","e2e-reviewer","src/handle_bitbucket_server.ts","33","","NatoBoram","October 28th 2024, 3:55:41 pm","October 28th 2024, 3:55:41 pm" +"This project uses Prettier for code formatting. Do not comment on indentation issues in future reviews.","mono","pr-reviewer-saas/src/comments/issue-comments.ts","1857","","NatoBoram","October 28th 2024, 5:17:55 pm","October 28th 2024, 5:17:55 pm" +"In Node.js, due to its single-threaded event loop, modifying shared data structures like arrays within asynchronous functions executed with `Promise.all` doesn't cause concurrent modification problems.","mono","pr-reviewer-saas/src/review/pro-review.ts","2018","","harjotgill","November 18th 2024, 2:27:09 am","November 18th 2024, 2:27:09 am" +"In Node.js, modifying shared state within asynchronous operations (like in `Promise.all`) does not lead to race conditions because of its single-threaded event loop model.","mono","pr-reviewer-saas/src/review/pro-review.ts","2018","","harjotgill","November 18th 2024, 2:14:14 am","November 18th 2024, 2:14:14 am" +"In the `getLastReportDate` function, use `isNaN()` to validate `daysAgo` instead of checking for 'NaNhrs' in strings.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","1841","","cr-ruhanmuzaffar","October 29th 2024, 10:50:30 am","October 29th 2024, 10:50:30 am" +"In the `checkEligibilityForPro` procedure in `coderabbitHandler/src/routers/subscriptions.ts`, we cannot execute `getChargebeeCardDetails` and `getSubscriptionDetails` in parallel because if there are no card details, we don't need to proceed to get the subscription details.","mono","coderabbitHandler/src/routers/subscriptions.ts","1871","","cr-ruhanmuzaffar","October 29th 2024, 12:39:53 pm","October 29th 2024, 12:39:53 pm" +"Whenever adding new platforms, remember to update the TypeScript schemas in `coderabbitHandler/src/utils/zod_schemas/reporting.ts` for the database and handler.","mono","coderabbitHandler/src/utils/zod_schemas/reporting.ts","1864","","alexcoderabbitai","October 29th 2024, 1:37:38 pm","October 29th 2024, 1:37:38 pm" +"In TypeScript and JavaScript codebases, use named exports instead of default exports to improve code consistency and simplify imports.","mono","coderabbit-ui/src/pages/Settings/CustomReporting/Teams/TeamsIntegrationCard.tsx","1864","","GurinderRawala","October 29th 2024, 3:49:15 pm","October 29th 2024, 3:49:15 pm" +"In `SeatManagement.tsx`, the team does not use the reducer pattern yet; they plan to implement it when Redux is introduced.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/SeatManagement.tsx","1871","","cr-ruhanmuzaffar","October 30th 2024, 1:36:13 am","October 30th 2024, 1:36:13 am" +"In the `saveReportingSettings` function in `coderabbitHandler/src/routers/reporting.ts`, for TEAMS integrations, fields like `access_token_encrypted`, `access_token_tag`, and `access_token_iv` should not be set to `null` because other functions automatically reject integrations with these fields set to `null`. Placeholder strings are used instead to prevent issues.","mono","coderabbitHandler/src/routers/reporting.ts","1881","","alexcoderabbitai","October 30th 2024, 10:34:37 am","October 30th 2024, 10:34:37 am" +"In the TEAMS integration, hardcoding placeholder values for token fields like `access_token_encrypted`, `access_token_tag`, and `access_token_iv` is acceptable since these fields will not contain sensitive details.","mono","coderabbitHandler/src/routers/reporting.ts","1881","","alexcoderabbitai","October 30th 2024, 10:34:43 am","October 30th 2024, 10:34:43 am" +"In the `coderabbitHandler/src/routers/reporting.ts` file and elsewhere, we should let the database handle the `created_at` and `updated_at` timestamps instead of setting them manually. Additionally, we need to investigate and fix any occurrences of `NaN` values resulting from null timestamps.","mono","coderabbitHandler/src/routers/reporting.ts","1881","","cr-ruhanmuzaffar","October 30th 2024, 10:28:59 am","October 30th 2024, 10:28:59 am" +"In `coderabbitHandler/src/routers/reporting.ts`, when creating a TEAMS integration, logging the `integration` object using `logger.info(""Created TEAMS integration"", { integration })` is acceptable as it contains no sensitive information.","mono","coderabbitHandler/src/routers/reporting.ts","1881","","alexcoderabbitai","October 30th 2024, 2:29:57 pm","October 30th 2024, 2:29:57 pm" +"In the CodeRabbit documentation, image paths in markdown files should reference the `/img/` directory, not `/static/img/`.","coderabbit-docs","docs/guides/delete-account.md","121","","aravindputrevu","October 31st 2024, 12:33:25 pm","October 31st 2024, 12:33:25 pm" +"In the `CONTRIBUTING.md` file, the user prefers to keep the ""Keeping your Fork Up-to-Date"" section concise without additional comments on Git commands.","coderabbit-docs","CONTRIBUTING.md","125","","NatoBoram","October 31st 2024, 1:01:26 pm","October 31st 2024, 1:01:26 pm" +"In documentation reviews, avoid adding a comma before 'as' to merge sentences when the preference is to keep them separate, as per NatoBoram's guidance.","coderabbit-docs","CONTRIBUTING.md","125","","NatoBoram","October 31st 2024, 1:03:51 pm","October 31st 2024, 1:03:51 pm" +"When suggesting modifications to the CODEOWNERS file, ensure that only existing teams or users are included, and avoid inventing teams that don't exist in the repository.","coderabbit-docs",".github/CODEOWNERS","125","","NatoBoram","October 31st 2024, 3:55:28 pm","October 31st 2024, 3:55:28 pm" +"In the function `getProviderName` in `utils.ts`, only GitHub and GitLab providers need to be handled, as other providers don't have a way to track issues.","mono","pr-reviewer-saas/src/prompts/templates/utils.ts","2010","","petrisorcoderabbit","November 15th 2024, 2:04:15 am","November 15th 2024, 2:04:15 am" +"In `pr-reviewer-saas/src/docstring/apply_docstrings.ts`, the `applyEdits` function already handles the case when `docstringfuls` is empty by using null checks and falling back to an empty string `""""`.","mono","pr-reviewer-saas/src/docstring/apply_docstrings.ts","2182","","NatoBoram","December 4th 2024, 3:57:41 pm","December 4th 2024, 3:57:41 pm" +"When generating docstrings upon the user's request, use the following flow: +- Entry point is the user comment `@coderabbitai generate docstring`. +- Use Tree-sitter to: + - Identify the programming language. + - Create a parser. + - Parse files in the diff. + - Filter for functions in the diff without docstrings. +- Use the LLM to: + - Provide the entire function as context, including any relevant learnings. + - Generate the docstring in the correct language. + - Output the entire function with the docstring included. +- Replace the original function with the documented one. +- Run a formatter to maintain code style. +- Commit the changes with a signature. +- Push to a new branch and open a PR.","mono","","","https://github.com/coderabbitai/mono/issues/1751","NatoBoram","November 4th 2024, 3:14:12 pm","November 4th 2024, 3:14:12 pm" +"When generating docstrings upon the user's request, use the following flow: + +**Entrypoint**: + +- User comment `@coderabbitai generate docstring` (PR comment event). + +**Tree-sitter usage**: + +- Identify the programming language. +- Create a parser. +- Parse files that are in the diff. +- Filter for functions in the diff. +- Filter for functions without docstrings. + +**LLM usage**: + +- Create context with: + - Tone instructions. + - Learnings. + - Entire function. +- Obtain the docstring in the correct language. +- Output the whole function with the docstring included (accounting for language-specific placement of docstrings). +- Replace the whole function with the documented one. +- Run a formatter to maintain code style. + +**CodeRabbit configurations**: + +- Provide explicit tool support for formatters. + +**PR steps**: + +- Commit the changes with a signature. +- Push to a new branch and open a PR.","mono","","","https://github.com/coderabbitai/mono/issues/1751","NatoBoram","November 4th 2024, 3:33:56 pm","November 4th 2024, 3:33:56 pm" +"In `pr-reviewer-saas/src/docstring/generate_docstrings.ts`, the `postDocstringsComment` function is kept because the future functionality isn't implemented yet.","mono","pr-reviewer-saas/src/docstring/generate_docstrings.ts","2182","","NatoBoram","December 4th 2024, 4:00:11 pm","December 4th 2024, 4:00:11 pm" +"In markdown files, when images or other content are placed between list items, the ordered list numbering may not appear sequential, and this is acceptable. Avoid flagging non-sequential list numbering in such cases.","coderabbit-docs","docs/platforms/azure-devops.md","129","","tyaga001","November 5th 2024, 6:02:34 am","November 5th 2024, 6:02:34 am" +"In `coderabbitHandler/src/routers/subscriptions.ts`, when handling errors in the `upgradePlan` mutation, separate loggers before throwing errors are used to capture exceptions both within the `if` condition and outside it to ensure all error paths are logged.","mono","coderabbitHandler/src/routers/subscriptions.ts","1867","","karan925","November 5th 2024, 6:39:47 pm","November 5th 2024, 6:39:47 pm" +"When recommending the use of prompts in the codebase, suggest using `import { construct } from ""../utils/construct.js""` as implemented in `pr-reviewer-saas/src/utils/construct.ts`. This approach is illustrated in `pr-reviewer-saas/src/schedulers/standup-summary-scheduler.ts` and `pr-reviewer-saas/src/schedulers/standup-utils.ts`.","mono","pr-reviewer-saas/src/prompts/prompts.ts","2037","","alexcoderabbitai","November 20th 2024, 8:24:31 am","November 20th 2024, 8:24:31 am" +"In `src/ast-grep/generate_docstrings.ts`, do not suggest adding try/catch blocks around `readFile` and `parse` functions in the `readFunctions` function.","rabbits-lab","src/ast-grep/generate_docstrings.ts","28","","NatoBoram","November 21st 2024, 2:30:37 pm","November 21st 2024, 2:30:37 pm" +"Node.js 23 has been released and is acceptable to use in CI/CD workflows as the current version from November 2024 onward.","rabbits-lab",".github/workflows/node.js.yaml","22","","NatoBoram","November 6th 2024, 12:25:57 pm","November 6th 2024, 12:25:57 pm" +"Avoid using `as` type assertions in TypeScript code to maintain type safety.","rabbits-lab","src/ast-grep/has_comment.ts","22","","NatoBoram","November 6th 2024, 12:34:24 pm","November 6th 2024, 12:34:24 pm" +"Avoid introducing unnecessary intermediary variables when they are not needed.","rabbits-lab","src/ast-grep/has_comment.ts","22","","NatoBoram","November 6th 2024, 12:34:24 pm","November 6th 2024, 12:34:24 pm" +"In TypeScript code, avoid using type assertions as they weaken type safety; prefer using explicit null checks and proper type annotations instead.","rabbits-lab","src/ast-grep/has_comment.ts","22","","NatoBoram","November 6th 2024, 12:46:49 pm","November 6th 2024, 12:46:49 pm" +"In `src/env.ts`, the `envBool` function's switch statement must include the `case undefined:` clause to comply with ESLint rules.","rabbits-lab","src/env.ts","22","","NatoBoram","November 6th 2024, 12:50:07 pm","November 6th 2024, 12:50:07 pm" +"When `undefined` is desired, do not map values using `?? """"`.","rabbits-lab","src/ast-grep/has_comment.ts","22","","NatoBoram","November 6th 2024, 12:34:24 pm","November 6th 2024, 12:34:24 pm" +"In `main.ts`, avoid using scope-wide try/catch blocks; prefer encapsulating logic within functions for error handling.","rabbits-lab","src/ast-grep/main.ts","22","","NatoBoram","November 6th 2024, 12:30:16 pm","November 6th 2024, 12:30:16 pm" +"In the rabbits-lab project, when reviewing GitHub Actions workflows, avoid suggesting changes to the Node.js version if the project prefers using the latest stable version over LTS versions.","rabbits-lab",".github/workflows/github-pages.yaml","22","","NatoBoram","November 6th 2024, 12:28:14 pm","November 6th 2024, 12:28:14 pm" +"In `src/ast-grep/has_comment.test.ts`, prefer encapsulating error handling in separate functions rather than using scope-wide try/catch blocks.","rabbits-lab","src/ast-grep/has_comment.test.ts","22","","NatoBoram","November 6th 2024, 12:30:53 pm","November 6th 2024, 12:30:53 pm" +"The file `src/ast-grep/examples/example.ts` is specifically designed to contain functions with and without JSDoc comments to test ast-grep's patterns.","rabbits-lab","src/ast-grep/examples/example.ts","22","","NatoBoram","November 6th 2024, 12:48:04 pm","November 6th 2024, 12:48:04 pm" +"In Elixir, it's conventional to handle errors that are part of normal operation by returning `{:ok, result}` or `{:error, reason}` tuples and to provide a separate function with a bang (e.g., `function!/1`) that raises an exception.","rabbits-lab","src/ast-grep/examples/example.exs","22","","NatoBoram","November 6th 2024, 1:21:02 pm","November 6th 2024, 1:21:02 pm" +"In TypeScript code, avoid using `as` type assertions, as per the user's preference.","rabbits-lab","src/ast-grep/find_functions.ts","22","","NatoBoram","November 6th 2024, 12:36:05 pm","November 6th 2024, 12:36:05 pm" +"Both entry points `@coderabbitai/bitbucket/server` and `@coderabbitai/bitbucket/server/openapi` exist and can be used interchangeably in the codebase.","rabbits-lab","src/bitbucket-server/post_multiline_comment.ts","22","","NatoBoram","November 6th 2024, 12:52:13 pm","November 6th 2024, 12:52:13 pm" +"The `src/ast-grep/examples/example.ts` file is intentionally missing JSDoc comments in some places because it is designed as an example.","rabbits-lab","src/ast-grep/examples/example.ts","22","","NatoBoram","November 6th 2024, 12:49:32 pm","November 6th 2024, 12:49:32 pm" +"In `pr-reviewer-saas/src/tools/languagetool/languagetool.ts`, we are not using a specific version of LanguageTool, so versioning consistency is not necessary for this tool.","mono","pr-reviewer-saas/src/tools/rubocop/command.ts","2002","","cr-ruhanmuzaffar","November 21st 2024, 7:06:24 am","November 21st 2024, 7:06:24 am" +"In `src/ast-grep/has_comment.ts`, the `hasComment` function handles only TypeScript and Elixir languages; other languages in the `Lang` enum are intentionally not handled at this time.","rabbits-lab","src/ast-grep/has_comment.ts","23","","NatoBoram","November 7th 2024, 2:39:21 pm","November 7th 2024, 2:39:21 pm" +"When a PR adds support for parsing docstrings for new languages (e.g., C++ and Go), it's acceptable for code examples in `src/ast-grep/examples/` to not include docstrings.","rabbits-lab","src/ast-grep/examples/example.cpp","27","","NatoBoram","November 20th 2024, 2:32:03 pm","November 20th 2024, 2:32:03 pm" +"When introducing function detection patterns for C++ code, begin with basic functions and avoid handling member functions, template functions, or friend functions in the initial implementation.","rabbits-lab","src/ast-grep/find_functions.ts","27","","NatoBoram","November 20th 2024, 2:40:15 pm","November 20th 2024, 2:40:15 pm" +"In C++, Doxygen docstrings can be picked up across whitespaces and can be regular comments.","rabbits-lab","src/ast-grep/has_comment.ts","27","","NatoBoram","November 20th 2024, 2:41:29 pm","November 20th 2024, 2:41:29 pm" +"When parsing JSON with `JSON.parse`, it's acceptable to use type assertions (`as Type`) instead of `satisfies Type` because `JSON.parse` returns `any`, and adding schema validations might be overkill if we're okay with it throwing errors.","mono","pr-reviewer-saas/src/tools/golangci-lint/command.ts","1934","","NatoBoram","November 8th 2024, 12:16:27 pm","November 8th 2024, 12:16:27 pm" +"In our project, avoid using `let` at the root scope to prevent global state issues in a multi-user environment. Instead, define variables like `toolName` within functions as `const`, or use helper functions that return the appropriate value.","mono","pr-reviewer-saas/src/tools/ast-grep/command.ts","1626","","NatoBoram","November 8th 2024, 1:32:48 pm","November 8th 2024, 1:32:48 pm" +"In TypeScript code, prefer to simplify functions by avoiding unnecessary 'let' declarations by chaining methods or combining statements when possible. For example, in `pr-reviewer-saas/src/utils/utils.ts`, the `sanitizeFilePath` function can be refactored by chaining the `replace` methods.","mono","pr-reviewer-saas/src/utils/utils.ts","1924","","NatoBoram","November 8th 2024, 1:53:15 pm","November 8th 2024, 1:53:15 pm" +"For pure functions with simple input/output in TypeScript projects, recommend adding unit tests using Vitest to ensure correctness. Functions like `sanitizeFilePath` in `pr-reviewer-saas/src/utils/utils.ts` are good candidates for such tests.","mono","pr-reviewer-saas/src/utils/utils.ts","1924","","NatoBoram","November 8th 2024, 1:53:15 pm","November 8th 2024, 1:53:15 pm" +"In TypeScript/JavaScript files, imports should always be placed at the top of the file, not inside functions or blocks, unless there's a specific need for dynamic imports like code splitting or conditional loading.","mono","pr-reviewer-saas/src/tools/sqlfluff/command.ts","4367","","alexcoderabbitai","May 2nd 2025, 11:47:00 am","May 2nd 2025, 11:47:00 am" +"In `pr-reviewer-saas/src/prompts/prompts.ts`, when `evalConfig?.enabled` is false (non-eval mode), the specialized bots (`summarizeFileDiffBot`, `walkthroughBot`, etc.) are intentionally assigned to `this.summarizerBot`.","mono","pr-reviewer-saas/src/prompts/prompts.ts","2001","","nehal-a2z","November 21st 2024, 11:21:39 am","November 21st 2024, 11:21:39 am" +"The `project/` directory contains sample projects (API service, CRM system, and game development) used to create complex pull request scenarios in the `Golden-PR-Dataset` repository.","Golden-PR-Dataset","","","https://github.com/coderabbitai/Golden-PR-Dataset/issues/469","alexcoderabbitai","November 21st 2024, 11:20:39 am","November 21st 2024, 11:20:39 am" +"The `project/api/` directory contains an API service project used in the `Golden-PR-Dataset` repository to create complex pull request scenarios. It includes subdirectories like `docs/`, `llama_stack/`, `rfcs/`, and `tests/`.","Golden-PR-Dataset","","","https://github.com/coderabbitai/Golden-PR-Dataset/issues/469","alexcoderabbitai","November 21st 2024, 11:22:16 am","November 21st 2024, 11:22:16 am" +"In TypeScript code reviews, ensure to check the entire method for variable usage before flagging a variable as unused.","mono","pr-reviewer-saas/src/prompts/prompts.ts","2001","","nehal-a2z","November 21st 2024, 11:20:27 am","November 21st 2024, 11:20:27 am" +"The `project/game` directory contains the source code for the Godot Engine, used to simulate complex pull request scenarios in the `Golden-PR-Dataset` repository.","Golden-PR-Dataset","","","https://github.com/coderabbitai/Golden-PR-Dataset/issues/469","alexcoderabbitai","November 21st 2024, 11:30:17 am","November 21st 2024, 11:30:17 am" +"The `project/crm` directory contains the codebase for the open-source CRM platform called Twenty, used to simulate complex pull request scenarios in the `Golden-PR-Dataset` project.","Golden-PR-Dataset","","","https://github.com/coderabbitai/Golden-PR-Dataset/issues/469","alexcoderabbitai","November 21st 2024, 11:22:52 am","November 21st 2024, 11:22:52 am" +"In the `updateSubscriptions` function in `billing/src/handlers.ts`, the preceding condition ensures that `numberOfUsersToUpdate` will not be negative, so it's unnecessary to guard against negative values.","mono","billing/src/handlers.ts","1964","","karan925","November 11th 2024, 4:03:45 pm","November 11th 2024, 4:03:45 pm" +"In test files (e.g., `src/ast-grep/find_docstrings.test.ts`), errors from file operations should not be caught so that tests crash if something goes wrong.","rabbits-lab","src/ast-grep/find_docstrings.test.ts","28","","NatoBoram","November 21st 2024, 2:09:06 pm","November 21st 2024, 2:09:06 pm" +"In TypeScript files, separate type-only imports from value imports for better code clarity and maintainability.","mono","pr-reviewer-saas/src/comments/commenter.ts","2198","","NatoBoram","December 11th 2024, 2:39:39 pm","December 11th 2024, 2:39:39 pm" +"In `src/utils/node.ts`, within `getJailFromPool`, the function `createJailInPool(logger)` is intended to create replenishment jails in the background and should not be awaited.","mono","pr-reviewer-saas/src/utils/node.ts","2097","","harjotgill","November 24th 2024, 10:21:34 pm","November 24th 2024, 10:21:34 pm" +"In `src/server.ts`, it's acceptable to return internal error messages to the client in error responses, following the existing pattern in the codebase.","e2e-reviewer","src/server.ts","36","","nehal-a2z","November 25th 2024, 3:37:24 am","November 25th 2024, 3:37:24 am" +"Validation for GitHub PR parameters (`base`, `head`, `owner`, `repo`) is already performed in `server.ts` before calling the `createPr` function in `handle_github.ts`. Therefore, additional validation inside `createPr` is unnecessary.","e2e-reviewer","src/handle_github.ts","36","","nehal-a2z","November 25th 2024, 3:35:41 am","November 25th 2024, 3:35:41 am" +"In the `langGuidelines` object in `pr-reviewer-saas/src/docstring/lang_guidelines.ts`, empty language entries represent languages whose documentation guidelines are not yet implemented.","mono","pr-reviewer-saas/src/docstring/lang_guidelines.ts","1946","","NatoBoram","November 26th 2024, 4:22:42 pm","November 26th 2024, 4:22:42 pm" +"In `src/ast-grep/find_functions.ts`, the `findFunctions` function does not require input validation for the `node` parameter.","mono","pr-reviewer-saas/src/ast-grep/find_functions.ts","1946","","NatoBoram","November 26th 2024, 4:20:00 pm","November 26th 2024, 4:20:00 pm" +"When generating docstrings upon the user's request, include the updated code blocks with the generated docstrings.","mono","","","https://github.com/coderabbitai/mono/pull/1946","NatoBoram","November 26th 2024, 4:02:56 pm","November 26th 2024, 4:02:56 pm" +"The `o1` model is expensive and should be avoided unless explicitly needed; ensure that code does not use the `o1` model by default.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","2102","","alexcoderabbitai","November 27th 2024, 9:58:08 am","November 27th 2024, 9:58:08 am" +"Ensure that the `checkRunAnalysis` function in `pr-reviewer-saas/src/prompts/prompts.ts` uses lightweight models and does not utilize the 'o1' model to prevent high costs.","mono","pr-reviewer-saas/src/prompts/prompts.ts","2102","","alexcoderabbitai","November 27th 2024, 9:58:12 am","November 27th 2024, 9:58:12 am" +"The `pathToLang` function in `src/ast-grep/lang.ts` is thoroughly tested by unit tests in `lang.test.ts`, ensuring its correctness without additional input validation.","rabbits-lab","src/ast-grep/lang.ts","29","","NatoBoram","November 27th 2024, 3:29:54 pm","November 27th 2024, 3:29:54 pm" +"The link `/future-developments#finishing-touches` in `docs/finishing-touches/docstrings.md` is correct and should not be flagged as incorrect in future reviews.","coderabbit-docs","docs/finishing-touches/docstrings.md","165","","NatoBoram","December 5th 2024, 4:29:59 pm","December 5th 2024, 4:29:59 pm" +"In the `coderabbitai/coderabbit-docs` repository, when reviewing markdown files, image paths that start with `/img/` are correct and should not include the `static` prefix, even though the images are located in the `static/` directory.","coderabbit-docs","docs/getting-started/quickstart.md","155","","tyaga001","November 28th 2024, 11:45:08 am","November 28th 2024, 11:45:08 am" +"In the 'src/github/commit.ts' file, it's acceptable for the `github.rest.git.createRef` call to fail without error handling, as per project requirements.","rabbits-lab","src/github/commit.ts","30","","NatoBoram","November 28th 2024, 2:56:23 pm","November 28th 2024, 2:56:23 pm" +"In this project, it's acceptable to proceed without additional error handling when deleting a branch fails, as any issues will be evident from subsequent errors.","rabbits-lab","src/github/commit.ts","30","","NatoBoram","November 28th 2024, 2:57:12 pm","November 28th 2024, 2:57:12 pm" +"Avoid using the `any` type in TypeScript code for this project.","rabbits-lab","src/github/commit.ts","30","","NatoBoram","November 28th 2024, 2:56:37 pm","November 28th 2024, 2:56:37 pm" +"In `src/github/commit.ts`, we should allow operations like `github.rest.git.updateRef` to fail without adding error handling.","rabbits-lab","src/github/commit.ts","30","","NatoBoram","November 28th 2024, 2:56:37 pm","November 28th 2024, 2:56:37 pm" +"When generating docstrings upon the user's request, use the following flow: + +**Entrypoint**: +- User comment `@coderabbitai generate docstring` (PR comment event) + +**ast-grep usage**: +- Identify programming language +- Create a parser +- Parse files that are in the diff +- Filter for functions in the diff +- Filter for functions without docstrings + +**LLM usage**: +- Create context with: + - Tone instructions + - Learnings + - Entire function +- Obtain the docstring in the correct language +- Output the whole function with the docstring (accounting for language-specific placement) +- Replace the whole function with the documented one +- Run a formatter to maintain code style + +**CodeRabbit configs**: +- Explicit tool support for formatters + +**PR steps**: +- Commit with signature +- Push to new branch, open PR + +**Related projects**: +- tree-sitter: Import all first-party languages initially +- doc-comments-ai: Reference implementation for docstring generation +- codeqai: Future feature potential, depends on docstring generation","mono","","","https://github.com/coderabbitai/mono/issues/1751","NatoBoram","December 5th 2024, 11:42:56 pm","December 5th 2024, 11:42:56 pm" +"When loading configuration files in TypeScript projects (such as in `pr-reviewer-saas/src/eval/utils.ts`), use Zod to define and validate schemas instead of using type assertions with `as`.","mono","pr-reviewer-saas/src/eval/utils.ts","2001","","NatoBoram","December 10th 2024, 12:46:53 pm","December 10th 2024, 12:46:53 pm" +"In TypeScript files like `pr-reviewer-saas/src/event-client/github-action-logs.ts`, avoid using ""private static"" functions within classes. If a function is static and doesn't rely on class instance properties, consider defining it as a standalone function outside the class.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","2201","","alexcoderabbitai","December 11th 2024, 9:39:41 pm","December 11th 2024, 9:39:41 pm" +"Always write unit tests for regex functions in TypeScript to ensure correctness and provide documentation of expected inputs and outputs.","mono","pr-reviewer-saas/src/event-client/github-action-logs.ts","2201","","alexcoderabbitai","December 11th 2024, 9:39:41 pm","December 11th 2024, 9:39:41 pm" +"The 'pattern' attribute is not supported in 'workflow_dispatch' inputs in GitHub Actions. Input validation should be handled within the workflow steps using scripting.","mono",".github/workflows/eval-test.yaml","2190","","nehal-a2z","December 12th 2024, 1:23:54 am","December 12th 2024, 1:23:54 am" +"In `pr-reviewer-saas/src/eval/eval-chatbot.ts`, within the `EvalClient` class, only `openai` and `anthropic` providers are used. Handling of other providers in the `createBot` method is not necessary at this time.","mono","pr-reviewer-saas/src/eval/eval-chatbot.ts","2204","","nehal-a2z","December 12th 2024, 6:59:45 am","December 12th 2024, 6:59:45 am" +"In the Java file `pr-reviewer-saas/src/ast-grep/examples/example.java`, Javadocs are intentionally not used.","mono","pr-reviewer-saas/src/ast-grep/examples/example.java","2227","","howonlee","December 12th 2024, 3:29:09 pm","December 12th 2024, 3:29:09 pm" +"In the file `pr-reviewer-saas/src/ast-grep/examples/example.java`, the code intentionally does not include Javadoc comments.","mono","pr-reviewer-saas/src/ast-grep/examples/example.java","2227","","howonlee","December 12th 2024, 3:29:17 pm","December 12th 2024, 3:29:17 pm" +"Always remind developers to add new platforms to `docs/platforms/platforms.md` and ensure they update it whenever new platforms are added.","coderabbit-docs","docs/platforms/platforms.md","176","","alexcoderabbitai","December 13th 2024, 10:14:22 am","December 13th 2024, 10:14:22 am" +"In the `docs` repository, it's acceptable to use `127.0.0.1` in documentation examples, and CodeRabbit should not flag it as an issue.","coderabbit-docs","docs/self-hosted/bitbucket.md","176","","alexcoderabbitai","December 13th 2024, 10:10:43 am","December 13th 2024, 10:10:43 am" +"Do not include the `generateUnitTests` command in the `allCommands` help message until the feature is shipped to experimental.","mono","pr-reviewer-saas/src/comments/commands.ts","2286","","howonlee","December 17th 2024, 4:00:09 pm","December 17th 2024, 4:00:09 pm" +"The user wants to keep the “if (!existingPR.pr_merged)” condition to avoid updating the review_event table for pull requests that don’t have a merged date from GitHub.","mono","pr-reviewer-saas/src/event-client/github-client.ts","2235","","harshcoderabbit","December 18th 2024, 9:02:38 pm","December 18th 2024, 9:02:38 pm" +"User specifically requested not to suggest concurrency or error handling for the main function in src/ast-grep/main_generate_all_docstrings.ts.","rabbits-lab","src/ast-grep/main_generate_all_docstrings.ts","31","","NatoBoram","December 19th 2024, 1:10:53 am","December 19th 2024, 1:10:53 am" +"Python indentation can be difficult to handle reliably with ast-grep, especially when the function body is only one line or the last line is not indented at the function’s level (e.g., in a nested if), making it challenging to determine the correct indentation.","rabbits-lab","src/ast-grep/apply_docstrings.ts","31","","NatoBoram","December 19th 2024, 1:09:13 am","December 19th 2024, 1:09:13 am" +"The user charlieegan3 has stated that the Regal configuration file is always at `.regal/config.yaml`, contrary to prior suggestions about multiple possible paths or flexible configuration.","coderabbit-docs","docs/tools/regal.md","181","","charlieegan3","December 19th 2024, 8:33:59 am","December 19th 2024, 8:33:59 am" +"In JavaScript, if optional chaining `eventClient?.pullRequest()` short-circuits to `undefined`, then calling `.catch()` on that `undefined` value causes a runtime error because there is no `.catch()` method on `undefined`.","mono","pr-reviewer-saas/src/utils/construct.ts","2339","","karan925","December 24th 2024, 2:14:35 pm","December 24th 2024, 2:14:35 pm" +"The `historical_pr_data` table is brand new and has had no prior data, so there are no duplicates to worry about. It has also been renamed to `pr_metrics`.","mono","apps/db-api-server/prisma/migrations/20241218163629_add_has_review_event_and_pr_date_indexes/migration.sql","2374","","harshcoderabbit","December 30th 2024, 1:44:51 pm","December 30th 2024, 1:44:51 pm" +"The user clarifies that the 'historical_pr_data' table is new and contains no data, so dropping it won't cause data loss.","mono","apps/db-api-server/prisma/migrations/20241218210618_rename_historical_pr_data_to_pr_metrics/migration.sql","2374","","harshcoderabbit","December 30th 2024, 1:45:26 pm","December 30th 2024, 1:45:26 pm" +"The `poller` in PR Reviewer SaaS is used to monitor GitHub Check Run statuses, implemented in the `CheckRunSummariesPoller` class to periodically check and retrieve the results of automated checks on pull requests.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","January 1st 2025, 2:53:01 pm","January 1st 2025, 2:53:01 pm" +"The Chargebee integration only allows one subscription per user at a time. When changing subscription currency for trial users, the old subscription must be deleted before creating a new one.","mono","billing/src/handlers.ts","2402","","sleep-404","January 7th 2025, 5:07:36 am","January 7th 2025, 5:07:36 am" +"In OpenTelemetry (version >=1.28.0), `ATTR_SERVICE_NAME` from `@opentelemetry/semantic-conventions` is the recommended constant for specifying the service.name resource attribute in Node.js applications.","mono","packages/common/src/otlp/instrumentation.ts","2425","","ganeshpatro321","January 7th 2025, 7:01:32 am","January 7th 2025, 7:01:32 am" +"In the CodeRabbit codebase, checkbox parsing and routing operations are lightweight and fast compared to LLM calls. Adding timeouts for these operations is unnecessary as they complete quickly, and the system already has timeout mechanisms for the more time-consuming LLM operations.","mono","pr-reviewer-saas/src/comments/issue-comments.ts","2395","","howonlee","January 7th 2025, 1:51:45 pm","January 7th 2025, 1:51:45 pm" +"When accessing repository.programming_languages from dbApiClient queries in TypeScript, use type assertion to (Record | undefined) to avoid deep type instantiation errors.","mono","coderabbitHandler/src/review/githubReviewTask.ts","2433","","alexcoderabbitai","January 8th 2025, 12:24:43 pm","January 8th 2025, 12:24:43 pm" +"GitLab pipeline checks require the ""github-checks"" tool to be enabled in the configuration settings, as the pipeline check functionality is shared between GitHub and GitLab implementations.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 9:43:36 pm","January 12th 2025, 9:43:36 pm" +"In the CheckRunSummariesPoller class, GitHub checks and GitLab pipeline operations should be handled independently. The GitHub checks configuration should only gate GitHub-specific operations, while GitLab pipeline functionality should have its own control flow.","mono","pr-reviewer-saas/src/tools/check-run/check-run.ts","2438","","alexcoderabbitai","January 12th 2025, 10:28:53 pm","January 12th 2025, 10:28:53 pm" +"In the CheckRunSummariesPoller class, GitHub checks configuration should not prevent GitLab pipeline operations from executing. These should be handled independently to allow GitLab functionality to work even when GitHub checks are disabled.","mono","pr-reviewer-saas/src/tools/check-run/check-run.ts","2438","","alexcoderabbitai","January 12th 2025, 10:28:53 pm","January 12th 2025, 10:28:53 pm" +"The github-checks tool in CodeRabbit configuration is used for both GitHub and GitLab pipeline checks, despite its name. It must be enabled in the configuration for pipeline checks to work.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 10:33:14 pm","January 12th 2025, 10:33:14 pm" +"The github-checks tool in CodeRabbit configuration handles pipeline checks for both GitHub and GitLab platforms, despite its name. It must be enabled in the configuration for pipeline checks to work, and requires Pro Legacy tier or higher.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 10:36:40 pm","January 12th 2025, 10:36:40 pm" +"The CheckRunSummariesPoller in check-run.ts should poll for both check runs and pipeline failures together, as pipeline failures are currently only fetched once after check runs polling is complete, which can miss pipeline failures that are not ready at that time.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 10:38:59 pm","January 12th 2025, 10:38:59 pm" +"Pipeline checks in GitLab require pro_legacy tier or above. The function getPipelineFailuresByRef will not be called if the product tier is not pro_legacy or above, even if the github-checks tool is enabled.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 10:43:16 pm","January 12th 2025, 10:43:16 pm" +"The pipeline checks in check-run.ts have two early return conditions that must be passed before getPipelineFailuresByRef is called: the product tier must be pro_legacy or above, and the github-checks tool must be enabled in the configuration.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 10:55:09 pm","January 12th 2025, 10:55:09 pm" +"The pipeline checks in check-run.ts are executed after check runs polling is complete. If check runs polling fails or times out, the pipeline checks will not be executed, which is why we might never see the pipeline logs.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2438","","alexcoderabbitai","January 12th 2025, 11:04:14 pm","January 12th 2025, 11:04:14 pm" +"Avoid using TypeScript's non-null assertions (`!`). Instead, add proper validation and error handling to make the code more robust and type-safe. For array access, validate the array's length and throw meaningful errors if the preconditions aren't met.","mono","coderabbitHandler/src/services/helpers.ts","2460","","NatoBoram","January 14th 2025, 1:43:45 pm","January 14th 2025, 1:43:45 pm" +"Error handling for Growsurf integration should be done within the `addGrowsurfParticipant` utility function in `growsurf-util.ts` rather than at the call sites, as it's a reusable component that should encapsulate its own error handling.","mono","coderabbit-ui/src/pages/Login/AzureLogin.tsx","2491","","karan925","January 14th 2025, 4:00:48 pm","January 14th 2025, 4:00:48 pm" +"Use the `Plans` constant from `@/utils/constant` for plan validation instead of regex patterns. The constant includes all plan types (LITE/PRO/MARKETPLACE) with their monthly and annual variants.","mono","coderabbit-ui/src/pages/Settings/Repository/utils.tsx","2491","","karan925","January 14th 2025, 4:00:33 pm","January 14th 2025, 4:00:33 pm" +"In the `gitlabCommentEvent` function in `src/gitlab_event.ts`, the order of spreading objects (`source`, `target`, `mr`, `note`) in `object_attributes` is intentional, allowing later objects to override properties from earlier ones.","e2e-reviewer","src/gitlab_event.ts","38","","NatoBoram","January 15th 2025, 2:26:40 pm","January 15th 2025, 2:26:40 pm" +"In GitLab and GitHub clients' `openPr` method, the `branchSlug` parameter is internally controlled by the codebase (e.g., hardcoded as ""docstrings"") and not user-provided input, therefore it doesn't require sanitization.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2473","","NatoBoram","January 15th 2025, 2:46:19 pm","January 15th 2025, 2:46:19 pm" +"In GitLab's openPr implementation, a branch deletion failure before creating a new branch is non-critical as it typically just means the branch doesn't exist yet. This should be logged as a warning but shouldn't prevent the creation of the new branch.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2473","","NatoBoram","January 15th 2025, 4:20:37 pm","January 15th 2025, 4:20:37 pm" +"In the Courier React hooks library, the `fetchMessages` method from `useInbox` hook is not a Promise and doesn't throw errors, so error handling with `.catch()` is not needed.","mono","coderabbit-ui/src/components/Nav/Notifications.tsx","2497","","ankitjena","January 16th 2025, 2:30:28 am","January 16th 2025, 2:30:28 am" +"Moment.js objects are mutable - methods like endOf() and startOf() modify the object in place and return the same object for chaining. Assignment is not needed when chaining these methods.","mono","coderabbitHandler/src/services/helpers.ts","2460","","ankitjena","January 16th 2025, 4:06:21 am","January 16th 2025, 4:06:21 am" +"In TypeScript, object names should follow camelCase convention even when declared as const, while UPPERCASE is reserved for primitive constants. The values within enum-like objects should also follow camelCase for consistency and readability.","mono","billing/src/utils/constants.ts","2508","","cr-ruhanmuzaffar","January 16th 2025, 3:57:02 am","January 16th 2025, 3:57:02 am" +"The getReviewThreadsDetails() method in GitLab client should fetch thread details using MergeRequestDiscussions API, mapping discussions to ReviewThreadDetails format with proper handling of outdated and resolved states. A discussion is considered outdated if it's resolvable, is a DiffNote type, and has no position.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","2391","","nehal-a2z","January 16th 2025, 4:08:44 am","January 16th 2025, 4:08:44 am" +"The docstring generation system in CodeRabbit can be adapted to process all files in a repository by removing the diff hunk dependency and using the repository scanning capabilities from the issue processing system.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:41:29 pm","January 16th 2025, 3:41:29 pm" +"In the Courier authentication flow, logging the scope string (containing user_id and permissions) is acceptable as it doesn't expose sensitive information. The actual JWT token is received in the response and is not logged.","mono","coderabbitHandler/src/routers/reporting.ts","2497","","ankitjena","January 16th 2025, 11:13:35 am","January 16th 2025, 11:13:35 am" +"The `dbApiClient` is a client of the main Prisma DB service and does not provide transaction capabilities.","mono","coderabbitHandler/src/routers/seat-assignment.ts","2507","","GurinderRawala","January 16th 2025, 2:19:54 pm","January 16th 2025, 2:19:54 pm" +"The docstring generation system requires actual diff hunks to process files. To process existing files, they must be staged and committed as changes in a PR, as the system is designed to work with PR diffs rather than configuration flags.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:20:58 pm","January 16th 2025, 3:20:58 pm" +"The docstring generation system can be configured to process all files instead of just PR changes by setting `process_all_files: true` in the configuration and creating an empty commit PR.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:20:58 pm","January 16th 2025, 3:20:58 pm" +"In TypeScript/JavaScript code that handles errors, optional chaining (`?.`) is sufficient for safely accessing potentially undefined properties. Additional type validation like `typeof` checks and `in` operator are unnecessary when the code is already protected by optional chaining and type assertions.","e2e-reviewer","src/logger/parse.ts","39","","NatoBoram","January 16th 2025, 2:46:36 pm","January 16th 2025, 2:46:36 pm" +"The docstring feature in CodeRabbit follows a four-phase workflow: Setup (file filtering and commit comparison), Function Detection (using ast-grep for parsing), Docstring Generation (based on language-specific guidelines), and Application (via PR or comments).","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:14:42 pm","January 16th 2025, 3:14:42 pm" +"The Winston simple logger in the codebase automatically handles sensitive data in logs through its transform function, making manual filtering of response objects unnecessary.","e2e-reviewer","src/handle_github.ts","39","","NatoBoram","January 16th 2025, 2:51:19 pm","January 16th 2025, 2:51:19 pm" +"The pipeline remediation system in CodeRabbit supports both GitHub Actions and GitLab pipelines, using a unified CheckRun interface for standardized error reporting and analysis. The system processes logs concurrently with rate limiting, extracts structured findings, and generates remediation suggestions.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:17:05 pm","January 16th 2025, 3:17:05 pm" +"The docstring generation system in CodeRabbit is currently designed to work only on files changed in a pull request, analyzing diff hunks to locate functions that need docstrings.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:24:21 pm","January 16th 2025, 3:24:21 pm" +"Never suggest configuration options or features without first verifying their existence in the codebase through proper analysis.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:24:21 pm","January 16th 2025, 3:24:21 pm" +"The `isRateLimitOk()` method is defined in `onprem-knowledge-base.ts` and provides rate limit checking functionality for all knowledge base classes. It verifies the platform client's existence and checks remaining rate limits.","mono","pr-reviewer-saas/src/knowledge-base/prs-index.ts","2506","","harshcoderabbit","January 16th 2025, 4:18:46 pm","January 16th 2025, 4:18:46 pm" +"The `isRateLimitOk()` method is defined in the parent class `OnPremKnowledgeBase` and is available to all classes that extend it, including `PRsIndex`.","mono","pr-reviewer-saas/src/knowledge-base/prs-index.ts","2506","","harshcoderabbit","January 16th 2025, 4:18:46 pm","January 16th 2025, 4:18:46 pm" +"The pr_metrics table data was intentionally reset (truncated) during the reindexing logic refactoring in January 2025, as the system was designed to start fresh with the new schema that includes cr_reviewed tracking.","mono","apps/db-api-server/prisma/migrations/20250116065050_remove_indexes_add_cr_reviewed/migration.sql","2506","","harshcoderabbit","January 16th 2025, 4:18:49 pm","January 16th 2025, 4:18:49 pm" +"In the `defaultRequestHandler` function of the requester, timeout and abort errors should be properly handled at the catch site to preserve error context for logging and diagnostics, rather than being silently ignored.","e2e-reviewer","src/requester.ts","39","","NatoBoram","January 16th 2025, 2:52:24 pm","January 16th 2025, 2:52:24 pm" +"The issue processing system in CodeRabbit has two methods for processing all repository issues: scheduled processing via executeIssuesScheduler (runs daily) and manual refresh via refreshIssuesIndex. Both methods fetch 6-month old issues and store them in a vector database.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:33:50 pm","January 16th 2025, 3:33:50 pm" +"For scheduled reports in CodeRabbit, overwrite the previous report entry in the database. For on-demand reports, create a new entry preserving the history.","mono","","","https://github.com/coderabbitai/mono/issues/2512","alexcoderabbitai","January 16th 2025, 4:14:00 pm","January 16th 2025, 4:14:00 pm" +"Reports should include context from the previous report to highlight changes and progress in features over time.","mono","","","https://github.com/coderabbitai/mono/issues/2512","alexcoderabbitai","January 16th 2025, 4:14:00 pm","January 16th 2025, 4:14:00 pm" +"When creating PRs from issue commands for docstring generation, they should target the repository's main/default branch rather than following PR branch targeting rules.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:53:34 pm","January 16th 2025, 3:53:34 pm" +"The readme generation feature in CodeRabbit uses EventClient for file operations and PR creation, following the same patterns as docstrings: getting all files, grouping by directory, generating content through prompts, and creating a single PR with all README.coderabbit.md files.","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:57:45 pm","January 16th 2025, 3:57:45 pm" +"The readme generation feature in CodeRabbit follows a three-phase workflow similar to docstrings: Setup (directory and file scanning), Content Generation (analyzing files and generating documentation), and Application (creating/updating README.coderabbit.md files via PR).","mono","","","https://github.com/coderabbitai/mono/issues/2511","alexcoderabbitai","January 16th 2025, 3:57:45 pm","January 16th 2025, 3:57:45 pm" +"In the error logging context of `toRequestMethod`, it's better to return a default HTTP method (GET) for unknown methods rather than throwing an error, as this is only used for logging purposes and not actual request handling.","mono","packages/common/src/winston/error.ts","2521","","NatoBoram","January 17th 2025, 1:45:05 pm","January 17th 2025, 1:45:05 pm" +"When adding participants to GrowSurf, only the referrerId needs to be included in the referral data. Additional referrer details like email and name are not required.","mono","coderabbit-ui/src/utils/growsurf-util.ts","2509","","helizaga","January 17th 2025, 2:47:30 pm","January 17th 2025, 2:47:30 pm" +"In TypeScript, catch clause variable type annotation must be 'any' or 'unknown' if specified. Using 'unknown' is preferred for better type safety.","mono","coderabbit-ui/src/utils/growsurf-util.ts","2509","","helizaga","January 17th 2025, 2:37:52 pm","January 17th 2025, 2:37:52 pm" +"In the RepositoryList component, when combining arrays with the selected organization and subgroups, prefer splitting the logic into clear steps with explanatory comments for better readability and maintainability.","mono","coderabbit-ui/src/pages/Settings/Repository/RepositoryList.tsx","2509","","helizaga","January 17th 2025, 3:53:55 pm","January 17th 2025, 3:53:55 pm" +"Cookies in the coderabbit-ui application should be set with security attributes: +- secure flag to ensure HTTPS-only transmission +- sameSite=Lax to prevent CSRF attacks while maintaining functionality","mono","coderabbit-ui/src/pages/Login/trackingCookies.ts","2509","","helizaga","January 17th 2025, 3:04:30 pm","January 17th 2025, 3:04:30 pm" +"In React Router, location state should be properly typed using type assertion to ensure type safety. For example: `(location.state as { property?: type } | null)?.property`","mono","coderabbit-ui/src/pages/Settings/Repository/RepositoryList.tsx","2509","","helizaga","January 17th 2025, 3:40:51 pm","January 17th 2025, 3:40:51 pm" +"In React Router location state typing, use type assertion with null handling: `(location.state as { propertyName?: type } | null)?.propertyName` to safely access optional state properties.","mono","coderabbit-ui/src/pages/Settings/Repository/RepositoryList.tsx","2509","","helizaga","January 17th 2025, 3:49:59 pm","January 17th 2025, 3:49:59 pm" +"Global type declarations for third-party services (Koala, HubSpot, GrowSurf) should be defined in the `coderabbit-ui/src/typings` folder, not in the integrations folder.","mono","coderabbit-ui/global.d.ts","2509","","helizaga","January 17th 2025, 6:37:03 pm","January 17th 2025, 6:37:03 pm" +"The Koala interface should be defined in `coderabbit-ui/src/typings/koala.ts` for consistency with other integrations.","mono","coderabbit-ui/global.d.ts","2509","","helizaga","January 17th 2025, 6:33:16 pm","January 17th 2025, 6:33:16 pm" +"In the HubSpot Conversations API, the `load` method of the `HubSpotConversationsWidget` interface returns void, not a Promise.","mono","coderabbit-ui/src/typings/hubspot.ts","2509","","helizaga","January 17th 2025, 11:34:25 pm","January 17th 2025, 11:34:25 pm" +"The subscription schema in CodeRabbit does not include a subscription_end_date field.","mono","coderabbitHandler/src/review/baseReviewTask.ts","2509","","helizaga","January 17th 2025, 11:39:12 pm","January 17th 2025, 11:39:12 pm" +"The provider field in subscriptions should be set to the hosting platform (e.g., GitHub, GitLab) and not to other services like GrowSurf.","mono","coderabbitHandler/src/review/baseReviewTask.ts","2509","","helizaga","January 17th 2025, 11:39:12 pm","January 17th 2025, 11:39:12 pm" +"In the CodeRabbit codebase, when updating multiple database records that are related (like subscriptions and organization status), use transactions to ensure data consistency and prevent race conditions.","mono","coderabbitHandler/src/review/baseReviewTask.ts","2509","","helizaga","January 17th 2025, 11:41:05 pm","January 17th 2025, 11:41:05 pm" +"The dbApiClient in the coderabbit codebase is a tRPC-based API client that does not support transactions. Database updates must be performed sequentially.","mono","coderabbitHandler/src/review/baseReviewTask.ts","2509","","helizaga","January 18th 2025, 12:59:52 am","January 18th 2025, 12:59:52 am" +"The dbApiClient (tRPC-based) in the coderabbit-ui project does not support database transactions. Database updates must be handled individually with proper error handling and logging.","mono","coderabbitHandler/src/review/baseReviewTask.ts","2509","","helizaga","January 18th 2025, 12:59:53 am","January 18th 2025, 12:59:53 am" +"When constructing URLs, using `url.pathname = path` replaces the entire path portion of the URL, while concatenating paths with template literals (`${baseUrl}/${path}`) preserves the base path and appends the new path.","mono","coderabbitHandler/src/apiClients/google.ts","2544","","cr-ruhanmuzaffar","January 20th 2025, 5:02:15 am","January 20th 2025, 5:02:15 am" +"The Courier JWT auth token is cached using memcache with a 24-hour TTL to reduce API calls. The cache key format is `courier-jwt-auth-token-${orgId}`.","mono","coderabbitHandler/src/routers/reporting.ts","2497","","ankitjena","January 21st 2025, 3:23:09 am","January 21st 2025, 3:23:09 am" +"The `getUserData` function in the login flow adds new users to GrowSurf for referral tracking when they sign up, using their email and name.","mono","coderabbit-ui/src/pages/Login/index.tsx","2509","","ankitjena","January 21st 2025, 4:49:07 am","January 21st 2025, 4:49:07 am" +"Azure DevOps provides Base64 encoded avatar URLs, which need to be prefixed with ""data:image/png;base64, "" when storing in sessionStorage.","mono","coderabbit-ui/src/pages/Login/index.tsx","2509","","ankitjena","January 21st 2025, 4:49:07 am","January 21st 2025, 4:49:07 am" +"In the e2e-reviewer codebase, logging errors with `logger.warn` is considered sufficient error handling for non-critical operations like requesting reviews, where the operation can safely continue even if a step fails.","e2e-reviewer","src/handle_bitbucket_server.ts","40","","NatoBoram","January 21st 2025, 3:58:24 pm","January 21st 2025, 3:58:24 pm" +"The Growsurf types are defined in `growsurf.ts` and the window interface is extended in `global.d.ts` to include the `growsurf` property. No additional type declaration file is needed.","mono","coderabbit-ui/src/utils/growsurf-util.ts","2596","","helizaga","January 22nd 2025, 2:11:53 pm","January 22nd 2025, 2:11:53 pm" +"The GrowSurf integration in `addGrowsurfParticipant` function must only add participants with valid referrer IDs to maintain clean referral tracking data and ensure proper reward distribution. Participants without referrers should not be added to avoid corrupting the referral system.","mono","coderabbit-ui/src/utils/growsurf-util.ts","2596","","helizaga","January 22nd 2025, 3:27:00 pm","January 22nd 2025, 3:27:00 pm" +"Input validation for systemMessagePrefix parameter in fileActionSystemPrompt function was explicitly declined by the team. The function should process the prefix as-is without validation checks.","mono","pr-reviewer-saas/src/prompts/templates/file-action.ts","2582","","howonlee","January 22nd 2025, 7:17:39 pm","January 22nd 2025, 7:17:39 pm" +"In the file action system, empty diff lines (when `fileDiff.split(""\n"")` results in an empty array) represent a file deletion operation. These should not be validated or filtered out as they are a legitimate case.","mono","pr-reviewer-saas/src/agent/file-action.ts","2582","","howonlee","January 22nd 2025, 7:17:56 pm","January 22nd 2025, 7:17:56 pm" +"The file processing in parseGeneratedFileDiff is designed for reasonably sized source code files, not for extremely large files (e.g., billions of lines) which would cause memory and performance issues.","mono","pr-reviewer-saas/src/prompts/templates/file-action.ts","2582","","howonlee","January 22nd 2025, 7:18:31 pm","January 22nd 2025, 7:18:31 pm" +"The `parse` function from `@ast-grep/napi` handles malformed input gracefully without throwing errors, making additional error handling unnecessary.","mono","pr-reviewer-saas/src/ast-grep/parse_node.ts","2582","","howonlee","January 22nd 2025, 7:20:14 pm","January 22nd 2025, 7:20:14 pm" +"Error handling for chat operations and file actions is implemented at the comment handler level rather than within individual functions to centralize error management.","mono","pr-reviewer-saas/src/agent/file-action.ts","2582","","howonlee","January 22nd 2025, 7:31:21 pm","January 22nd 2025, 7:31:21 pm" +"The Prisma schema for the project is located at `./apps/db-api-server/prisma/schema.prisma` and the project uses pnpm as the package manager.","mono","","","https://github.com/coderabbitai/mono/issues/3023","alexcoderabbitai","February 18th 2025, 2:15:34 pm","February 18th 2025, 2:15:34 pm" +"The project uses Prisma with schema located at `./apps/db-api-server/prisma/schema.prisma` and requires schema-migration sync checks in CI using `prisma migrate diff` command.","mono","","","https://github.com/coderabbitai/mono/issues/3023","alexcoderabbitai","February 18th 2025, 2:15:34 pm","February 18th 2025, 2:15:34 pm" +"The `useSelectedOrg` hook is widely used across the codebase (navigation components, settings components, and custom hooks) with optional chaining (`?.`) without explicit null checks. This is the established architectural pattern for handling the selected organization's data.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/hooks/useRedirectChargeBeePortal.ts","2618","","sleep-404","January 23rd 2025, 8:25:25 am","January 23rd 2025, 8:25:25 am" +"In React components using `useSelectedOrg` hook, it's acceptable to use optional chaining (`account?.id`) without explicit null checks, as this is the established pattern in the codebase.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/hooks/useRedirectChargeBeePortal.ts","2618","","sleep-404","January 23rd 2025, 8:25:25 am","January 23rd 2025, 8:25:25 am" +"The `useSelectedOrg` hook in React is guaranteed to return a valid account object, making null checks unnecessary when using its return value.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/hooks/useRedirectChargeBeePortal.ts","2618","","sleep-404","January 23rd 2025, 8:25:28 am","January 23rd 2025, 8:25:28 am" +"In the codebase, `secretString` is used for sensitive environment variables like tokens and passwords, while `envString` is used for non-sensitive, public information like branch names and repository identifiers.","rabbits-lab","src/env.ts","35","","NatoBoram","January 23rd 2025, 12:58:21 pm","January 23rd 2025, 12:58:21 pm" +"In test projects like rabbits-lab, warnings about sensitive information logging are not needed as the project is for testing purposes only.","rabbits-lab","src/azure-devops/commit.ts","35","","NatoBoram","January 23rd 2025, 12:57:19 pm","January 23rd 2025, 12:57:19 pm" +"In the referral flow, `checkReferredEligibility` returns `REFERRED` status when the organization is eligible (canReward: true) as the actual reward status (`REWARDED`) is set later in the `triggerUserReferral` function after successful processing of the referral.","mono","coderabbitHandler/src/utils/referral.utils.ts","2600","","helizaga","January 23rd 2025, 4:23:12 pm","January 23rd 2025, 4:23:12 pm" +"In logical OR conditions with optional chaining, if the first condition uses optional chaining on an object (`obj?.prop`), subsequent conditions checking properties of the same object don't need optional chaining as they're unreachable if the object is null/undefined due to short-circuit evaluation.","mono","pr-reviewer-saas/src/event-client/bitbucket-cloud-client.ts","2621","","NatoBoram","January 27th 2025, 3:15:24 pm","January 27th 2025, 3:15:24 pm" +"Data validation checks for missing fields should not be added. It's acceptable for data to be missing, and the code should handle such cases gracefully without throwing errors.","mono","pr-reviewer-saas/src/event-client/azure-utils.ts","2621","","NatoBoram","January 27th 2025, 3:16:03 pm","January 27th 2025, 3:16:03 pm" +"When reviewing TypeScript code, avoid suggesting changes between logical OR (`||`) and nullish coalescing (`??`) operators unless there's a specific bug or issue caused by their usage, as these are considered minor optimizations.","mono","pr-reviewer-saas/src/event-client/bitbucket_cloud_event_client_utils.ts","2621","","NatoBoram","January 27th 2025, 11:50:26 pm","January 27th 2025, 11:50:26 pm" +"For the PR reviewer Dockerfile, manual Node.js installation on Ubuntu base image is preferred over the official Node.js image to maintain better control over library upgrades.","mono","docker/pr-reviewer-saas/Dockerfile","2662","","helizaga","January 27th 2025, 9:09:30 pm","January 27th 2025, 9:09:30 pm" +"The maximum allowed date range for on-demand reports is 90 days to ensure optimal performance and prevent resource exhaustion.","mono","coderabbitHandler/src/utils/reporting.ts","2670","","helizaga","January 28th 2025, 5:05:07 pm","January 28th 2025, 5:05:07 pm" +"In the schedule_range model, the `from` and `to` fields are kept as strings (VARCHAR) instead of DateTime to allow flexibility in storing different value formats based on the range type.","mono","apps/db-api-server/schema.zmodel","2670","","ankitjena","January 29th 2025, 2:52:45 am","January 29th 2025, 2:52:45 am" +"Extensive refactoring of error handling in `handleReviewComment` function should be avoided due to the high regression testing burden. The function's complexity and test coverage make such changes risky.","mono","pr-reviewer-saas/src/comments/review-comment.ts","2665","","howonlee","January 29th 2025, 12:55:58 pm","January 29th 2025, 12:55:58 pm" +"In the agent component system, arrays are preferred over objects for chat responses when the number of responses may vary (variadic). This is an exception to the general guideline against using tuples, as demonstrated in the `ReviewCommentFindFiles.doChat()` method.","mono","pr-reviewer-saas/src/agent/components/review-comment-find-files.ts","2665","","howonlee","January 29th 2025, 1:24:53 pm","January 29th 2025, 1:24:53 pm" +"The LanceDB implementation in the codebase is an imitation that mimics the LanceDB API rather than using the actual LanceDB library.","mono","pr-reviewer-saas/src/knowledge-base/lancedb/abstract.ts","4560","","averyjennings","May 12th 2025, 3:40:54 pm","May 12th 2025, 3:40:54 pm" +"Sentry authentication tokens (VITE_SENTRY_AUTH_TOKEN) should not be committed to version control as they are sensitive credentials. They should be managed through secure secrets management systems and injected during deployment.","mono","coderabbit-ui/.env.prod","2685","","karan925","January 29th 2025, 4:31:01 pm","January 29th 2025, 4:31:01 pm" +"The Calendar component's `max` prop is a feature from react-day-picker that specifies the maximum number of days that can be selected in range mode. In the ReportRangeSelector component, it's set to 60 days to limit the date range selection.","mono","coderabbit-ui/src/pages/Settings/CustomReporting/ReportRangeSelector.tsx","2670","","ankitjena","January 29th 2025, 10:04:42 pm","January 29th 2025, 10:04:42 pm" +"The Calendar component's `max` prop specifies the maximum range (in days) that can be selected in the date range picker.","mono","coderabbit-ui/src/pages/Settings/CustomReporting/ReportRangeSelector.tsx","2670","","ankitjena","January 29th 2025, 10:04:42 pm","January 29th 2025, 10:04:42 pm" +"When using dbApiClient (a TRPC wrapper around Prisma), implement transactions at the db-api-server level using Prisma's $transaction, then expose the transactional operation through a TRPC procedure.","mono","coderabbitHandler/src/routers/reporting.ts","2670","","ankitjena","January 29th 2025, 10:34:53 pm","January 29th 2025, 10:34:53 pm" +"The dbApiClient in the codebase doesn't support Prisma's $transaction method directly. For atomic operations, either use a transaction helper function or implement manual error handling with rollback logic.","mono","coderabbitHandler/src/routers/reporting.ts","2670","","ankitjena","January 29th 2025, 10:34:53 pm","January 29th 2025, 10:34:53 pm" +"When dbApiClient doesn't support transactions, implement atomic operations by performing operations sequentially with rollback logic for each step to ensure data consistency.","mono","coderabbitHandler/src/routers/reporting.ts","2670","","ankitjena","January 29th 2025, 10:34:53 pm","January 29th 2025, 10:34:53 pm" +"When working with database operations that need to be atomic, first check if you can use the underlying database client's transaction capabilities (like Prisma's $transaction). If not, implement a robust rollback system that handles partial failures.","mono","coderabbitHandler/src/routers/reporting.ts","2670","","ankitjena","January 29th 2025, 10:34:53 pm","January 29th 2025, 10:34:53 pm" +"In the schedule_range table, schedule_key serves as the primary key through a unique constraint, maintaining a 1:1 relationship with the schedule table. An additional id column is not needed.","mono","apps/db-api-server/prisma/migrations/20250130072922_schedule_range_table/migration.sql","2670","","ankitjena","January 30th 2025, 2:46:53 am","January 30th 2025, 2:46:53 am" +"The remote_config_url field was moved from repositories_settings to repositories_settings_org table in January 2025. The field in repositories_settings was unused and contained only null values before the migration, so no data migration was necessary.","mono","apps/db-api-server/prisma/schema.prisma","2696","","helizaga","January 30th 2025, 3:39:03 am","January 30th 2025, 3:39:03 am" +"When searching for terms to be removed, use more comprehensive search patterns and verify each file individually to ensure no instances are missed, especially in TypeScript/React files where terms might appear in different contexts (props, state, destructuring, etc.).","mono","","","https://github.com/coderabbitai/mono/pull/3026","alexcoderabbitai","February 17th 2025, 7:13:37 pm","February 17th 2025, 7:13:37 pm" +"When searching for terms to be removed, use multiple search strategies including exact matches, partial matches, and case-insensitive searches, particularly for React/TypeScript files where terms might appear in various forms (variables, props, destructuring, etc.).","mono","","","https://github.com/coderabbitai/mono/pull/3026","alexcoderabbitai","February 17th 2025, 7:13:37 pm","February 17th 2025, 7:13:37 pm" +"When removing features, implement a multi-stage verification process: +1. Use multiple search patterns (exact, case-insensitive, partial matches) +2. Specifically check files where related changes were made +3. Verify React components thoroughly as terms might appear in multiple contexts (props, state, destructuring)","mono","","","https://github.com/coderabbitai/mono/pull/3026","alexcoderabbitai","February 17th 2025, 7:13:37 pm","February 17th 2025, 7:13:37 pm" +"When removing code elements, always perform a thorough manual review of files being modified, paying special attention to all usages of the term including variable declarations, props, destructuring patterns, and related code constructs, rather than relying solely on automated searches.","mono","","","https://github.com/coderabbitai/mono/pull/3026","alexcoderabbitai","February 17th 2025, 7:13:37 pm","February 17th 2025, 7:13:37 pm" +"When reviewing React component files for removal of specific terms, pay extra attention to destructuring patterns and prop declarations as they can be easily overlooked during automated searches and manual reviews.","mono","","","https://github.com/coderabbitai/mono/pull/3026","alexcoderabbitai","February 17th 2025, 7:13:37 pm","February 17th 2025, 7:13:37 pm" +"In GitLab provider's repository fetching, use separate methods for pagination logic to keep the code self-contained and maintainable. Extract complex pagination logic into dedicated private methods.","mono","coderabbitHandler/src/providers/gitlabProvider.ts","2617","","NatoBoram","January 30th 2025, 2:35:28 pm","January 30th 2025, 2:35:28 pm" +"In the PR review commenters router (TypeScript), type assertion `as string` for `pr_metrics_id` is acceptable as the value is guaranteed to be a string through other means.","mono","pr-reviewer-saas/src/api/routes/public/pr-review-commenters.ts","2726","","harshcoderabbit","January 30th 2025, 4:01:13 pm","January 30th 2025, 4:01:13 pm" +"In TypeScript codebase, error throwing (e.g., `throw new Error()`) is not used for validation checks or general error handling. This includes avoiding TRPC errors for such cases.","mono","pr-reviewer-saas/src/api/routes/public/pr-review-commenters.ts","2726","","harshcoderabbit","January 30th 2025, 4:02:02 pm","January 30th 2025, 4:02:02 pm" +"In TypeScript API routes, use TRPC errors instead of generic JavaScript errors to maintain consistent API error patterns across the codebase. For example, use TRPC error instead of `throw new Error(""PR metrics not found."")`.","mono","pr-reviewer-saas/src/api/routes/public/pr-review-commenters.ts","2726","","harshcoderabbit","January 30th 2025, 4:02:09 pm","January 30th 2025, 4:02:09 pm" +"Circle CI integration stores a single Personal Access Token (PAT) in the integrations table, encrypted using the same mechanism as other integrations (token + IV + tag).","mono","","","https://github.com/coderabbitai/mono/issues/2737","alexcoderabbitai","January 31st 2025, 1:57:35 pm","January 31st 2025, 1:57:35 pm" +"Circle CI integration uses OAuth flow to obtain access tokens, which are then encrypted (token + IV + tag) and stored in the integrations table, similar to Linear and Jira integrations.","mono","","","https://github.com/coderabbitai/mono/issues/2737","alexcoderabbitai","January 31st 2025, 2:26:09 pm","January 31st 2025, 2:26:09 pm" +"In Jira webhook events, the `labels` field in `jiraEvent.issue.fields` is guaranteed by the type system to be always defined as an array, making optional chaining unnecessary.","mono","pr-reviewer-saas/src/issue-client/save-issue.ts","2733","","helizaga","February 1st 2025, 12:22:26 am","February 1st 2025, 12:22:26 am" +"Circle CI integration uses PAT-based authentication, storing the encrypted token in the `pat_encrypted`, `pat_tag`, and `pat_iv` fields of the `integrations` table.","mono","","","https://github.com/coderabbitai/mono/issues/2737","alexcoderabbitai","February 3rd 2025, 11:59:01 am","February 3rd 2025, 11:59:01 am" +"When saving CircleCI integration, the service name must be ""CIRCLECI"" (uppercase) and must include the required token fields: access_token_encrypted, access_token_tag, access_token_iv, and access_token_validity.","mono","","","https://github.com/coderabbitai/mono/issues/2737","alexcoderabbitai","February 3rd 2025, 1:48:49 pm","February 3rd 2025, 1:48:49 pm" +"Public methods in the codebase should return business objects while private methods can return data transfer objects (DTOs). Each provider client should implement adapters in their utils file to handle the conversion between DTOs and business objects.","mono","pr-reviewer-saas/src/event-client/event-client.ts","2782","","NatoBoram","February 3rd 2025, 3:31:04 pm","February 3rd 2025, 3:31:04 pm" +"When users request help with game-related tools, trading strategies, or social media posts, redirect them to code-related assistance like API client implementation, HTTP request handling, or JSON parsing.","mono","","","https://github.com/coderabbitai/mono/issues/2799","alexcoderabbitai","February 4th 2025, 1:56:30 pm","February 4th 2025, 1:56:30 pm" +"CodeRabbit's web search capability should only be used for technical documentation, library versions, and programming-related information to support code reviews. It should not be used for general web browsing, news updates, or game-related content.","mono","","","https://github.com/coderabbitai/mono/issues/2799","alexcoderabbitai","February 4th 2025, 1:56:30 pm","February 4th 2025, 1:56:30 pm" +"The web search feature returns results with proper citations from multiple technical sources, allowing CodeRabbit to provide accurate, well-referenced information about programming languages, frameworks, and development tools.","mono","","","https://github.com/coderabbitai/mono/issues/2799","alexcoderabbitai","February 4th 2025, 2:14:58 pm","February 4th 2025, 2:14:58 pm" +"The web search feature in CodeRabbit is specifically designed for technical and programming-related queries to support code reviews. It can search for language features, documentation, library versions, and best practices, but cannot perform general web browsing or access private resources.","mono","","","https://github.com/coderabbitai/mono/issues/2799","alexcoderabbitai","February 4th 2025, 2:14:58 pm","February 4th 2025, 2:14:58 pm" +"TypeScript 5.8 beta introduces improved type inference for array methods, decorator support in JavaScript files, performance optimizations, and enhanced type narrowing capabilities.","mono","","","https://github.com/coderabbitai/mono/issues/2802","alexcoderabbitai","February 4th 2025, 2:39:16 pm","February 4th 2025, 2:39:16 pm" +"CodeRabbit cannot directly access external URLs or API documentation. Users should be directed to official documentation channels at docs.coderabbit.ai or the CodeRabbit dashboard for API information.","mono","","","https://github.com/coderabbitai/mono/issues/2799","alexcoderabbitai","February 4th 2025, 2:07:20 pm","February 4th 2025, 2:07:20 pm" +"TypeScript 5.8 beta introduces checked returns for conditional/indexed access types, improving type inference without manual assertions. It also adds the --erasableSyntaxOnly flag for better Node.js compatibility by disallowing non-erasable features like enums and namespaces.","mono","","","https://github.com/coderabbitai/mono/issues/2802","alexcoderabbitai","February 4th 2025, 2:44:02 pm","February 4th 2025, 2:44:02 pm" +"TypeScript 5.8 beta includes module system improvements with stable --module node18 support and --module nodenext for better ESM/CommonJS interop. Performance optimizations include faster project loads through optimized path normalization and reduced re-validation in --watch mode.","mono","","","https://github.com/coderabbitai/mono/issues/2802","alexcoderabbitai","February 4th 2025, 2:44:02 pm","February 4th 2025, 2:44:02 pm" +"In pipeline-analysis.ts, the example findings can omit StartLine and EndLine fields to demonstrate that the model should be able to report issues even when line numbers aren't available in the CI logs. The actual line numbers can be handled/injected by the code later.","mono","pr-reviewer-saas/src/prompts/templates/pipeline-analysis.ts","2842","","alexcoderabbitai","February 5th 2025, 12:35:12 pm","February 5th 2025, 12:35:12 pm" +"For the codebase, unit tests should be written before performing major refactoring to ensure code behavior is preserved.","mono","pr-reviewer-saas/src/agent-flow/components/review-comment-write-script.ts","2665","","howonlee","February 5th 2025, 2:30:03 pm","February 5th 2025, 2:30:03 pm" +"The review-comment.ts file currently only handles pull request review comments and does not have integration with issue comments.","mono","","","https://github.com/coderabbitai/mono/pull/2878","howonlee","February 7th 2025, 4:31:30 am","February 7th 2025, 4:31:30 am" +"@alexcoderabbitai prefers detailed documentation for repositories that includes top-level directories, subdirectories, root-level files, and architecture diagrams to provide a comprehensive overview for developers.","mono","","","https://github.com/coderabbitai/mono/issues/4381","alexcoderabbitai","May 4th 2025, 10:52:46 am","May 4th 2025, 10:52:46 am" +"The CodeRabbit monorepo uses pnpm workspaces and Turborepo for managing multiple packages and applications, including the UI, database API server, billing services, PR reviewer, and VS Code extension.","mono","","","https://github.com/coderabbitai/mono/issues/4381","alexcoderabbitai","May 4th 2025, 11:05:13 am","May 4th 2025, 11:05:13 am" +"The CodeRabbit monorepo's ""apps"" directory contains three main services: coderabbit-handler-proxy (a proxy for the handler), db-api-server (a database API server with Prisma ORM), and indexer (a service for processing repository data).","mono","","","https://github.com/coderabbitai/mono/issues/4381","alexcoderabbitai","May 4th 2025, 11:16:11 am","May 4th 2025, 11:16:11 am" +"Stay focused on code review and politely redirect unrelated requests back to the PR's purpose.","mono","pr-reviewer-saas/src/agent-flow/components/review-comment-determine-edits.ts","3067","","howonlee","February 22nd 2025, 4:54:03 pm","February 22nd 2025, 4:54:03 pm" +"Include ""cancelled"" status when checking for subscription existence in free trial eligibility contexts. This prevents users from getting multiple free trials by cancelling and resubscribing.","mono","coderabbitHandler/src/utils/subscription.ts","3175","","karan925","February 24th 2025, 10:31:51 pm","February 24th 2025, 10:31:51 pm" +"Do not include ""use client"" directive at the top of React component files in the coderabbit-ui repository, even if this is recommended in shadcn documentation.","mono","coderabbit-ui/src/components/Combobox/ComboboxWithId.tsx","3109","","alexcoderabbitai","February 25th 2025, 8:22:21 am","February 25th 2025, 8:22:21 am" +"If the installation ID is not found in the `fetchProviderData` function, it should default to authenticating as the authenticated user. ","mono","coderabbitHandler/src/utils/provider-instance.ts","1189","","Spikatrix","July 12th 2024, 9:19:37 am","May 5th 2025, 2:35:45 pm" +"In agent components, `doChat` methods should always return an instance of `AgentError` when encountering error conditions (like missing data or invalid states) rather than throwing exceptions or returning other error types. This ensures consistent error handling throughout the codebase and provides clear error messages to users. The return type of these methods is typically `Promise` to accommodate both error and success cases.","mono","pr-reviewer-saas/src/agent-flow/components/review-comment-chat-answer.ts","3231","","howonlee","February 27th 2025, 5:05:29 pm","February 27th 2025, 5:05:29 pm" +"When removing an option from any of the Schemas in the codebase, the validation method should be changed from `.strict()` to `.passthrough()` to maintain backward compatibility with existing configurations.","mono","packages/schemas/src/configuration/schema.ts","4401","","alexcoderabbitai","May 5th 2025, 5:54:07 pm","May 5th 2025, 5:54:07 pm" +"Using `@ts-expect-error` with a comment explaining ""ZenStack weirdness"" is the correct approach to fix recursive type definition issues in ZenStack, particularly when dealing with fields like `programming_languages` that need to be cast to `Record | undefined`.","mono","coderabbitHandler/src/review/githubReviewTask.ts","4434","","recrsn","May 6th 2025, 1:31:25 am","May 6th 2025, 1:31:25 am" +"The file `./pr-reviewer-saas/src/prompts/templates/custom-reporting.ts` exists and is used for custom reporting prompts.","mono","","","https://github.com/coderabbitai/mono/issues/1572","alexcoderabbitai","September 20th 2024, 12:24:16 pm","March 10th 2025, 12:43:49 pm" +"PostHog API keys (project API keys) are designed to be public and can safely be included in client-side code. These keys are meant to be visible in the source code, following the security model of analytics platforms like PostHog.","mono","vscode-extension/src/lifecycle.ts","4447","","recrsn","May 6th 2025, 4:10:06 pm","May 6th 2025, 4:10:06 pm" +"PostHog project API keys (prefixed with ""phc_"") are designed to be public and can safely be included in client-side code. These keys don't provide access to private data and are intended for tracking events in client applications. Only personal API keys (prefixed with ""phx_"") need to be kept secure.","mono","vscode-extension/src/lifecycle.ts","4447","","recrsn","May 6th 2025, 4:10:06 pm","May 6th 2025, 4:10:06 pm" +"GitHub marketplace plans are updated via GitHub Marketplace, not on Chargebee. The only thing updated on Chargebee for GitHub marketplace plans is the Plan ID if they change (for example, from ""GITHUB_MARTKETPLACE_LITE"" to ""GITHUB_MARKETPLACE_PRO"").","mono","coderabbit-ui/src/components/SeatManagement/SeatManagementModal.tsx","3421","","alexcoderabbitai","March 12th 2025, 5:29:01 pm","March 12th 2025, 5:29:01 pm" +"In the CodeRabbit extension interface design, previousState is intentionally required for ExtensionChatEvent (chat functionality) but optional for ExtensionReviewEvent (code reviews) as they have different requirements for maintaining context.","mono","pr-reviewer-saas/src/event-client/extension-client.ts","3375","","sleep-404","March 13th 2025, 2:52:11 am","March 13th 2025, 2:52:11 am" +"PostHog's `identify` method automatically links anonymous sessions with logged-in sessions when called with an email identifier, making explicit `posthog.alias` calls redundant for this purpose.","mono","coderabbit-ui/src/pages/Login/index.tsx","3447","","aquibbaig","March 14th 2025, 2:33:53 am","March 14th 2025, 2:33:53 am" +"The collectGitGraph function should immediately return (bail out completely) when the maxFiles limit is reached, rather than completing the current commit's processing.","mono","pr-reviewer-saas/src/code-graph/git-collector.ts","3468","","harjotgill","March 14th 2025, 6:22:07 pm","March 14th 2025, 6:22:07 pm" +"When cloning a GitHub repository in a PR context, using a shallow initial clone (depth=1) of the main repository and then fetching the specific PR branch with a potentially deeper history is an efficient approach, especially when handling PRs from forks.","mono","pr-reviewer-saas/src/event-client/github-client.ts","3468","","harjotgill","March 15th 2025, 9:22:44 pm","March 15th 2025, 9:22:44 pm" +"When updating packages in review-tool-versions.ts, run `pnpm install && pnpm build` from the mono root to update the following UI files: +- coderabbit-ui/src/pages/Settings/Configuration/schema/schema.v2.json +- coderabbit-ui/src/pages/Settings/Configuration/schema/tools_settings.json +If these files are not updated when bumping tool versions, raise a comment.","mono","packages/schemas/src/constants/review-tool-versions.ts","3525","","alexcoderabbitai","March 18th 2025, 12:26:17 pm","March 18th 2025, 12:26:17 pm" +"For GitLab users logging in for the first time, repositories are discovered through the `addGitLabRepositories` function in `coderabbitHandler/src/routes/repositories/addGitLabRepositories.ts`. Unlike GitHub, GitLab repositories may need to be manually added through the UI.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","March 18th 2025, 10:32:28 am","March 18th 2025, 10:32:28 am" +"For GitLab users logging in for the first time, repositories are not automatically discovered. Unlike GitHub, GitLab repositories must be manually added by clicking the ""Add Repository"" button in the UI, which triggers the `addGitLabRepositories` function in `coderabbitHandler/src/routes/repositories/addGitLabRepositories.ts`.","mono","","","https://github.com/coderabbitai/mono/issues/1517","alexcoderabbitai","March 18th 2025, 10:32:28 am","March 18th 2025, 10:32:28 am" +"Prefer using regular `enum` over `const enum` in TypeScript due to better compatibility with bundlers, the isolatedModules compiler flag, and better support for code splitting.","mono","vscode-extension/src/typings/git.ts","3540","","ankitjena","March 20th 2025, 2:35:05 am","March 20th 2025, 2:35:05 am" +"When importing types from CommonJS modules in TypeScript, the syntax `import type { SomeType } from ""module"" with { ""resolution-mode"": ""require"" }` is valid and sometimes necessary, even though linters like Biome may flag it as an error with the rule ""noTypeOnlyImportAttributes"".","mono","vscode-extension/src/trpc.ts","3540","","ankitjena","March 20th 2025, 4:17:43 am","March 20th 2025, 4:17:43 am" +"In the NoRepositoriesFound component, Azure DevOps uses ""organization"" as the terminology for the top-level container that holds repositories, while GitLab uses ""group"" and other providers use ""project"".","mono","coderabbit-ui/src/pages/Settings/Repository/components/NoRepositoriesFound.tsx","3568","","alexcoderabbitai","March 21st 2025, 11:54:51 am","March 21st 2025, 11:54:51 am" +"In the monorepo structure, the Buf static analysis tool may report false positives for package directory mismatches when run from an incorrect working directory. The correct structure for the SCIP package is ""packages/scip/proto/scip/scip.proto"".","mono","packages/scip/proto/scip/scip.proto","3594","","recrsn","March 24th 2025, 1:17:25 pm","March 24th 2025, 1:17:25 pm" +"LanceDB does not support parameterized queries or prepared statements. Manual string escaping (replacing single quotes with double single quotes) is required when constructing WHERE clauses for LanceDB queries.","mono","pr-reviewer-saas/src/knowledge-base/function-index/lancedb-ops.ts","4258","","averyjennings","May 7th 2025, 3:38:14 pm","May 7th 2025, 3:38:14 pm" +"LanceDB's native query builder does not support parameterized queries or prepared statements. Manual string escaping (replacing single quotes with double single quotes) is required when constructing WHERE clauses for LanceDB queries to prevent SQL injection issues.","mono","pr-reviewer-saas/src/knowledge-base/function-index/lancedb-ops.ts","4258","","averyjennings","May 7th 2025, 3:38:14 pm","May 7th 2025, 3:38:14 pm" +"The function `isNativeChatAvailable()` in VSCode extensions should check for the absence of specific commands like ""composer.newAgentChat"" (Cursor) and ""windsurf.openCascade"" (Windsurf) to determine if the native chat functionality is genuinely available, as these commands override the standard VSCode chat behavior even when ""workbench.action.chat.open"" exists.","mono","vscode-extension/src/commands/handoffToAgent.ts","4474","","recrsn","May 7th 2025, 3:53:38 pm","May 7th 2025, 3:53:38 pm" +"CodeRabbit only processes comments that explicitly mention `@coderabbitai`. CodeRabbit's own replies never include this mention, which prevents self-triggering loops.","mono","","","https://github.com/coderabbitai/mono/pull/4750","helizaga","May 21st 2025, 2:30:46 pm","May 21st 2025, 2:30:46 pm" +"In TypeScript code, prefer using type predicates (type guards) over type assertions (`as`) to safely narrow down types. Type guards help TypeScript understand the relationship between runtime type checks and type narrowing, leading to more type-safe code.","mono","pr-reviewer-saas/src/utils/md_parser.ts","3632","","ankitjena","March 25th 2025, 2:43:20 pm","March 25th 2025, 2:43:20 pm" +"The duplicated code between `chat` and `streamChat` methods in AnthropicChatBot will be refactored in a separate PR to reduce duplication and improve maintainability.","mono","pr-reviewer-saas/src/ai-client/anthropic-chat-bot.ts","3654","","sleep-404","March 26th 2025, 8:35:33 am","March 26th 2025, 8:35:33 am" +"NatoBoram's PR #3664 is focused on making interface properties readonly for consistency across the codebase, enforcing immutability.","mono","billing/src/types/users.interface.ts","3664","","NatoBoram","March 26th 2025, 2:04:44 pm","March 26th 2025, 2:04:44 pm" +"The FileHunk interface in pr-reviewer-saas/src/review/hunks.ts already includes an optional `relevantToolOutputs?: Record` property for storing tool outputs that lie within the range of the hunks.","mono","pr-reviewer-saas/src/agent-flow/utils.ts","3667","","helizaga","March 26th 2025, 6:38:29 pm","March 26th 2025, 6:38:29 pm" +"The `gitProviderOrgId` field in the `LicenseCheckData` interface is marked as optional with `?` for backward compatibility reasons. There are customers using old Docker images that won't be sending this field, so the implementation needs to handle both cases where the field is present and where it's absent.","mono","pr-reviewer-saas/src/api/license-check.ts","3512","","bar0meter","March 27th 2025, 4:10:49 am","March 27th 2025, 4:10:49 am" +"When working with strongly typed responses in TypeScript (such as with axios.get<{values: SomeType[]}>), nullish coalescing operators (`??`) or logical OR (`||`) fallbacks to empty arrays are often redundant when there's already appropriate error handling in place with try/catch blocks.","mono","coderabbitHandler/src/providers/bitbucketProvider.ts","3695","","helizaga","March 27th 2025, 7:15:56 pm","March 27th 2025, 7:15:56 pm" +"Debug level logging of complete response data is acceptable for internal authentication flow troubleshooting in the AzureProvider class.","mono","coderabbitHandler/src/providers/azureProvider.ts","3695","","helizaga","March 27th 2025, 7:46:16 pm","March 27th 2025, 7:46:16 pm" +"When TypeScript typing ensures a property will be present (like an array in an API response) and the linter confirms it with ""always truthy"" warnings, fallback values with nullish coalescing operators (`?? []`) or logical OR (`|| []`) are unnecessary and can be safely removed.","mono","coderabbitHandler/src/providers/bitbucketProvider.ts","3695","","helizaga","March 27th 2025, 7:17:21 pm","March 27th 2025, 7:17:21 pm" +"In the GitlabProvider.updateOrganizationMemberCount method, memberCount cannot be null when reaching the shouldUpdateMemberCount conditions because for USER scope it's explicitly set to 1, and for ORGANIZATION scope the function returns early if the fetch fails.","mono","coderabbitHandler/src/providers/gitlabProvider.ts","3695","","helizaga","March 27th 2025, 7:11:38 pm","March 27th 2025, 7:11:38 pm" +"In the AzureDevopsReviewTask class, the AzureDevOpsAuthor TypeScript interface guarantees that displayName, uniqueName, and id properties exist and are strings, making nullish coalescing operators unnecessary when accessing these properties.","mono","coderabbitHandler/src/review/azureDevopsReviewTask.ts","3695","","helizaga","March 27th 2025, 7:14:45 pm","March 27th 2025, 7:14:45 pm" +"In TypeScript-typed axios responses (e.g., `axios.get<{ values: SomeType[] }>(...)`), properties explicitly defined as arrays in the type definition are guaranteed to exist as arrays. This makes fallbacks to empty arrays (like `?? []` or `|| []`) unnecessary and can trigger ESLint's ""no-unnecessary-condition"" rule.","mono","coderabbitHandler/src/providers/bitbucketProvider.ts","3695","","helizaga","March 27th 2025, 7:17:17 pm","March 27th 2025, 7:17:17 pm" +"In Node.js execFile function, the callback signature is (error, stdout, stderr) => void, where the first parameter is the error object (or null if no error occurred), the second parameter is stdout content, and the third parameter is stderr content.","mono","apps/indexer/src/scip/impl/python.test.ts","3594","","recrsn","March 28th 2025, 5:31:50 am","March 28th 2025, 5:31:50 am" +"Error handling for empty Python directories in the scip-python indexer is not needed according to the project requirements.","mono","apps/indexer/src/scip/impl/python.ts","3594","","recrsn","March 28th 2025, 5:30:57 am","March 28th 2025, 5:30:57 am" +"In the LanguageToolConfigSchema, properties like enabled_rules, enabled_categories, disabled_rules, and disabled_categories are all defined with default empty arrays, making optional chaining unnecessary when accessing their length property.","mono","pr-reviewer-saas/src/tools/languagetool/languagetool.ts","3717","","helizaga","March 28th 2025, 4:22:57 pm","March 28th 2025, 4:22:57 pm" +"In the ast-grep tool implementation, both `rule_dirs` and `util_dirs` properties in the `AstGrepConfiguration` interface have default empty arrays set in the schema, making explicit fallbacks using the optional chaining operator (`?.`) unnecessary.","mono","pr-reviewer-saas/src/tools/ast-grep/command.ts","3717","","helizaga","March 28th 2025, 4:21:36 pm","March 28th 2025, 4:21:36 pm" +"When replacing TypeScript enums with const objects and type aliases, use proper formatting with line breaks and parentheses: `export type TypeName = (typeof TypeName)[keyof typeof TypeName]` instead of `export type TypeName = typeof TypeName[keyof typeof TypeName]`.","mono","pr-reviewer-saas/src/lancedb/embedding/provider.ts","3151","","NatoBoram","March 28th 2025, 4:28:02 pm","March 28th 2025, 4:28:02 pm" +"When `hasOrganization` is false in the context object, TypeScript guarantees that the context is of type `SelfHostedContext` with a non-null `selfHostedInstance` property, making runtime checks for `ctx.selfHostedInstance` redundant in conditional statements that already check `!ctx.hasOrganization`.","mono","pr-reviewer-saas/src/api/utils.ts","3717","","helizaga","March 28th 2025, 4:13:43 pm","March 28th 2025, 4:13:43 pm" +"In the codebase, when `hasOrganization` is false in the context object, TypeScript guarantees that the context is of type `SelfHostedContext` which requires a non-null `selfHostedInstance` property. This is enforced by the type system through discriminated unions and the implementation of `createContext()`, making runtime checks for `ctx.selfHostedInstance` redundant when `!ctx.hasOrganization` is already checked.","mono","pr-reviewer-saas/src/api/utils.ts","3717","","helizaga","March 28th 2025, 4:13:43 pm","March 28th 2025, 4:13:43 pm" +"In the codebase, Context is a discriminated union type (OrganizationExists | SelfHostedContext) with hasOrganization as the discriminator. When hasOrganization is false, TypeScript narrows the type to SelfHostedContext, which requires a non-null selfHostedInstance property. The createContext() implementation enforces this contract at runtime, making additional null checks redundant when the code already checks !ctx.hasOrganization.","mono","pr-reviewer-saas/src/api/utils.ts","3717","","helizaga","March 28th 2025, 4:13:43 pm","March 28th 2025, 4:13:43 pm" +"When hasOrganization is false in the Context object, the context is guaranteed to be of type SelfHostedContext, which includes a non-optional selfHostedInstance property. This is enforced by the TypeScript type system in the createContext function, making null checks on selfHostedInstance redundant in this case.","mono","pr-reviewer-saas/src/api/utils.ts","3717","","helizaga","March 28th 2025, 4:12:11 pm","March 28th 2025, 4:12:11 pm" +"When hasOrganization is false in the Context object, the context is guaranteed to be of type SelfHostedContext, which includes a non-optional selfHostedInstance property. This is enforced by the TypeScript type system in the createContext function, making null checks on selfHostedInstance redundant in this case.","mono","pr-reviewer-saas/src/api/utils.ts","3717","","helizaga","March 28th 2025, 4:12:11 pm","March 28th 2025, 4:12:11 pm" +"In the ast-grep tool implementation, both `rule_dirs` and `util_dirs` properties in the `AstGrepConfiguration` interface have default empty arrays set in the schema, making explicit fallbacks using the nullish coalescing operator (`?? []`) unnecessary.","mono","pr-reviewer-saas/src/tools/ast-grep/config.ts","3717","","helizaga","March 28th 2025, 4:19:23 pm","March 28th 2025, 4:19:23 pm" +"In the ast-grep tool implementation, the `astgrepConfiguration` parameter in `installPackages()` is expected to be defined by the caller, and the schema ensures that properties like `packages` (array) and `essential_rules` (boolean) have default values, making null checks on the parameter itself unnecessary.","mono","pr-reviewer-saas/src/tools/ast-grep/packages.ts","3717","","helizaga","March 28th 2025, 4:18:03 pm","March 28th 2025, 4:18:03 pm" +"In the LanguageTool configuration schema, both `enabled_rules` and `enabled_categories` are always defined with default values of empty arrays, eliminating the need for null checks when accessing their length property.","mono","pr-reviewer-saas/src/tools/languagetool/languagetool.ts","3717","","helizaga","March 28th 2025, 4:22:26 pm","March 28th 2025, 4:22:26 pm" +"The syntax `import type { ... } from ""..."" with { ""resolution-mode"": ""require"" }` is valid and necessary in TypeScript when importing types from ESM modules into CommonJS modules. This construct should not be flagged as an issue despite some static analysis tools incorrectly reporting it as an error.","mono","vscode-extension/src/trpc.ts","3727","","ankitjena","March 31st 2025, 4:44:42 am","March 31st 2025, 4:44:42 am" +"The file `vscode-extension/src/typings/git.ts` contains TypeScript definitions copied from external Microsoft VS Code Git extension API, and should not be modified to follow different TypeScript patterns (like replacing enums with const objects) to maintain compatibility.","mono","vscode-extension/src/typings/git.ts","3727","","ankitjena","March 31st 2025, 5:15:03 am","March 31st 2025, 5:15:03 am" +"The file `vscode-extension/webview/src/mocks/fakeReviews.ts` should be refactored to use factory functions for creating mock reviews instead of verbose object literals. This approach would make the mock data more maintainable and easier to customize for different test scenarios. Factory functions like `createMockCommit()`, `createMockBranch()`, `createMockFileReview()`, and `createMockReview()` would significantly reduce code duplication and improve readability.","mono","vscode-extension/webview/src/mocks/fakeReviews.ts","3727","","ankitjena","March 31st 2025, 6:29:33 am","March 31st 2025, 6:29:33 am" +"In the `getPrUrl` function in `pr-reviewer-saas/src/event-client/base-extension-client.ts`, the `host` parameter is always present and is restricted to specific string literals ('cursor', 'other', 'vscode', 'windsurf'), so no fallback value is needed.","mono","pr-reviewer-saas/src/event-client/base-extension-client.ts","4488","","aquibbaig","May 8th 2025, 1:02:53 pm","May 8th 2025, 1:02:53 pm" +"For restructuring/modularization PRs, respect the intended scope of the changes. When a PR is focused on file-level restructuring (like moving route handlers to separate files), don't suggest changing the implementation details within the handlers themselves unless explicitly requested.","mono","pr-reviewer-saas/src/routers/reporting.ts","3816","","recrsn","April 2nd 2025, 2:31:54 pm","April 2nd 2025, 2:31:54 pm" +"The code in the repository is designed to handle both synchronous (like in GitHub client) and asynchronous (like in GitLab and Azure clients) implementations of the `providerOrgId` property, using patterns like awaiting values and Promise.resolve() to normalize return types.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","3784","","helizaga","April 2nd 2025, 5:55:08 pm","April 2nd 2025, 5:55:08 pm" +"The code in the repository is designed to handle both synchronous (like in GitHub client) and asynchronous (like in GitLab and Azure clients) implementations of the `providerOrgId` property, using patterns like awaiting values and type checking to normalize return types.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","3784","","helizaga","April 2nd 2025, 5:55:08 pm","April 2nd 2025, 5:55:08 pm" +"In Prisma schema files, fields defined with `@default(uuid())` will have UUID auto-generation handled by Prisma at the ORM level, even if the raw SQL migration doesn't explicitly include a DEFAULT clause.","mono","apps/db-api-server/prisma/migrations/20250509073337_extension_schema_tables/migration.sql","4488","","aquibbaig","May 9th 2025, 4:12:44 am","May 9th 2025, 4:12:44 am" +"In Prisma schema files, fields defined with `@default(uuid())` will have UUID auto-generation handled by Prisma at the ORM level, even if the raw SQL migration doesn't explicitly include a DEFAULT clause. When reviewing Prisma migrations, both the migration SQL and the Prisma schema should be considered to understand the complete behavior.","mono","apps/db-api-server/prisma/migrations/20250509073337_extension_schema_tables/migration.sql","4488","","aquibbaig","May 9th 2025, 4:12:44 am","May 9th 2025, 4:12:44 am" +"In the tenant ID flow for self-hosted CodeRabbit instances (handleTenantIdUser function), defaulting to ""cr_admin"" role when cr_role_id is not found is intentional and necessary because only one user can log in at a time in self-hosted instances, and that user requires administrative privileges.","mono","coderabbitHandler/src/trpc.ts","4490","","bar0meter","May 9th 2025, 7:57:30 am","May 9th 2025, 7:57:30 am" +"The _getTable method in abstract.ts is written by the CodeRabbit team and using it directly in the verification.ts file is acceptable despite the underscore prefix that typically indicates a private method.","mono","pr-reviewer-saas/src/knowledge-base/function-index/verification.ts","4258","","averyjennings","May 9th 2025, 4:28:48 pm","May 9th 2025, 4:28:48 pm" +"In CodeRabbit's codebase, methods prefixed with underscore like `_getTable()` in abstract.ts are internal methods that are acceptable to use directly within the codebase, despite the naming convention typically suggesting private implementation details.","mono","pr-reviewer-saas/src/knowledge-base/function-index/verification.ts","4258","","averyjennings","May 9th 2025, 4:28:48 pm","May 9th 2025, 4:28:48 pm" +"In the CodeRabbit codebase, the `_getTable()` method in `AbstractLanceTextIndex` is intentionally used directly by other modules like verification.ts, despite having an underscore prefix that typically indicates a private method. This is an established pattern in the codebase.","mono","pr-reviewer-saas/src/knowledge-base/function-index/verification.ts","4258","","averyjennings","May 9th 2025, 4:28:48 pm","May 9th 2025, 4:28:48 pm" +"The `findXmlTagContents` function in CodeRabbit treats everything between tags (like `` and ``) as a plain text blob, not as nested XML/HTML. Adding CDATA sections would make those markers visible in GitHub comments since GitHub strips the tag but leaves the markers.","mono","pr-reviewer-saas/src/agent-flow/components/checkbox-utg-copyable-edits.ts","4506","","helizaga","May 9th 2025, 10:27:02 pm","May 9th 2025, 10:27:02 pm" +"When accessing properties that exist at runtime but aren't defined in TypeScript interfaces (like the `draft` property in BitbucketCloudPullRequest), use a type-safe pattern with Record instead of any (e.g., `Boolean('propertyName' in obj && (obj as Record).propertyName)`). Avoid using `as any` as it causes ""Unsafe assignment of an `any` value"" errors in strict TypeScript mode.","mono","pr-reviewer-saas/src/platform-client/bitbucket_cloud_utils.ts","3993","","alexcoderabbitai","April 11th 2025, 9:05:35 am","April 11th 2025, 9:05:35 am" +"For Chargebee API callbacks in the ChargebeeService class, result will always be present with the expected structure when error is null, so null/undefined checks before accessing result.subscription properties are not necessary.","mono","coderabbitHandler/src/services/chargebee/ChargebeeService.ts","4046","","sleep-404","April 14th 2025, 7:12:57 am","April 14th 2025, 7:12:57 am" +"The ToolOutput interface has a required findings property (Finding[]) that can't be null or undefined, making additional null checks unnecessary when accessing toolOutput.findings.","mono","pr-reviewer-saas/src/agent-flow/utils.ts","4020","","helizaga","April 14th 2025, 12:31:57 pm","April 14th 2025, 12:31:57 pm" +"When adding a new tool to the codebase, the following 15 files need to be updated: +1. UI schema files (updated by running `pnpm run build` inside coderabbit-ui) +2. docker/pr-reviewer-saas/Dockerfile (to install necessary tools) +3. packages/schemas/src/configuration/index.ts +4. packages/schemas/src/configuration/schema.ts +5. packages/schemas/src/configuration/TOOLNAME.ts (add new file) +6. packages/schemas/src/constants/review-tool-versions +7. packages/schemas/src/constants/review-tool-versions.ts +8. pr-reviewer-saas/src/comments/commenter.ts +9. pr-reviewer-saas/src/tools/common.ts +10. pr-reviewer-saas/src/tools/index.ts +11. pr-reviewer-saas/src/tools/run-tools.ts +12. pr-reviewer-saas/src/tools/TOOLNAME/ (add new folder) +13. pr-reviewer-saas/src/utils/node.ts +14. pr-reviewer-saas/src/tools/TOOLNAME/command.ts +15. pr-reviewer-saas/src/tools/TOOLNAME/interface.ts","mono","","","https://github.com/coderabbitai/mono/pull/4096","alexcoderabbitai","April 15th 2025, 5:22:01 pm","April 15th 2025, 5:22:01 pm" +"The auto-linting system doesn't need special handling for renamed files because static analysis tools only care about current file content, not file history or path changes. For linting purposes, new and renamed files are treated identically.","mono","pr-reviewer-saas/src/agent-flow/utils.ts","4137","","helizaga","April 16th 2025, 4:33:53 pm","April 16th 2025, 4:33:53 pm" +"When reviewing Markdown documents, using `1.` for all items in an ordered list is a valid and common practice. The rendered HTML will automatically show sequential numbers, and this approach makes maintenance easier when items need to be reordered.","coderabbit-docs","","","https://github.com/coderabbitai/coderabbit-docs/pull/284","jmacdotorg","April 16th 2025, 5:25:12 pm","April 16th 2025, 5:25:12 pm" +"When reviewing Markdown documents, using `1.` for all items in an ordered list is a valid and common practice. The rendered HTML will automatically show sequential numbers, and this approach makes maintenance easier when items need to be reordered.","coderabbit-docs","","","https://github.com/coderabbitai/coderabbit-docs/pull/284","jmacdotorg","April 16th 2025, 5:25:12 pm","April 16th 2025, 5:25:12 pm" +"When verifying asset files referenced in documentation, check if they are being added as part of the current PR using `git diff --name-only origin/main` rather than just checking if they exist in the current filesystem.","coderabbit-docs","docs/getting-started/quickstart.md","284","","jmacdotorg","April 17th 2025, 10:50:19 am","April 17th 2025, 10:50:19 am" +"The useEffect that handles Azure DevOps authentication in the Login component should maintain a minimal dependency array (`[codeParameter, stateParameter, trialParams]`) to prevent multiple initializations that can cause the Azure client to lose context and break the authentication flow.","mono","coderabbit-ui/src/pages/Login/index.tsx","4151","","aquibbaig","April 18th 2025, 1:51:08 am","April 18th 2025, 1:51:08 am" +"The organization and repository objects passed to logger.info in coderabbitHandler/src/review/baseReviewTask.ts don't contain PII according to the developer, so logging the full objects is acceptable in this specific case.","mono","coderabbitHandler/src/review/baseReviewTask.ts","3875","","karan925","April 18th 2025, 6:50:04 pm","April 18th 2025, 6:50:04 pm" +"In the CodeRabbit codebase, LZString decompression failures should be allowed to propagate as errors rather than being caught and handled as fallbacks. This is an intentional design decision.","mono","pr-reviewer-saas/src/comments/internal-state/internal-state.ts","4178","","recrsn","May 11th 2025, 1:01:34 pm","May 11th 2025, 1:01:34 pm" +"The rabbits-lab repository uses Dependabot, which is configured in .github/dependabot.yaml. For the README badge, static badge services like Shields.io or Badgen are recommended since GitHub doesn't provide an official Dependabot badge endpoint.","rabbits-lab","README.md","39","","NatoBoram","April 19th 2025, 3:18:23 pm","April 19th 2025, 3:18:23 pm" +"The team has encountered ""Type instantiation is excessively deep"" TypeScript errors in the `fetchAndCheckWebhooks` function when mapping database records. After attempting alternatives, they've temporarily addressed it with `@ts-expect-error` and a TODO comment until the underlying type complexity can be properly refactored.","mono","coderabbitHandler/src/services/repositories.service.ts","4176","","helizaga","April 20th 2025, 4:54:30 am","April 20th 2025, 4:54:30 am" +"Personally Identifiable Information (PII) like email addresses, usernames, and names should not be included in error logs to maintain user privacy and security. When logging errors related to user data, use non-identifying information or boolean flags (like hasEmail) instead.","mono","coderabbit-ui/src/services/auth/user.ts","4151","","aquibbaig","April 21st 2025, 10:17:30 pm","April 21st 2025, 10:17:30 pm" +"In the CodeRabbit codebase, the WebSocket connection authentication uses the raw access token directly in the Authorization header (without the ""Bearer "" prefix) because the backend expects it that way due to historical implementation reasons. This is intentional although it doesn't follow the standard Bearer token format.","mono","vscode-extension/src/trpc.ts","4195","","recrsn","April 22nd 2025, 5:32:24 am","April 22nd 2025, 5:32:24 am" +"The use of `as any` casting in the tRPC WebSocket client implementation is acceptable due to tRPC's hardcoded type expectations that make it difficult to provide properly typed adapters.","mono","vscode-extension/src/trpc.ts","4195","","recrsn","April 22nd 2025, 5:32:06 am","April 22nd 2025, 5:32:06 am" +"In CodeRabbit's production environment, both the `pr-reviewer-saas` and `ide-extension-reviewer` services in Google Cloud Run use the same Docker image (`gcr.io/coderabbitprod/pr-reviewer-saas`), despite having different service names.","mono",".github/workflows/deploy-reviewer-prod.yaml","4197","","yashshanker","April 22nd 2025, 10:36:46 am","April 22nd 2025, 10:36:46 am" +"Only GitLab users with Owner access level (50) should be able to set/update GitLab user tokens, not Maintainers or other roles.","mono","coderabbitHandler/src/utils/utils.ts","4129","","sleep-404","April 23rd 2025, 3:05:03 am","April 23rd 2025, 3:05:03 am" +"In the GitLab permissions verification flow, errors caught in the `verifyGitlabPermissions` function in `coderabbitHandler/src/utils/utils.ts` are logged for internal investigation purposes only and are not meant to be displayed to end users. The simplified error response without a detailed message is intentional.","mono","coderabbitHandler/src/utils/utils.ts","4129","","sleep-404","April 23rd 2025, 5:44:55 am","April 23rd 2025, 5:44:55 am" +"Codegen instructions in CodeRabbit should be generated from raw comment text (before post-processing) rather than processed text, as it needs to work with the original unmodified content.","mono","pr-reviewer-saas/src/review/review-filehunks.ts","4211","","recrsn","April 23rd 2025, 10:25:56 pm","April 23rd 2025, 10:25:56 pm" +"In documentation following the Google developer documentation style guide, bullet-list items that are complete sentences should end with periods, while items that are verbless noun phrases should not have periods. This is not an inconsistency but an intentional style choice.","coderabbit-docs","docs/overview/introduction.md","297","","jmacdotorg","April 24th 2025, 12:02:45 pm","April 24th 2025, 12:02:45 pm" +"When a code improvement is identified during a PR review of a structural refactoring, create a follow-up issue rather than suggesting implementation changes in the same PR. This keeps refactoring PRs clean and focused on structural changes only.","mono","pr-reviewer-saas/src/bootstrap/primary.ts","4136","","recrsn","April 25th 2025, 12:43:22 am","April 25th 2025, 12:43:22 am" +"When doing structural refactoring (like splitting files or reorganizing code), avoid making implementation changes in the same PR to keep the refactoring clean and focused.","mono","pr-reviewer-saas/src/bootstrap/diagnostics.ts","4136","","recrsn","April 25th 2025, 12:41:42 am","April 25th 2025, 12:41:42 am" +"During structural refactoring (moving code between files/modules), don't introduce additional code changes such as breaking down functions or improving implementations. Keep the code functionally identical to minimize the risk of introducing bugs and to make verification easier. Additional improvements should be done in follow-up PRs.","mono","pr-reviewer-saas/src/bootstrap/diagnostics.ts","4136","","recrsn","April 25th 2025, 12:41:49 am","April 25th 2025, 12:41:49 am" +"When a code improvement is identified during a PR review of a structural refactoring, create a follow-up issue rather than suggesting implementation changes in the same PR. This keeps refactoring PRs clean and focused on structural changes only.","mono","pr-reviewer-saas/src/bootstrap/primary.ts","4136","","recrsn","April 25th 2025, 12:43:22 am","April 25th 2025, 12:43:22 am" +"In the CommentQueue service, retryCount is only incremented when exceptions occur in the catch block, not for logical failures like when findSnippetInNewContent returns null.","mono","vscode-extension/src/services/comment-queue.ts","4249","","ankitjena","April 28th 2025, 5:22:20 am","April 28th 2025, 5:22:20 am" +"In VSCode extensions, there is no `vscode.workspace.save(fileUri)` API. The correct way to save a specific document is to first get the TextDocument object using `vscode.workspace.openTextDocument(fileUri)` and then call `save()` on that document object.","mono","vscode-extension/src/commands/applyDiffChanges.ts","4249","","ankitjena","April 28th 2025, 5:23:34 am","April 28th 2025, 5:23:34 am" +"The `vscode.workspace.save(fileUri)` is a valid VSCode API that saves the editor identified by the given resource. It returns a Thenable that resolves to the URI of the saved resource or undefined if unsuccessful.","mono","vscode-extension/src/commands/applyDiffChanges.ts","4249","","ankitjena","April 28th 2025, 5:23:34 am","April 28th 2025, 5:23:34 am" +"Error handling in the VSCode extension should be implemented inside functions themselves rather than at call sites, to prevent errors from propagating up the call stack. Functions should handle their own errors with internal try-catch blocks.","mono","vscode-extension/src/extension.ts","4249","","ankitjena","April 28th 2025, 6:44:17 am","April 28th 2025, 6:44:17 am" +"In vscode-extension/src/trpc.ts, the WebSocket client sets the Authorization header without the ""Bearer "" prefix (unlike httpBatchLink which correctly uses ""Bearer "" format). This inconsistency has been acknowledged as technical debt to be addressed in a future update.","mono","vscode-extension/src/trpc.ts","4314","","ankitjena","April 30th 2025, 4:17:03 am","April 30th 2025, 4:17:03 am" +"In the `applyOptOut` function in `pr-reviewer-saas/src/utils/construct.ts`, setting `logger.level = ""error""` globally is intentional when a user opts out, as it's meant to reduce logging across the entire connection for users who have opted out of certain logger features.","mono","pr-reviewer-saas/src/utils/construct.ts","4328","","NatoBoram","April 30th 2025, 1:45:12 pm","April 30th 2025, 1:45:12 pm" +"In TypeScript, readonly properties can be assigned within a class constructor, which is by design to allow initializing readonly fields with dynamic values. This is valid and doesn't cause a TypeScript error.","mono","pr-reviewer-saas/src/event-client/base-extension-client.ts","4549","","ankitjena","May 12th 2025, 2:24:38 pm","May 12th 2025, 2:24:38 pm" +"The SQL string construction in deleteRecordsInBatches is a workaround for limitations in the LanceDB API, which requires constructing SQL-like queries manually when working with batches of records.","mono","pr-reviewer-saas/src/knowledge-base/lancedb/abstract.ts","4560","","averyjennings","May 12th 2025, 3:50:59 pm","May 12th 2025, 3:50:59 pm" +"`as const` is a const assertion in TypeScript that narrows types to their most specific literal types and is not the same as type assertions like `as Type`. Const assertions (`as const`) are valid and don't violate coding guidelines, while type assertions should be avoided in favor of type guards or adapters.","mono","pr-reviewer-saas/src/comments/commenter.ts","5108","","NatoBoram","June 5th 2025, 5:45:25 pm","June 5th 2025, 5:45:25 pm" +"Luacheck output format follows the pattern `filename:line:column: (code) message` as confirmed by direct testing in the container. The regex `/^\s+(.+?):(\d+):(\d+): \((W\d+|E\d+)\) (.+)$/` correctly parses this output format, capturing the line number, column, error code, and message.","mono","pr-reviewer-saas/src/tools/luacheck/command.ts","4654","","alexcoderabbitai","May 16th 2025, 1:38:20 pm","May 16th 2025, 1:38:20 pm" +"The pattern `cd '${GIT_PATH}'` in command construction is a standard approach used in all tooling command files and should not be flagged during code reviews.","mono","pr-reviewer-saas/src/tools/luacheck/command.ts","4654","","alexcoderabbitai","May 16th 2025, 4:38:18 pm","May 16th 2025, 4:38:18 pm" +"The `tsgo` command is provided by the `@typescript/native-preview` package, not a separate `tsgo` package.","e2e-reviewer","package.json","50","","NatoBoram","June 5th 2025, 9:35:10 pm","June 5th 2025, 9:35:10 pm" +"Avoid predicting CI failures and let the CI process handle validation of build dependencies and scripts.","e2e-reviewer","package.json","50","","NatoBoram","June 5th 2025, 9:35:10 pm","June 5th 2025, 9:35:10 pm" +"The organization_user table is assumed to be empty as of PR #4694, making it safe to add required columns without a default value or data migration.","mono","apps/db-api-server/prisma/migrations/20250519111518_update_rbac_schema/migration.sql","4694","","bar0meter","May 19th 2025, 8:47:46 am","May 19th 2025, 8:47:46 am" +"When using Zod's `.toJSON()` method with complex schemas, always provide parameters like `{ name: ""SchemaName"", $refStrategy: ""none"" }` to prevent TypeScript errors with excessive type instantiation (TS2589) and type incompatibility issues (TS2345).","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"When working with Zod schemas and JSON serialization, always use `zodToJsonSchema()` with explicit `name` and `$refStrategy: ""none""` options, and avoid multiple `JSON.stringify()` calls on the same schema object to prevent TypeScript errors like ""Type instantiation is excessively deep"" (TS2589) and ZodEffects/ZodType incompatibility issues (TS2345).","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"When working with complex Zod schemas, avoid calling `JSON.stringify()` on the same schema object multiple times within a function. Instead, stringify it once and store the result in a variable for reuse to prevent TypeScript errors like ""Type instantiation is excessively deep"" (TS2589).","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"When working with complex Zod schemas and JSON serialization, always stringify the schema object once and store the result in a variable for reuse throughout the function/method, rather than calling `JSON.stringify()` on the same schema object multiple times. This prevents TypeScript errors like ""Type instantiation is excessively deep and possibly infinite"" (TS2589) and type incompatibility issues (TS2345).","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"When using Zod schemas with complex type structures, avoid passing the same schema object to `JSON.stringify()` multiple times in the same function. Instead, stringify the schema once and store the result in a variable to reuse throughout the function. This prevents TypeScript errors like ""Type instantiation is excessively deep and possibly infinite"" (TS2589).","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"When working with complex Zod schemas in TypeScript, even a single `JSON.stringify()` call on a schema processed with `zodToJsonSchema()` can trigger ""Type instantiation is excessively deep"" errors (TS2589). The best practice is to stringify the schema once immediately after creating it and store the result in a variable, then reuse that variable instead of stringifying the schema object again.","mono","","","https://github.com/coderabbitai/mono/pull/4697","alexcoderabbitai","May 19th 2025, 12:54:51 pm","May 19th 2025, 12:54:51 pm" +"In the coderabbit-ui codebase, const-bound arrow functions are the preferred style for utility functions within modules, especially when hoisting and dynamic `this` binding aren't needed. Function declarations should not be suggested as replacements for arrow functions unless there's a specific technical reason.","mono","coderabbit-ui/src/pages/learnings/utils.ts","4724","","helizaga","May 19th 2025, 11:59:07 pm","May 19th 2025, 11:59:07 pm" +"Adding `as const` to Zod schemas (e.g., z.object()) is unnecessary as they already return immutable ZodObject instances. The `as const` assertion only narrows TypeScript literal types without adding validation safety.","mono","coderabbit-ui/src/pages/learnings/utils.ts","4724","","helizaga","May 19th 2025, 11:59:07 pm","May 19th 2025, 11:59:07 pm" +"In the ArrayFieldTemplate component and similar schema-driven components, useMemo dependency arrays intentionally exclude props like title, formData, and schema-derived values because these remain stable during the component's lifecycle (schema changes cause unmounting/remounting rather than prop updates). Adding these dependencies would trigger unnecessary recalculations on user input, causing performance issues.","mono","coderabbit-ui/src/pages/Settings/Configuration/schemaForm/templates/ArrayFieldTemplate.tsx","4724","","helizaga","May 19th 2025, 11:59:43 pm","May 19th 2025, 11:59:43 pm" +"In React useEffect hooks that update state which is also read within the same effect (like updating a config context after reading from it), it's sometimes appropriate to intentionally limit the dependency array to avoid feedback loops. In the ArrayFieldTemplate component, only including `text` in the dependency array is correct because the effect is designed to sync from local text state to config, not react to config changes.","mono","coderabbit-ui/src/pages/Settings/Configuration/schemaForm/templates/ArrayFieldTemplate.tsx","4724","","helizaga","May 20th 2025, 12:00:02 am","May 20th 2025, 12:00:02 am" +"The evaluation feature in this codebase is designed with a double-gate pattern: it requires both the ENABLE_EVAL environment variable to be true AND an explicit request with an 'eval' key in the body to trigger. This makes it safe to have ENABLE_EVAL=true by default in the .env file since the evaluation won't run unless specifically requested.","e2e-reviewer",".env","45","","nehal-a2z","May 20th 2025, 3:15:49 am","May 20th 2025, 3:15:49 am" +"The evaluation feature in this codebase is designed with a double-gate pattern: it requires both the ENABLE_EVAL environment variable to be true AND an explicit request with an 'eval' key in the body to trigger. This makes it safe to have ENABLE_EVAL=true by default in the .env file since the evaluation won't run unless specifically requested.","e2e-reviewer",".env","45","","nehal-a2z","May 20th 2025, 3:15:49 am","May 20th 2025, 3:15:49 am" +"In TypeScript classes, eslint-disable for @typescript-eslint/class-methods-use-this is justified when a method is required by inheritance from an abstract class or interface implementation, even if the method implementation doesn't access `this`. The method signature is constrained by the parent class or interface contract.","mono","vscode-extension/src/services/fix-with-ai/extension/cline.ts","5116","","recrsn","June 7th 2025, 2:57:17 pm","June 7th 2025, 2:57:17 pm" +"Type assertions are acceptable when dealing with external APIs in generic classes where the type parameter T cannot be determined at runtime, such as when working with VSCode extension exports where each concrete implementation knows the expected API structure.","mono","vscode-extension/src/services/fix-with-ai/extension.ts","5116","","recrsn","June 7th 2025, 2:59:25 pm","June 7th 2025, 2:59:25 pm" +"In VSCode extension integrations like Cline (`saoudrizwan.claude-dev`), type assertions such as `cline.exports as ClineAPI` are acceptable when the interface can be guaranteed, as the extension API contract is known and stable.","mono","vscode-extension/src/commands/handoffToAgent.ts","5116","","recrsn","June 6th 2025, 1:55:46 am","June 6th 2025, 1:55:46 am" +"In VS Code extensions, when integrating with other extensions, it's valid and necessary to call commands using those extensions' command IDs (e.g., ""claude-dev.SidebarProvider.focus"" for the Cline extension) rather than using your own extension's command prefix pattern.","mono","vscode-extension/src/commands/handoffToAgent.ts","5116","","recrsn","June 6th 2025, 1:56:46 am","June 6th 2025, 1:56:46 am" +"In the reporting feature, data sources information is embedded within the prompt string rather than being sent as a separate field in the API payload.","mono","coderabbit-ui/src/pages/Settings/CustomReporting/NewRecurringReport.tsx","4741","","helizaga","May 20th 2025, 6:18:16 pm","May 20th 2025, 6:18:16 pm" +"For a bot to interact with CodeRabbit, it must explicitly mention `@coderabbitai` AND be on the `ALLOWED_BOTS` list in `issue-comments.ts`. Unallowed bots receive a ""Skipped: Cannot respond to another bot"" message.","mono","","","https://github.com/coderabbitai/mono/pull/4750","helizaga","May 21st 2025, 2:30:46 pm","May 21st 2025, 2:30:46 pm" +"CodeRabbit has rate limits per user/org and PR-level concurrency locks in Aperture that prevent runaway message storms, providing an additional safeguard against recursive bot interactions.","mono","","","https://github.com/coderabbitai/mono/pull/4750","helizaga","May 21st 2025, 2:30:46 pm","May 21st 2025, 2:30:46 pm" +"In the file `pr-reviewer-saas/src/knowledge-base/guidelines-index.ts`, using `@ts-expect-error` for deep instantiation when parsing guidelines with `guidelineFileSchema.safeParse(file.guidelines)` is acceptable and should not be flagged.","mono","pr-reviewer-saas/src/knowledge-base/guidelines-index.ts","4226","","ganeshpatro321","May 22nd 2025, 4:02:47 am","May 22nd 2025, 4:02:47 am" +"The file `coderabbitHandler/src/services/backfill_repository_posthog.ts` is a temporary file, so refactoring suggestions for code quality improvements can be skipped.","mono","coderabbitHandler/src/services/backfill_repository_posthog.ts","5134","","ParthGandhi","June 7th 2025, 6:11:32 am","June 7th 2025, 6:11:32 am" +"When dealing with external API response types that are not designed to be reused, inline object type annotations in TypeScript interfaces are acceptable and preferred over extracting them into separate named interfaces, as they reflect the single-use nature of the API response structure.","mono","pr-reviewer-saas/src/platform-client/types.ts","5142","","recrsn","June 8th 2025, 10:02:50 am","June 8th 2025, 10:02:50 am" +"For Azure DevOps authentication in the Login component, it's necessary to clear the MSAL cache (via azurePublicClientApp.initialize() and handleRedirectPromise()) when the provider changes to AZURE_DEVOPS. This prevents authentication issues from stale credentials that might be stored in sessionStorage and cookies, ensuring a clean login experience when users switch between providers.","mono","coderabbit-ui/src/pages/Login/index.tsx","4810","","aquibbaig","May 22nd 2025, 2:53:56 pm","May 22nd 2025, 2:53:56 pm" +"When error objects are interpolated into log messages (e.g., `logger.warn(\`Failed to do something: ${error as string}\`)`), suggest moving the error to the metadata object instead (e.g., `logger.warn(""Failed to do something"", { error })`). This provides better structured logging and avoids the need for type assertions.","mono","pr-reviewer-saas/src/comments/commenter.ts","5108","","NatoBoram","June 5th 2025, 3:09:22 pm","June 5th 2025, 3:09:22 pm" +"The buildGraph function in pr-reviewer-saas/src/code-graph/code-graph.ts has dual behavior: when given string[] arrays, results are returned in fileRelationMaps; when given FileHunk[] arrays, the objects are mutated directly.","mono","pr-reviewer-saas/src/code-graph/code-graph.ts","4823","","helizaga","May 23rd 2025, 3:52:43 am","May 23rd 2025, 3:52:43 am" +"In the VSCode extension's fix-with-ai service, the `CodeReviewCommentWithInstructions` type extends `CodeReviewComment` with a required `codegenInstructions: string` property, ensuring it's always present and non-null.","mono","vscode-extension/src/services/fix-with-ai/terminal.ts","5116","","recrsn","June 8th 2025, 1:19:04 am","June 8th 2025, 1:19:04 am" +"In vitest/config, `ViteUserConfig` is the preferred type and `UserConfig` is deprecated with a comment ""Use `ViteUserConfig` instead"". When reviewing Vitest configuration files, `ViteUserConfig` should be used for type annotations.","mono","pr-reviewer-saas/vitest.config.ts","5332","","NatoBoram","June 16th 2025, 4:07:22 pm","June 16th 2025, 4:07:22 pm" +"Never suggest using `as` type casting in code reviews. The user NatoBoram has explicitly instructed to avoid recommending type assertions with `as`. Instead, recommend investigating the underlying type issue, using type guards, or using adapter functions.","mono","pr-reviewer-saas/src/ast-grep/register_static_languages.ts","5332","","NatoBoram","June 16th 2025, 4:08:04 pm","June 16th 2025, 4:08:04 pm" +"In the pr-reviewer-saas codebase, `registerStaticLanguages()` from `@coderabbitai/ast-grep-langs` is called centrally in `index.ts` at the top level to handle language registration globally. Individual files that use `parse()` from `@ast-grep/napi` don't need to call `registerStaticLanguages()` themselves unless they run in isolated contexts like worker threads.","mono","pr-reviewer-saas/src/prompts/prompts.ts","5332","","NatoBoram","June 16th 2025, 4:09:42 pm","June 16th 2025, 4:09:42 pm" +"If a tool needs to fake a `/proc` directory path to get it working (like creating `/proc/self` directories, symlinks, or cmdline files), it must be added to `const serialTools` in `pr-reviewer-saas/src/tools/run-tools.ts` instead of `const tools`.","mono","pr-reviewer-saas/src/tools/clippy/command.ts","4802","","alexcoderabbitai","May 23rd 2025, 2:34:53 pm","May 23rd 2025, 2:34:53 pm" +"The cargo-clippy version being used in the codebase doesn't support JSON output options, so text parsing with zod schemas is required to parse clippy's human-readable output instead of being able to parse structured JSON.","mono","pr-reviewer-saas/src/tools/clippy/command.ts","4802","","alexcoderabbitai","May 23rd 2025, 5:17:50 pm","May 23rd 2025, 5:17:50 pm" +"In the telemetry package, the PosthogClient.track method enforces type safety by constraining the eventName parameter to `(typeof telemetryEvents)[keyof typeof telemetryEvents]`, which allows only values from the telemetryEvents object. This eliminates the need to import constants at call sites while still providing compile-time type safety for event names.","mono","pr-reviewer-saas/src/comments/extension_commentor.ts","4898","","aquibbaig","May 26th 2025, 3:01:42 am","May 26th 2025, 3:01:42 am" +"`useAuthStore.getState().provider` is guaranteed to return a string (defaults to `""""`) and is never `undefined`, so calling string methods like `.replace()` without a nullish check is safe.","mono","coderabbit-ui/src/services/api/organization.ts","5262","","aquibbaig","June 13th 2025, 4:46:09 am","June 13th 2025, 4:46:09 am" +"In the pr-reviewer-saas codebase, security for shell command execution in the ShellTool is handled through sandboxing rather than command validation/filtering. This means arbitrary shell commands are acceptable to run within the sandboxed environment.","mono","pr-reviewer-saas/src/agents/framework/tools/shell-tool.ts","5178","","recrsn","June 15th 2025, 11:41:36 pm","June 15th 2025, 11:41:36 pm" +"`indicatorType` (singular) is deprecated; the canonical field going forward is `indicatorTypes` (array).","mono","pr-reviewer-saas/src/utils/md_parser.test.ts","5187","","ankitjena","June 13th 2025, 6:19:23 am","June 13th 2025, 6:19:23 am" +"In TypeScript, using `Tool` with an eslint-disable for @typescript-eslint/no-explicit-any is acceptable when creating collections of tools with different generic parameter types, due to TypeScript's lack of use-site variance (unlike Java's wildcards). `Tool` would be too restrictive for polymorphic usage in this scenario.","mono","pr-reviewer-saas/src/agents/framework/tool.ts","5178","","recrsn","June 16th 2025, 12:12:31 am","June 16th 2025, 12:12:31 am" +"When analyzing TypeScript interfaces that extend other interfaces, always check the parent interface definitions to verify inherited fields before flagging missing properties. The `LanceRecord` interface provides the `id: string` field to any extending interfaces.","mono","pr-reviewer-saas/src/knowledge-base/lancedb/metadata/abstract-metadata.ts","5148","","ganeshpatro321","June 9th 2025, 6:39:41 am","June 9th 2025, 6:39:41 am" +"When integrating the Biome tool into CodeRabbit, the interface.ts file in pr-reviewer-saas/src/tools/biome/ directory defines TypeScript interfaces for parsing Biome's JSON output format, including BiomeDiagnostic, BiomeOutput, and BiomeToolOutput interfaces.","mono","","","https://github.com/coderabbitai/mono/pull/6120","nimratcoderabbit","July 21st 2025, 2:08:44 pm","July 21st 2025, 2:08:44 pm" +"In the agent framework Tool architecture, the schema property naming is intentionally different between Tool interface and FunctionTool classes. FunctionTool has a `schema` property (Zod schema) that derives a `parameters` property of type ParametersSchema, while the Tool interface uses `parameters: ParametersSchema` to match the derived format. This separates the validation schema (Zod) from the interface schema (JSON Schema/ParametersSchema).","mono","pr-reviewer-saas/src/agents/framework/README.md","5178","","recrsn","June 16th 2025, 12:48:49 am","June 16th 2025, 12:48:49 am" +"In BigQuery client code, extract query strings and parameters into separate variables before passing them to bigquery.query() for better readability and maintainability. This makes SQL queries easier to read, debug, and modify.","mono","pr-reviewer-saas/src/eval/bigquery-client.ts","4735","","cr-ruhanmuzaffar","May 27th 2025, 2:53:10 am","May 27th 2025, 2:53:10 am" +"The persistUser function in coderabbit-ui/src/services/auth/user.ts takes an optional provider parameter that is used specifically to handle Azure DevOps avatar URL transformations by prefixing them with base64 data URI scheme.","mono","coderabbit-ui/src/components/Nav/useInitializeApp.ts","5262","","aquibbaig","June 16th 2025, 2:29:31 am","June 16th 2025, 2:29:31 am" +"In Vitest, vi.mock() calls are automatically hoisted to the top of the file during compilation, so they execute before any imports regardless of their position in the source code. The order of vi.mock() calls and imports does not matter.","mono","coderabbit-ui/src/components/Nav/tests/NavContainer.test.tsx","5262","","aquibbaig","June 16th 2025, 2:27:59 am","June 16th 2025, 2:27:59 am" +"The `refusal` field is a required field in OpenAI's ChatCompletion.choices[].message type, not optional. It should be set to `null` when there's no refusal from the model.","mono","pr-reviewer-saas/src/ai-client/openai.ts","5345","","helizaga","June 17th 2025, 1:03:34 am","June 17th 2025, 1:03:34 am" +"When reviewing NatoBoram’s TypeScript projects, retain the `.ts` extension in relative import paths because they target runtimes (ts-node, tsx, Deno, Bun, Node’s `--experimental-strip-types`) that execute TypeScript directly and rely on the compiler’s `--rewriteRelativeImportExtensions` for JS output.","ast-grep-langs","src/index.test.ts","2","","NatoBoram","June 13th 2025, 1:56:32 pm","June 13th 2025, 1:56:32 pm" +"Dans Vitest, le premier argument passé au callback d’un test est un contexte contenant plusieurs utilitaires, dont `expect`, qu’il est possible de déstructurer directement : `it(""name"", ({ expect }) => { … })`.","ast-grep-langs","src/index.test.ts","2","","NatoBoram","June 13th 2025, 1:57:23 pm","June 13th 2025, 1:57:23 pm" +"Brakeman is a project-level security scanner for Ruby on Rails applications that should be run once for the entire project, not per file. It scans all Rails files in one execution and returns findings mapped to specific file paths.","mono","pr-reviewer-saas/src/tools/brakeman/command.ts","4934","","alexcoderabbitai","May 27th 2025, 4:19:52 pm","May 27th 2025, 4:19:52 pm" +"The parseDiff function in pr-reviewer-saas/src/review/hunks.ts uses a CommentSource interface that only requires the getCommentsWithinRange method, not the full Commenter interface with getCommentsForPath.","mono","pr-reviewer-saas/src/devtools/summarizer/cli.ts","4989","","recrsn","June 16th 2025, 5:51:32 am","June 16th 2025, 5:51:32 am" +"In the PromptVariantManagerBase class in pr-reviewer-saas, each execution runs in its own sandbox with a fresh instance that gets destroyed after the run completes. This means instance-level caching is safe and won't cause cross-user contamination of experiment bucket assignments.","mono","pr-reviewer-saas/src/prompts/templates/prompt-variant-manager-base.ts","4649","","ccassion","May 27th 2025, 8:49:35 pm","May 27th 2025, 8:49:35 pm" +"The prompt variant manager system uses a sandbox execution model where each instance dies after one execution, making cross-user caching concerns irrelevant.","mono","pr-reviewer-saas/src/prompts/templates/prompt-variant-manager-base.ts","4649","","ccassion","May 27th 2025, 8:54:01 pm","May 27th 2025, 8:54:01 pm" +"In the CodeRabbit configuration schema, `settings.configSettings.knowledge_base.code_guidelines` always exists with a default empty object, and `filePatterns` within it always exists with a default empty array. No optional chaining is needed when accessing these properties as they are guaranteed by the schema defaults.","mono","pr-reviewer-saas/src/knowledge-base/code-guidelines/guidelines-index.ts","4226","","ganeshpatro321","June 17th 2025, 3:08:58 pm","June 17th 2025, 3:08:58 pm" +"In the auth store (useAuthStore), the `provider` field is guaranteed to always be a string type, never null or undefined. The TypeScript interface defines it as `readonly provider: string`, the initialization always returns a string, and all store operations maintain this guarantee. Therefore, calling methods like `.replace()` on the provider field is always safe without null checks.","mono","coderabbit-ui/src/components/Nav/useInitializeApp.ts","5262","","aquibbaig","June 16th 2025, 8:40:38 am","June 16th 2025, 8:40:38 am" +"In apps/db-api-server/src/telemetry.ts, the trackSubscriptionSeatAssign and trackSubscriptionSeatUnassign functions intentionally accept updatedSubscriberId and modifiedBySubscriberId as string | undefined to provide a lenient API. The functions silently return early when these values are undefined, allowing callers to pass whatever they have without needing to handle the undefined case themselves.","mono","apps/db-api-server/src/telemetry.ts","5181","","ParthGandhi","June 17th 2025, 4:27:52 am","June 17th 2025, 4:27:52 am" +"In CLI tools like pr-reviewer-saas/src/devtools/summarizer/cli.ts, console.error should be used for fatal error output to provide readable error messages to end users, rather than using structured logging which may not be user-friendly for CLI error display.","mono","pr-reviewer-saas/src/devtools/summarizer/cli.ts","4989","","recrsn","June 16th 2025, 8:58:03 am","June 16th 2025, 8:58:03 am" +"In coderabbitai/mono coderabbit-ui/src/ProtectedRoutes.tsx, the useEffect block that sets window.pylon (around lines 46-57) is definitely needed for the Pylon chat widget to appear, even though it appears to duplicate the functionality of the usePylonChat hook. The widget won't appear without this specific code block.","mono","coderabbit-ui/src/ProtectedRoutes.tsx","4936","","alexcoderabbitai","May 28th 2025, 3:49:56 pm","May 28th 2025, 3:49:56 pm" +"The telemetry functions `trackRepositoryCreate` and `trackRepositoryDelete` in `coderabbitHandler/src/utils/telemetry.ts` are internally wrapped in try-catch blocks that log errors without rethrowing, making them safe to call without additional error handling.","mono","coderabbitHandler/src/services/repositories.service.ts","5134","","ParthGandhi","June 10th 2025, 4:48:21 am","June 10th 2025, 4:48:21 am" +"`isMetricsEnabled()` is intended only for product-level metrics; DataDog reliability/observability metrics should not be gated by this flag.","mono","pr-reviewer-saas/src/comments/review-comment.ts","5255","","yashshanker","June 12th 2025, 4:07:35 am","June 12th 2025, 4:07:35 am" +"In pr-reviewer-saas/src/utils/telemetry.ts, the type assertion `as GitServiceProviderType` for the provider from `getProviderHostURL()` is required for typing compatibility elsewhere in the codebase.","mono","pr-reviewer-saas/src/utils/telemetry.ts","5134","","ParthGandhi","June 10th 2025, 6:22:12 am","June 10th 2025, 6:22:12 am" +"For internal utility functions in telemetry.ts that return objects with primitive-typed properties (strings/numbers), the user ParthGandhi prefers not to create formal readonly interfaces since the properties are inherently safe to work with and the functions are used only within the same file.","mono","pr-reviewer-saas/src/utils/telemetry.ts","5134","","ParthGandhi","June 10th 2025, 6:29:52 am","June 10th 2025, 6:29:52 am" +"For testing tools and CLI utilities in devtools directories, performance optimizations like avoiding O(F × D) complexity may not be necessary if the tool is only used for development purposes with reasonable input sizes.","mono","pr-reviewer-saas/src/devtools/summarizer/cli.ts","4989","","recrsn","June 16th 2025, 10:43:29 am","June 16th 2025, 10:43:29 am" +"In pr-reviewer-saas/src/devtools/summarizer/cli.ts, files can be safely assumed to exist when reading them with readFile(), so error handling for ENOENT is not needed according to the maintainer.","mono","pr-reviewer-saas/src/devtools/summarizer/cli.ts","4989","","recrsn","June 16th 2025, 10:43:56 am","June 16th 2025, 10:43:56 am" +"The coderabbitai/mono codebase UI only renders on the client side and does not have server-side rendering (SSR) use cases, so window object access safety checks are not needed.","mono","coderabbit-ui/src/pages/Dashboard/components/resizeable-menu.tsx","4971","","GurinderRawala","May 29th 2025, 2:52:54 pm","May 29th 2025, 2:52:54 pm" +"In ParsedReviewComment objects in pr-reviewer-saas/src/review/parse-review.ts, the properties indicatorTypes, analysisChain, verificationOutput, suggestion, and toolOutput are always initialized with safe default values (empty arrays or empty strings) during object creation, ensuring they are never undefined at runtime.","mono","pr-reviewer-saas/src/comments/extension_commentor.ts","5187","","ankitjena","June 10th 2025, 9:12:22 am","June 10th 2025, 9:12:22 am" +"Telemetry methods in apps/db-api-server/src/telemetry.ts (trackSubscriptionCreate, trackSubscriptionSeatAssign, etc.) are fire-and-forget methods wrapped in try-catch blocks, so they can safely be called inside database transactions without risk of causing rollbacks.","mono","apps/db-api-server/src/routers/create-selfhosted-subscriber.ts","5181","","ParthGandhi","June 15th 2025, 4:41:36 am","June 15th 2025, 4:41:36 am" +"Telemetry methods in apps/db-api-server/src/telemetry.ts (trackSubscriptionCreate, trackSubscriptionSeatAssign, etc.) are fire-and-forget methods wrapped in try-catch blocks, so they can safely be called inside database transactions without risk of causing rollbacks.","mono","apps/db-api-server/src/routers/create-selfhosted-subscriber.ts","5181","","ParthGandhi","June 15th 2025, 4:41:36 am","June 15th 2025, 4:41:36 am" +"Telemetry methods in apps/db-api-server/src/telemetry.ts (trackSubscriptionCreate, trackSubscriptionSeatAssign, etc.) are fire-and-forget methods wrapped in comprehensive try-catch blocks that handle all errors internally without throwing exceptions, so they can safely be called inside database transactions without risk of causing rollbacks.","mono","apps/db-api-server/src/routers/create-selfhosted-subscriber.ts","5181","","ParthGandhi","June 15th 2025, 4:41:36 am","June 15th 2025, 4:41:36 am" +"The telemetry functions in billing/src/telemetry.ts (trackSubscriptionCreate, trackSubscriptionUpdate, trackSubscriptionCancel) have comprehensive internal try-catch error handling and are designed to fail gracefully without throwing exceptions that could affect main business logic.","mono","billing/src/services/chargebee/update-event.ts","5181","","ParthGandhi","June 15th 2025, 4:43:01 am","June 15th 2025, 4:43:01 am" +"The telemetry functions in billing/src/telemetry.ts are designed with comprehensive internal try-catch error handling. They log errors but never re-throw them, making them safe fire-and-forget operations that won't affect main business logic. The functions return void and don't need to be awaited.","mono","billing/src/services/chargebee/update-event.ts","5181","","ParthGandhi","June 15th 2025, 4:43:01 am","June 15th 2025, 4:43:01 am" +"In TypeScript interfaces where array properties are defined as required (not optional with `?`), defensive checks for undefined/missing arrays are typically unnecessary since TypeScript enforces the type contract at compile time.","mono","pr-reviewer-saas/src/comments/impact-analysis.ts","4989","","recrsn","May 30th 2025, 7:41:36 am","May 30th 2025, 7:41:36 am" +"In TypeScript interfaces where array properties are defined as required (not optional with `?`), defensive checks for undefined/missing arrays are typically unnecessary since TypeScript enforces the type contract at compile time.","mono","pr-reviewer-saas/src/comments/impact-analysis.ts","4989","","recrsn","May 30th 2025, 7:41:36 am","May 30th 2025, 7:41:36 am" +"In pr-reviewer-saas/src/review/impact-analysis/cli.ts, the SummaryOutput interface is intentionally duplicated from src/devtools/summarizer/types.ts rather than imported, as confirmed by the maintainer. This duplication serves a specific architectural purpose.","mono","pr-reviewer-saas/src/review/impact-analysis/cli.ts","4989","","recrsn","May 30th 2025, 7:45:38 am","May 30th 2025, 7:45:38 am" +"In the codebase for this project, interface duplication between modules like SummarizedChange in pr-reviewer-saas/src/review/impact-analysis/prompts.ts and src/devtools/summarizer/types.ts is intentional to maintain module boundaries and avoid dependencies.","mono","pr-reviewer-saas/src/review/impact-analysis/prompts.ts","4989","","recrsn","May 30th 2025, 7:45:53 am","May 30th 2025, 7:45:53 am" +"Do not suggest making interface properties readonly in files matching the pattern `pr-reviewer-saas/src/tools/*/interface.ts`. These tool interface files are exempt from the general coding guideline requiring readonly properties on interfaces.","mono","pr-reviewer-saas/src/tools/pylint/interface.ts","4973","","alexcoderabbitai","May 30th 2025, 11:02:26 am","May 30th 2025, 11:02:26 am" +"In the reporting STATE filter, the system simplifies all platform-specific PR states to just ""open"" or ""closed"". ""Closed"" effectively means ""merged"" because unmerged closed PRs are automatically filtered out. Platform-specific states like Bitbucket's ""DECLINED"" are filtered out entirely, maintaining a unified interface across GitHub, GitLab, and Bitbucket.","mono","coderabbit-ui/src/pages/Settings/CustomReporting/ReportingComponents/ReportingParameters.tsx","5353","","alexcoderabbitai","June 17th 2025, 1:14:19 pm","June 17th 2025, 1:14:19 pm" +"In TypeScript template literals, when only a portion of the string is wrapped in backticks (like `\`${lineRange}\`: ${comment}`), the backticks only affect the formatting of that specific portion, not the entire concatenated result. Newlines in variables concatenated outside the backticks will be preserved naturally through string concatenation.","mono","pr-reviewer-saas/src/comments/render/review-comment.ts","5350","","ankitjena","June 17th 2025, 7:59:34 am","June 17th 2025, 7:59:34 am" +"The `recordFileUsage` function in `pr-reviewer-saas/src/utils/llm-usage-tracker.ts` is synchronous and returns `void`, not a Promise. It stores fingerprints in memory maps and does not require `await`.","mono","pr-reviewer-saas/src/review/pro-review.ts","5342","","ccassion","June 17th 2025, 6:21:09 pm","June 17th 2025, 6:21:09 pm" +"For files in docs/tools/*.md directory: Do not recommend installation instructions or usage setup steps. All tools documented in this directory are pre-installed in CodeRabbit's default environment and require no installation steps from users. Documentation should focus on tool capabilities and features only.","coderabbit-docs","","","https://github.com/coderabbitai/coderabbit-docs/pull/369","alexcoderabbitai","June 2nd 2025, 10:07:49 am","June 2nd 2025, 10:07:49 am" +"In GitLab client error handling, non-critical operations like listing/closing existing merge requests should log failures but not stop the primary operation of creating new merge requests. The design preference is for resilience - cleanup operations are best-effort while core functionality must succeed.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","5024","","helizaga","June 2nd 2025, 2:09:42 pm","June 2nd 2025, 2:09:42 pm" +"In the GitLab client codebase (pr-reviewer-saas/src/event-client/gitlab-client.ts), the established pattern for null checking project IDs is to assign `this.#event.project.id` to a variable first, then check if that variable is falsy, rather than using optional chaining before assignment. This pattern is used consistently throughout methods like #source() and should be maintained for consistency.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","5024","","helizaga","June 2nd 2025, 2:10:47 pm","June 2nd 2025, 2:10:47 pm" +"User @alexcoderabbitai confirmed using a suggestion about PathFilter patterns for .env files with slight modifications, indicating the suggestion was helpful and actionable but needed customization for their specific use case.","mono","pr-reviewer-saas/src/tools/dotenv-linter/command.ts","5293","","alexcoderabbitai","June 19th 2025, 12:28:16 pm","June 19th 2025, 12:28:16 pm" +"In the codebase, `PullRequestOrIssueCommentObject[""user""][""login""]` is typed as `string` (required), not `string | undefined`. The login field is guaranteed to be present and is a string type.","mono","coderabbitHandler/src/services/review.service.ts","5375","","karan925","June 18th 2025, 9:33:23 am","June 18th 2025, 9:33:23 am" +"In TypeScript projects, it's common and correct to import `.ts` files using `.js` extensions in import statements. The TypeScript compiler handles the resolution and the compiled output will be `.js` files. This is a standard pattern and should not be flagged as an incorrect import path.","mono","pr-reviewer-saas/src/review/impact-analysis/prompts.ts","4989","","recrsn","June 18th 2025, 3:26:37 am","June 18th 2025, 3:26:37 am" +"Use guard clauses with early returns instead of else statements in TypeScript for better readability and reduced nesting.","mono","coderabbitHandler/src/routers/repositories.ts","5370","","NatoBoram","June 18th 2025, 11:45:18 pm","June 18th 2025, 11:45:18 pm" +"Avoid `as` type assertions in TypeScript as they disable type checking. Instead, use generics like `new Array()` for array initialization.","mono","coderabbitHandler/src/routers/repositories.ts","5370","","NatoBoram","June 18th 2025, 11:45:18 pm","June 18th 2025, 11:45:18 pm" +"Type assertions with `as` in TypeScript are dangerous because they disable TypeScript's type checking on that line and for subsequent uses of that variable.","mono","coderabbitHandler/src/routers/repositories.ts","5370","","NatoBoram","June 18th 2025, 11:45:18 pm","June 18th 2025, 11:45:18 pm" +"The getCompletedReviews function in vscode-extension/src/utils/getState.ts returns completed reviews sorted in descending order by startedAt date (newest to oldest).","mono","vscode-extension/src/commands/reviewCode.ts","5060","","ankitjena","June 3rd 2025, 3:40:14 pm","June 3rd 2025, 3:40:14 pm" +"The word ""CodeRabbit"" should always have both C and R capitalized (not ""coderabbit"", ""Coderabbit"", or ""CoderabbitAI""). The correct format is ""CodeRabbit"" and ""CodeRabbitAI"" for the service account. Proactively correct this capitalization in review comments when contributors mistype it.","coderabbit-docs","docs/guides/setup-best-practices.md","402","","aravindputrevu","June 18th 2025, 5:22:07 am","June 18th 2025, 5:22:07 am" +"In the VS Code extension, the server now always sends complete markdown content in the `comment` field of `CodeReviewComment`. The previous `components` field was just a broken-down version of this content and is now deprecated. The `createCommentMarkdown` function correctly uses `reviewComment.comment ?? reviewComment.message` without needing component processing.","mono","vscode-extension/src/utils/comment-utils.ts","5372","","ankitjena","June 18th 2025, 6:41:08 am","June 18th 2025, 6:41:08 am" +"When reviewing AST-grep rules for specific libraries, always verify the actual API method names for that specific library rather than making assumptions based on similar libraries. The jwt-dotnet library uses different namespaces (using JWT;) than Microsoft's JWT library (using System.IdentityModel.Tokens.Jwt;).","mono","ast-grep-rules/rules/csharp/security/jwt-hardcoded-secret-csharp.yml","6341","","gatsby003","July 30th 2025, 8:18:38 am","July 30th 2025, 8:18:38 am" +"The jwt-dotnet library (used with ""using JWT;"" directive) has methods `IJwtEncoder.Encode()` and `IJwtDecoder.Decode()`, not `Decoder()`. This is different from Microsoft's System.IdentityModel.Tokens.Jwt library which uses different namespaces and method names.","mono","ast-grep-rules/rules/csharp/security/jwt-hardcoded-secret-csharp.yml","6341","","gatsby003","July 30th 2025, 8:18:38 am","July 30th 2025, 8:18:38 am" +"When users encounter TypeScript compilation issues after updating tool versions in review-tool-versions.ts, the solution is to run `pnpm install && pnpm build` from the mono root to regenerate the UI schema files that depend on these version constants.","mono","","","https://github.com/coderabbitai/mono/pull/6036","nimratcoderabbit","July 17th 2025, 1:37:56 pm","July 17th 2025, 1:37:56 pm" +"The HubSpot integration in the CodeRabbit website has two separate components: 1) A chat widget loaded via a tracking script in apps/front/app/scripts/Hubspot.tsx, and 2) Form submissions that use the HubSpot Forms API directly. These are independent of each other, so removing the chat widget script doesn't affect form functionality.","website","","","https://github.com/coderabbitai/website/pull/524","alexcoderabbitai","June 20th 2025, 4:38:34 pm","June 20th 2025, 4:38:34 pm" +"In the CodeRabbit website, the HubSpot integration has two distinct parts: 1) Chat widget loaded via tracking script (apps/front/app/scripts/Hubspot.tsx), and 2) Form submissions via HubSpot Forms API (used in ContactUs.tsx and other form components). These are completely independent - removing the chat widget script doesn't affect form functionality.","website","","","https://github.com/coderabbitai/website/pull/524","alexcoderabbitai","June 20th 2025, 4:38:34 pm","June 20th 2025, 4:38:34 pm" +"In GitHub API responses for pull request review comments (RestEndpointMethodTypes[""pulls""][""listReviewComments""][""response""][""data""][number]), the user field is always present and never null/undefined, so null safety checks are not needed when accessing user.login, user.id, or user.type properties.","mono","pr-reviewer-saas/src/utils/github.ts","5445","","recrsn","June 23rd 2025, 6:25:35 am","June 23rd 2025, 6:25:35 am" +"In coderabbitHandler/src/services/review.service.ts, when updating seats in Chargebee and database fails, the code uses logger.error (not logger.warn) even though execution continues. This is intentional because failing to update seats is considered a critical business error that needs immediate attention via Sentry alerts, even though the user experience shouldn't be disrupted by throwing an error.","mono","coderabbitHandler/src/services/review.service.ts","5444","","karan925","June 23rd 2025, 6:40:28 am","June 23rd 2025, 6:40:28 am" +"In VSCode extensions, type assertions using `as` are acceptable when narrowing VSCode API objects to more specific interfaces that only add type constraints without changing runtime behavior. For example, casting `vscode.CommentThread` to a custom interface that extends it with readonly properties is safe and necessary for proper typing.","mono","vscode-extension/src/utils/comment-utils.ts","5447","","ankitjena","June 23rd 2025, 8:01:42 am","June 23rd 2025, 8:01:42 am" +"In pr-reviewer-saas/src/tools/pylint/command.ts, the `--jobs` option should not be used with the pylint command as it causes errors. The pylint command should be constructed as `pylint --output-format=json` without any jobs parameter.","mono","pr-reviewer-saas/src/tools/pylint/command.ts","5679","","alexcoderabbitai","July 3rd 2025, 10:02:42 am","July 3rd 2025, 10:02:42 am" +"Variables should always use camelCase naming convention in TypeScript files, not snake_case. Flag variables like provider_org_id and recommend renaming them to providerOrgId.","mono","coderabbitHandler/src/routers/providers.ts","6988","","bar0meter","August 28th 2025, 4:01:14 pm","August 28th 2025, 4:01:14 pm" +"The Azure DevOps webhook deletion endpoint (`/_apis/hooks/subscriptions/{hookId}`) works with API version `6.0-preview`, despite Microsoft documentation suggesting `7.1-preview.1` is required. This has been tested and confirmed working in the coderabbitHandler/src/utils/azure-devops.utils.ts file.","mono","coderabbitHandler/src/utils/azure-devops.utils.ts","5671","","sleep-404","July 3rd 2025, 2:33:33 am","July 3rd 2025, 2:33:33 am" +"In the coderabbitHandler start script, the Node.js --import flags must be ordered correctly to avoid init failures on self-hosted environments. The `--import @coderabbitai/common/dist/observability/instrumentation.js` flag should not be placed in a position that causes initialization issues, and recent PRs have reverted problematic orderings due to self-hosted failures.","mono","coderabbitHandler/package.json","5925","","alexcoderabbitai","July 17th 2025, 12:49:28 pm","July 17th 2025, 12:49:28 pm" +"In the pr-reviewer-saas tool execution system, there are two distinct types of failures: +1. ""run failed"" warnings - These are config-level failures that occur when users add bad custom configs for tools or when there's something wrong with a single file or single tool execution. These warnings are sent to users and appear as warning messages in review comments. They usually occur right after the `executeInJail` call. +2. ""failed to run"" errors - These are more severe failures indicating the tool totally crashed out and didn't run at all. These errors occur at the very end of the run tool function and represent complete tool execution failures.","mono","","","https://github.com/coderabbitai/mono/pull/5681","alexcoderabbitai","July 3rd 2025, 11:41:32 am","July 3rd 2025, 11:41:32 am" +"When suggesting function extraction for validation logic, consider the complexity and reusability. Simple, straightforward validation checks that are only used once may not benefit from extraction and could create unnecessary abstraction. The current code's readability and maintainability should be weighed against the potential benefits of extraction.","mono","coderabbitHandler/src/services/seatAssignmentService.ts","5674","","krtkvrm","July 3rd 2025, 6:37:01 am","July 3rd 2025, 6:37:01 am" +"In middleware functions, when logging before returning a response (without calling next()), use logger.error because the request processing is being terminated. The coding guideline about using logger.warn applies only when execution continues after the log statement.","mono","coderabbitHandler/src/middleware/api_key_auth.ts","5674","","krtkvrm","July 3rd 2025, 6:46:29 am","July 3rd 2025, 6:46:29 am" +"In the GCS adapter implementation for packages/common/src/object-store/adapters/gcs-adapter.ts, the file.download() method that loads entire objects into memory is acceptable because the expected file sizes are small. The current maxObjectSizeBytes of 5GB is not representative of actual usage requirements.","mono","packages/common/src/object-store/adapters/gcs-adapter.ts","5519","","ganeshpatro321","July 3rd 2025, 12:20:32 pm","July 3rd 2025, 12:20:32 pm" +"Self-hosted customers only receive pr-reviewer-saas, not coderabbitHandler. The handler is used internally by CodeRabbit developers. When making environment variables optional in coderabbitHandler, the primary benefit is reducing friction for internal developers running the handler locally, not for self-hosted customer deployments.","mono","coderabbitHandler/src/env.ts","6529","","alexcoderabbitai","August 7th 2025, 8:46:50 am","August 7th 2025, 8:46:50 am" +"`MetadataDataType` constant values in knowledge-base/object-store/types.ts must keep the exact casing used in the existing Postgres `vector_store_statuses` table; avoid renaming even if inconsistent with other values.","mono","pr-reviewer-saas/src/knowledge-base/object-store/types.ts","5519","","ganeshpatro321","July 3rd 2025, 8:35:54 am","July 3rd 2025, 8:35:54 am" +"In Azure Blob Storage authentication validation, the valid methods are: (1) connectionString alone, (2) accountName + accountKey together, or (3) accountName with DefaultAzureCredential. The validation should only fail when connectionString is missing AND accountName is missing.","mono","pr-reviewer-saas/src/knowledge-base/object-store/config.ts","5519","","ganeshpatro321","July 3rd 2025, 8:38:08 am","July 3rd 2025, 8:38:08 am" +"The OAuth implementation in coderabbitHandler/src/routers/user-integrations.ts demonstrates exemplary security practices: uses 256-bit cryptographically secure state generation with crypto.randomBytes(32), server-side Redis storage with 10-minute TTL, organization context binding for additional validation, one-time use enforcement with automatic cleanup, and comprehensive multi-layer validation (existence, expiration, context matching). This implementation exceeds industry standards and serves as a reference for secure OAuth 2.0 flows.","mono","coderabbitHandler/src/routers/user-integrations.ts","6282","","alexcoderabbitai","July 30th 2025, 11:34:12 am","July 30th 2025, 11:34:12 am" +"Azure Blob Storage credential validation was moved from pr-reviewer-saas/src/knowledge-base/object-store/config.ts to the azure-adapter.ts file directly, handling authentication validation at the adapter level rather than during configuration parsing.","mono","pr-reviewer-saas/src/knowledge-base/object-store/config.ts","5519","","ganeshpatro321","July 3rd 2025, 9:20:00 am","July 3rd 2025, 9:20:00 am" +"Azure Blob Storage credential validation was moved from pr-reviewer-saas/src/knowledge-base/object-store/config.ts to the azure-adapter.ts file directly. The config.ts file now only contains the feature flag and URI-based configuration creation, with all provider-specific validation handled at the adapter level.","mono","pr-reviewer-saas/src/knowledge-base/object-store/config.ts","5519","","ganeshpatro321","July 3rd 2025, 9:20:00 am","July 3rd 2025, 9:20:00 am" +"In the coderabbitai/coderabbit-docs repository, spelling and grammar errors in documentation should be treated as bugs that require correction prior to merge, not as minor or optional suggestions. Documentation quality standards are high and such errors are blocking issues.","coderabbit-docs","","","https://github.com/coderabbitai/coderabbit-docs/pull/442","jmacdotorg","July 30th 2025, 12:12:18 pm","July 30th 2025, 12:12:18 pm" +"In the coderabbitai/coderabbit-docs repository, spelling and grammar errors in documentation should be treated as bugs that require correction prior to merge, not as minor typos or nitpick suggestions. Documentation has higher quality standards than typical code reviews.","coderabbit-docs","","","https://github.com/coderabbitai/coderabbit-docs/pull/442","jmacdotorg","July 30th 2025, 12:14:47 pm","July 30th 2025, 12:14:47 pm" +"In coderabbitHandler/src/cache.ts, the setCacheResponse and getCacheResponse functions internally hash the cache keys before storing/retrieving, while cacheClient.delete expects the already-hashed key to be provided manually.","mono","coderabbitHandler/src/routers/session.ts","5443","","aquibbaig","June 23rd 2025, 10:04:39 am","June 23rd 2025, 10:04:39 am" +"In coderabbitHandler/src/cache.ts, setCacheResponse and getCacheResponse internally hash cache keys using hashCacheKey() before storing/retrieving, while cacheClient.delete expects an already-hashed key to be provided manually. This means when using cacheClient.delete directly, the key must be manually hashed to match the keys stored by the wrapper functions.","mono","coderabbitHandler/src/routers/session.ts","5443","","aquibbaig","June 23rd 2025, 10:04:39 am","June 23rd 2025, 10:04:39 am" +"GitHub-style OAuth integrations never provide refresh tokens (refresh_token_encrypted is null), so they skip token refresh attempts entirely and never reach the persistRefreshedTokens fallback path. The fallback path is only for rare edge cases like database corruption, not legitimate OAuth flows without refresh tokens.","mono","pr-reviewer-saas/src/queries/mcp.ts","6958","","averyjennings","August 28th 2025, 5:37:08 pm","August 28th 2025, 5:37:08 pm" +"The CodeRabbit codebase uses both VARCHAR(255) and TEXT for pr_url fields across different tables. Historical tables like review_event and chat_metrics use VARCHAR(255), while newer tables like pr_metrics and suggestion_metrics use TEXT. The team may prioritize consistency within related table groups when making these decisions.","mono","apps/db-api-server/prisma/migrations/20250731004501_mcp_metrics/migration.sql","6380","","helizaga","July 30th 2025, 9:00:33 pm","July 30th 2025, 9:00:33 pm" +"In the CodeRabbit codebase, `ON DELETE CASCADE ON UPDATE CASCADE` is the standard pattern for all foreign key constraints that reference the `organizations` table. This includes metrics tables, user relationships, and other organization-scoped data. This pattern ensures complete cleanup when organizations are deleted.","mono","apps/db-api-server/prisma/migrations/20250731004501_mcp_metrics/migration.sql","6380","","helizaga","July 30th 2025, 8:59:51 pm","July 30th 2025, 8:59:51 pm" +"The CodeRabbit mono project does not use CHECK constraints in database tables, preferring to handle data validation at the application layer rather than the database layer for consistency across the schema.","mono","apps/db-api-server/prisma/migrations/20250731004501_mcp_metrics/migration.sql","6380","","helizaga","July 30th 2025, 8:59:58 pm","July 30th 2025, 8:59:58 pm" +"When updating golangci-lint version in review-tool-versions.ts, ensure the Dockerfile properly declares ARG GOLANGCI_LINT_VERSION before using it in the curl installation command, as missing ARG declarations cause the variable to expand to empty string leading to installation failures.","mono","","","https://github.com/coderabbitai/mono/pull/6043","nimratcoderabbit","July 17th 2025, 5:28:07 pm","July 17th 2025, 5:28:07 pm" +"In TypeScript, when parsing JSON with JSON.parse(), using a type assertion followed by runtime validation (as in coderabbit-ui/src/hooks/useUpdateSubscriber.ts) is acceptable because JSON.parse() returns 'any' and accessing properties on 'any' can cause TypeScript errors in strict mode. The pattern `JSON.parse(value) as Type` followed by typeof checks is a valid approach for JSON parsing.","mono","coderabbit-ui/src/hooks/useUpdateSubscriber.ts","5697","","aquibbaig","July 5th 2025, 11:21:29 pm","July 5th 2025, 11:21:29 pm" +"ParthGandhi prefers to skip code quality improvements (like error logging, error handling) for internal testing and development utility code in `pr-reviewer-saas/src/knowledge-base/function-index/cli.ts`, focusing on functional purpose rather than production-level code quality for such utilities.","mono","pr-reviewer-saas/src/knowledge-base/function-index/cli.ts","5451","","ParthGandhi","July 6th 2025, 12:16:53 am","July 6th 2025, 12:16:53 am" +"ParthGandhi prefers to skip SQL injection protection suggestions for LanceDB filter construction in pr-reviewer-saas/src/knowledge-base/code-index/search.ts, indicating that the repoName and repoOwner parameters are considered safe in this context.","mono","pr-reviewer-saas/src/knowledge-base/code-index/search.ts","6026","","ParthGandhi","July 18th 2025, 3:51:03 am","July 18th 2025, 3:51:03 am" +"In the CodeRabbit mono repository, the executeInJail function from ../../utils/node.js already provides sufficient security protections for shell command execution, so additional commit SHA validation and path escaping is not needed when using this function.","mono","pr-reviewer-saas/src/knowledge-base/function-index/git-utils.ts","5451","","ParthGandhi","June 24th 2025, 7:44:51 am","June 24th 2025, 7:44:51 am" +"In the CodeRabbit codebase, the `executeInJail` function provides sufficient sandboxing and security isolation for shell commands, making command injection protection through path escaping unnecessary when using this execution method.","mono","pr-reviewer-saas/src/knowledge-base/function-index/git-utils.ts","5451","","ParthGandhi","June 24th 2025, 7:45:14 am","June 24th 2025, 7:45:14 am" +"The executeInJail function in the codebase provides a secure jail environment that protects against command injection, so additional escaping of shell parameters is not needed when using this function.","mono","pr-reviewer-saas/src/knowledge-base/function-index/git-utils.ts","5451","","ParthGandhi","June 24th 2025, 7:44:47 am","June 24th 2025, 7:44:47 am" +"In the CodeRabbit codebase, the `executeInJail` function provides a secure sandboxed environment that mitigates command injection risks, so additional parameter escaping in shell commands executed within the jail is not necessary.","mono","pr-reviewer-saas/src/knowledge-base/function-index/git-utils.ts","5451","","ParthGandhi","June 24th 2025, 7:45:06 am","June 24th 2025, 7:45:06 am" +"The executeInJail function in the codebase provides a secure execution environment that mitigates command injection vulnerabilities, so additional input validation and escaping in git command construction is not necessary.","mono","pr-reviewer-saas/src/knowledge-base/function-index/git-utils.ts","5451","","ParthGandhi","June 24th 2025, 8:05:15 am","June 24th 2025, 8:05:15 am" +"When errors are already logged in full for debugging purposes, it's acceptable to extract error.message or convert to string for status updates, database storage, or other structured data purposes. The coding guideline about logging full errors applies specifically to logging statements, not to status updates or storage operations.","mono","pr-reviewer-saas/src/knowledge-base/function-index/index.ts","5451","","ParthGandhi","June 24th 2025, 8:07:20 am","June 24th 2025, 8:07:20 am" +"In pr-reviewer-saas/src/ai-client/openai-chat-bot.ts, the ""-gpt5"" model classes (like ""review-junior-gpt5"", ""review-senior-gpt5"", ""review-trivial-gpt5"") are kept for explicit GPT-5 reviewer selection scenarios, even during GPT-5 rollbacks. The rollback affects default model selection behavior (handled in prompts.ts), not the availability of GPT-5 models for explicit selection.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6573","","dloker","August 7th 2025, 9:44:06 pm","August 7th 2025, 9:44:06 pm" +"In pr-reviewer-saas/src/utils/llm-usage-tracker.ts, GPT-5 task variant mappings (like ""review-trivial-gpt5"", ""review-junior-gpt5"", ""review-senior-gpt5"") are kept during GPT-5 rollbacks for logging compatibility and future re-rollout scenarios. The rollback strategy focuses on changing default model selection behavior rather than removing GPT-5 infrastructure entirely.","mono","pr-reviewer-saas/src/utils/llm-usage-tracker.ts","6573","","dloker","August 7th 2025, 9:44:35 pm","August 7th 2025, 9:44:35 pm" +"User aquibbaig pointed out that debug logs are disabled in production when I flagged potential PII logging in debug statements, indicating they consider debug-level PII logging acceptable since it won't appear in production logs.","mono","coderabbitHandler/src/routers/organization_members.ts","7078","","aquibbaig","September 5th 2025, 7:39:06 am","September 5th 2025, 7:39:06 am" +"In coderabbitHandler/src/utils/mcp/tokenManager.ts, when diagnostic queries fail during CAS conflict handling, errors are logged with `error: error.message` (transforming the Error object to just its message string), not as the full Error object.","mono","coderabbitHandler/src/utils/mcp/tokenManager.test.ts","6958","","averyjennings","August 28th 2025, 6:24:25 pm","August 28th 2025, 6:24:25 pm" +"In coderabbitHandler/src/utils/mcp/tokenManager.ts, when diagnostic queries fail during CAS conflict handling, errors are logged with conditional transformation: `diagnosticError instanceof Error ? diagnosticError.message : String(diagnosticError)`, meaning Error objects are logged as their message strings, not as full Error objects.","mono","coderabbitHandler/src/utils/mcp/tokenManager.test.ts","6958","","averyjennings","August 28th 2025, 6:24:25 pm","August 28th 2025, 6:24:25 pm" +"Azure DevOps, GitHub, GitLab, and Bitbucket repositories can always be cloned, so their `checkCloneEligibility` methods should return `{ eligible: true }` unconditionally without additional validation logic.","mono","pr-reviewer-saas/src/event-client/azure-client.ts","5445","","recrsn","July 6th 2025, 11:45:36 pm","July 6th 2025, 11:45:36 pm" +"In the `RepositoryDetails` type from `@coderabbitai/common`, the `id` field is guaranteed to be non-null, so null checking is not necessary when mapping repository IDs.","mono","coderabbitHandler/src/utils/repositories.ts","5722","","sleep-404","July 7th 2025, 1:15:15 am","July 7th 2025, 1:15:15 am" +"CodeRabbit CLI team plans to add GPG key checks for update ZIP file verification in the near future to address authenticity concerns.","mono","apps/cli/package.json","7390","","krtkvrm","September 19th 2025, 7:14:53 am","September 19th 2025, 7:14:53 am" +"The `setCacheResponse` method in coderabbitHandler has an internal 60x multiplier, so passing 60 as the TTL parameter results in 3600 seconds (1 hour) of cache time.","mono","coderabbitHandler/src/routers/session/utils.ts","5443","","aquibbaig","June 25th 2025, 8:01:48 am","June 25th 2025, 8:01:48 am" +"In Vitest, variables referenced inside vi.mock() factory functions must be available at the top level since vi.mock() calls are hoisted. Imported constants or variables cannot be referenced inside vi.mock() factories because they aren't available when the hoisted mock executes. This means duplicating constants in mocks is often necessary rather than importing them.","mono","coderabbit-ui/src/utils/tests/useAllOrgs.test.ts","5485","","aquibbaig","June 25th 2025, 8:24:59 am","June 25th 2025, 8:24:59 am" +"ParthGandhi prefers keeping related conditional logic together in a single function rather than extracting it into multiple smaller functions when the extraction would make the code more noisy than readable, particularly for complex branching scenarios in the file-picker.ts logic.","mono","pr-reviewer-saas/src/knowledge-base/function-index/file-picker.ts","5451","","ParthGandhi","June 25th 2025, 9:19:28 am","June 25th 2025, 9:19:28 am" +"In P4EventClient, the handleGeneralChat method is complete and functional. It builds rich context (diffs, conversation history), generates AI responses using prompts.commentReply(), and posts replies via p4Client.postReviewCommentReply(). The method does not cut off - it has a complete response posting flow.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 5th 2025, 11:03:39 am","September 5th 2025, 11:03:39 am" +"In the PR reporting feature in `pr-reviewer-saas/src/schedulers/standup-utils.ts`, the code intentionally searches for ""Score Card"" (not ""Score Chart"") in bot comments when the prompt includes ``. This is because ""Score Card"" is the exact term defined in the template, and PRs without this are those that failed to generate a Score Card. The filtering behavior is intentional to exclude failed Score Card generations.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","5378","","alexcoderabbitai","June 18th 2025, 11:28:53 am","June 26th 2025, 10:02:53 am" +"Repository clone timing from external GitHub for coderabbitai/mono: 4.730 seconds for 72MB repository with 8,481 commits, achieving 15.2 MB/s download speed, maintaining consistent network performance in sandbox environment.","mono","","","https://github.com/coderabbitai/mono/pull/6191","bar0meter","July 23rd 2025, 3:59:08 am","July 23rd 2025, 3:59:08 am" +"In pr-reviewer-saas/src/schedulers/utils/activity.ts, the reporting schedulers do not run for open-source repositories, so SUMMARY_TAG_OSS will never be present. Only SUMMARY_TAG should be considered when identifying the first review comment. Avoid adding SUMMARY_TAG_OSS checks in this path and remove unused imports if present.","mono","pr-reviewer-saas/src/schedulers/utils/activity.ts","6574","","alexcoderabbitai","August 8th 2025, 11:38:02 am","August 8th 2025, 11:38:02 am" +"In pr-reviewer-saas/src/schedulers/utils/activity.ts (TypeScript) and related reporting scheduler paths, using substring checks for ""coderabbit""/""coderabbitai"" (e.g., .includes(""coderabbit"")) in filterHumanComments and filterBotComments is acceptable for internal org edge cases. Do not warn to replace with exact-username regex in these paths going forward.","mono","pr-reviewer-saas/src/schedulers/utils/activity.ts","6574","","alexcoderabbitai","August 8th 2025, 11:49:42 am","August 8th 2025, 11:49:42 am" +"In the jetbrains-plugin repo, the function addNewMockReview in src/main/kotlin/ai/coderabbit/jetbrainsplugin/components/ReviewListComponent.kt is part of temporary mock code and will be removed later; avoid pushing refactors like tightening its parameter type in future reviews.","jetbrains-plugin","src/main/kotlin/ai/coderabbit/jetbrainsplugin/components/GitBranchComponent.kt","15","","aquibbaig","August 8th 2025, 12:31:51 pm","August 8th 2025, 12:31:51 pm" +"Repo: coderabbitai/jetbrains-plugin. The mock review scaffolding in src/main/kotlin/ai/coderabbit/jetbrainsplugin/components/ReviewListComponent.kt (e.g., addNewMockReview and loading MockReviewData) and src/main/kotlin/ai/coderabbit/jetbrainsplugin/mocks/MockReviewData.kt is temporary and will be removed later; de-prioritize refactor suggestions (like strict typing) for these mock paths until real data integration replaces them.","jetbrains-plugin","src/main/kotlin/ai/coderabbit/jetbrainsplugin/components/ReviewListComponent.kt","15","","aquibbaig","August 8th 2025, 12:32:29 pm","August 8th 2025, 12:32:29 pm" +"In the CodeRabbit configuration schema for pre-merge checks (`settings.configSettings.reviews.pre_merge_checks`), all nested properties including `title.enforcement`, `description.enforcement`, and `docstrings.enforcement` are guaranteed to exist with default values due to strict typing and schema defaults. Optional chaining is not needed when accessing these properties.","mono","pr-reviewer-saas/src/pre-merge-checks/run-pre-merge-check.ts","5306","","GurinderRawala","June 30th 2025, 3:26:09 pm","June 30th 2025, 3:26:09 pm" +"The `commenter.create` function in `pr-reviewer-saas/src/comments/` handles errors internally and doesn't throw, so additional error handling with `.catch()` is not needed when calling this method.","mono","pr-reviewer-saas/src/pre-merge-checks/block-pr.ts","5306","","GurinderRawala","June 30th 2025, 3:27:21 pm","June 30th 2025, 3:27:21 pm" +"Repository clone timing from external GitHub for coderabbitai/mono: 4.29 seconds for 72MB repository with 8,479 commits, achieving 16.8 MB/s download speed, indicating excellent network performance in sandbox environment.","mono","","","https://github.com/coderabbitai/mono/pull/6148","bar0meter","July 23rd 2025, 3:51:19 am","July 23rd 2025, 3:51:19 am" +"Repository clone timing from external GitHub for coderabbitai/mono: 4.376 seconds for 72MB repository with 8,479 commits, achieving 16.4 MB/s download speed, indicating excellent network performance in sandbox environment.","mono","","","https://github.com/coderabbitai/mono/pull/6191","bar0meter","July 23rd 2025, 3:52:28 am","July 23rd 2025, 3:52:28 am" +"Repository clone timing from external GitHub for coderabbitai/mono: 4.544 seconds for 72MB repository with 8,481 commits, achieving 15.9 MB/s download speed, confirming consistent network performance in sandbox environment.","mono","","","https://github.com/coderabbitai/mono/pull/6191","bar0meter","July 23rd 2025, 3:54:19 am","July 23rd 2025, 3:54:19 am" +"Scala uses /** ... */ documentation comments (Scaladoc) which are similar to JSDoc/Javadoc but have different formatting conventions and should not be processed by JavaScript-style doc comment termination functions.","mono","pr-reviewer-saas/src/docstring/terminate_docstring.ts","6967","","NatoBoram","August 28th 2025, 7:29:49 pm","August 28th 2025, 7:29:49 pm" +"Scala is classified as unsupported in the docstrings termination logic because CodeRabbit doesn't support docstring generation for Scala. The `docstringSupportedLangs` set in the codebase defines which languages are supported by the docstrings generation feature, and Scala is not included in this set.","mono","pr-reviewer-saas/src/docstring/terminate_docstring.ts","6967","","NatoBoram","August 28th 2025, 7:44:09 pm","August 28th 2025, 7:44:09 pm" +"The Lang enum in @coderabbitai/ast-grep-langs contains: Angular, Bash, C, Cpp, CSharp, Css, Dart, Elixir, Go, Haskell, Html, Java, JavaScript, Json, Kotlin, Lua, Php, Python, Ruby, Rust, Scala, Sql, Swift, Toml, Tsx, TypeScript, Yaml. There is no Jsx language in this enum.","mono","pr-reviewer-saas/src/docstring/terminate_docstring.ts","6967","","NatoBoram","August 28th 2025, 7:46:38 pm","August 28th 2025, 7:46:38 pm" +"Scala uses Scaladoc syntax which follows JSDoc-style /** ... */ formatting, so it should be handled by terminateJsDocs() rather than treated as an unsupported language in docstring termination.","mono","pr-reviewer-saas/src/docstring/terminate_docstring.ts","6967","","NatoBoram","August 28th 2025, 7:46:38 pm","August 28th 2025, 7:46:38 pm" +"In the coderabbit-ui codebase, sessionStorage operations are used extensively and should not be wrapped in complex error handling patterns. Direct sessionStorage.getItem() calls are preferred for readability and are appropriate given the reliable nature of sessionStorage in modern browsers.","mono","coderabbit-ui/src/hooks/useAutoRedirect.ts","5725","","aquibbaig","July 8th 2025, 12:43:09 pm","July 8th 2025, 12:43:09 pm" +"In the VSCode extension's fix-with-ai service, ankitjena prefers error handling to be implemented outside of individual handler methods rather than within them, contrary to the general pattern. This allows for centralized error handling in the calling code or wrapper functions.","mono","vscode-extension/src/services/fix-with-ai/extension/augment.ts","5762","","ankitjena","July 8th 2025, 12:48:48 pm","July 8th 2025, 12:48:48 pm" +"In coderabbit-ui/src/pages/Login/index.tsx, the ""login-loader"" flag stored in sessionStorage is used to track whether a login process is currently in progress. This flag should be used as a dependency for session queries rather than access tokens, as it's more semantically appropriate and prevents race conditions during login flows.","mono","coderabbit-ui/src/pages/Login/index.tsx","5725","","aquibbaig","July 8th 2025, 2:30:08 am","July 8th 2025, 2:30:08 am" +"In coderabbitHandler/src/routers/organization_members.ts, the team plans to refactor the multiple database calls in Promise.all within getAllMembersFromDb to use a single database update operation instead of adding individual .catch() handlers to each database call.","mono","coderabbitHandler/src/routers/organization_members.ts","6417","","sleep-404","August 1st 2025, 3:26:01 am","August 1st 2025, 3:26:01 am" +"In pr-reviewer-saas/src/knowledge-base/issues-index.ts, the `upsertVectorStoreStatus` method handles undefined `parent_data_id` values by providing a fallback empty string in its implementation: `parent_data_id: data.parent_data_id ?? """"`. However, when calling this method with `repo?.id.toString()`, if `repo` is undefined, a TypeError would occur before the function is called because `.toString()` is called on the undefined result of `repo?.id`.","mono","pr-reviewer-saas/src/knowledge-base/issues-index.ts","5751","","ganeshpatro321","July 8th 2025, 4:32:53 am","July 8th 2025, 4:32:53 am" +"In pr-reviewer-saas/src/utils/node.ts, PHP-related tools like phpcs and phpmd are included in the PHP_UTILITIES array rather than having standalone toolsets, since they require PHP to run. This follows the pattern of consolidating related tools under their primary dependency's toolset.","mono","pr-reviewer-saas/src/utils/node.ts","5611","","alexcoderabbitai","July 1st 2025, 11:58:11 am","July 1st 2025, 11:58:11 am" +"In `pr-reviewer-saas/src/ast-grep/find_code_blocks.ts`, the `getCodeBlockType` function does not need additional safety checks for undefined type mapping because the `nodeKind` parameter is guaranteed to exist in the `config.typeMapping` based on how the function is called in practice.","mono","pr-reviewer-saas/src/ast-grep/find_code_blocks.ts","5451","","ParthGandhi","July 2nd 2025, 5:24:24 am","July 2nd 2025, 5:24:24 am" +"ParthGandhi considers strict style guideline adherence (like PEP 8 formatting) unnecessary for example and test files, preferring to focus on the functional purpose of such files rather than formatting compliance.","mono","pr-reviewer-saas/src/ast-grep/examples/example.py","5451","","ParthGandhi","July 2nd 2025, 5:39:15 am","July 2nd 2025, 5:39:15 am" +"The file `pr-reviewer-saas/src/ast-grep/examples/example.ts` is exempt from TypeScript enum coding guidelines since it's an example file designed for testing AST patterns, as confirmed by ParthGandhi.","mono","pr-reviewer-saas/src/ast-grep/examples/example.ts","5451","","ParthGandhi","July 2nd 2025, 5:39:07 am","July 2nd 2025, 5:39:07 am" +"ParthGandhi prefers not to apply style/formatting suggestions (like PEP 8 compliance) to example files in `pr-reviewer-saas/src/ast-grep/examples/` since they serve a functional testing purpose rather than being production code.","mono","pr-reviewer-saas/src/ast-grep/examples/example.py","5451","","ParthGandhi","July 2nd 2025, 5:39:22 am","July 2nd 2025, 5:39:22 am" +"The `generateCodeBlockSummary` method in `pr-reviewer-saas/src/prompts/prompts.ts` already has proper internal error handling, so additional try-catch blocks around calls to this method are not necessary.","mono","pr-reviewer-saas/src/knowledge-base/function-index/code-block-extractor.ts","5451","","ParthGandhi","July 2nd 2025, 5:40:23 am","July 2nd 2025, 5:40:23 am" +"In pr-reviewer-saas/src/tools/golangci-lint/command.ts, the type assertion `as GolangCILintOutput` in the parseGolangCILintOutput function is acceptable and should not be replaced with validation logic, as suggested validation approaches cause linting errors in this codebase.","mono","pr-reviewer-saas/src/tools/golangci-lint/command.ts","5640","","alexcoderabbitai","July 2nd 2025, 8:25:08 am","July 2nd 2025, 8:25:08 am" +"When creating Express handlers in TypeScript, extract inline types into proper interfaces and use custom RequestHandler types with the `satisfies` pattern for better type safety and readability. For example: `type CustomHandler = RequestHandler` followed by `export const handler: CustomHandler = ((req, res) => { ... }) satisfies CustomHandler`.","mono","apps/token-service/src/handlers.ts","6909","","NatoBoram","August 28th 2025, 8:55:50 pm","August 28th 2025, 8:55:50 pm" +"In Express handlers, prefer getting the logger from `res.locals` through middleware rather than importing a global logger instance, as this provides request-specific context and correlation IDs.","mono","apps/token-service/src/handlers.ts","6909","","NatoBoram","August 28th 2025, 8:55:50 pm","August 28th 2025, 8:55:50 pm" +"When designing API responses, avoid unnecessary nesting like wrapping the actual data in a `body` object unless there's a specific architectural reason. Flatter response structures are generally easier to work with.","mono","apps/token-service/src/handlers.ts","6909","","NatoBoram","August 28th 2025, 8:55:50 pm","August 28th 2025, 8:55:50 pm" +"The dd-trace DogStatsD interface methods like increment, decrement, gauge, histogram, and distribution do not accept sampleRate parameters, unlike other StatsD libraries. The sampleRate parameter should be validated but not passed to the underlying dd-trace DogStatsD client calls.","mono","packages/common/src/datadog/client.ts","5752","","yashshanker","July 9th 2025, 2:18:19 pm","July 9th 2025, 2:18:19 pm" +"Biome tool integration exists in CodeRabbit but requires Docker environment setup in docker/pr-reviewer-saas/Dockerfile to install @biomejs/biome globally for proper functionality.","mono","","","https://github.com/coderabbitai/mono/pull/5809","nimratcoderabbit","July 9th 2025, 4:49:12 pm","July 9th 2025, 4:49:12 pm" +"Biome v2.1.1 is properly installed and configured in CodeRabbit's Docker environment using musl-compatible static binary. The tool integration includes configuration schema, command implementation, output parsing, and version tracking. If Biome appears to not be working in reviews, it's likely due to runtime conditions like invalid user config, GitHub workflow detection, or file filtering rather than installation issues.","mono","","","https://github.com/coderabbitai/mono/pull/5809","nimratcoderabbit","July 9th 2025, 4:49:12 pm","July 9th 2025, 4:49:12 pm" +"NBQA is a utility tool that works with other Python linters (flake8, pylint, ruff) to enable them to run on Jupyter notebooks. It does not need its own configuration schema or UI settings because it's not used as a standalone tool - it just prefixes commands for other tools when working with .ipynb files.","mono","packages/schemas/src/constants/review-tool-versions.ts","5814","","alexcoderabbitai","July 9th 2025, 5:58:27 pm","July 9th 2025, 5:58:27 pm" +"In pr-reviewer-saas, LLM fingerprint functionality was refactored from being appended at comment submission time in commenter.ts to being generated during review creation (in review-filehunks.ts) and rendered during comment rendering (in render/review-comment.ts). The appendFileSpecificLLMFingerprint function signature was updated to accept fingerprint directly instead of filePath and tracker parameters.","mono","pr-reviewer-saas/src/comments/commenter.ts","5786","","ankitjena","July 10th 2025, 2:14:56 am","July 10th 2025, 2:14:56 am" +"When users encounter TypeScript compilation issues after updating tool versions in review-tool-versions.ts, the solution is to run `pnpm install && pnpm build` from the mono root to regenerate the UI schema files that depend on these version constants.","mono","","","https://github.com/coderabbitai/mono/pull/6043","nimratcoderabbit","July 18th 2025, 11:14:15 am","July 18th 2025, 11:14:15 am" +"The `coderabbit-vscode-webview` package in the CodeRabbit monorepo outputs build artifacts to the `build/` directory instead of the typical `dist/` directory pattern used by other packages. The turbo.json configuration should use `""outputs"": [""build/**""]` for the `coderabbit-vscode-webview#build` task.","mono","turbo.json","5826","","recrsn","July 10th 2025, 8:34:58 am","July 10th 2025, 8:34:58 am" +"The SwarmClient.encodeFilePath method using standard Base64 encoding (Buffer.from(filePath).toString(""base64"")) works correctly with Swarm API v11 file endpoints, despite some documentation suggesting URL-safe Base64 is required.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 5th 2025, 3:49:26 pm","September 5th 2025, 3:49:26 pm" +"ParthGandhi considers function-wide try-catch blocks acceptable in pr-reviewer-saas/src/review/code-index/relevant-snippets.ts when they don't add significant noise, preferring to keep the error handling structure simple rather than extracting the main logic into a separate function.","mono","pr-reviewer-saas/src/review/code-index/relevant-snippets.ts","6247","","ParthGandhi","July 24th 2025, 6:57:36 am","July 24th 2025, 6:57:36 am" +"The mono repository uses exclusively `.test.ts` files for testing (not `.test.tsx`, `.spec.ts`, `.spec.tsx`, or `__tests__/` directories). The ESLint ignore pattern `[""**/*.test.ts""]` is sufficient and appropriate for this codebase's specific testing conventions.","mono","packages/mono-config/eslint.config.js","6434","","NatoBoram","August 1st 2025, 4:59:19 pm","August 1st 2025, 4:59:19 pm" +"In coderabbitHandler/src/middleware/session.ts, the .catch() method on getCacheResponse is intentionally used to handle cache failures gracefully by returning null, allowing the middleware to continue processing even when cache retrieval fails. This provides specific error logging and graceful degradation rather than letting cache errors bubble up to the outer try/catch.","mono","coderabbitHandler/src/middleware/session.ts","5793","","aquibbaig","July 10th 2025, 3:32:42 pm","July 10th 2025, 3:32:42 pm" +"When updating semgrep version in review-tool-versions.ts, ensure the test file pr-reviewer-saas/src/tools/semgrep/command.test.ts is also updated to reference the correct version number in the test data, as version mismatches can cause test failures and functionality issues.","mono","","","https://github.com/coderabbitai/mono/pull/5812","nimratcoderabbit","July 10th 2025, 4:19:46 pm","July 10th 2025, 4:19:46 pm" +"When updating semgrep version in review-tool-versions.ts, ensure the test file pr-reviewer-saas/src/tools/semgrep/command.test.ts is also updated to reference the correct version number in the test data, as version mismatches can cause test failures and functionality issues.","mono","","","https://github.com/coderabbitai/mono/pull/5812","nimratcoderabbit","July 10th 2025, 4:19:46 pm","July 10th 2025, 4:19:46 pm" +"In P4Event construction for comment events in pr-reviewer-saas/src/polling/p4-polling-service.ts, the changelistId field is currently a placeholder. The intended behavior is to pin to the actual change the comment is on (comment.changelistId), and if that's empty, defer to the latest changelist from the review (comment.latestChangelistId). The reviewId should not be included in the fallback chain for changelistId.","mono","pr-reviewer-saas/src/polling/p4-polling-service.ts","7081","","alexcoderabbitai","September 5th 2025, 3:54:08 pm","September 5th 2025, 3:54:08 pm" +"The project uses dd-trace as the official recommended Datadog approach instead of lighter alternatives like @datadog/datadog-metrics. This is an intentional architectural decision to enable future LLM Observability features in the service.","mono","packages/common/package.json","5865","","yashshanker","July 11th 2025, 8:41:23 am","July 11th 2025, 8:41:23 am" +"In ZenStack schema.zmodel files, the importCreateRouter and importProcedure paths are relative to the generated output directory, not the schema.zmodel file location. When troubleshooting import path issues, always check the actual file structure and verify the relative path from the output directory to the target trpc file.","mono","apps/db-api-server/schema.zmodel","6985","","ankitjena","August 29th 2025, 1:13:56 am","August 29th 2025, 1:13:56 am" +"In coderabbit-ui/src/hooks/useUserPermissions.ts, the enabled condition uses OR logic (Boolean(isFirebaseUser || currentOrganization?.id)) because there are two different authentication flows: Firebase user flow and normal user flow. The Firebase user flow works differently from the normal user flow, which is why permissions can be fetched when either isFirebaseUser is true OR currentOrganization?.id exists, rather than requiring both conditions.","mono","coderabbit-ui/src/hooks/useUserPermissions.ts","6985","","ankitjena","August 29th 2025, 1:14:38 am","August 29th 2025, 1:14:38 am" +"In ZenStack schema.zmodel files, when output is set to 'src/zenstack/trpc', the actual generated files are created one level deeper inside a 'routers' subdirectory at 'src/zenstack/trpc/routers/'. Import paths in importCreateRouter and importProcedure should be calculated relative to this routers subdirectory, not directly from the output directory specified in the schema.","mono","apps/db-api-server/schema.zmodel","6985","","ankitjena","August 29th 2025, 1:27:55 am","August 29th 2025, 1:27:55 am" +"In ZenStack schema.zmodel files, when output is set to 'src/zenstack/trpc', the actual generated files are created one level deeper inside a 'routers' subdirectory at 'src/zenstack/trpc/routers/'. Import paths in importCreateRouter and importProcedure should be calculated relative to this routers subdirectory, not directly from the output directory specified in the schema. The correct relative path from the routers subdirectory to a trpc file in src/ would be ""../../../trpc"".","mono","apps/db-api-server/schema.zmodel","6985","","ankitjena","August 29th 2025, 1:27:55 am","August 29th 2025, 1:27:55 am" +"In coderabbitHandler/src/trpc.ts, the getUserInfoWithRefresh function contains internal try-catch blocks that handle token expiration and refresh scenarios, providing built-in error handling for token refresh operations.","mono","coderabbitHandler/src/trpc.ts","5851","","aquibbaig","July 13th 2025, 12:53:26 am","July 13th 2025, 12:53:26 am" +"Session handling in coderabbitHandler has been fully migrated from setCacheResponse/getCacheResponse to direct redisClient operations using unhashed UUID-based keys in the format `cr-session-${sessionId}`. No backward compatibility concerns with hashed keys exist.","mono","coderabbitHandler/src/routers/session/utils.ts","5851","","aquibbaig","July 13th 2025, 12:55:16 am","July 13th 2025, 12:55:16 am" +"When reviewing PRs, focus on the changes introduced by the current PR rather than flagging pre-existing code quality issues unless they're directly related to or impacted by the changes being made.","mono","coderabbitHandler/src/routers/organizations.ts","5851","","aquibbaig","July 14th 2025, 4:08:14 am","July 14th 2025, 4:08:14 am" +"In pr-reviewer-saas, the TypedEventEmitter only needs to emit to the universal ""event"" channel since there are no specific typed event listeners in the codebase - the migration from Observable-based streaming uses only the async generator pattern that consumes the universal channel.","mono","pr-reviewer-saas/src/routers/extension.ts","6985","","ankitjena","August 29th 2025, 2:13:00 am","August 29th 2025, 2:13:00 am" +"In pr-reviewer-saas, the TypedEventEmitter only needs to emit to the universal ""event"" channel since there are no specific typed event listeners in the codebase - the migration from Observable-based streaming uses only the async generator pattern that consumes the universal channel.","mono","pr-reviewer-saas/src/routers/extension.ts","6985","","ankitjena","August 29th 2025, 2:13:00 am","August 29th 2025, 2:13:00 am" +"In pr-reviewer-saas, the TypedEventEmitter only needs to emit to the universal ""event"" channel since there are no specific typed event listeners in the codebase - the migration from Observable-based streaming uses only the async generator pattern that consumes the universal channel.","mono","pr-reviewer-saas/src/routers/extension.ts","6985","","ankitjena","August 29th 2025, 2:13:00 am","August 29th 2025, 2:13:00 am" +"When TypeScript's `""sourceMap"": true` is enabled in tsconfig.json, sourcemaps are generated during the regular build process, making it unnecessary to use special build scripts that explicitly enable sourcemap generation for tools like Vite.","mono",".github/workflows/deploy-ui-prod.yaml","5909","","alexcoderabbitai","July 14th 2025, 8:06:56 pm","July 14th 2025, 8:06:56 pm" +"When reviewing TypeScript class properties for mutability comments, consider whether the property name itself makes the mutability obvious (e.g., `currentIndex`, `counter`, `position`). If the naming convention clearly indicates the property will be mutated, an explicit comment explaining mutability may be redundant.","mono","pr-reviewer-saas/src/code-graph/symbol_graph.ts","5668","","NatoBoram","July 15th 2025, 1:15:55 pm","July 15th 2025, 1:15:55 pm" +"Based on new telemetry data from recrsn, the previous optimal maxIterations value of 50 for main agents in the agent framework is no longer sufficient. The updated telemetry indicates that higher iteration limits are needed for proper functionality.","mono","pr-reviewer-saas/src/agents/framework/agent.ts","5893","","recrsn","July 15th 2025, 1:24:36 pm","July 15th 2025, 1:24:36 pm" +"The SwarmClient.postReviewCommentReply() method in pr-reviewer-saas/src/platform-client/p4-client.ts already contains internal logic for handling parent comment threading and does not need external parentId handling in the P4EventClient.postReviewCommentReply() method.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 5th 2025, 4:19:55 pm","September 5th 2025, 4:19:55 pm" +"The SwarmClient.postReviewCommentReply() method in pr-reviewer-saas/src/platform-client/p4-client.ts already contains internal logic for handling parent comment threading via activityTimestamp matching, and when called with undefined parameters (as in P4EventClient), it appropriately falls back to posting top-level comments via postReviewComment.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 5th 2025, 4:19:55 pm","September 5th 2025, 4:19:55 pm" +"The SwarmClient.postReviewCommentReply() method in pr-reviewer-saas/src/platform-client/p4-client.ts already provides the correct abstraction for comment threading, using activityTimestamp and findCommentIdByTimestamp to resolve parent comments internally, with appropriate fallback to top-level comments when threading isn't possible. P4EventClient should delegate threading decisions to this layer rather than handling them directly.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 5th 2025, 4:19:55 pm","September 5th 2025, 4:19:55 pm" +"The semgrep version has been updated from 1.127.1 to 1.128.1 in review-tool-versions.ts as of this PR.","mono","","","https://github.com/coderabbitai/mono/pull/6073","nimratcoderabbit","July 18th 2025, 3:29:41 pm","July 18th 2025, 3:29:41 pm" +"The `/usr/share/cppcheck` directory contains configuration files, platforms, and addons for the cppcheck static analysis tool, including subdirectories like `cfg/`, `platforms/`, and `addons/` with various configuration and Python files.","mono","pr-reviewer-saas/src/utils/node.ts","5992","","alexcoderabbitai","July 16th 2025, 2:12:23 pm","July 16th 2025, 2:12:23 pm" +"Library instruction providers in CodeRabbit detect development tools and libraries (including devDependencies) to provide contextual review guidance, not for runtime dependency management. Tools like Tailwind CSS are typically devDependencies but still generate reviewable code patterns.","mono","pr-reviewer-saas/src/review/pro-review.ts","7086","","gowthamkishore3799","September 5th 2025, 8:31:46 pm","September 5th 2025, 8:31:46 pm" +"The user_experiment_bucket table was intentionally removed in migration 20250703095927_remove_user_experiment_bucket on July 3, 2025, but was accidentally re-added on July 10, 2025 due to a bad rebase in migration 20250710061721_review_feedback. The current experiment functionality uses the experiment_assignment table instead, making user_experiment_bucket obsolete.","mono","apps/db-api-server/prisma/migrations/20250725122216_add_users_integrations_table/migration.sql","6282","","alexcoderabbitai","July 25th 2025, 4:39:29 pm","July 25th 2025, 4:39:29 pm" +"In pr-reviewer-saas/src/tools/cppcheck/command.ts, the environment variables CPPCHECK_DATA_DIR=/usr/share/cppcheck and FILESDIR=/usr/share/cppcheck must be set inline in the command string before the cppcheck command itself. They cannot be removed from the command string even though they are also set in the executeInJail env options, as cppcheck won't run without them being set inline.","mono","pr-reviewer-saas/src/tools/cppcheck/command.ts","6084","","alexcoderabbitai","July 19th 2025, 4:39:15 pm","July 19th 2025, 4:39:15 pm" +"User krtkvrm prefers using TypeScript's `satisfies` operator over Zod schema validation for JSON parsing in storage operations, even when runtime validation was suggested for safety.","mono","apps/cli/src/services/storage/review.ts","6789","","krtkvrm","September 5th 2025, 9:30:53 pm","September 5th 2025, 9:30:53 pm" +"In apps/cli/src/services/review/auth/auth.service.ts, the parseAuthCallback function's missing state parameter for CSRF validation is already being addressed in a separate PR according to krtkvrm.","mono","apps/cli/src/services/review/auth/auth.service.ts","6789","","krtkvrm","September 5th 2025, 9:39:12 pm","September 5th 2025, 9:39:12 pm" +"The `currency_code` field is required in Chargebee subscription objects, so defensive programming with optional chaining is not necessary when accessing `subscription.subscription.currency_code`.","mono","billing/src/chargebee-client/chargebee.ts","6998","","k-ahlawat","August 29th 2025, 6:48:34 am","August 29th 2025, 6:48:34 am" +"In pr-reviewer-saas/src/review/code-index/relevant-snippets.ts, the error handling in calculateRelevantSnippetsForHunk uses logger.error appropriately because the error condition ""shouldn't happen ever"" according to ParthGandhi, making it an exceptional system error that warrants error-level logging even though execution continues.","mono","pr-reviewer-saas/src/review/code-index/relevant-snippets.ts","6026","","ParthGandhi","July 20th 2025, 10:01:12 am","July 20th 2025, 10:01:12 am" +"ParthGandhi prefers to keep small, static lists of hardcoded test organization IDs inline within functions rather than extracting them to constants, as he considers the inline approach more readable in such cases.","mono","pr-reviewer-saas/src/knowledge-base/code-index/eligibility.ts","6026","","ParthGandhi","July 20th 2025, 9:58:34 am","July 20th 2025, 9:58:34 am" +"In pr-reviewer-saas/src/knowledge-base/code-index/search.ts, decryption failures in the CodeIndexSearch class should use logger.error (not logger.warn) even though execution continues, because these failures are critical errors that should never happen in normal operation and require immediate attention.","mono","pr-reviewer-saas/src/knowledge-base/code-index/search.ts","6026","","ParthGandhi","July 20th 2025, 10:00:35 am","July 20th 2025, 10:00:35 am" +"In pr-reviewer-saas/src/knowledge-base/code-index/search.ts, the parseBlockName method should use logger.error (not logger.warn) when failing to parse block names from text because this represents a critical data integrity issue that should never occur in normal operation, requiring immediate attention via Sentry alerts even though execution continues with a fallback value.","mono","pr-reviewer-saas/src/knowledge-base/code-index/search.ts","6026","","ParthGandhi","July 20th 2025, 10:00:40 am","July 20th 2025, 10:00:40 am" +"In coderabbit-ui, importing from @coderabbitai/common package breaks the frontend build, so local constants like gitProvider in coderabbit-ui/src/pages/Integrations/types.ts are necessary workarounds rather than duplication issues.","mono","coderabbit-ui/src/pages/Integrations/types.ts","6998","","k-ahlawat","August 29th 2025, 7:53:51 am","August 29th 2025, 7:53:51 am" +"Do not suggest changes or improvements related to keytar usage in the CLI codebase. The maintainer has explicitly opted out of keytar-related feedback.","mono","apps/cli/src/services/storage/auth.ts","6789","","krtkvrm","September 6th 2025, 12:48:58 am","September 6th 2025, 12:48:58 am" +"The user tried using `satisfies` instead of a type guard for JSON parsing validation, but `satisfies` only provides compile-time type checking and doesn't help with runtime validation of parsed JSON data.","mono","apps/cli/src/services/storage/review.ts","6789","","krtkvrm","September 6th 2025, 12:50:18 am","September 6th 2025, 12:50:18 am" +"In packages/protos, proto-loader-gen-types generates only .d.ts files into src/generated/, but the TypeScript compiler (tsgo) during the build step transpiles these into corresponding .js files in dist/generated/, so exports mappings to ./dist/generated/*.js work correctly at runtime.","mono","packages/protos/package.json","7002","","recrsn","August 29th 2025, 10:55:14 am","August 29th 2025, 10:55:14 am" +"The `outside_jail` flag in ExecuteCodeRequestOptions in packages/protos/proto/sandboxer/v1/sandboxer.proto has been assessed as secure by the PR author recrsn in the context of the sandboxer security and execution model refactor.","mono","packages/protos/proto/sandboxer/v1/sandboxer.proto","7002","","recrsn","August 29th 2025, 10:56:46 am","August 29th 2025, 10:56:46 am" +"For self-hosted instances in the VSCode extension, the preferred provider type format is ""github-self-hosted"" rather than generic ""self-hosted"" to maintain type safety while distinguishing from regular GitHub.com instances.","mono","vscode-extension/src/handlers/selfHostedLogin.ts","6071","","recrsn","July 21st 2025, 4:52:56 am","July 21st 2025, 4:52:56 am" +"In the organization_user model, the git_provider_role field is intentionally kept as String? @db.VarChar(50) rather than an enum because different Git providers (GitHub, GitLab, etc.) have different role naming conventions. The team plans to potentially add an enum later once they have a clearer picture of all provider role variations.","mono","apps/db-api-server/prisma/schema.prisma","6100","","sleep-404","July 21st 2025, 5:31:27 am","July 21st 2025, 5:31:27 am" +"When migrating PNPM settings from .npmrc to pnpm-workspace.yaml, it may be necessary to maintain settings in both locations during a transition period to support team members using different PNPM versions. The old format uses kebab-case in .npmrc (e.g., shared-workspace-lockfile) while the new format uses camelCase in pnpm-workspace.yaml (e.g., sharedWorkspaceLockfile).","mono","pnpm-workspace.yaml","6587","","NatoBoram","August 10th 2025, 4:01:12 pm","August 10th 2025, 4:01:12 pm" +"In pr-reviewer-saas/src/knowledge-base/code-guidelines/guidelines-index.ts, the manifest is considered the source of truth for guideline files. When deleting files, the manifest should be updated first before deleting from object storage to maintain data consistency in the tracking system, even if this risks leaving orphaned files in storage.","mono","pr-reviewer-saas/src/knowledge-base/code-guidelines/guidelines-index.ts","6105","","ganeshpatro321","July 21st 2025, 7:46:35 am","July 21st 2025, 7:46:35 am" +"In pr-reviewer-saas/src/comments/commands.ts, there is additional validation for botName handling beyond what's visible in the renderCommands function.","mono","pr-reviewer-saas/src/comments/commands.ts","7001","","recrsn","August 29th 2025, 10:04:38 am","August 29th 2025, 10:04:38 am" +"The botUsername passed to renderCommands() in pr-reviewer-saas/src/comments/commands.ts is already normalized upstream in the event clients (GitHub/GitLab) where it's trimmed, lowercased, and has whitespace removed. Additional '@' prefix handling is done via normalizeGitHubUsername() function in comment-utils.ts.","mono","pr-reviewer-saas/src/comments/commands.ts","7001","","recrsn","August 29th 2025, 10:04:38 am","August 29th 2025, 10:04:38 am" +"The botUsername validation in pr-reviewer-saas/src/comments/commands.ts is unnecessary because platform clients (GitHub, GitLab, Bitbucket, Azure) already return clean, normalized usernames through their botUsername getters. The normalizeGitHubUsername() function only removes '[bot]' suffixes for comparison purposes, not '@' prefixes.","mono","pr-reviewer-saas/src/comments/commands.ts","7001","","recrsn","August 29th 2025, 10:04:38 am","August 29th 2025, 10:04:38 am" +"TRPC mutations from `useMutation()` are stable references that don't change between renders, so they don't need to be included in React useEffect dependency arrays when only calling methods like `mutateAsync` on them, not reading mutable properties.","mono","coderabbit-ui/src/hooks/usePrefetchOrgMembers.ts","6436","","sleep-404","August 3rd 2025, 9:56:34 pm","August 3rd 2025, 9:56:34 pm" +"The `prefetchOrgMembers` mutation in the organization_members router has no input schema and extracts the organization ID from request headers rather than requiring it as an explicit parameter, so it should be called as `mutateAsync()` without arguments.","mono","coderabbit-ui/src/hooks/usePrefetchOrgMembers.ts","6436","","sleep-404","August 3rd 2025, 9:55:35 pm","August 3rd 2025, 9:55:35 pm" +"In TypeScript projects using ES modules (like apps/cli), import statements must include .js extensions even when importing from .ts files, because TypeScript doesn't rewrite import specifiers during compilation and Node.js module resolution at runtime looks for the actual .js files. Do not suggest removing .js extensions from import statements in such projects.","mono","apps/cli/src/utils/machine-id.ts","6789","","krtkvrm","August 29th 2025, 12:05:53 pm","August 29th 2025, 12:05:53 pm" +"In React components using TRPC feature flag queries (like trpc.featureFlagCheck.mcpEnabled.useQuery()), explicit error handling is often unnecessary because the design follows a ""fail-safe"" pattern where undefined data causes feature sections to be hidden, which is the desired fallback behavior.","mono","coderabbit-ui/src/pages/Integrations/Integrations.tsx","6308","","helizaga","July 28th 2025, 4:00:50 pm","July 28th 2025, 4:00:50 pm" +"The SafeDep Vet tool command in pr-reviewer-saas/src/tools/vet/command.ts had two critical issues: 1) Wrong flag format using --report-json 'filename' instead of --report-json=filename, and 2) Path mismatch where the command ran in GIT_PATH but tried to read the report from repoPath (clonePath), which are different directories in the jailed environment.","mono","","","https://github.com/coderabbitai/mono/pull/6309","nimratcoderabbit","July 28th 2025, 5:05:04 pm","July 28th 2025, 5:05:04 pm" +"In the sandboxer execution context, `executed.all` from sandbox.executeCommand is always a string type, so type guards are unnecessary when assigning to fileErrors records.","mono","apps/sandboxer/src/tools/detekt/command.ts","6899","","recrsn","September 6th 2025, 7:29:26 pm","September 6th 2025, 7:29:26 pm" +"In pr-reviewer-saas/src/knowledge-base/repo-content-indexer/code-document-index/code-document-index.ts, ParthGandhi prefers to skip SQL injection protection suggestions for LanceDB filter construction when building filters with folder paths, repoName, and repoOwner parameters, as these are considered internal and reasonably safe in the CodeDocumentIndex context.","mono","pr-reviewer-saas/src/knowledge-base/repo-content-indexer/code-document-index/code-document-index.ts","6586","","ParthGandhi","August 11th 2025, 6:08:21 am","August 11th 2025, 6:08:21 am" +"In React applications using Zustand for state management, calling window.location.assign() or window.location.href after setting store data causes the JavaScript state to reset because these methods trigger full page reloads. This defeats the purpose of client-side state management. Use React Router's navigate() instead to maintain state across route changes.","mono","coderabbit-ui/src/firebase/provider.tsx","6172","","aquibbaig","July 29th 2025, 1:44:53 pm","July 29th 2025, 1:44:53 pm" +"The user prefers to keep library version detection simple initially, focusing on library presence detection rather than detailed version constraint parsing for the pubspec.yaml parser and other manifest parsers.","mono","pr-reviewer-saas/src/knowledge-base/library-instructions/tests/pubspec-yaml.test.ts","7357","","gowthamkishore3799","September 20th 2025, 10:27:22 pm","September 20th 2025, 10:27:22 pm" +"The code-chat.ts CLI tool in pr-reviewer-saas/src/agents/cli/tool-calling/ is designed to run locally on developer machines for interactive codebase exploration, so LocalExecutor is the correct choice rather than sandbox execution.","mono","pr-reviewer-saas/src/agents/cli/tool-calling/code-chat.ts","6899","","recrsn","September 6th 2025, 7:35:28 pm","September 6th 2025, 7:35:28 pm" +"In LanceDB v0.21+, the table.createIndex() method expects an options object with a config property ({ config: Index }), not the Index directly. The correct usage is: await table.createIndex(column, { config }) where config is an Index instance.","mono","pr-reviewer-saas/src/lancedb/table/abstract.ts","6586","","ParthGandhi","August 11th 2025, 7:15:06 am","August 11th 2025, 7:15:06 am" +"In the CodeRabbit codebase, the GitLab self-hosted provider string must be ""gitlab-self-hosted"" (with hyphen), not ""gitlab-selfhosted"" (without hyphen). This is the canonical format defined in the @coderabbitai/common package and should be used consistently throughout the codebase.","mono","coderabbitHandler/src/utils/utils.test.ts","6601","","karan925","August 11th 2025, 3:03:52 pm","August 11th 2025, 3:03:52 pm" +"When changing organization context in navigation handlers, the sequence should be: 1) update organization state, 2) navigate, 3) invalidate cache and refetch. Invalidating before navigation can cause race conditions where new page data fetches execute with stale organization context.","mono","coderabbit-ui/src/components/Nav/DesktopSelectOrg.tsx","7094","","aquibbaig","September 7th 2025, 7:25:28 am","September 7th 2025, 7:25:28 am" +"In LanceDB's fullTextSearch API, the columns parameter can accept both string and string[] types without requiring normalization, so converting a string to an array is unnecessary.","mono","pr-reviewer-saas/src/knowledge-base/lancedb/index/text/abstract.ts","6586","","ParthGandhi","August 11th 2025, 7:37:52 am","August 11th 2025, 7:37:52 am" +"The /accessToken endpoints (POST / and POST /refresh) in coderabbitHandler/src/routes/access_token.ts are intentionally public without authentication middleware because they handle OAuth code exchange and token refresh operations, which must be accessible without prior authentication for the OAuth flow to work correctly.","mono","coderabbitHandler/src/app.ts","6577","","bar0meter","August 11th 2025, 8:39:44 am","August 11th 2025, 8:39:44 am" +"In P4ServiceManager.startP4Service(), P4EventClient can serve as both eventClient and platformClient parameters to construct() because it implements the PlatformClient interface and properly delegates platform operations to its internal SwarmClient.","mono","pr-reviewer-saas/src/polling/p4-service-manager.ts","6961","","alexcoderabbitai","August 29th 2025, 5:43:42 pm","August 29th 2025, 5:43:42 pm" +"The correct command for generating docstrings in CodeRabbit is `@coderabbitai generate docstrings` (plural), not singular. This is consistently used throughout all documentation files including reference/review-commands.mdx, finishing-touches/docstrings.mdx, and changelog entries.","docs","changelog/docstrings.mdx","8","","edgarcerecerez","August 4th 2025, 12:55:52 pm","August 4th 2025, 12:55:52 pm" +"P4/Perforce integration in the codebase is only used for self-hosted deployments, where DEFAULT_SETTINGS is appropriate and per-repo/org configuration resolution may not be necessary.","mono","pr-reviewer-saas/src/polling/p4-service-manager.ts","6961","","alexcoderabbitai","August 29th 2025, 6:08:32 pm","August 29th 2025, 6:08:32 pm" +"In P4/Perforce Swarm, comment IDs are unreliable for threading. Instead of using parentId, use postReviewCommentReply() with reviewId, activityTimestamp, and parentCommentBody parameters to locate the parent comment for threaded replies.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6961","","alexcoderabbitai","August 29th 2025, 6:35:44 pm","August 29th 2025, 6:35:44 pm" +"P4/Perforce has two distinct comment posting methods: postComment() for top-level comments (uses reviewId) and postReviewCommentReply() for threaded replies (uses reviewId + timestamp + parentCommentBody matching).","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6961","","alexcoderabbitai","August 29th 2025, 6:35:44 pm","August 29th 2025, 6:35:44 pm" +"In the P4EventClient, the provider field in getProviderHostURL should return ""p4-perforce"" (matching the EventClientType) rather than ""perforce"" to maintain consistency with the established pattern across other platform clients.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6961","","alexcoderabbitai","August 29th 2025, 6:49:14 pm","August 29th 2025, 6:49:14 pm" +"In import graph building functions like extendImportGraph in pr-reviewer-saas/src/code-graph/import_graph_builder.ts, when the function returns early due to resource limits (like too many imports exceeding maxArrayLength), use logger.error because the import graph building process is terminated entirely, not just logged and continued.","mono","pr-reviewer-saas/src/code-graph/import_graph_builder.ts","6409","","NatoBoram","August 5th 2025, 2:23:00 am","August 5th 2025, 2:23:00 am" +"NatoBoram prefers implementing language support incrementally in the import graph configuration, adding one language at a time rather than implementing multiple languages simultaneously.","mono","pr-reviewer-saas/src/code-graph/import_graph_config.ts","6409","","NatoBoram","August 5th 2025, 2:23:38 am","August 5th 2025, 2:23:38 am" +"In TypeScript, when a const object is exported alongside a type alias derived from it (using patterns like `export const Obj = {...} as const` and `export type Obj = (typeof Obj)[keyof typeof Obj]`), imports of that identifier are value imports, not type-only imports, even when the identifier is also used as a type annotation. This is because the runtime code may reference the const object's properties (e.g., in switch statements).","mono","pr-reviewer-saas/src/code-graph/cli.ts","6409","","NatoBoram","August 5th 2025, 2:21:18 am","August 5th 2025, 2:21:18 am" +"In NatoBoram's TypeScript projects, when organizing imports, completely separate type-only imports from value imports into distinct import statements. Use `import type { ... }` for types in separate statements, and regular `import { ... }` for values in separate statements. Do not mix them using inline `type` keywords like `import { Value, type Type }`. Example: incorrect: `import { ImportGraph, ImportNodeType, type ImportNode } from ""./import_graph.js""` - correct: `import type { ImportNode } from ""./import_graph.js""` and `import { ImportGraph, ImportNodeType } from ""./import_graph.js""`","mono","pr-reviewer-saas/src/code-graph/import_graph_nodejs.ts","6409","","NatoBoram","August 5th 2025, 3:37:11 am","August 5th 2025, 3:37:11 am" +"In the sandboxer service, dd-trace initialization is handled in apps/sandboxer/src/start.ts with `import ""dd-trace/init""`, which allows other modules to safely use named imports like `import { tracer } from ""dd-trace""` since the tracer is already initialized at application startup.","mono","apps/sandboxer/src/grpc-service.ts","7096","","recrsn","September 7th 2025, 2:04:28 pm","September 7th 2025, 2:04:28 pm" +"When removing LIBRARIES blocks from AI response text in pr-reviewer-saas, use a global, CRLF-aware regex pattern: `/LIBRARIES\s*\r?\n[\s\S]*?(?=\r?\n\r?\n|\r?\n##|$)/gi` to handle all edge cases including multiple blocks, different line endings, and EOF scenarios.","mono","pr-reviewer-saas/src/prompts/prompts.ts","7357","","gowthamkishore3799","September 21st 2025, 12:41:18 pm","September 21st 2025, 12:41:18 pm" +"When ESNext is included in TypeScript's lib array, it provides access to all latest ECMAScript features including ErrorOptions from ES2022.Error, so no additional lib entries or fallbacks are needed.","mono","apps/sandboxer/src/utils/grpc.ts","7096","","recrsn","September 7th 2025, 3:48:43 pm","September 7th 2025, 3:48:43 pm" +"The pr_metrics table has a unique constraint on [org_id, pr_url], so when filtering by a single org_id, each pr_url appears at most once in the result set.","mono","apps/db-api-server/src/routers/metrics.ts","6953","","helizaga","September 7th 2025, 4:25:17 pm","September 7th 2025, 4:25:17 pm" +"In addPrAuthorToSubscribers function for Azure DevOps provider, the lookup strategy is intentionally different from other providers. Azure uses checkForAzureSubscriber which queries by email first then filters by provider_user_id to handle duplicates, while non-Azure providers use direct provider_user_id lookup. There should be no fallback from Azure to generic lookup as they serve different purposes.","mono","coderabbitHandler/src/services/review.service.ts","6611","","karan925","August 11th 2025, 9:50:58 pm","August 11th 2025, 9:50:58 pm" +"Azure DevOps provider does not use or provide host_url values, unlike other providers. The Azure-specific subscriber lookup in checkForAzureSubscriber correctly filters only by provider and email, not host_url.","mono","coderabbitHandler/src/services/review.service.ts","6611","","karan925","August 11th 2025, 9:53:05 pm","August 11th 2025, 9:53:05 pm" +"In pr-reviewer-saas/src/schedulers/utils/activity.ts, the Score Card detection should check for both ""Score Card"" and ""Score Chart"" in comment bodies since users may use either terminology when referring to score cards.","mono","pr-reviewer-saas/src/schedulers/utils/activity.ts","6574","","alexcoderabbitai","August 12th 2025, 9:36:59 am","August 12th 2025, 9:36:59 am" +"JavaScript promises can only settle once - subsequent resolve() or reject() calls are no-ops, so settlement guards are unnecessary when working with promise constructors.","mono","apps/sandboxer/src/sandbox-invocation.ts","7096","","recrsn","September 7th 2025, 5:26:00 pm","September 7th 2025, 5:26:00 pm" +"The @coderabbitai/cli package uses a separate GitHub repository (https://github.com/coderabbitai/cli) for package distribution and publishing, even though it's developed within the main monorepo at https://github.com/coderabbitai/mono.","mono","apps/cli/package.json","6515","","krtkvrm","August 6th 2025, 6:28:29 am","August 6th 2025, 6:28:29 am" +"In pr-reviewer-saas/src/schedulers/standup-utils.ts, the properties botComments, comments, and linkedIssues in OrganizationPrActivity objects are guaranteed to be defined arrays by TypeScript types, as confirmed by ESLint's @typescript-eslint/no-unnecessary-condition rule. Defensive optional chaining is unnecessary for these properties.","mono","pr-reviewer-saas/src/schedulers/standup-utils.ts","6522","","alexcoderabbitai","August 6th 2025, 11:57:06 am","August 6th 2025, 11:57:06 am" +"In coderabbitHandler/src/env.ts, environment variables can be made optional using `maybeEnvString()` instead of `secretString()` to allow self-hosted environments to function without requiring all SaaS-specific configurations like Discord, PostHog, Redis, and bot whitelists.","mono","","","https://github.com/coderabbitai/mono/pull/6529","alexcoderabbitai","August 6th 2025, 5:07:54 pm","August 6th 2025, 5:07:54 pm" +"In self-hosted deployments, customers typically leave Slack and Discord OAuth env vars empty in .env, but secretString() requires them to be set, causing startup errors unless dummy values are provided. There is no documented dummy value pattern; making these vars optional with maybeEnvString() is the correct approach.","mono","coderabbitHandler/src/env.ts","6529","","alexcoderabbitai","August 6th 2025, 5:27:27 pm","August 6th 2025, 5:27:27 pm" +"For the CodeRabbit mono repository Docker builds, the build argument passing for tool versions like OSV_SCANNER_VERSION is handled automatically by the existing CI/build system, even if not explicitly visible in the workflow files. The build process works correctly without requiring manual addition of build args.","mono","docker/pr-reviewer-saas/Dockerfile","6430","","alexcoderabbitai","August 12th 2025, 2:42:54 pm","August 12th 2025, 2:42:54 pm" +"The `getSelectedOrg()` utility function uses `useUserStore.getState().currentOrganization` which is non-reactive (doesn't trigger re-renders), while `useUserStore(state => state.currentOrganization)` is reactive and triggers re-renders when the current organization changes.","mono","coderabbit-ui/src/components/Nav/DesktopSelectOrg.tsx","6172","","aquibbaig","August 13th 2025, 3:44:42 am","August 13th 2025, 3:44:42 am" +"The `getSelectedOrg()` utility function in coderabbit-ui/src/utils/utils.ts has been refactored to use `useUserStore.getState().currentOrganization` internally, removing all sessionStorage dependencies. It no longer requires migration to store-based approach as it already uses the user store.","mono","coderabbit-ui/src/pages/Settings/Repository/RepositoryList.tsx","6172","","aquibbaig","August 13th 2025, 3:54:42 am","August 13th 2025, 3:54:42 am" +"The user store interface in coderabbit-ui/src/store/user.ts uses camelCase property naming convention for user object properties like providerUserId, userName, avatarUrl, firstName, lastName, recentlyCreated, secondaryEmails, etc.","mono","coderabbit-ui/src/firebase/provider.tsx","6172","","aquibbaig","August 13th 2025, 3:55:59 am","August 13th 2025, 3:55:59 am" +"The user store interface in coderabbit-ui/src/store/user.ts uses camelCase property naming convention for all user object properties including providerUserId, userName, avatarUrl, firstName, lastName, recentlyCreated, secondaryEmails, etc. Code using setUser should pass objects with camelCase property names.","mono","coderabbit-ui/src/firebase/provider.tsx","6172","","aquibbaig","August 13th 2025, 3:55:59 am","August 13th 2025, 3:55:59 am" +"When reviewing new UI component additions that use Radix primitives, verify the actual implementation before suggesting to remove dependencies. New shadcn-style components legitimately need their corresponding Radix dependencies.","mono","coderabbit-ui/package.json","6635","","ayushtickoo","August 13th 2025, 6:15:41 am","August 13th 2025, 6:15:41 am" +"In the coderabbit-ui project, comprehensive theme CSS variables are available including --muted for both light and dark modes, which should be preferred over hard-coded hex colors for better theme adaptation.","mono","coderabbit-ui/src/components/ui/progress.tsx","6635","","ayushtickoo","August 13th 2025, 6:19:11 am","August 13th 2025, 6:19:11 am" +"In dd-trace Node.js library, the default export provides a tracer property, so ddTrace.tracer.trace() is a valid API call for creating spans, where ddTrace is the default export from ""dd-trace"".","mono","pr-reviewer-saas/src/utils/tracing-utils.ts","7099","","recrsn","September 8th 2025, 12:20:11 am","September 8th 2025, 12:20:11 am" +"For CLI applications that use localhost redirect URIs, HTTP is acceptable and standard practice since communication stays within the local machine. Random port generation is preferred to avoid conflicts, and path-specific validation like `/cli/login/callback` provides adequate security for local CLI contexts.","mono","coderabbit-ui/src/services/providers/cli.ts","6639","","krtkvrm","August 13th 2025, 9:47:25 am","August 13th 2025, 9:47:25 am" +"In pr-reviewer-saas/src/tools/osv-scanner/command.ts, the vuln.severity property is guaranteed to be defined as an array by TypeScript types. Adding null-safety checks like `vuln.severity && vuln.severity.length > 0` violates ESLint rules and should be avoided. The code can safely access `vuln.severity.length` directly.","mono","pr-reviewer-saas/src/tools/osv-scanner/command.ts","6430","","alexcoderabbitai","August 13th 2025, 1:22:10 pm","August 13th 2025, 1:22:10 pm" +"Optional chaining (result?.source?.path) violates ESLint rules in the codebase and should not be used. This pattern has been removed from the codebase standards.","mono","pr-reviewer-saas/src/tools/osv-scanner/command.ts","6430","","alexcoderabbitai","August 13th 2025, 1:22:38 pm","August 13th 2025, 1:22:38 pm" +"dd-trace does expose TracerProvider functionality for OpenTelemetry compatibility. The correct pattern is: `const tracer = ddTrace.init(); const { TracerProvider } = tracer; const provider = new TracerProvider(); provider.register()`","mono","packages/common/src/observability/instrumentation.ts","7099","","recrsn","September 8th 2025, 1:56:56 am","September 8th 2025, 1:56:56 am" +"For development-only configuration files (like compose.yaml used for local development), security concerns should not be raised as these files are not used in production environments.","mono","compose.yaml","6652","","NickBusey","August 13th 2025, 6:04:50 pm","August 13th 2025, 6:04:50 pm" +"alexcoderabbitai's mono repository uses pnpm workspaces with 19+ workspaces, mixed package managers (primarily pnpm, some npm), and includes apps/, packages/, and various root-level services. OSV scanner configuration should optimize for mono repository structure with proper workspace handling and ignore patterns.","mono","","","https://github.com/coderabbitai/mono/pull/6661","alexcoderabbitai","August 13th 2025, 9:10:56 pm","August 13th 2025, 9:10:56 pm" +"GPT-5 models (like ""gpt-5-2025-08-07"") only support temperature=1 and do not allow other temperature values, unlike earlier GPT models that support variable temperature settings.","mono","pr-reviewer-saas/src/eval/scaler_eval.ts","6637","","nehal-a2z","August 13th 2025, 11:14:12 pm","August 13th 2025, 11:14:12 pm" +"GPT-5 models reject custom temperature values and return ""Unsupported parameter/value"" errors. Developer reports indicate that GPT-5 only supports its default temperature behavior and instead provides new steering parameters: reasoning_effort (minimal/low/medium/high) and verbosity (low/medium/high) for controlling model behavior.","mono","pr-reviewer-saas/src/eval/scaler_eval.ts","6637","","nehal-a2z","August 13th 2025, 11:14:12 pm","August 13th 2025, 11:14:12 pm" +"In pr-reviewer-saas/src/eval/utils-evals.ts, the llmCall_Anthropic function is no longer used after the eval system migration to OpenAI/GPT-5. All evaluation calls now use llmCall_OpenAI instead.","mono","pr-reviewer-saas/src/eval/utils-evals.ts","6637","","nehal-a2z","August 14th 2025, 12:10:14 am","August 14th 2025, 12:10:14 am" +"In pr-reviewer-saas/src/eval/utils-evals.ts, llmCall_Anthropic is still actively used in multiple locations: evaluateDeterministicCriteria (line 125), getScoresFromModel (line 201), and in summarize-file-diff/grader.ts (lines 174 and 246). The empty model string will cause runtime failures.","mono","pr-reviewer-saas/src/eval/utils-evals.ts","6637","","nehal-a2z","August 14th 2025, 12:10:14 am","August 14th 2025, 12:10:14 am" +"In CLI applications in pr-reviewer-saas/src/code-graph/cli.ts, NatoBoram considers OS-level process termination sufficient for cleaning up resources like worker pools when errors occur, rather than requiring explicit try/finally blocks for resource cleanup in all error paths.","mono","pr-reviewer-saas/src/code-graph/cli.ts","6654","","NatoBoram","August 14th 2025, 12:43:50 am","August 14th 2025, 12:43:50 am" +"In pr-reviewer-saas workerpool configuration, NatoBoram confirmed that worker stdout/stderr output is intentionally written by their team and should remain enabled in production via emitStdStreams: true for debugging/monitoring purposes, not gated by NODE_ENV.","mono","pr-reviewer-saas/src/workerpool/pool.ts","6654","","NatoBoram","August 14th 2025, 12:48:48 am","August 14th 2025, 12:48:48 am" +"NatoBoram prefers maintaining dev-prod environment parity in pr-reviewer-saas, including matching memory allocation settings like --max-old-space-size between development and deployment environments (both using 10GB heap size).","mono","pr-reviewer-saas/package.json","6654","","NatoBoram","August 14th 2025, 1:10:53 am","August 14th 2025, 1:10:53 am" +"In the coderabbit-ui codebase, React components should use const-bound arrow functions (e.g., `const ComponentName: React.FC = () => { ... }`) as the preferred style. The ESLint func-style rule suggesting function declarations should be ignored or disabled to align with the project's coding conventions.","mono","coderabbit-ui/src/pages/OnboardingV2/components/header/index.tsx","6669","","ayushtickoo","August 14th 2025, 2:12:27 am","August 14th 2025, 2:12:27 am" +"vm.measureMemory in Node.js does not require the --expose-gc flag to function and will not throw an error if the flag is not provided. The --expose-gc flag only exposes a global gc() function and is separate from vm.measureMemory functionality. measureMemory can reject with ERR_CONTEXT_NOT_INITIALIZED in specific cases related to context state, but not due to missing --expose-gc.","mono","pr-reviewer-saas/src/code-graph/import_cache.ts","6654","","NatoBoram","August 14th 2025, 2:20:51 am","August 14th 2025, 2:20:51 am" +"The IteratorObject interface in modern JavaScript/TypeScript includes a toArray() method that creates a new array from the values yielded by the iterator. This is part of the Iterator Helpers specification and should not be flagged as incorrect when used on iterators returned by Map methods like values() and entries().","mono","pr-reviewer-saas/src/code-graph/import_cache.test.ts","6654","","NatoBoram","August 14th 2025, 2:26:35 am","August 14th 2025, 2:26:35 am" +"MapIterator is the official TypeScript iterator type returned by Map methods (keys(), values(), entries()). It extends IteratorObject which extends Iterator. This is part of TypeScript's built-in type definitions and should not be flagged as incorrect when implementing Map-like interfaces.","mono","pr-reviewer-saas/src/code-graph/import_cache.ts","6654","","NatoBoram","August 14th 2025, 2:43:49 am","August 14th 2025, 2:43:49 am" +"In apps/sandboxer/src/jail-security.ts, the SUID/SGID scan using `find / -perm /4000 -o -perm /2000` is designed to find ALL SUID/SGID files for debugging purposes, not just the first match. The comprehensive output is necessary for security assessment and debugging.","mono","apps/sandboxer/src/jail-security.ts","7002","","recrsn","September 1st 2025, 3:27:47 pm","September 1st 2025, 3:27:47 pm" +"The jail security checks in apps/sandboxer/src/jail-security.ts are designed to verify sandbox isolation by probing cloud metadata services (AWS, GCP, Azure, Alibaba). These checks should fail to access any metadata services - if they succeed, it indicates a security vulnerability. The ECS metadata probe uses a generic ""/credentials"" path to test isolation, not functional ECS integration.","mono","apps/sandboxer/src/jail-security.ts","7002","","recrsn","September 1st 2025, 3:31:18 pm","September 1st 2025, 3:31:18 pm" +"The StepProgressBar component's default typography has been updated to use `font-inter text-[12px] leading-[150%] font-semibold tracking-[0.03em]` as part of the design system standards, not as onboarding-specific styling. This represents the new default styling for all stepper components across the application.","mono","coderabbit-ui/src/components/StepProgressBar/StepProgressBar.tsx","6669","","ayushtickoo","August 14th 2025, 3:42:15 am","August 14th 2025, 3:42:15 am" +"The parse-link-header npm module uses `export = parseLinkHeader` syntax (CommonJS style), so namespace imports (`import * as parseLinkHeader`) will not work. It requires either esModuleInterop enabled for default imports or CommonJS import syntax.","mono","coderabbitHandler/src/routers/repositories.ts","7018","","ayushtickoo","September 1st 2025, 12:35:24 pm","September 1st 2025, 12:35:24 pm" +"Mintlify supports code fence attributes including `lines`, `wrap`, and `icon` properties. Syntax like ```yaml YAML lines wrap icon=""code"" is valid and supported by Mintlify for documentation rendering.","docs","tools/index.mdx","56","","edgarcerecerez","September 1st 2025, 12:39:25 pm","September 1st 2025, 12:39:25 pm" +"For CLI telemetry in apps/cli/src/services/telemetry/index.ts, avoid sending error stack traces to external analytics services like PostHog due to privacy concerns. Stack traces can expose local file paths, internal implementation details, and potentially sensitive data. Instead, send error.message and error.constructor.name for categorization while logging full errors locally.","mono","apps/cli/src/services/telemetry/index.ts","6679","","krtkvrm","August 14th 2025, 7:29:26 am","August 14th 2025, 7:29:26 am" +"In LLM tool calling workflows, models require an assistant message to follow tool calls. After tool messages are provided in response to tool calls, the conversation flow must continue with an assistant message, not a user message. This is a requirement of the OpenAI API and similar LLM APIs.","mono","pr-reviewer-saas/src/agents/framework/tool-calling-agent.ts","6677","","recrsn","August 14th 2025, 7:52:46 am","August 14th 2025, 7:52:46 am" +"When tRPC queries encounter ""Input is too big for a single dispatch"" errors, it's due to URL length limitations since queries use GET requests by default. The solution is to use a mutation instead, which forces a POST request that can handle larger payloads in the request body.","mono","coderabbit-ui/src/hooks/useInitializeApp.ts","6681","","aquibbaig","August 14th 2025, 8:14:35 am","August 14th 2025, 8:14:35 am" +"In coderabbitHandler/src/routers/users.ts, the getPermissions query endpoint is being deprecated and replaced with getUserPermissions mutation. This is an intentional change from query to mutation semantics.","mono","coderabbitHandler/src/routers/users.ts","6681","","aquibbaig","August 14th 2025, 8:36:01 am","August 14th 2025, 8:36:01 am" +"In apps/cli/src/utils/session.ts, the createSessionId() function has been entirely removed in favor of lazy initialization. The function is now named getOrCreateSessionId() and automatically creates a session ID using randomUUID() when called if currentSessionId is not already set, removing the need for explicit initialization at command start.","mono","apps/cli/src/utils/session.ts","6679","","krtkvrm","August 14th 2025, 8:36:52 am","August 14th 2025, 8:36:52 am" +"The user yashshanker prefers to avoid high-cardinality tags in DataDog metrics to prevent increased storage costs and query performance issues. Session IDs, retry reasons, and fallback paths should not be suggested as metric tags.","mono","pr-reviewer-saas/src/utils/llm-observability.ts","6682","","yashshanker","August 14th 2025, 9:30:27 am","August 14th 2025, 9:30:27 am" +"When explaining ""runtime usage confirmed"" for dependencies, it means the package is imported and used in production code that executes when the application is deployed, as opposed to only being used during development, testing, or build processes.","mono","coderabbitHandler/package.json","6985","","ankitjena","September 1st 2025, 7:05:12 am","September 1st 2025, 7:05:12 am" +"tRPC v11 transformer configuration (transformer: superjson on httpBatchLink) is only required if the project was already using transformers in v10. If no transformers were used before the upgrade, no transformer configuration is needed.","mono","pr-reviewer-saas/package.json","6985","","ankitjena","September 1st 2025, 7:04:48 am","September 1st 2025, 7:04:48 am" +"When reviewing tRPC v11 migrations, only suggest adding superjson if the codebase actually uses transformers in their tRPC client configurations. Many codebases use tRPC without transformers and don't need superjson.","mono","coderabbitHandler/package.json","6985","","ankitjena","September 1st 2025, 7:07:07 am","September 1st 2025, 7:07:07 am" +"The `maybeStrings` function in `src/env.ts` was refactored to improve clarity and modularity by separating string manipulation into a separate utility function `parseStringToList`.","pr-reviewer-saas","src/env.ts","879","","NatoBoram","June 10th 2024, 3:44:11 pm","August 14th 2025, 10:21:15 am" +"In AuthService class in apps/cli/src/services/review/auth/auth.service.ts, the user prefers to keep wrapper methods like getCurrentOrganization() even when they simply delegate to standalone helper functions, for improved readability and consistency of the class interface.","mono","apps/cli/src/services/review/auth/auth.service.ts","6789","","krtkvrm","September 2nd 2025, 1:33:15 am","September 2nd 2025, 1:33:15 am" +"In coderabbitHandler projects, the parse-link-header module can be imported using default import syntax (`import parseLinkHeader from ""parse-link-header""`) without requiring explicit esModuleInterop configuration changes in tsconfig.json, as confirmed by testing.","mono","coderabbitHandler/src/routers/repositories.ts","7018","","ayushtickoo","September 2nd 2025, 1:43:25 am","September 2nd 2025, 1:43:25 am" +"In tRPC WebSocket clients, sending ""[]"" on every inbound message via `connection.onmessage = () => { connection.send(""[]"") }` may be required for the specific protocol implementation, even though it appears to be an echo pattern that could cause message storms.","mono","apps/cli/src/services/review/trpc.ts","6789","","krtkvrm","September 2nd 2025, 1:45:15 am","September 2nd 2025, 1:45:15 am" +"User krtkvrm prefers to keep utility-style methods as part of the AuthService class rather than extracting them as standalone functions, even when they don't access instance state.","mono","apps/cli/src/services/review/auth/auth.service.ts","6789","","krtkvrm","September 2nd 2025, 1:49:37 am","September 2nd 2025, 1:49:37 am" +"The user krtkvrm prefers consistent instantiation patterns for service classes in the CLI codebase, even when services could be implemented as standalone functions. This design choice prioritizes consistency and clean architecture over micro-optimizations.","mono","apps/cli/src/services/review/auth/auth.service.ts","6789","","krtkvrm","September 2nd 2025, 1:48:28 am","September 2nd 2025, 1:48:28 am" +"In apps/cli/src/services/env/auth.ts, the isAuthDebugEnabled() function should only accept the exact string ""true"" for the CR_CLI_AUTH_DEBUG environment variable, not use z.coerce.boolean() which would accept other truthy values.","mono","apps/cli/src/services/env/auth.ts","6789","","krtkvrm","September 2nd 2025, 1:53:40 am","September 2nd 2025, 1:53:40 am" +"In Swarm API, comments always have an `updated` timestamp that matches the activity API timestamp. For new comments, this is the creation time; for edited comments, this is the last edit time. When matching comments from activity API events, use `comment.updated` field rather than `comment.time` to ensure edited comments are properly matched.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 2nd 2025, 11:37:42 am","September 2nd 2025, 11:37:42 am" +"The keytar library has been removed from the CLI auth storage implementation in apps/cli/src/services/storage/auth.ts, so the auth storage now uses only file-based storage instead of the hybrid keytar + file approach.","mono","apps/cli/src/services/storage/auth.ts","6789","","krtkvrm","September 2nd 2025, 2:02:23 am","September 2nd 2025, 2:02:23 am" +"The P4PollingService uses lastProcessedTimestamp for natural deduplication of events across polling cycles. This timestamp-based approach provides protection against duplicate event processing even with overlapping cycles, making additional polling guards unnecessary.","mono","pr-reviewer-saas/src/polling/p4-polling-service.ts","6875","","alexcoderabbitai","September 2nd 2025, 1:24:07 pm","September 2nd 2025, 1:24:07 pm" +"When ayushtickoo moves existing functions or code, they prefer to defer improvements and fixes to separate changes rather than mixing refactoring with the move operation.","mono","coderabbitHandler/src/utils/utils.ts","7018","","ayushtickoo","September 2nd 2025, 3:08:00 am","September 2nd 2025, 3:08:00 am" +"In P4PollingService, the lastProcessedTimestamp mechanism provides natural deduplication protection against overlapping polling cycles. The timestamp is only updated after successful processing, so overlapping cycles fetch the same events harmlessly, making additional polling guards unnecessary.","mono","pr-reviewer-saas/src/polling/p4-polling-service.ts","6875","","alexcoderabbitai","September 2nd 2025, 1:24:07 pm","September 2nd 2025, 1:24:07 pm" +"CLI environments in the codebase always run with UNSAFE_BYPASS_JAIL=true, which allows RunShellScriptCapability to work without an EventClient by using direct script execution via execa instead of the EventClient-mediated execution path.","mono","pr-reviewer-saas/src/agents/cli/security-review.ts","6677","","recrsn","August 15th 2025, 11:18:26 am","August 15th 2025, 11:18:26 am" +"In the agent framework (pr-reviewer-saas/src/agents/framework/), capability names are always constrained to match the pattern /^[a-z0-9_-]+$/. This constraint ensures that capability names only contain alphanumeric characters, underscores, and hyphens, making them safe for direct interpolation into regular expressions without escaping.","mono","pr-reviewer-saas/src/agents/framework/agent.ts","6677","","recrsn","August 15th 2025, 11:22:25 am","August 15th 2025, 11:22:25 am" +"The head and base parameters in ListPullRequestsParams are optional and the user prefers to keep the per_page default at 10 rather than 30 for the GitHub listPullRequests endpoint in coderabbitHandler/src/providers/githubProvider.ts.","mono","coderabbitHandler/src/providers/githubProvider.ts","7018","","ayushtickoo","September 2nd 2025, 6:45:05 am","September 2nd 2025, 6:45:05 am" +"In the listPullRequests endpoint in coderabbitHandler/src/routers/repositories.ts, it's intentional to only forward {owner, repo} parameters to the provider instance while accepting additional filtering parameters (state, head, base, sort, direction, per_page, page) in the ListPullRequestsSchema. This design choice was confirmed by ayushtickoo.","mono","coderabbitHandler/src/routers/repositories.ts","7018","","ayushtickoo","September 2nd 2025, 6:44:57 am","September 2nd 2025, 6:44:57 am" +"In GitLab's system, namespace IDs and user IDs are separate values. User namespaces have their own namespaces.id which is different from the user's users.id. The GitLab API endpoint /users/:user_id/projects accepts only integer user IDs, not namespace IDs. When working with user namespaces in GitLab, you must resolve the actual user ID before calling user-specific API endpoints.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","6508","","hasit","August 15th 2025, 3:59:31 pm","August 15th 2025, 3:59:31 pm" +"The gitbeaker library's Users.allProjects method accepts userId: string | number parameter, where it can handle both usernames (string) and user IDs (number), but the question remains whether namespace IDs work as user ID substitutes.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","6508","","hasit","August 15th 2025, 4:18:19 pm","August 15th 2025, 4:18:19 pm" +"In pr-reviewer-saas/src/review/review-filehunks.ts, OPTIONAL_REFACTORS_RECOMMENDED is part of the assertive tags mapping and gets upgraded to ASSERTIVE_VERIFICATION when the review profile is set to ""assertive"", or gets removed and treated as an assertive comment when the profile is not assertive. It doesn't need its own case in the verification tag switch statement because it's handled upstream in the assertive tag processing logic.","mono","pr-reviewer-saas/src/review/review-filehunks.ts","6721","","harjotgill","August 15th 2025, 4:53:58 pm","August 15th 2025, 4:53:58 pm" +"In pr-reviewer-saas/src/review/review-filehunks.ts, ASSERTIVE_VERIFICATION is not generated directly by the verification LLM prompts in the codebaseVerification function. It's only created later when OPTIONAL_REFACTORS_RECOMMENDED gets processed through assertiveTagsMapping. The verification gating condition should only check for tags that the LLM can directly generate: CRITICAL_FIXES_REQUIRED, OPTIONAL_REFACTORS_RECOMMENDED, and MANDATORY_REFACTOR_REQUIRED.","mono","pr-reviewer-saas/src/review/review-filehunks.ts","6721","","harjotgill","August 15th 2025, 4:56:53 pm","August 15th 2025, 4:56:53 pm" +"The decodeInternalToken function in apps/token-service/src/jwt.ts is called within a try/catch block in the handlers, so additional error handling around jwt.verify is not necessary as errors are handled at the call site.","mono","apps/token-service/src/jwt.ts","6992","","gatsby003","September 2nd 2025, 7:41:59 am","September 2nd 2025, 7:41:59 am" +"The decodeInternalToken function in apps/token-service/src/jwt.ts is called within a try/catch block in handlers.ts starting at line 108, so additional error handling around jwt.verify is not necessary as errors are already handled at the call site.","mono","apps/token-service/src/jwt.ts","6992","","gatsby003","September 2nd 2025, 7:41:59 am","September 2nd 2025, 7:41:59 am" +"In apps/token-service/src/handlers.ts, the decodeInternalToken function is called within a try/catch block (lines 108-142) that properly handles JWT verification exceptions with appropriate logging and error responses, making additional error handling within the function unnecessary.","mono","apps/token-service/src/jwt.ts","6992","","gatsby003","September 2nd 2025, 7:41:59 am","September 2nd 2025, 7:41:59 am" +"The @octokit/auth-token package does export a `Types` interface, contrary to my initial assessment. The import `import type { Types } from ""@octokit/auth-token""` is valid and should not be removed.","mono","packages/common/src/github/client.ts","6992","","gatsby003","September 2nd 2025, 7:45:44 am","September 2nd 2025, 7:45:44 am" +"The processUrl function in coderabbit-ui/src/pages/Login/helpers.ts is sufficient for handling GitHub/GitLab self-hosted URL normalization, though the user prefers a more descriptive function name.","mono","coderabbit-ui/src/pages/Login/helpers.ts","7029","","k-ahlawat","September 2nd 2025, 8:36:37 am","September 2nd 2025, 8:36:37 am" +"In the coderabbit/mono codebase, the agent framework is a dependency of the chatbot, so the chatbot cannot pull types from agent framework due to circular dependency constraints. When there are type duplication issues between these modules, alternatives like shared type modules should be considered instead of direct imports.","mono","pr-reviewer-saas/src/ai-client/chat-bot.ts","6716","","recrsn","August 17th 2025, 2:41:39 am","August 17th 2025, 2:41:39 am" +"For Azure DevOps Profile API coreAttributes in Node.js API, the DisplayName attribute is accessed via coreAttributes[""DisplayName""].value, not coreAttributes[""DisplayName""].value.value as might be assumed from other APIs.","mono","pr-reviewer-saas/src/event-client/azure-client.ts","7152","","karan925","September 8th 2025, 3:57:13 pm","September 8th 2025, 3:57:13 pm" +"The auto_walkthrough configuration flag in packages/schemas/src/configuration/schema.ts is unused dead code that should be removed from all schema files.","mono","packages/schemas/src/configuration/schema.ts","6875","","alexcoderabbitai","September 2nd 2025, 12:57:46 pm","September 2nd 2025, 12:57:46 pm" +"The Settings object in CodeRabbit config (pr-reviewer-saas/src/review-handler.ts) doesn't contain secrets according to the team, so logging it at info level with `logger.info(""Settings"", { settings })` is acceptable for debugging customer issues.","mono","pr-reviewer-saas/src/review-handler.ts","6736","","harjotgill","August 17th 2025, 2:55:04 pm","August 17th 2025, 2:55:04 pm" +"In RunShellScriptTool, the working directory behavior is intentionally different between environments: outside jail (development/testing), scripts can execute under any parent directory using the cwd option; inside jail (production), scripts run from the jail root which is configured to be the repository root. This ensures scripts always run from the repository root in both environments.","mono","pr-reviewer-saas/src/agents/framework/tools/run-shell-script-tool.ts","6716","","recrsn","August 18th 2025, 2:49:16 am","August 18th 2025, 2:49:16 am" +"In PosthogClientV2 from @coderabbitai/telemetry package, the close() method internally calls await this.#client.shutdown() on the underlying PostHog client, ensuring all queued events are flushed before disposal. Therefore, using posthogClient.close() is sufficient for proper cleanup.","mono","apps/cli/src/services/telemetry/index.ts","6679","","krtkvrm","August 18th 2025, 2:51:18 am","August 18th 2025, 2:51:18 am" +"In PosthogClientV2 from @coderabbitai/telemetry package, the close() method internally calls await this.#client.shutdown() on the underlying PostHog client, ensuring all queued events are flushed before disposal. Therefore, using posthogClient.close() is sufficient for proper cleanup.","mono","apps/cli/src/services/telemetry/index.ts","6679","","krtkvrm","August 18th 2025, 2:51:18 am","August 18th 2025, 2:51:18 am" +"OpenAI Chat Completions API supports custom tools with type: ""custom"" in addition to function-style tools, allowing for both structured function calls and freeform custom tool inputs.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6716","","recrsn","August 18th 2025, 2:59:21 am","August 18th 2025, 2:59:21 am" +"OpenAI's ""type: custom"" tools are supported in the Responses API / GPT-5 stack for freeform tool inputs, while the Chat Completions API continues to use function-style tools with ""type: function"". The APIs have different tool calling patterns and capabilities.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6716","","recrsn","August 18th 2025, 2:59:21 am","August 18th 2025, 2:59:21 am" +"In apps/cli/src/auth/plain-login.ts, the await displayUpdateNotification() call should remain blocking (not fire-and-forget) as it's an intentional design decision to ensure users see update notifications before proceeding with authentication.","mono","apps/cli/src/auth/plain-login.ts","7442","","krtkvrm","September 22nd 2025, 5:18:51 am","September 22nd 2025, 5:18:51 am" +"In the CLI codebase, the displayUpdateNotification() call in plain review mode is intentionally awaited (blocking) to ensure users see update notifications before the review proceeds, rather than being fire-and-forget.","mono","apps/cli/src/commands/review/plain/index.ts","7442","","krtkvrm","September 22nd 2025, 5:19:14 am","September 22nd 2025, 5:19:14 am" +"In CLI commands, krtkvrm prefers to keep update notification checks as blocking (await displayUpdateNotification()) rather than making them non-blocking, even if it might cause delays in CI/automation environments.","mono","apps/cli/src/commands/review/plain/index.ts","7442","","krtkvrm","September 22nd 2025, 5:20:56 am","September 22nd 2025, 5:20:56 am" +"In coderabbitHandler/src/routers/organization_members.ts, the getAllMembers and getAllMembersFromDb functions use a two-phase Promise.all approach to limit concurrent database operations from 5 to 3, reducing peak database connection usage while maintaining functionality. This pattern prioritizes system stability over absolute speed, especially beneficial for self-hosted instances with limited resources.","mono","","","https://github.com/coderabbitai/mono/pull/6740","cr-ruhanmuzaffar","August 18th 2025, 4:55:14 am","August 18th 2025, 4:55:14 am" +"In coderabbitHandler/src/routers/organization_members.ts, splitting Promise.all from 5 concurrent database operations to a 2+3 phased approach reduces peak database connection usage by 40%, preventing connection pool exhaustion and cascade failures under high load. This pattern prioritizes system stability and consistent performance over theoretical peak speed, which is especially important for self-hosted deployments with limited resources.","mono","","","https://github.com/coderabbitai/mono/pull/6740","cr-ruhanmuzaffar","August 18th 2025, 4:55:14 am","August 18th 2025, 4:55:14 am" +"The dbApiClient in coderabbitHandler uses tRPC to make HTTP API calls to a separate DB-API service. Reducing concurrent API calls from 5 to 3 operations provides significant performance benefits by reducing HTTP connection pool stress, server memory usage, and preventing timeout cascades under high load. This pattern is especially important for self-hosted deployments with limited resources.","mono","","","https://github.com/coderabbitai/mono/pull/6740","cr-ruhanmuzaffar","August 18th 2025, 4:55:14 am","August 18th 2025, 4:55:14 am" +"The file `apps/cli/src/services/git/git-driver.ts` contains a comment ""PLEASE avoid reviewing this file"" and should be excluded from code reviews.","mono","apps/cli/src/services/git/logger.ts","6515","","krtkvrm","August 18th 2025, 5:02:27 am","August 18th 2025, 5:02:27 am" +"The file `apps/cli/src/services/git/git-driver.ts` contains a comment ""PLEASE avoid reviewing this file"" and should be excluded from code reviews.","mono","apps/cli/src/services/git/logger.ts","6515","","krtkvrm","August 18th 2025, 5:02:27 am","August 18th 2025, 5:02:27 am" +"The file `apps/cli/src/services/git/git-driver.ts` contains a comment ""PLEASE avoid reviewing this file"" and should be excluded from code reviews.","mono","apps/cli/src/services/git/logger.ts","6515","","krtkvrm","August 18th 2025, 5:02:27 am","August 18th 2025, 5:02:27 am" +"The file `apps/cli/src/services/git/git-driver.ts` contains a comment ""PLEASE avoid reviewing this file"" and the author krtkvrm has explicitly requested that this file should not be reviewed.","mono","apps/cli/src/services/git/git-driver.ts","6515","","krtkvrm","August 18th 2025, 5:01:15 am","August 18th 2025, 5:01:15 am" +"In the AnthropicChatBot.convertToAnthropicTools method, custom tools are intentionally supported through compatibility code that generates parameters for them, allowing all tool types (both ""function"" and ""custom"") to work with Anthropic's tool calling system.","mono","pr-reviewer-saas/src/ai-client/anthropic-chat-bot.ts","6716","","recrsn","August 18th 2025, 6:22:44 am","August 18th 2025, 6:22:44 am" +"The handleRefresh function in coderabbit-ui/src/pages/OnboardingV2/components/AzureConsentLinks/index.tsx is a dummy implementation that will be replaced later with proper backend implementation.","mono","coderabbit-ui/src/pages/OnboardingV2/components/AzureConsentLinks/index.tsx","6743","","ayushtickoo","August 18th 2025, 7:39:42 am","August 18th 2025, 7:39:42 am" +"In coderabbit-ui/src/pages/OnboardingV2/components/AzureConsentLinks/index.tsx, the divider condition `index < consentLinks.length` is intentionally designed to render dividers after each consent link item, including the last one. This is not a bug but the intended UI design.","mono","coderabbit-ui/src/pages/OnboardingV2/components/AzureConsentLinks/index.tsx","6743","","ayushtickoo","August 18th 2025, 7:40:06 am","August 18th 2025, 7:40:06 am" +"Anthropic doesn't natively support custom tools like OpenAI does. In the AnthropicChatBot, all tool calls are emitted as type: ""function"" regardless of the original tool type, and FreeformTool is designed to handle both string inputs (from OpenAI) and object inputs (from Anthropic/older models) for cross-provider compatibility.","mono","pr-reviewer-saas/src/ai-client/anthropic-chat-bot.ts","6716","","recrsn","August 18th 2025, 7:52:47 am","August 18th 2025, 7:52:47 am" +"In the coderabbit-ui codebase, the ESLint func-style rule should be ignored for hooks and utility functions. Const-bound arrow functions are the preferred style over function declarations for these cases, and suggestions to convert them to function declarations should not be made.","mono","coderabbit-ui/src/hooks/useCopy.ts","6743","","ayushtickoo","August 18th 2025, 8:20:02 am","August 18th 2025, 8:20:02 am" +"Markdownlint rule filtering in the sandboxer tool follows the same pattern as Ruff tool filtering and doesn't require README documentation updates as it's an internal implementation detail for noise reduction.","mono","","","https://github.com/coderabbitai/mono/pull/7167","GurinderRawala","September 9th 2025, 1:39:58 am","September 9th 2025, 1:39:58 am" +"When users mention ""persist repository selection across different pages"" in the context of React applications, they may be referring to persistence across React routes/components within the same browser session, not necessarily across page refreshes or browser sessions. In-memory Zustand stores without persist middleware can be sufficient for this use case.","mono","coderabbit-ui/src/store/repositorySelection.ts","7048","","sleep-404","September 3rd 2025, 6:06:18 am","September 3rd 2025, 6:06:18 am" +"In OpenAI Response API v5.12.2, the usage.input_tokens_details object is optional and only present when certain features like prompt caching are active. The safe way to access cached tokens is: response.usage?.input_tokens_details?.cached_tokens ?? 0","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6714","","ccassion","August 18th 2025, 5:21:48 pm","August 18th 2025, 5:21:48 pm" +"In OpenAI Response API v5.12.2, the usage.input_tokens_details object is optional and only present when certain features like prompt caching are active. The safe way to access cached tokens is: response.usage?.input_tokens_details?.cached_tokens ?? 0","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6714","","ccassion","August 18th 2025, 5:21:48 pm","August 18th 2025, 5:21:48 pm" +"In the execa library, ExecaError is exported as a runtime class constructor that can be used with instanceof checks, not just as a TypeScript type. The usage `result instanceof ExecaError` is valid and works correctly at runtime.","mono","pr-reviewer-saas/src/knowledge-base/repo-content-indexer/base/file-collector-jail.ts","6747","","ParthGandhi","August 19th 2025, 3:31:05 am","August 19th 2025, 3:31:05 am" +"In the execa library, ExecaError is exported as a runtime class constructor that extends the standard JavaScript Error class, not just as a TypeScript type. The usage `result instanceof ExecaError` is valid, correct, and the recommended pattern for handling execa-specific errors at runtime.","mono","pr-reviewer-saas/src/knowledge-base/repo-content-indexer/base/file-collector-jail.ts","6747","","ParthGandhi","August 19th 2025, 3:31:05 am","August 19th 2025, 3:31:05 am" +"In pr-reviewer-saas/src/ai-client/openai-chat-bot.ts, web search capability (enableWebSearch: true) is intentionally limited to review/chat/verification model classes only. The dedicated ""web-search"" model variants should NOT have enableWebSearch: true added, as per product decision to limit the scope of OpenAI native web search integration.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6772","","ccassion","August 19th 2025, 1:47:10 pm","August 19th 2025, 1:47:10 pm" +"In pr-reviewer-saas/src/ai-client/openai-chat-bot.ts, the enableWebSearch() and disableMonologue() methods intentionally follow the same pattern of checking only modelVariants[0] (the primary/top model) to determine bot capabilities, prioritizing code consistency over checking all variants.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","6772","","ccassion","August 19th 2025, 1:48:26 pm","August 19th 2025, 1:48:26 pm" +"The user krtkvrm prefers that game files (files with ""game"" in the path or related to the jumping rabbit mini-game functionality) should not be reviewed or commented on. Skip reviewing files in paths containing /game/ or game-related components.","mono","apps/cli/src/components/review/game/GameCanvas.tsx","7180","","krtkvrm","September 9th 2025, 5:39:33 pm","September 9th 2025, 5:39:33 pm" +"The code-chat CLI in pr-reviewer-saas/src/agents/cli/code-chat.ts is testing-only code where WebSearchCapability runtime errors with Anthropic provider are acceptable and don't need to be fixed.","mono","pr-reviewer-saas/src/agents/cli/code-chat.ts","6773","","recrsn","August 19th 2025, 10:40:41 pm","August 19th 2025, 10:40:41 pm" +"TypeScript allows interface method implementations to have fewer parameters than declared in the interface. When a method is called with more arguments than the implementation expects, the extra arguments are ignored at runtime. This is valid TypeScript and will compile without errors.","mono","pr-reviewer-saas/src/agents/framework/capabilities/launch-agent-capability.ts","6773","","recrsn","August 19th 2025, 11:00:03 pm","August 19th 2025, 11:00:03 pm" +"In pr-reviewer-saas/src/agents/framework/tools/read-file-tool.ts, line numbers (startLine and endLine) cannot be zero as they are 1-based and zero is disallowed by validation according to the maintainer recrsn.","mono","pr-reviewer-saas/src/agents/framework/tools/read-file-tool.ts","6773","","recrsn","August 19th 2025, 11:03:33 pm","August 19th 2025, 11:03:33 pm" +"In pr-reviewer-saas/src/agents/framework/tools/read-file-tool.ts, line numbers (startLine and endLine) cannot be zero as they are 1-based and zero is disallowed by validation according to the maintainer recrsn.","mono","pr-reviewer-saas/src/agents/framework/tools/read-file-tool.ts","6773","","recrsn","August 19th 2025, 11:03:33 pm","August 19th 2025, 11:03:33 pm" +"In TypeScript, when implementing abstract properties from a base class, the `override` keyword is not needed and should not be used. The subclass simply provides the implementation for the abstract property. The `override` keyword is only used when overriding concrete (non-abstract) members.","mono","pr-reviewer-saas/src/agents/framework/tools/think-tool.ts","6773","","recrsn","August 19th 2025, 11:15:52 pm","August 19th 2025, 11:15:52 pm" +"The game files in apps/cli/src/components/review/game/ are temporary and will be removed soon, so they should not be reviewed.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 5:41:20 pm","September 9th 2025, 5:41:20 pm" +"The `package#task` syntax in root turbo.json is valid for defining package-specific task configurations that completely override the baseline task configuration for that specific package.","mono","turbo.json","7097","","recrsn","September 9th 2025, 5:46:17 pm","September 9th 2025, 5:46:17 pm" +"In the CodeRabbit CLI codebase, StatusContent progress data (status.progress.total and status.progress.current) is always guaranteed to have valid values with total > 0 and finite current values, so additional null checks or divide-by-zero guards are not needed.","mono","apps/cli/src/components/review/components/Footer.tsx","7180","","krtkvrm","September 9th 2025, 5:45:47 pm","September 9th 2025, 5:45:47 pm" +"Do not review game-related files or code in the CodeRabbit CLI, including files in game directories, components like JumpingRabbit, or any game functionality as per user request.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 5:47:01 pm","September 9th 2025, 5:47:01 pm" +"The user prefers to defer reviewing game-related code (including game physics, game components, and game screens) in the CLI and focus on core functionality instead.","mono","apps/cli/src/components/review/game/hooks/useGamePhysics.ts","7180","","krtkvrm","September 9th 2025, 4:45:48 pm","September 9th 2025, 4:45:48 pm" +"When a user declines a refactoring suggestion due to potential issues with another PR, respect their decision and don't insist on the change, as avoiding merge conflicts is often more important than immediate code organization improvements.","mono","apps/cli/src/components/review/screens/ReviewScreen.tsx","7180","","krtkvrm","September 9th 2025, 4:48:08 pm","September 9th 2025, 4:48:08 pm" +"When krtkvrm mentions avoiding refactoring due to conflicts with another PR, respect the decision as they are managing multiple concurrent development efforts and prioritizing delivery over code organization improvements.","mono","apps/cli/src/components/review/screens/ReviewScreen.tsx","7180","","krtkvrm","September 9th 2025, 4:47:47 pm","September 9th 2025, 4:47:47 pm" +"User krtkvrm prefers to avoid refactoring changes when they might cause conflicts with other concurrent PRs, prioritizing development workflow stability over code organization improvements.","mono","apps/cli/src/components/review/screens/ReviewScreen.tsx","7180","","krtkvrm","September 9th 2025, 4:48:20 pm","September 9th 2025, 4:48:20 pm" +"The user (krtkvrm) prefers to have file logging infrastructure (log file path generation and cleanup) available for every CLI session, even when only console transport is configured. This ensures consistent behavior and enables easy switching to file-based logging.","mono","apps/cli/src/services/logger/logger.service.ts","7180","","krtkvrm","September 9th 2025, 4:51:51 pm","September 9th 2025, 4:51:51 pm" +"When a file is scheduled to be removed in an upcoming PR, defer code cleanup suggestions to avoid unnecessary work on temporary files.","mono","apps/cli/src/services/review/dummy-review.ts","7180","","krtkvrm","September 9th 2025, 4:52:07 pm","September 9th 2025, 4:52:07 pm" +"In TypeScript Map implementations, having an async clear(): Promise method instead of the standard synchronous clear(): void does not break Map interface compatibility in practice due to structural typing. This pattern works correctly when the implementation needs to perform async operations like garbage collection during cleanup.","mono","pr-reviewer-saas/src/code-graph/import_cache.ts","6725","","NatoBoram","August 20th 2025, 4:01:26 pm","August 20th 2025, 4:01:26 pm" +"Skip reviewing game-related code and functionality in the CodeRabbit CLI project, as indicated by the user. This includes files like SocialShareService.ts and other game components that may be experimental or temporary.","mono","apps/cli/src/services/SocialShareService.ts","7180","","krtkvrm","September 9th 2025, 4:57:56 pm","September 9th 2025, 4:57:56 pm" +"Skip reviewing game-related files and functionality in the CLI codebase, as the user has indicated these should be ignored.","mono","apps/cli/src/services/review/storage/GameStorageService.ts","7180","","krtkvrm","September 9th 2025, 4:57:45 pm","September 9th 2025, 4:57:45 pm" +"Mock-fs can successfully patch fs/promises methods even when fs/promises is imported at module load time before mockFs() is called, because it monkey-patches the underlying fs methods at runtime. If mock-fs wasn't working properly, tests using non-existent mock files would fail with ENOENT errors rather than pass.","mono","pr-reviewer-saas/src/code-graph/extractor.test.ts","6725","","NatoBoram","August 20th 2025, 9:15:37 pm","August 20th 2025, 9:15:37 pm" +"In pr-reviewer-saas workerpool configuration, emitStdStreams was disabled (set to false) in PR #6725 to prevent crashes caused by excessive error output from workers that was crashing the code graph, overriding the previous production observability preference.","mono","pr-reviewer-saas/src/workerpool/pool.ts","6725","","NatoBoram","August 20th 2025, 9:16:06 pm","August 20th 2025, 9:16:06 pm" +"Skip reviewing game-related files in the CodeRabbit CLI repository when requested by krtkvrm. Game-related files include but are not limited to: social sharing services for game scores, game components, game hooks, game storage services, and test game files.","mono","apps/cli/src/services/SocialShareService.ts","7180","","krtkvrm","September 9th 2025, 4:59:05 pm","September 9th 2025, 4:59:05 pm" +"The file apps/cli/bun-build.mjs in the CLI project will be removed, so review comments on this file should be ignored.","mono","apps/cli/bun-build.mjs","7180","","krtkvrm","September 9th 2025, 3:11:31 pm","September 9th 2025, 3:11:31 pm" +"In the CLI codebase at apps/cli/src/commands/auth.ts, the user prefers immediate exit with process.exit(0/1) rather than graceful shutdown with process.exitCode, prioritizing fast CLI response over telemetry flushing.","mono","apps/cli/src/commands/auth.ts","7180","","krtkvrm","September 9th 2025, 3:13:51 pm","September 9th 2025, 3:13:51 pm" +"krtkvrm prefers using process.exit() for immediate termination in CLI commands rather than process.exitCode for safer exit patterns, even when it might cause abrupt termination.","mono","apps/cli/src/commands/auth.ts","7180","","krtkvrm","September 9th 2025, 3:14:46 pm","September 9th 2025, 3:14:46 pm" +"Skip reviews on any game-related changes per user request from krtkvrm.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 3:20:15 pm","September 9th 2025, 3:20:15 pm" +"In the CLI game canvas component (apps/cli/src/components/review/game/GameCanvas.tsx), accessing grid[height - 1] and grid[height - 2] when height < 2 does not cause issues in practice, as confirmed by user testing with small terminal heights.","mono","apps/cli/src/components/review/game/GameCanvas.tsx","7180","","krtkvrm","September 9th 2025, 3:19:18 pm","September 9th 2025, 3:19:18 pm" +"Avoid reviewing any game-related changes in the CLI codebase. Game-related files include those in paths containing ""/game/"" or files related to game functionality like JumpingRabbit.tsx, GameCanvas.tsx, and similar components.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 3:20:23 pm","September 9th 2025, 3:20:23 pm" +"Avoid conducting code reviews on game-related changes in the CLI codebase, particularly files in paths containing `/game/` or game-related functionality.","mono","apps/cli/src/components/review/game/hooks/useGameLoop.ts","7180","","krtkvrm","September 9th 2025, 3:19:53 pm","September 9th 2025, 3:19:53 pm" +"Avoid providing code review comments on game-related files and changes, including files in game directories (e.g., `apps/cli/src/components/review/game/`) and game functionality implementations.","mono","apps/cli/src/components/review/game/hooks/useGameState.ts","7180","","krtkvrm","September 9th 2025, 3:20:03 pm","September 9th 2025, 3:20:03 pm" +"Skip review comments on any game-related code changes in the CLI codebase. User krtkvrm has requested to avoid reviews on game functionality.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 3:20:10 pm","September 9th 2025, 3:20:10 pm" +"Skip code reviews for any files or changes related to game functionality in the CodeRabbit CLI, specifically files under paths containing ""/game/"" or with game-related functionality like JumpingRabbit, GameCanvas, etc.","mono","apps/cli/src/components/review/game/JumpingRabbit.tsx","7180","","krtkvrm","September 9th 2025, 3:20:33 pm","September 9th 2025, 3:20:33 pm" +"In apps/cli/src/components/review/utils/clipboard.ts, the current shell-based clipboard implementation is temporary and will be replaced with an npm package solution post-PR, so improvements to the current implementation are not needed.","mono","apps/cli/src/components/review/utils/clipboard.ts","7180","","krtkvrm","September 9th 2025, 3:22:56 pm","September 9th 2025, 3:22:56 pm" +"The file apps/cli/src/review_data/review-events.json contains dummy/saved review data that will be removed and is not part of the production build.","mono","apps/cli/src/review_data/review-events.json","7180","","krtkvrm","September 9th 2025, 3:23:43 pm","September 9th 2025, 3:23:43 pm" +"PostHog API keys and similar client-side analytics keys (like Google Analytics, Mixpanel, etc.) are designed to be embedded in client applications and are not considered sensitive credentials. These keys only allow sending telemetry data to the analytics service and don't provide access to sensitive data or admin functions.","mono","apps/cli/src/services/env/posthog.ts","7180","","krtkvrm","September 9th 2025, 3:24:37 pm","September 9th 2025, 3:24:37 pm" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that cliURL passed to the CLI token authentication flow will never contain non-ASCII characters, so Unicode-safe base64 encoding is not required for the getCliToken function in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:19:33 am","August 21st 2025, 7:19:33 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that Clipboard API fallbacks are not needed for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx because the Clipboard API will always be available in their target environment.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that Clipboard API fallbacks are not needed for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx because the Clipboard API will always be available in their target environment.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that Clipboard API fallbacks are not needed for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx because the Clipboard API will always be available in their target environment.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that Clipboard API fallbacks are not needed for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx because the Clipboard API will always be available in their target environment.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that Clipboard API fallbacks are not needed for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx because the Clipboard API will always be available in their target environment.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"The coderabbitai/mono coderabbit-ui project has func-style ESLint rule explicitly disabled in coderabbit-ui/eslint.config.js, so arrow functions are allowed and preferred.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:23:37 am","August 21st 2025, 7:23:37 am" +"In coderabbitai/mono PR #6818, krtkvrm confirmed that SSR (server-side rendering) is not a concern for the CLITokenAuth component in coderabbit-ui/src/pages/Login/CLITokenAuth.tsx, so SSR-safe btoa() handling is not required.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","6818","","krtkvrm","August 21st 2025, 7:21:30 am","August 21st 2025, 7:21:30 am" +"In the coderabbitai/mono codebase, bulk database operations are chunked at the db-api-server level rather than at the handler level. The handlers send full payloads to db-api-server endpoints, and the db-api-server routers handle chunking internally (e.g., 500-1000 item chunks) to avoid DB parameter limits and timeouts. This provides better separation of concerns.","mono","coderabbitHandler/src/routers/organization_members.ts","6763","","sleep-404","August 21st 2025, 7:56:44 am","August 21st 2025, 7:56:44 am" +"In apps/cli/src/services/review/review.ts, there's a bug where baseCommit is assigned to branchInfo.baseBranch (a branch name) instead of the actual commit SHA. This occurs around lines 141-146 and 215-219. The fix requires calling a git service method to resolve the commit SHA for the base branch.","mono","apps/cli/src/services/review/review.ts","7180","","krtkvrm","September 9th 2025, 6:21:53 pm","September 9th 2025, 6:21:53 pm" +"The user prefers to use logger.error for authentication/status check failures even when execution continues and error states are rendered gracefully, as these are considered genuine errors that should maintain high visibility in logging systems.","mono","apps/cli/src/components/Status.tsx","7180","","krtkvrm","September 9th 2025, 5:27:03 pm","September 9th 2025, 5:27:03 pm" +"In the useOnboardingFlow hook (coderabbitai-ui), the stepData is intentionally typed as Record with unknown values because the onboarding flow implementation is still undergoing changes and the types will be refined later.","mono","coderabbit-ui/src/hooks/useOnboardingFlow.ts","6819","","ayushtickoo","August 21st 2025, 9:32:40 am","August 21st 2025, 9:32:40 am" +"In the useOnboardingFlow hook (coderabbit-ui), the setState race condition issue with updatedStepData was acknowledged but deferred to be addressed in later PRs by ayushtickoo.","mono","coderabbit-ui/src/hooks/useOnboardingFlow.ts","6819","","ayushtickoo","August 21st 2025, 9:48:12 am","August 21st 2025, 9:48:12 am" +"In git diff commands, the three-dot syntax (A...B) shows changes from the merge-base of A and B to B, while direct comparison (A B) shows the exact diff between two commits. When users specify an explicit base commit in GitService, they typically expect direct comparison rather than merge-base comparison.","mono","apps/cli/src/services/git/git.service.ts","7180","","krtkvrm","September 9th 2025, 6:23:27 pm","September 9th 2025, 6:23:27 pm" +"The user krtkvrm prefers to avoid refactoring that they perceive might introduce new types, even when the refactoring actually removes type assertions. They prefer to keep existing type casts rather than refactor to direct property access in TypeScript code.","mono","apps/cli/src/components/review/components/Footer.tsx","7180","","krtkvrm","September 9th 2025, 5:39:09 pm","September 9th 2025, 5:39:09 pm" +"In GitService, when baseCommit is provided for code review scenarios, it's typically expected to be on the same linear branch history as HEAD, making the three-dot syntax (A...HEAD) equivalent to direct comparison (A HEAD) in practical usage.","mono","apps/cli/src/services/git/git.service.ts","7180","","krtkvrm","September 9th 2025, 6:35:18 pm","September 9th 2025, 6:35:18 pm" +"The user krtkvrm prefers not to receive review comments on game-related code in the CLI project. Skip reviewing any files related to games, jumping rabbit, or similar entertainment features.","mono","apps/cli/src/test-game.tsx","7180","","krtkvrm","September 9th 2025, 7:08:42 pm","September 9th 2025, 7:08:42 pm" +"When execa is used with `reject: false`, it returns a union type rather than throwing errors, requiring a custom unified interface to handle both success and error cases properly.","mono","apps/sandboxer/src/jail-operations.ts","7020","","recrsn","September 3rd 2025, 4:01:27 pm","September 3rd 2025, 4:01:27 pm" +"In coderabbitHandler/src/routes/webhook_handler/handle_webhook.ts, the GitHub environment variables (GITHUB_APP_CLIENT_ID, GITHUB_APP_CLIENT_SECRET, GITHUB_APP_ID, GITHUB_APP_PEM_FILE, GH_WEBHOOK_SECRET) are guaranteed to be present in the deployment environment, so additional presence checks before constructing the credentials object are not needed.","mono","coderabbitHandler/src/routes/webhook_handler/handle_webhook.ts","6844","","karan925","August 21st 2025, 7:28:47 pm","August 21st 2025, 7:28:47 pm" +"Anthropic SDK version 0.54.0 exports `Anthropic.ToolUnion` type which is a union of various tool types including `Anthropic.Messages.Tool`, `Anthropic.Messages.ToolBash20250124`, `Anthropic.Messages.ToolTextEditor20250124`, `Anthropic.Messages.ToolUnion.TextEditor20250429`, and `Anthropic.Messages.WebSearchTool20250305`. This type is suitable for typing arrays that can contain both function tools and native server tools like web search.","mono","pr-reviewer-saas/src/ai-client/anthropic-chat-bot.ts","6849","","ccassion","August 21st 2025, 8:45:05 pm","August 21st 2025, 8:45:05 pm" +"Anthropic SDK version 0.54.0 and later exports `Anthropic.ToolUnion` type which is a union including `Anthropic.Messages.Tool`, `Anthropic.Messages.WebSearchTool20250305`, and other built-in server tool types. This type should be used when typing arrays that can contain both user-defined function tools and Anthropic's native server tools.","mono","pr-reviewer-saas/src/ai-client/anthropic-chat-bot.ts","6849","","ccassion","August 21st 2025, 8:45:05 pm","August 21st 2025, 8:45:05 pm" +"In apps/sandboxer/src/sandbox-invocation.ts, the 'as const' assertions in execa options are necessary according to the maintainer, despite the general coding guideline prohibiting type assertions.","mono","apps/sandboxer/src/sandbox-invocation.ts","7020","","recrsn","September 3rd 2025, 4:57:49 pm","September 3rd 2025, 4:57:49 pm" +"ChargeBee's fetchAllowedPlanConfig function expects objects with plan_id key in the return value, not item_price_id, even in Product Catalog 2.0.","mono","billing/scripts/chargebeeFetchPlans.js","6854","","k-ahlawat","August 22nd 2025, 5:00:27 am","August 22nd 2025, 5:00:27 am" +"The trailing comma syntax in function calls works in the ChargeBee custom code environment for k-ahlawat's project, despite ChargeBee documentation indicating Node.js v6.0 usage. The project uses Prettier formatting which includes trailing commas.","mono","billing/scripts/chargebeeFetchPlans.js","6854","","k-ahlawat","August 22nd 2025, 5:24:23 am","August 22nd 2025, 5:24:23 am" +"In ReviewScreen.tsx keyboard handlers, the ""Apply suggestion"" action should only accept lowercase 'a', not uppercase 'A'. The user prefers case-sensitive keyboard shortcuts for the CLI review interface.","mono","apps/cli/src/components/review/screens/ReviewScreen.tsx","7180","","krtkvrm","September 9th 2025, 10:00:33 pm","September 9th 2025, 10:00:33 pm" +"In the coderabbitai/mono repository, ""ubuntu-latest-8-cores"" is a valid custom self-hosted GitHub Actions runner label, not an invalid standard GitHub-hosted runner label.","mono",".github/workflows/deploy-sandboxer-dev.yaml","6807","","recrsn","August 22nd 2025, 10:18:03 am","August 22nd 2025, 10:18:03 am" +"proto-loader-gen-types is included as a binary within the @grpc/proto-loader package, not a separate npm package. It's available as build/bin/proto-loader-gen-types.js when @grpc/proto-loader is installed.","mono","packages/protos/package.json","6807","","recrsn","August 22nd 2025, 10:28:50 am","August 22nd 2025, 10:28:50 am" +"In gRPC client code, using `eslint-disable` for type assertions when casting `grpc.loadPackageDefinition()` results to generated proto types is acceptable because ESLint cannot infer types from dynamically generated gRPC code.","mono","packages/sandboxer-client/src/client.ts","6807","","recrsn","August 22nd 2025, 10:37:51 am","August 22nd 2025, 10:37:51 am" +"In sandbox environments using jk_chrootlaunch from jk_init, the --exec parameter requires a single shell-quoted command string (created using shell-quote's quote() function) rather than separate argv components. The pattern quote([""/bin/bash"", ""--norc"", ""--noprofile"", ""-c"", command]) is the correct approach for command execution within jails.","mono","packages/sandboxes/src/sandbox.ts","6807","","recrsn","August 22nd 2025, 10:42:21 am","August 22nd 2025, 10:42:21 am" +"In apps/sandboxer/src/sandbox-invocation.ts, the user recrsn prefers to keep full stdout/stderr logging in error logs for debugging purposes, even if it might contain secrets, prioritizing debugging capability over potential security concerns.","mono","apps/sandboxer/src/sandbox-invocation.ts","6807","","recrsn","August 22nd 2025, 10:49:43 am","August 22nd 2025, 10:49:43 am" +"In the sandboxer proto design, SetupSandboxRequest is intentionally not included in the SandboxMessage oneof for bidirectional streaming. The setup flow works differently than a typical request-response pattern within the stream.","mono","packages/protos/proto/sandboxer.proto","6807","","recrsn","August 22nd 2025, 10:51:27 am","August 22nd 2025, 10:51:27 am" +"In the CodeRabbit mono repository, Yarn v1 is explicitly included/installed in their Docker build process, so the patch step at /opt/yarn-v1.22.22/lib/cli.js is expected to work even on Node 24 images.","mono","apps/sandboxer/Dockerfile","6807","","recrsn","August 22nd 2025, 10:52:30 am","August 22nd 2025, 10:52:30 am" +"In the latest versions of @grpc/grpc-js, server.start() is not required after bindAsync() as the server automatically starts listening for requests after successful binding.","mono","apps/sandboxer/src/index.ts","6807","","recrsn","August 22nd 2025, 10:54:34 am","August 22nd 2025, 10:54:34 am" +"When encountering ast-grep native library loading failures with ""No such file or directory"" (GetLibPath) errors and fatal runtime errors (exit code 134) during local development with pnpm, the issue may be caused by pnpm's side-effects cache preventing post-install scripts from running. The solution is: 1) Configure pnpm with `pnpm config set side-effects-cache false`, 2) Verify `side-effects-cache=false` is in `~/.npmrc`, 3) Run `pnpm store prune` to clean the store, 4) Reinstall all dependencies, 5) Rebase the branch to ensure CI compatibility.","mono","","","https://github.com/coderabbitai/mono/pull/6862","alexcoderabbitai","August 22nd 2025, 11:09:26 am","August 22nd 2025, 11:09:26 am" +"The `pnpm config set side-effects-cache false` setting forces pnpm to always run post-install scripts instead of relying on cached results, which is crucial for native modules like ast-grep that require proper initialization during installation.","mono","","","https://github.com/coderabbitai/mono/pull/6862","alexcoderabbitai","August 22nd 2025, 11:09:26 am","August 22nd 2025, 11:09:26 am" +"In P4/Swarm integration code, when createSyntheticDiffForNewFile fails to get content (e.g., due to invalid revision), it returns null and the file gets skipped from diff processing, which is the intended behavior. Pre-validation of parseInt results isn't needed since the error handling downstream already handles invalid inputs correctly.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 4th 2025, 10:49:52 am","September 4th 2025, 10:49:52 am" +"In apps/cli/src/utils/version.ts, the getCliVersion function should fail hard without error handling when package.json cannot be read or parsed, as per user preference for fail-fast behavior rather than graceful error handling.","mono","apps/cli/src/utils/version.ts","6789","","krtkvrm","September 4th 2025, 1:46:19 am","September 4th 2025, 1:46:19 am" +"As of August 2025, the latest stable version of React is 20.0.0, which was released in July 2025. This information comes from the official React blog and npm package listing.","mono","","","https://github.com/coderabbitai/mono/pull/6879","harjotgill","August 22nd 2025, 7:41:03 pm","August 22nd 2025, 7:41:03 pm" +"The CodeRabbit server expects different organization header keys for different transports: HTTP uses ""x-coderabbitai-organization"" while WebSocket uses ""X-CodeRabbit-Organization"". This is the correct server expectation and should not be unified.","mono","apps/cli/src/services/review/trpc.ts","6789","","krtkvrm","September 4th 2025, 2:53:22 am","September 4th 2025, 2:53:22 am" +"In pr-reviewer-saas/src/utils/github.ts, the loadGithubCredentials function was intentionally designed to only use GCP Secrets Manager without environment variable fallback, as confirmed by helizaga, because the environment variable fallback is not used in their deployment setup.","mono","pr-reviewer-saas/src/utils/github.ts","6882","","helizaga","August 22nd 2025, 11:54:27 pm","August 22nd 2025, 11:54:27 pm" +"As of August 2025, tsgo (from @typescript/native-preview) now supports the --build flag and declaration emit, making it a viable drop-in replacement for tsc --build in TypeScript projects. Previous limitations regarding --build support and declaration generation have been resolved.","mono","packages/db-client/package.json","6884","","NatoBoram","August 23rd 2025, 2:53:37 am","August 23rd 2025, 2:53:37 am" +"As of August 2025, tsgo (from @typescript/native-preview) now supports the --build flag, making it a viable drop-in replacement for tsc --build in TypeScript projects. The GitHub issue microsoft/typescript-go/issues/529 documents this implementation. Previous concerns about missing --build support are no longer valid.","mono","packages/db-client/package.json","6884","","NatoBoram","August 23rd 2025, 2:53:37 am","August 23rd 2025, 2:53:37 am" +"As of August 2025, tsgo (from @typescript/native-preview) supports project references and --build functionality, implemented in PR microsoft/typescript-go#1484. This makes tsgo a viable drop-in replacement for tsc --build in TypeScript projects. Some edge cases like watch mode may still be in development, but core --build support is available.","mono","packages/db-client/package.json","6884","","NatoBoram","August 23rd 2025, 2:53:37 am","August 23rd 2025, 2:53:37 am" +"The @typescript/native-preview package v7.0.0 supports declaration file emission, and tsgo (provided by this package) can emit .d.ts files just like regular tsc. The migration from ""tsc --build"" to ""tsgo"" in NatoBoram's monorepo works without additional declaration-only steps.","mono","packages/sandboxer-client/package.json","6884","","NatoBoram","August 23rd 2025, 2:55:39 am","August 23rd 2025, 2:55:39 am" +"In NatoBoram's monorepo, packages extend a shared mono-config/tsconfig.json that has ""declaration"": true and ""declarationMap"": true configured. This means tsgo automatically emits .d.ts files without needing additional configuration, making the migration from ""tsc --build"" to ""tsgo"" seamless.","mono","packages/sandboxer-client/package.json","6884","","NatoBoram","August 23rd 2025, 2:55:39 am","August 23rd 2025, 2:55:39 am" +"The code-document-index versioning (e.g., changing from ""code-document-index"" to ""code-document-index-v2"" in INDEX_TYPES) is handled by creating new indexes from scratch rather than migrating existing data. This is an intentional design decision for the codebase.","mono","pr-reviewer-saas/src/knowledge-base/lancedb/index/text/abstract.ts","7176","","ParthGandhi","September 10th 2025, 3:24:26 am","September 10th 2025, 3:24:26 am" +"In the PR Reviewer SaaS codebase, BitbucketCloudClient has two distinct creation paths: (1) Event-client path where BitbucketCloudEventClient constructor accepts and passes sandboxerClient to super() for cloning operations, and (2) Factory-created clients via newPlatformClient() without sandboxerClient for non-cloning operations like getUserTeamMemberships, getPullRequest, etc. The optional sandboxerClient pattern correctly supports both use cases.","mono","pr-reviewer-saas/src/platform-client/bitbucket-cloud-client.ts","6899","","ganeshpatro321","August 24th 2025, 10:58:53 am","August 24th 2025, 10:58:53 am" +"When providing information about library features and APIs, always verify against official documentation rather than making assumptions. Zod v4 features should only include documented changes from the official migration guide and API documentation.","mono","pr-reviewer-saas/src/knowledge-base/library-instructions/libraries/zod-library.ts","7086","","gowthamkishore3799","September 10th 2025, 4:51:14 pm","September 10th 2025, 4:51:14 pm" +"In P4EventClient, the standard `codeRabbitBotCommand()` function already handles general chat when the bot is mentioned but no specific command is detected. Custom `handleGeneralChat` implementations are unnecessary and should be removed in favor of the standard command processing flow.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 4th 2025, 11:25:47 am","September 4th 2025, 11:25:47 am" +"P4/Perforce comment chat implementation should follow the established provider pattern: EventClient handles command parsing and conversation flow, while PlatformClient provides API primitives like postReviewCommentReply, updateReviewComment, and hasCodeRabbitReply for threading support.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 4th 2025, 11:29:04 am","September 4th 2025, 11:29:04 am" +"P4 integration currently sends raw JSON diffs to AI prompts via JSON.stringify(), bypassing the standard review pipeline that other providers use with structured SummaryContext and FileHunk types. This should be replaced with integration into the Commenter.executeReview() flow for consistent data processing.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 4th 2025, 11:29:04 am","September 4th 2025, 11:29:04 am" +"P4 integration should use the standard startCodeReview() pipeline from event-handler.ts instead of custom review generation. The P4EventClient needs to implement EventClient methods properly and let the proven codeReview() workflow handle all review generation, rather than bypassing it with custom SwarmClient.generateAndPostReviewComments().","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","6875","","alexcoderabbitai","September 4th 2025, 11:29:04 am","September 4th 2025, 11:29:04 am" +"User krtkvrm prefers not to implement TypeScript strictNullChecks-related suggestions for nullish coalescing assignment operators when the current code works in their setup.","mono","apps/cli/src/services/logger/runtime.ts","7180","","krtkvrm","September 10th 2025, 5:13:32 pm","September 10th 2025, 5:13:32 pm" +"In pr-reviewer-saas/src/review/relevant-code/metrics.ts, the calculateDocumentationSourceCounts function correctly receives CodeDocumentSimilarChunk[] (individual chunks) rather than CodeDocumentSimilarSnippet[] (snippet objects containing chunks), so counting each element directly is the appropriate behavior for the ""chunks_used"" metric.","mono","pr-reviewer-saas/src/review/relevant-code/metrics.ts","7176","","ParthGandhi","September 10th 2025, 6:42:50 am","September 10th 2025, 6:42:50 am" +"CodeDocumentSimilarChunk interface in pr-reviewer-saas/src/knowledge-base/repo-content-indexer/code-document-index/types.ts includes a fileName field, along with content and enclosingFolder, extending CodeDocumentSimilarChunkLines.","mono","pr-reviewer-saas/src/review/relevant-code/relevant-code-context.ts","7176","","ParthGandhi","September 10th 2025, 6:44:27 am","September 10th 2025, 6:44:27 am" +"In the CLI error handling system, rate_limit errors should be marked as recoverable but should NOT be included in shouldRetry logic - rate limits require manual intervention or specific timing, and automatic retries could worsen rate limiting.","mono","apps/cli/src/services/review/utils/error-handler.ts","7180","","krtkvrm","September 10th 2025, 7:34:38 pm","September 10th 2025, 7:34:38 pm" +"In the P4EventClient, pre-filtering with shouldRespondToComment can prevent general tagged questions from reaching the standard handler. We should always call codeRabbitBotCommand first, and if it returns false, trigger a generic chat fallback to ensure a response for non-command mentions.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 4th 2025, 12:52:21 pm","September 4th 2025, 12:52:21 pm" +"For P4EventClient general chat: always call codeRabbitBotCommand first; if it returns false but the comment tags the bot, call prompts.commentReply(...) and post via p4Client.postReviewCommentReply using the source comment’s timestamp/body to keep threading in Swarm. Avoid pre-filtering that prevents this flow.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 4th 2025, 12:52:21 pm","September 4th 2025, 12:52:21 pm" +"In P4EventClient, the current handleGeneralChat implementation that manually builds rich context (diffs, conversation history) provides better AI responses than relying solely on the EventClient interface methods. The manual context building approach should be kept and completed rather than simplified.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","6875","","alexcoderabbitai","September 4th 2025, 1:36:17 pm","September 4th 2025, 1:36:17 pm" +"Node.js v23.6.0+ enables TypeScript type stripping by default, allowing direct execution of TypeScript files with `node file.ts` without additional tools, as long as the code contains only erasable TypeScript syntax (no enums, namespaces, etc.).","mono","CONTRIBUTING.md","6923","","NatoBoram","August 25th 2025, 10:27:28 pm","August 25th 2025, 10:27:28 pm" +"Node.js v22.6.0+ has experimental TypeScript support via --experimental-strip-types flag, and v22.7.0+ added --experimental-transform-types for TypeScript-only syntax like enums and namespaces.","mono","CONTRIBUTING.md","6923","","NatoBoram","August 25th 2025, 10:27:28 pm","August 25th 2025, 10:27:28 pm" +"Modern Node.js versions (22.6.0+) can run TypeScript files directly without transpilation tools like tsx or ts-node, making `node src/file.ts` a valid approach in CLI dev scripts depending on the target Node.js version and TypeScript features used.","mono","CONTRIBUTING.md","6923","","NatoBoram","August 25th 2025, 10:27:28 pm","August 25th 2025, 10:27:28 pm" +"NatoBoram prefers to keep security-related code changes separate from tooling/infrastructure PRs, even when behavioral changes like error handling modifications are involved.","mono","packages/sandboxes/src/jail-operations.ts","6923","","NatoBoram","August 25th 2025, 10:28:33 pm","August 25th 2025, 10:28:33 pm" +"Always verify the actual existence of files and directories in the repository using shell commands (like `ls`, `find`, `fd`) before making assumptions about their locations or suggesting changes based on those locations.","mono",".github/labeler-sync.yaml","6923","","NatoBoram","August 25th 2025, 11:24:16 pm","August 25th 2025, 11:24:16 pm" +"Always verify the actual existence of files and directories in the repository using shell commands (like `ls`, `find`, `fd`) before making assumptions about their locations or suggesting changes based on those locations. Never assume directory structures without confirmation.","mono",".github/labeler-sync.yaml","6923","","NatoBoram","August 25th 2025, 11:24:16 pm","August 25th 2025, 11:24:16 pm" +"In Biome configuration files, negated folder globs in formatter.includes like ""!**/dist/"" and ""!**/node_modules/"" work correctly to exclude directory contents without requiring trailing ""/**"" patterns.","mono","packages/sandboxes/biome.json","6923","","NatoBoram","August 25th 2025, 11:25:04 pm","August 25th 2025, 11:25:04 pm" +"`biome format` (without --write flag) only checks formatting and does not mutate files, making it CI-safe for linting. The `--write` flag is required to actually mutate files: `biome format --write`.","mono","chargebeeHandler/package.json","6933","","NatoBoram","August 26th 2025, 2:24:15 am","August 26th 2025, 2:24:15 am" +"Prettier CLI flags --list-different and --write can be combined. When used together, Prettier will format files (due to --write) and also list the files that were changed (due to --list-different).","mono","packages/common/package.json","6933","","NatoBoram","August 26th 2025, 2:25:08 am","August 26th 2025, 2:25:08 am" +"`biome format .` (without --write flag) fails CI when formatting issues are detected, making it appropriate for lint scripts and CI enforcement.","mono","packages/common/package.json","6933","","NatoBoram","August 26th 2025, 2:26:00 am","August 26th 2025, 2:26:00 am" +"`biome check .` is for linting (applying Biome's linting rules), not for formatting enforcement.","mono","packages/common/package.json","6933","","NatoBoram","August 26th 2025, 2:26:00 am","August 26th 2025, 2:26:00 am" +"In the CodeRabbit monorepo, developers should use the root-level Turborepo workflow (e.g., `pnpm format`) rather than running individual package scripts directly. The root package.json contains scripts that orchestrate tasks across all packages via Turborepo.","mono","packages/db-api-client/package.json","6933","","NatoBoram","August 26th 2025, 2:28:14 am","August 26th 2025, 2:28:14 am" +"Format and fix scripts (like ""format"" and ""lint:fix"") should use semicolon (;) chaining rather than && chaining because they should continue fixing/formatting even if one tool fails, allowing maximum repair. Only lint/check scripts should use && for fail-fast behavior since they're validation-only.","mono","packages/pr-reviewer-internal-router/package.json","6933","","NatoBoram","August 26th 2025, 2:28:32 am","August 26th 2025, 2:28:32 am" +"TypeScript-ESLint's `disableTypeChecked` config is an array that should be spread at the top level of tseslint.config(), not spread into an object literal. The official docs show the pattern: `{ files: [""**/*.js""], extends: [tseslint.configs.disableTypeChecked] }` for flat config usage.","mono","packages/telemetry/eslint.config.js","6933","","NatoBoram","August 26th 2025, 2:32:05 am","August 26th 2025, 2:32:05 am" +"The combination of Prettier CLI flags --list-different and --write is valid and will not fail. NatoBoram has confirmed this works correctly and is validated by their CI pipeline.","mono","packages/telemetry/package.json","6933","","NatoBoram","August 26th 2025, 2:33:39 am","August 26th 2025, 2:33:39 am" +"Prettier CLI allows using --list-different and --write flags together in the same command. This combination is valid and will format files while also listing which files were changed.","mono","packages/db-api-client/package.json","6933","","NatoBoram","August 26th 2025, 2:37:22 am","August 26th 2025, 2:37:22 am" +"The team prefers to commit .env files directly rather than using .env.example patterns, with the understanding that real keys won't be distributed in binaries, though this differs from standard security practices for environment variables.","mono","apps/cli/.env","7180","","krtkvrm","September 10th 2025, 6:19:18 pm","September 10th 2025, 6:19:18 pm" +"The team prefers to keep environment configuration files committed to make setup easier for developers, but they need to be educated about security risks of committing real API keys even when files aren't included in builds.","mono","apps/cli/.env","7180","","krtkvrm","September 10th 2025, 6:26:32 pm","September 10th 2025, 6:26:32 pm" +"In the CLI codebase (apps/cli), the review system uses session IDs rather than review IDs for tracking active reviews and cleanup operations.","mono","apps/cli/src/components/review/ReviewApp.tsx","7180","","krtkvrm","September 10th 2025, 6:26:53 pm","September 10th 2025, 6:26:53 pm" +"In coderabbitHandler/src/services/organizations/organizationMembers.utils.ts, during the refactoring that extracted organization member fetching logic, the team chose to preserve existing behavior even when potential bugs were identified, prioritizing clean refactoring over functional improvements. The provider_role assignment logic for Azure DevOps was kept as-is to maintain behavioral parity with the original implementation.","mono","coderabbitHandler/src/services/organizations/organizationMembers.utils.ts","6935","","sleep-404","August 26th 2025, 4:41:01 am","August 26th 2025, 4:41:01 am" +"In the CodeRabbit CLI codebase (apps/cli/), getOrCreateSessionId() is used intentionally as a process-level singleton for correlating all activities within a single CLI execution. The session ID is shared across telemetry, logging, review operations, and auth commands to enable traceability and analytics correlation. Each CLI invocation gets one session ID, not per-operation UUIDs.","mono","apps/cli/src/services/review/review.ts","7180","","krtkvrm","September 10th 2025, 6:29:25 pm","September 10th 2025, 6:29:25 pm" +"The user krtkvrm indicated that .env files ""wont be in build"" when discussing committed API keys, suggesting they may primarily focus on build-time security rather than repository-level security concerns.","mono","apps/cli/.env","7180","","krtkvrm","September 10th 2025, 6:34:38 pm","September 10th 2025, 6:34:38 pm" +"In ActivateProModal.tsx, the condition `!data?.isEligible` intentionally treats undefined data as ""not eligible"" to show the payment currency selector, allowing users to purchase a plan even when the eligibility check fails due to network issues or other technical problems. This is a business decision to prevent users from being blocked from purchasing.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/components/ActivateProModal.tsx","6937","","k-ahlawat","August 26th 2025, 6:27:50 am","August 26th 2025, 6:27:50 am" +"The user krtkvrm prefers to address console logging and similar UI-related improvements as part of broader UI refactoring efforts rather than immediate fixes.","mono","apps/cli/src/components/review/ReviewApp.tsx","7180","","krtkvrm","September 10th 2025, 6:36:29 pm","September 10th 2025, 6:36:29 pm" +"In TanStack Query v4, the `isLoading` property was deprecated in favor of `isPending` for mutations and queries. Always use `isPending` instead of `isLoading` when working with TanStack Query v4+ to check loading/pending states.","mono","coderabbit-ui/src/pages/InviteSelfHostedAdmin/InviteSelfHostedAdmin.tsx","6941","","ankitjena","August 26th 2025, 9:11:10 am","August 26th 2025, 9:11:10 am" +"The custom Switch component in coderabbit-ui/src/components/Switch/Switch.tsx is not currently used anywhere in the codebase. The coderabbit-ui project uses a different component called SettingsToggleSwitch for toggle functionality.","mono","coderabbit-ui/src/components/Switch/Switch.tsx","6941","","ankitjena","August 26th 2025, 9:32:42 am","August 26th 2025, 9:32:42 am" +"The custom Switch component in coderabbit-ui/src/components/Switch/Switch.tsx (MUI-based) is not used anywhere in the codebase. The coderabbit-ui project uses a different Switch component located at coderabbit-ui/src/components/ui/switch.tsx (Radix UI-based) which is imported as `import { Switch } from ""@/components/ui/switch""`.","mono","coderabbit-ui/src/components/Switch/Switch.tsx","6941","","ankitjena","August 26th 2025, 9:32:42 am","August 26th 2025, 9:32:42 am" +"In pr-reviewer-saas/src/utils/version.ts, the user prefers to keep the existing isGte function implementation simple rather than adding prefix stripping for workspace:/file:/npm: specifiers, as those scenarios are not currently encountered in their use case.","mono","pr-reviewer-saas/src/utils/version.ts","7086","","gowthamkishore3799","September 10th 2025, 4:41:21 pm","September 10th 2025, 4:41:21 pm" +"The unused custom Switch component in coderabbit-ui/src/components/Switch/Switch.tsx is being deleted by ankitjena since it's not used anywhere in the codebase and there's already a working Radix UI-based alternative.","mono","coderabbit-ui/src/components/Switch/Switch.tsx","6941","","ankitjena","August 26th 2025, 9:58:17 am","August 26th 2025, 9:58:17 am" +"The user prefers to limit package.json search to only 2 levels (current directory and one parent) to find the closest package.json file, rather than searching all the way up to the repository root.","mono","pr-reviewer-saas/src/knowledge-base/library-instructions/utils/manifest-resolver.ts","7086","","gowthamkishore3799","September 10th 2025, 4:43:30 pm","September 10th 2025, 4:43:30 pm" +"Negative caching by storing MANIFEST_NOT_FOUND helps avoid repeated failed lookups in subsequent cycles when searching for manifest files.","mono","pr-reviewer-saas/src/knowledge-base/library-instructions/utils/manifest-resolver.ts","7086","","gowthamkishore3799","September 10th 2025, 4:43:30 pm","September 10th 2025, 4:43:30 pm" +"In glob patterns like those used in .prettierignore, `*.ts` already matches `*.d.ts` files because glob patterns match the file ending, and `.d.ts` files end with `.ts`. Adding `*.d.ts` as a separate pattern when `*.ts` is already present is redundant.","mono","vscode-extension/webview/.prettierignore","6933","","NatoBoram","August 26th 2025, 1:40:12 pm","August 26th 2025, 1:40:12 pm" +"NatoBoram prefers to keep the spread syntax for tseslint.configs.disableTypeChecked in object literals (e.g., `{ files: [""**/*.js""], ...tseslint.configs.disableTypeChecked }`) when it works in their codebase, rather than switching to the extends array pattern.","mono","vscode-extension/eslint.config.mjs","6933","","NatoBoram","August 26th 2025, 1:57:23 pm","August 26th 2025, 1:57:23 pm" +"In @grpc/grpc-js versions 1.10.0 and later, the server.start() method is deprecated and no longer necessary. After calling server.bindAsync() successfully, the server will automatically start accepting RPCs without requiring an additional start() call. The deprecation warning states: ""Calling start() is no longer necessary. It can be safely omitted.""","mono","pr-reviewer-saas/src/bootstrap/grpc-server.ts","7133","","prashanthpai","September 12th 2025, 1:52:17 am","September 12th 2025, 1:52:17 am" +"In coderabbitai UI hero sections, separate h3 elements like ""Token Generated"" and ""Successfully"" are used intentionally for visual spacing and line breaks, not grammar. The CSS uses selectors like `[&>h3]:whitespace-nowrap` that target individual h3 elements for styling.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","7244","","krtkvrm","September 11th 2025, 3:28:39 pm","September 11th 2025, 3:28:39 pm" +"In coderabbitai/mono codebase, specifically in the CLITokenAuth.tsx component, the user krtkvrm prefers to keep the text ""Copy this token and paste in your CLI to complete authentication."" as-is and does not want grammar suggestions for this UI copy.","mono","coderabbit-ui/src/pages/Login/CLITokenAuth.tsx","7244","","krtkvrm","September 11th 2025, 3:27:56 pm","September 11th 2025, 3:27:56 pm" +"The CLI suggestion apply functionality in apps/cli/src/services/storage/review.ts is not yet released, so backward compatibility concerns don't apply to filename changes like switching from `${commentId}.json` to `comment_${commentId}.json`.","mono","apps/cli/src/services/storage/review.ts","7261","","krtkvrm","September 12th 2025, 2:02:56 am","September 12th 2025, 2:02:56 am" +"In apps/cli/src/services/review/review.ts applySuggestion method, the user prefers to show a generic user-friendly error message ""Failed to apply suggestion: file has been modified since review"" rather than exposing technical error details to CLI users, while still logging the full error for debugging purposes.","mono","apps/cli/src/services/review/review.ts","7261","","krtkvrm","September 12th 2025, 2:05:08 am","September 12th 2025, 2:05:08 am" +"When commenting on diffs that show new files being added (indicated by @@ -0,0 +1,n @@), verify that the file actually exists in the repository before making comments, as the diff might be showing planned changes that haven't been implemented yet.","mono","apps/cli/src/components/review/components/review/ReviewCommentPanes.tsx","7235","","ankitjena","September 11th 2025, 2:47:36 am","September 11th 2025, 2:47:36 am" +"The ellipsis handling in replaceCodeSection function has bugs across both vscode-extension and CLI implementations. The regex `/(^\s*\.\.\.\n)/gm` fails for EOF cases and indented ellipsis, and the insertion branch `if (!searchPiece && replacePiece)` is unreachable due to filtering logic.","mono","apps/cli/src/utils/search-replace.ts","7261","","krtkvrm","September 12th 2025, 2:10:12 am","September 12th 2025, 2:10:12 am" +"Gurnadarkaur22 is restricted to only modifying files in `/pr-reviewer-saas/src/tools/*/command.ts` or `/pr-reviewer-saas/src/tools/*/command.test.ts` in the mono repository. She should not add markdown documents, documentation, or make changes to any other paths. Remind her of these restrictions if she attempts to modify files outside these allowed paths.","mono","","","https://github.com/coderabbitai/mono/pull/6956","alexcoderabbitai","August 27th 2025, 9:26:11 am","August 27th 2025, 9:26:11 am" +"The Ink React library's Box component supports percentage values for the width prop, including ""100%"". The width prop can accept both numeric values (representing spaces) and percentage strings (calculated based on parent width).","mono","apps/cli/src/components/review/components/FileFilter.tsx","7254","","k-ahlawat","September 12th 2025, 2:43:58 am","September 12th 2025, 2:43:58 am" +"In the ReviewCreatedEventData type, the codegenInstructions field is required and will always be present as at least an empty string, so optional chaining or null checks are not needed when accessing this field.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:50 am","September 12th 2025, 2:57:50 am" +"In apps/sandboxer/src/bootstrap/worker.ts, ParthGandhi prefers allowing SegfaultHandler.setLogPath to no-op on the stub handler rather than awaiting segfaultHandlerInitialized before calling it, prioritizing code simplicity over guaranteed handler initialization.","mono","apps/sandboxer/src/bootstrap/worker.ts","6943","","ParthGandhi","August 27th 2025, 10:34:55 am","August 27th 2025, 10:34:55 am" +"In the CodeRabbit CLI codebase, the applySuggestion method on ReviewService returns a synchronous result object { success: boolean; error?: string }, not a Promise. Similarly, updateCommentStatus on ReviewStorageService returns a synchronous boolean, not a Promise. These methods do not need to be awaited.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:42 am","September 12th 2025, 2:57:42 am" +"In the CodeRabbit CLI codebase, the applySuggestion method on ReviewService returns a synchronous result object { success: boolean; error?: string }, not a Promise. Similarly, updateCommentStatus on ReviewStorageService returns a synchronous ICommentActionResult interface, not a Promise. These methods do not need to be awaited.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:42 am","September 12th 2025, 2:57:42 am" +"In the CodeRabbit CLI codebase, the applySuggestion method on ReviewService returns a synchronous result object { success: boolean; error?: string }, not a Promise. Similarly, updateCommentStatus on ReviewStorageService returns a synchronous ICommentActionResult interface, not a Promise. These methods do not need to be awaited.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:42 am","September 12th 2025, 2:57:42 am" +"In the CodeRabbit CLI codebase, the applySuggestion method on ReviewService returns a synchronous result object { success: boolean; error?: string }, not a Promise. Similarly, updateCommentStatus on ReviewStorageService returns a synchronous ICommentActionResult interface, not a Promise. These methods do not need to be awaited.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:42 am","September 12th 2025, 2:57:42 am" +"In the CodeRabbit CLI codebase, the applySuggestion method on ReviewService returns a synchronous result object { success: boolean; error?: string }, not a Promise. The updateCommentStatus method on ReviewStorageService returns a synchronous ICommentActionResult interface (which is { success: boolean; error?: string }), not a Promise. Both methods are synchronous and do not need to be awaited.","mono","apps/cli/src/components/review/hooks/useCommentActions.ts","7254","","k-ahlawat","September 12th 2025, 2:57:42 am","September 12th 2025, 2:57:42 am" +"ParthGandhi prefers to keep Node.js engine requirement changes separate from feature PRs, considering them outside the context of the main PR objectives.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:26:26 am","August 27th 2025, 11:26:26 am" +"In apps/sandboxer/src/bootstrap/diagnostics.ts, the implementation should remain consistent with pr-reviewer-saas/src/bootstrap/diagnostics.ts as it was copied from there. Any improvements to file filtering or directory reading should be applied to both files simultaneously to maintain consistency.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:28:04 am","August 27th 2025, 11:28:04 am" +"The apps/sandboxer/src/bootstrap/diagnostics.ts file was copied from pr-reviewer-saas/src/bootstrap/diagnostics.ts but is missing Sentry integration and has different import paths. When maintaining consistency between these files, consider whether both should have the same features or if the sandboxer version should remain simplified.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:28:04 am","August 27th 2025, 11:28:04 am" +"ParthGandhi prefers to maintain consistency between pr-reviewer-saas/src/bootstrap/diagnostics.ts and apps/sandboxer/src/bootstrap/diagnostics.ts implementations, keeping the same pattern where processedDiagnosticFiles.add() is called before processing rather than after, since the sandboxer version was copied from pr-reviewer-saas.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:28:05 am","August 27th 2025, 11:28:05 am" +"ParthGandhi prefers to maintain code consistency between apps/sandboxer/src/bootstrap/diagnostics.ts and pr-reviewer-saas/src/bootstrap/diagnostics.ts, even when safety improvements are suggested. The diagnostic file handling code was copied from pr-reviewer-saas and should remain identical.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:28:09 am","August 27th 2025, 11:28:09 am" +"ParthGandhi prefers to maintain consistency between apps/sandboxer/src/bootstrap/diagnostics.ts and pr-reviewer-saas/src/bootstrap/diagnostics.ts since the code was copied from the latter. Code quality improvements should be avoided if they would cause divergence between these intentionally identical modules.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:28:15 am","August 27th 2025, 11:28:15 am" +"ParthGandhi prefers to maintain consistency between similar code implementations across different files (e.g., apps/sandboxer/src/utils/utilization.ts and pr-reviewer-saas/src/bootstrap/diagnostics.ts) rather than fixing issues in one place only. When code is copied between files, changes should be applied consistently to avoid divergent implementations.","mono","apps/sandboxer/src/utils/utilization.ts","6943","","ParthGandhi","August 27th 2025, 11:28:57 am","August 27th 2025, 11:28:57 am" +"ParthGandhi prefers to maintain consistency in shell command patterns across the codebase, even when technical improvements are suggested. When code patterns are established, changes should be applied consistently rather than creating divergent implementations in individual files.","mono","apps/sandboxer/src/utils/utilization.ts","6943","","ParthGandhi","August 27th 2025, 11:28:57 am","August 27th 2025, 11:28:57 am" +"ParthGandhi prefers to maintain consistency between related files even when technical improvements are suggested. When code patterns are established across files, changes should be applied consistently rather than fixing issues in isolation, to avoid creating divergent implementations in the codebase.","mono","apps/sandboxer/src/utils/utilization.ts","6943","","ParthGandhi","August 27th 2025, 11:28:57 am","August 27th 2025, 11:28:57 am" +"Sentry has been deprecated in the codebase, which is why newer implementations like apps/sandboxer/src/bootstrap/diagnostics.ts don't include Sentry.captureEvent() calls that were present in older files like pr-reviewer-saas/src/bootstrap/diagnostics.ts.","mono","apps/sandboxer/src/bootstrap/diagnostics.ts","6943","","ParthGandhi","August 27th 2025, 11:31:41 am","August 27th 2025, 11:31:41 am" +"ParthGandhi prefers aggressive worker timeout behavior in apps/sandboxer/src/bootstrap/primary.ts - killing workers on first failed heartbeat rather than implementing timeout cancellation on recovery, to maintain consistency with the existing reviewer system's approach.","mono","apps/sandboxer/src/bootstrap/primary.ts","6943","","ParthGandhi","August 27th 2025, 12:08:39 pm","August 27th 2025, 12:08:39 pm" +"In the CLI codebase, authentication checks are handled at the service layer (like in ReviewService.startReview()) and in the main command handlers, so UI components don't need to add additional auth guards before calling service methods.","mono","apps/cli/src/components/review/screens/WelcomeScreen.tsx","7254","","k-ahlawat","September 12th 2025, 3:10:45 am","September 12th 2025, 3:10:45 am" +"In the CLI codebase, authentication checks are handled at the service layer (like in ReviewService.startReview()) and in the main command handlers, so UI components don't need to add additional auth guards before calling service methods.","mono","apps/cli/src/components/review/screens/WelcomeScreen.tsx","7254","","k-ahlawat","September 12th 2025, 3:10:45 am","September 12th 2025, 3:10:45 am" +"When reviewing PRs, keep suggestions scoped to the specific area/component being changed rather than suggesting broader codebase-wide fixes that may be unrelated to the current work.","mono","apps/sandboxer/src/utils/segfault-handler.ts","6963","","ParthGandhi","August 27th 2025, 1:32:24 pm","August 27th 2025, 1:32:24 pm" +"In the CLI organization data store at apps/cli/src/stores/organization-data-store.ts, the navigateUp and navigateDown methods are not actually used by the UI. The OrganizationSelectionScreen manages its own local selectedIndex state instead, making the store's navigation methods unused code paths. The store's selectedIndex is only set through selectOrganization with valid values.","mono","apps/cli/src/stores/organization-data-store.ts","7254","","k-ahlawat","September 12th 2025, 3:27:19 am","September 12th 2025, 3:27:19 am" +"In Ruff linting, codes I001 and F401 are considered noisy and should be filtered out post-parse to reduce false positives, even if this overrides repo-level configurations.","mono","pr-reviewer-saas/src/tools/ruff/command.ts","6914","","alexcoderabbitai","August 27th 2025, 5:29:21 pm","August 27th 2025, 5:29:21 pm" +"In the OpenAI responses API client, service_tier is used for API parameters (following OpenAI's API specification) while serviceTier is used for internal logging and response objects (following JavaScript camelCase conventions). This mixed approach is intentional for API compatibility.","mono","pr-reviewer-saas/src/ai-client/openai/responses-api-client.ts","7469","","gowthamkishore3799","September 23rd 2025, 9:36:05 am","September 23rd 2025, 9:36:05 am" +"The OpenAI responses API client uses a deliberate dual naming convention: service_tier for OpenAI API parameters (API spec compliance) and serviceTier for internal logging objects (JavaScript camelCase convention). This is mapped consistently via serviceTier: responseParams.service_tier || ""default"" pattern.","mono","pr-reviewer-saas/src/ai-client/openai/responses-api-client.ts","7469","","gowthamkishore3799","September 23rd 2025, 9:36:05 am","September 23rd 2025, 9:36:05 am" +"PostHog project API keys that start with ""phc_"" are public keys designed to be used client-side and are safe to commit to version control. They don't provide access to sensitive operations and are specifically meant for frontend tracking. This is different from PostHog personal API keys which should remain private.","mono","apps/cli/.env","7254","","ankitjena","September 12th 2025, 5:40:36 am","September 12th 2025, 5:40:36 am" +"The user confirmed that ""dotsCircle"" spinner type is available in their version of cli-spinners, indicating I should verify the actual package versions in use rather than relying solely on external documentation when reviewing spinner usage in IsolatedSpinner components.","mono","apps/cli/src/components/review/screens/OrganizationSelectionScreen.tsx","7254","","k-ahlawat","September 12th 2025, 4:09:13 am","September 12th 2025, 4:09:13 am" +"cli-spinners version 3.2.0 includes the ""dotsCircle"" spinner type, so IsolatedSpinner components in this CLI codebase can safely use spinnerType=""dotsCircle"" without runtime errors.","mono","apps/cli/src/components/review/screens/OrganizationSelectionScreen.tsx","7254","","k-ahlawat","September 12th 2025, 4:09:13 am","September 12th 2025, 4:09:13 am" +"In the CodeRabbit monorepo, the directory structure is not uniform - the database service is located at `apps/db-api-server` while the UI application is located at `coderabbit-ui` (not under the apps directory). The paths should be documented as they actually exist rather than assumed to follow a consistent pattern.","mono","GEMINI.md","7254","","k-ahlawat","September 12th 2025, 4:09:28 am","September 12th 2025, 4:09:28 am" +"The .env file in pr-reviewer-saas contains empty placeholder values for configuration variables, not actual secrets. However, it includes fields intended for sensitive data like API keys, tokens, and encryption passwords.","mono","docker/pr-reviewer-self-hosted/Dockerfile","7246","","recrsn","September 11th 2025, 10:41:03 am","September 11th 2025, 10:41:03 am" +"In the CodeRabbit CLI footer/legend area, there is a lightgray background, so BLACK (#000000) is used as the fallback color for text to ensure readability on dark terminals. Default terminal colors would be invisible on this lightgray background.","mono","apps/cli/src/components/review/hooks/useLegendRows.ts","7271","","k-ahlawat","September 12th 2025, 9:35:58 am","September 12th 2025, 9:35:58 am" +"In billing/src/handlers.ts, when processing Chargebee webhook updates, support_code is conditionally added to updateFields only when cf_support_code is present: `...(subscription.cf_support_code && { support_code: subscription.cf_support_code })`. This prevents overwriting existing support_code values with null/undefined.","mono","coderabbitHandler/src/services/subscriptions.service.ts","7447","","cr-ruhanmuzaffar","September 24th 2025, 12:13:26 am","September 24th 2025, 12:13:26 am" +"The structured logging requirements for tool tag and session/conId from ENG-1971 and ENG-2066 are not relevant for CLI components - they apply to other parts of the system but not the CLI.","mono","apps/cli/src/components/Status.tsx","7380","","recrsn","September 24th 2025, 12:52:45 am","September 24th 2025, 12:52:45 am" +"In P4EventClient, codeRabbitBotCommand calls postComment which relies on this.currentReviewId to determine which review to post comments on. Due to multiprocessing handling multiple comments simultaneously, this.currentReviewId often gets locked to the first review being processed in the current cycle rather than the correct reviewId for each specific comment. This causes comments to be posted to the wrong review. The solution is to avoid using this.postComment and instead use this.p4Client.postReviewComment directly with the correct reviewId parameter to ensure comments are posted to the appropriate review.","mono","pr-reviewer-saas/src/event-client/p4-event-client.ts","7279","","alexcoderabbitai","September 12th 2025, 2:19:26 pm","September 12th 2025, 2:19:26 pm" +"In pro features + manual assignment mode (enable_pro_features && !joinImmediate), billing admins should be allowed to have their seat status toggled, bypassing the normal billing admin protection in seat assignment logic.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/components/UserList.tsx","7290","","karan925","September 12th 2025, 7:43:14 pm","September 12th 2025, 7:43:14 pm" +"Billing admins should never occupy seats in the seat management system. Only members and admins can occupy seats. The seat assignment logic should always prevent billing admins from being assigned seats, even in pro features + manual assignment mode.","mono","coderabbit-ui/src/pages/Settings/SeatManagement/components/UserList.tsx","7290","","karan925","September 12th 2025, 7:45:40 pm","September 12th 2025, 7:45:40 pm" +"Docker ARG instructions support shell-style parameter expansion including ${VAR:-default} syntax. The syntax `ARG NODE_ENV=${NODE_ENV:-production}` is valid Dockerfile syntax and does not need to be changed to `ARG NODE_ENV=production`.","mono","pr-reviewer-saas/Dockerfile","7484","","harjotgill","September 23rd 2025, 1:31:37 pm","September 23rd 2025, 1:31:37 pm" +"The CLI build process uses macOS runners only, so host OS checking for codesigning operations is not required in apps/cli/bun-compile.mjs.","mono","apps/cli/bun-compile.mjs","7281","","recrsn","September 14th 2025, 1:19:21 am","September 14th 2025, 1:19:21 am" +"In apps/cli/bun-compile.mjs, the env: ""inline"" option in Bun.build is intentionally used to inline environment variables at build time rather than preserving runtime environment resolution. This is a deliberate architectural decision for the CLI build infrastructure.","mono","apps/cli/bun-compile.mjs","7281","","recrsn","September 14th 2025, 1:20:26 am","September 14th 2025, 1:20:26 am" +"CLI applications in the codebase do not require TypeScript declaration files (.d.ts) since they are end-user applications, not libraries consumed by other TypeScript projects. The noEmit: true setting is appropriate for CLI packages.","mono","apps/cli/tsconfig.json","7281","","recrsn","September 14th 2025, 2:27:18 am","September 14th 2025, 2:27:18 am" +"The CLI tsconfig.json uses verbatimModuleSyntax: false due to incompatibility with jira.js in the pr-reviewer-saas package, preventing stricter ESM import/export semantics.","mono","apps/cli/tsconfig.json","7281","","recrsn","September 14th 2025, 2:27:43 am","September 14th 2025, 2:27:43 am" +"The team uses info-level logging for production debugging visibility in GCP, as debug logs are not collected or visible in the production environment.","mono","pr-reviewer-saas/src/review/pro-review.ts","7357","","gowthamkishore3799","September 23rd 2025, 2:23:32 pm","September 23rd 2025, 2:23:32 pm" +"The packages.config parser in pr-reviewer-saas includes packages with missing or empty versions (defaulting to empty string), but rejects packages with invalid version formats that don't match the semver-like regex pattern.","mono","pr-reviewer-saas/src/knowledge-base/library-instructions/tests/packages-config-stress.test.ts","7357","","gowthamkishore3799","September 23rd 2025, 2:51:59 pm","September 23rd 2025, 2:51:59 pm" +"In GitHub repository webhook events, `https_url` and similar URL fields (like `html_url`, `url`, `clone_url`) are always HTTPS URLs, while `ssh_url` is a separate field that may use different syntax.","mono","coderabbitHandler/src/routes/webhook_handler/handle_github.ts","7215","","bar0meter","September 14th 2025, 3:46:17 pm","September 14th 2025, 3:46:17 pm" +"For Jira webhook configuration, field names in the configuration object must be in uppercase for Jira 10.x (FILTERS, EXCLUDE_BODY, DESCRIPTION), while Jira 9.x and earlier use lowercase field names (filters, excludeBody) as per official Atlassian documentation.","mono","coderabbitHandler/src/services/integration.service.ts","7500","","cr-ruhanmuzaffar","September 24th 2025, 5:07:49 am","September 24th 2025, 5:07:49 am" +"For Jira Data Center 10.x webhook configuration, the API requires uppercase field names in the configuration object (FILTERS, EXCLUDE_BODY, DESCRIPTION) and EXCLUDE_BODY must be a string (""true"" or ""false""), not a boolean. This is different from Jira 9.x which uses camelCase fields (filters, excludeBody) and boolean values. The official Atlassian documentation at https://developer.atlassian.com/server/jira/platform/webhooks/ explicitly states these requirements.","mono","coderabbitHandler/src/services/integration.service.ts","7500","","cr-ruhanmuzaffar","September 24th 2025, 5:09:04 am","September 24th 2025, 5:09:04 am" +"When reviewing function signature changes in TypeScript codebases, don't suggest verifying call sites if the build is passing - TypeScript compilation will already catch signature mismatches.","mono","pr-reviewer-saas/src/prompts/templates/docstrings.ts","7217","","NatoBoram","September 15th 2025, 4:04:02 pm","September 15th 2025, 4:04:02 pm" +"CodeRabbit CLI archives extract the `coderabbit` binary directly to the root of the extraction directory, not in subdirectories. The install.sh script can safely assume the binary path is `""$temp_dir/coderabbit""`.","mono","apps/cli/install.sh","7281","","recrsn","September 16th 2025, 2:56:36 am","September 16th 2025, 2:56:36 am" +"In the CodeRabbit VSCode extension, file paths in ExtensionFile.filename are calculated using Node.js path.relative() via getRelativePath(), which can produce .. sequences in edge cases like symlinks, submodules, or multi-root workspaces, even though normal operation should keep files within the project directory.","mono","apps/sandboxer/src/sandbox-session.ts","7504","","ankitjena","September 25th 2025, 8:15:43 am","September 25th 2025, 8:15:43 am" +"In the CodeRabbit VSCode extension, file paths in ExtensionFile.filename are calculated using Node.js path.relative() via getRelativePath(), which can produce .. sequences in edge cases like symlinks, submodules, or multi-root workspaces, even though normal operation should keep files within the project directory.","mono","apps/sandboxer/src/sandbox-session.ts","7504","","ankitjena","September 25th 2025, 8:15:43 am","September 25th 2025, 8:15:43 am" +"In PR #7341, the CLI package version was intentionally changed from 0.2.0 to 0.1.0 as part of the update command implementation, despite the apparent rollback.","mono","apps/cli/package.json","7341","","krtkvrm","September 16th 2025, 9:40:28 am","September 16th 2025, 9:40:28 am" +"The team plans to implement CLI update checksum verification when they add SHA sum publishing to their release pipeline, rather than implementing verification immediately without published checksums.","mono","apps/cli/src/utils/update.ts","7341","","recrsn","September 16th 2025, 11:22:30 am","September 16th 2025, 11:22:30 am" +"In apps/cli/src/utils/update.ts, the release URLs should be configurable via environment variables rather than hardcoded to support different environments like staging and self-hosted installations.","mono","apps/cli/src/utils/update.ts","7341","","recrsn","September 16th 2025, 11:22:37 am","September 16th 2025, 11:22:37 am" +"In the CLI publishing process, the VERSION file in pkg/latest/VERSION is generated internally by the build process, so additional validation for path traversal or malformed versions is not required since it's trusted input.","mono","apps/cli/publish.sh","7332","","recrsn","September 16th 2025, 11:23:08 am","September 16th 2025, 11:23:08 am" +"Object.values() has a type parameter T and can be called with explicit type arguments like Object.values().","mono","packages/common/src/utils/event_client_type.ts","7217","","NatoBoram","September 24th 2025, 3:21:39 pm","September 24th 2025, 3:21:39 pm" +"Array.prototype.includes() performs safe equality comparisons using SameValueZero and does not force unsafe type assertions or coercions.","mono","packages/common/src/utils/event_client_type.ts","7217","","NatoBoram","September 24th 2025, 3:21:39 pm","September 24th 2025, 3:21:39 pm" +"`as const` is a const assertion in TypeScript and is allowed in the codebase. It's different from type assertions like `as SomeType` or `as unknown as T` which are banned. `as const` is used to create readonly, literal-typed objects and is the recommended pattern for enum-like structures.","mono","packages/common/src/utils/event_client_type.ts","7217","","NatoBoram","September 24th 2025, 3:26:16 pm","September 24th 2025, 3:26:16 pm" +"In the coderabbitai/mono project, all environment variables used should be declared with their default value in `.env` to make it easier to know what needs to be filled when downloading the project. Examples go directly in `env.ts` as documentation to not be confused with the default value. Do not suggest adding examples to `.env.example` files - use `env.ts` for documentation instead.","mono","pr-reviewer-saas/.env","7217","","NatoBoram","September 24th 2025, 3:24:13 pm","September 24th 2025, 3:24:13 pm" +"Use `corepack prepare` to validate the packageManager field integrity in package.json instead of `npm view dist.integrity`. Corepack is the authoritative tool for package manager specifications and provides proper validation.","mono","package.json","7352","","NatoBoram","September 16th 2025, 2:27:28 pm","September 16th 2025, 2:27:28 pm" +"In CodeRabbit mono repository, ESM is enabled via ""type"": ""module"" in package.json files and TypeScript module resolution is configured through the shared @coderabbitai/mono-config/tsconfig.json, so .js extension imports in TypeScript files work correctly without needing explicit moduleResolution settings in individual tsconfig.json files.","mono","packages/common/src/utils/index.ts","7217","","NatoBoram","September 24th 2025, 4:19:42 pm","September 24th 2025, 4:19:42 pm" +"When reviewing TypeScript code, avoid suggesting optional chaining or defensive coding patterns if the type system already guarantees that properties exist through proper interface definitions.","mono","pr-reviewer-saas/src/prompts/templates/docstrings.ts","7217","","NatoBoram","September 24th 2025, 4:18:07 pm","September 24th 2025, 4:18:07 pm" +"When reviewing TypeScript code with mutable variables that get conditionally assigned through mutations (like `let customHeadersEncrypted = undefined` followed by conditional assignments), suggest extracting this logic into a function that returns the final value directly. Use early returns to reduce nesting and convert comments preceding declarations into TSDoc. Example pattern: turn `let x = undefined; if (condition) { x = someValue }` into a function that returns the value directly with early returns.","mono","coderabbitHandler/src/routers/integrations.ts","6993","","NatoBoram","September 16th 2025, 5:42:47 pm","September 16th 2025, 5:42:47 pm" +"For TypeScript code patterns involving header sanitization and encryption (like the customHeadersEncrypted pattern), suggest creating a dedicated function like `encryptAndSanitizeHeaders()` that handles the conditional logic internally and returns the result directly, rather than using mutable variables with conditional assignments.","mono","coderabbitHandler/src/routers/integrations.ts","6993","","NatoBoram","September 16th 2025, 5:42:47 pm","September 16th 2025, 5:42:47 pm" +"When reviewing code with comments that precede variable declarations and describe their purpose (like ""// Sanitize and encrypt custom headers if provided""), suggest converting these to TSDoc comments on the extracted function instead.","mono","coderabbitHandler/src/routers/integrations.ts","6993","","NatoBoram","September 16th 2025, 5:42:47 pm","September 16th 2025, 5:42:47 pm" +"When reviewing TypeScript code, suggest creating separate functions for large inline blocks of logic (especially for complex operations like decryption/validation), use early returns instead of nested conditions, and recommend turning comments that precede declarations into TSDoc-documented functions. Prefer linear, less nested code structure over ""spaghetti"" code patterns.","mono","coderabbitHandler/src/utils/mcp/validation.ts","6993","","NatoBoram","September 16th 2025, 5:42:48 pm","September 16th 2025, 5:42:48 pm" +"Convert regular comments that precede function declarations and describe their purpose into TSDoc/JSDoc format using /** */ syntax instead of // syntax.","mono","coderabbit-ui/src/lib/xlsx.ts","6953","","NatoBoram","September 16th 2025, 5:56:35 pm","September 16th 2025, 5:56:35 pm" +"When reviewing TypeScript code, suggest extracting large inline object type annotations into named interfaces. Look for patterns like `const variable: { prop1: type; prop2: type; ... }[] = []` or function parameters with inline object types, especially when they span multiple lines or have many properties. Recommend creating a properly named interface instead.","mono","coderabbit-ui/src/lib/xlsx.ts","6953","","NatoBoram","September 16th 2025, 5:56:39 pm","September 16th 2025, 5:56:39 pm" +"In the pr-reviewer-saas service, HTTP and gRPC traffic will use separate Cloud Run deployments - one service for HTTP traffic and another for gRPC traffic. They don't run both simultaneously on the same Cloud Run instance due to the single-port limitation.","mono","pr-reviewer-saas/src/utils/env.ts","7133","","prashanthpai","September 17th 2025, 3:25:43 am","September 17th 2025, 3:25:43 am" +"For Cloud Run services that need unauthenticated access but should be restricted from direct public access (e.g., services behind Twingate), use both `--allow-unauthenticated` and `--ingress=internal-and-cloud-load-balancing`. These flags are not mutually exclusive - one controls authentication requirements while the other controls network access paths.","mono",".github/workflows/deploy-reviewer-dev.yaml","7365","","prashanthpai","September 17th 2025, 4:26:18 am","September 17th 2025, 4:26:18 am" +"In vscode-extension error handling (specifically handleStartReviewError), automatic WebSocket reconnection was intentionally removed. After review startup errors, users are expected to manually reconnect rather than having the extension automatically re-establish the WebSocket connection. This is a deliberate design decision to give users control over reconnection timing.","mono","vscode-extension/src/commands/util.ts","7504","","ankitjena","September 25th 2025, 7:33:04 am","September 25th 2025, 7:33:04 am" +"In the CodeRabbit docs repository, `.github/scripts/generate-yaml-template.js` is part of a multi-step build process where `schema/schema.v2.json` is first generated by running `pnpm run generate-config-docs-v4`, then consumed by `pnpm run generate-yaml-template`. The missing schema file is expected behavior as it's a build artifact, not a committed file.","docs",".github/scripts/generate-yaml-template.js","73","","NatoBoram","September 17th 2025, 3:33:42 pm","September 17th 2025, 3:33:42 pm" +"Mintlify MDX supports custom code fence attributes including `lines`, `wrap`, and `icon` in addition to standard attributes like `title`. The syntax ```language title wrap icon=""value"" lines is valid Mintlify MDX syntax for customizing code block appearance and functionality.","docs","guides/scheduled-reports.mdx","73","","NatoBoram","September 17th 2025, 3:38:25 pm","September 17th 2025, 3:38:25 pm" +"When reviewing PRs that add new workflow files, the workflow files may exist on the source branch but not on the review branch, so badge references to new workflows should be evaluated in the context of the PR changes rather than just the current branch state.","docs","README.md","73","","NatoBoram","September 17th 2025, 4:31:40 pm","September 17th 2025, 4:31:40 pm" +"When reviewing PRs, always check the full context of files being added/modified in the PR rather than just the current branch state. A PR adding new workflow files will have those files in the changeset even if they don't exist on the current review branch.","docs","README.md","73","","NatoBoram","September 17th 2025, 4:31:40 pm","September 17th 2025, 4:31:40 pm" +"Trailing commas are valid in YAML flow sequences according to the YAML specification. YAML's grammar allows trailing commas in sequences, contrary to some common misconceptions. When suggesting YAML formatting changes, verify that the current syntax is actually invalid before recommending modifications.","docs","configuration/username-based-pr-review-control.mdx","73","","NatoBoram","September 17th 2025, 5:20:54 pm","September 17th 2025, 5:20:54 pm" +"Trailing commas are valid in YAML flow sequences and should not be flagged as syntax errors. The current format `[""item1"", ""item2"",]` is syntactically correct according to YAML specification.","docs","configuration/username-based-pr-review-control.mdx","73","","NatoBoram","September 17th 2025, 5:20:49 pm","September 17th 2025, 5:20:49 pm" +"In the sandboxer codebase, ChangedFile.filepath values are always relative paths generated using path.relative() from controlled sources like the VSCode extension, eliminating path traversal concerns without needing additional validation.","mono","apps/sandboxer/src/sandbox-session.ts","7541","","ankitjena","September 25th 2025, 12:33:52 pm","September 25th 2025, 12:33:52 pm" +"In the sandboxer codebase, ChangedFile.filepath values are always relative paths generated using path.relative() from controlled sources like the VSCode extension, eliminating path traversal concerns without needing additional validation.","mono","apps/sandboxer/src/sandbox-session.ts","7541","","ankitjena","September 25th 2025, 12:33:52 pm","September 25th 2025, 12:33:52 pm" +"The team considers debug logs safe for logging sensitive data because they're disabled in production, but security best practices still apply to prevent credential exposure across all environments and operational scenarios.","mono","apps/token-service/src/github/github-token.ts","7371","","gatsby003","September 18th 2025, 4:26:29 am","September 18th 2025, 4:26:29 am" +"In Commander.js, when a subcommand is marked as default using `{ isDefault: true }`, all flags passed to the root command are automatically parsed by that default subcommand. This means flags like `--plain` work with `coderabbit --plain` even when they're only defined on the default subcommand, not at the root level.","mono","apps/cli/src/index.ts","7373","","k-ahlawat","September 18th 2025, 5:19:33 am","September 18th 2025, 5:19:33 am" +"In P4/Swarm API inline comments, the context.content field is required for inline comments to function properly, even if set to a placeholder string value like ""placeholder_content"". Removing this field will prevent inline comments from working correctly.","mono","pr-reviewer-saas/src/platform-client/p4-client.ts","7485","","alexcoderabbitai","September 25th 2025, 2:16:36 pm","September 25th 2025, 2:16:36 pm" +"The CodeRabbit CLI update feature in apps/cli/src/services/update/index.ts does not currently support SHA-256 integrity verification for downloaded archives during the update process.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 6:00:42 am","September 18th 2025, 6:00:42 am" +"In apps/cli/src/services/update/index.ts, the downloadAndExtract() method intentionally always downloads from the ""latest"" release URL rather than using the specific version parameter. This design ensures users always get the most recent version available at download time, even if a newer version was published between the version check and download. This is intended behavior, not a race condition.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 6:03:06 am","September 18th 2025, 6:03:06 am" +"In the CodeRabbit CLI update service, the maintainer prefers to let the OS handle cleanup of temporary directories created during updates rather than implementing explicit cleanup logic.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 6:50:43 am","September 18th 2025, 6:50:43 am" +"The CLI binary is installed in `$HOME/.local/bin` which resolves most permission and cross-filesystem issues, but code-level bugs in permission masking and file copy operations still need to be addressed.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 7:02:16 am","September 18th 2025, 7:02:16 am" +"The user applied the permission masking fix (originalStats.mode & 0o777) and native file copy fix (copyFileSync) but kept the temp file in tmpdir() rather than same directory as the binary, which is acceptable given the CLI is installed in $HOME/.local/bin.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 7:04:12 am","September 18th 2025, 7:04:12 am" +"In the CodeRabbit mono repository, TypeScript configuration inheritance is handled through a shared base config at packages/mono-config/tsconfig.json which includes ""composite"": true, and all apps extend from ""@coderabbitai/mono-config/tsconfig.json"" to inherit this and other compiler settings.","mono","apps/sandboxer/package.json","7545","","NatoBoram","September 25th 2025, 2:54:50 pm","September 25th 2025, 2:54:50 pm" +"This project uses pnpm as the package manager, not yarn.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"TypeScript configurations in this codebase inherit composite:true from the base @coderabbitai/mono-config/tsconfig.json configuration via extends.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"The TypeScript project reference configuration in apps/sandboxer/tsconfig.json works correctly and does not cause build errors as both the main config and referenced config inherit the necessary composite settings.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"When analyzing TypeScript project references, always verify the base configuration inherited via ""extends"" before assuming compilation errors will occur.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"The CodeRabbit mono repository uses pnpm as the package manager, not yarn, as evidenced by pnpm-lock.yaml files and CircleCI configuration.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"The @coderabbitai/mono-config/tsconfig.json base configuration sets composite:true and other necessary options for TypeScript project references to work correctly across the codebase.","mono","apps/sandboxer/tsconfig.json","7545","","NatoBoram","September 25th 2025, 2:56:58 pm","September 25th 2025, 2:56:58 pm" +"The user prefers to defer security improvements like zip-slip protection to separate releases rather than addressing them in the current PR, indicating a preference for focused, incremental security updates rather than blocking feature releases.","mono","apps/cli/src/services/update/index.ts","7390","","krtkvrm","September 18th 2025, 9:11:31 am","September 18th 2025, 9:11:31 am" +"The CodeRabbit CLI currently has no infrastructure for signing or verifying the authenticity of update ZIP files. This is acknowledged technical debt that should be addressed when signing infrastructure becomes available.","mono","","","https://github.com/coderabbitai/mono/pull/7390","krtkvrm","September 18th 2025, 9:28:59 am","September 18th 2025, 9:28:59 am" +"The @coderabbitai/design-system package needs to maintain CSS import capabilities through exports like ""./*.css"" and ""./styles"" to allow users to import stylesheets directly from the package.","design-system","package.json","54","","suyanksaraswat","September 26th 2025, 2:46:08 am","September 26th 2025, 2:46:08 am" +"The P4 inline comment generation in SwarmClient.generateAndPostInlineComments has a content duplication issue where multiple representations of the same file content are created and potentially sent to the AI commenter, causing it to see duplicated content. The issue includes unused fileHunksStr generation, duplicate annotatedFileContent and diffFileContent creation, and redundant hunk assignments.","mono","","","https://github.com/coderabbitai/mono/pull/7485","alexcoderabbitai","September 25th 2025, 4:44:03 pm","September 25th 2025, 4:44:03 pm" +"The @coderabbitai/mono-config uses ""module"": ""NodeNext"" in TypeScript configuration, which emits ES modules, not CommonJS. When package.json has ""type"": ""module"", this is the correct setup for ES module packages.","mono","apps/sandboxer/package.json","7547","","NatoBoram","September 25th 2025, 4:58:24 pm","September 25th 2025, 4:58:24 pm" +"The correct OpenAI service_tier values are: ""flex"", ""default"", ""priority"", and ""auto"". For timeout-based service tier escalation, the recommended order is ""flex → default → priority"" to provide cost-effective progression from baseline performance to high-priority processing.","mono","pr-reviewer-saas/src/ai-client/openai-chat-bot.ts","7410","","ccassion","September 18th 2025, 9:58:50 pm","September 18th 2025, 9:58:50 pm" +"Tool names in MCP context gathering are prefixed with server labels (e.g., ""Linear_list_issues"") to help the agent understand which tool belongs to which source. However, these prefixed names must be cleaned/stripped before being sent to external LLM APIs (Anthropic/OpenAI) to avoid schema compatibility issues. The cleaning should happen in ToolCallingAgent.prepareChatInput() while preserving the prefixed names for internal tool execution matching.","mono","","","https://github.com/coderabbitai/mono/pull/6658","averyjennings","September 26th 2025, 1:16:59 pm","September 26th 2025, 1:16:59 pm" +"Tool names in MCP context gathering are prefixed with server labels (e.g., ""Linear_list_issues"") to help the agent understand which tool belongs to which source. However, these prefixed names must be cleaned/stripped before being sent to external LLM APIs (Anthropic/OpenAI) to avoid schema compatibility issues. The cleaning should happen in ToolCallingAgent.prepareChatInput() while preserving the prefixed names for internal tool execution matching.","mono","","","https://github.com/coderabbitai/mono/pull/6658","averyjennings","September 26th 2025, 1:16:59 pm","September 26th 2025, 1:16:59 pm" +"The useOnboardingFlow hook (called via useInitApp) already handles all onboarding routing logic comprehensively, including navigation to /onboarding when needed and /settings/repositories when complete. Additional onboarding guards in individual components like RepositoryList are redundant since users are routed correctly at the app initialization level before they can reach protected pages.","mono","coderabbit-ui/src/pages/Settings/Repository/RepositoryList.tsx","7519","","aquibbaig","September 27th 2025, 2:07:07 am","September 27th 2025, 2:07:07 am" +"Zustand with immer middleware ensures immutable state updates through set(), making shared object references for initial state safe from mutation bleed concerns.","mono","coderabbit-ui/src/stores/onboardingStore.ts","7519","","aquibbaig","September 27th 2025, 2:24:12 am","September 27th 2025, 2:24:12 am" +"The GitHub onboarding flow (triggerReview endpoint and related onboarding features) is currently enabled only for GitHub cloud, not self-hosted GitHub instances.","mono","coderabbitHandler/src/routers/repositories.ts","7519","","aquibbaig","September 27th 2025, 2:26:36 am","September 27th 2025, 2:26:36 am" +"FEP-152 was specifically about GitHub app permissions (what permissions the app requests when installed), not about individual installation access token permissions. App-level permissions and token-level permissions are distinct concepts.","mono","apps/token-service/src/github/github-utils.ts","7591","","gatsby003","September 29th 2025, 7:13:53 am","September 29th 2025, 7:13:53 am" +"For Datadog tracing setup in this repository, dd-trace dependencies are added at the application layer (package.json), while runtime metrics enablement and DogStatsD configuration (DD_RUNTIME_METRICS_ENABLED, DD_AGENT_HOST, DD_DOGSTATSD_PORT) are handled at the infrastructure/container level via environment variables.","mono","coderabbitHandler/package.json","7592","","recrsn","September 29th 2025, 8:13:40 am","September 29th 2025, 8:13:40 am" +"For Azure DevOps cloud provider (`azure-devops`), do not include `host_url` in subscriber lookups since there is no host_url concept - it's always dev.azure.com. Only `azure-devops-self-hosted` uses host_url for different instances.","mono","coderabbitHandler/src/routes/extension/extensionProductTier.ts","7594","","bar0meter","September 29th 2025, 10:31:28 am","September 29th 2025, 10:31:28 am" +"The extensionProductTier endpoint uses validateAuthHandler middleware which extracts, decrypts, and validates the Authorization header token before setting req.authorization. The handler only needs to check if the authorization header exists since validation is already done by middleware.","mono","coderabbitHandler/src/routes/extension/extensionProductTier.ts","7594","","ankitjena","September 29th 2025, 11:26:17 am","September 29th 2025, 11:26:17 am" +"For the GitHub onboarding OAuth flow in this codebase, do not suggest generating random OAuth state values or implementing CSRF protection via state parameter validation. The team has decided to use hardcoded state values like ""github-onboarding"" and ignore this security concern.","mono","coderabbit-ui/src/pages/OnboardingV2/hooks/useGithubOnboarding.ts","7519","","aquibbaig","September 29th 2025, 11:36:24 am","September 29th 2025, 11:36:24 am" +"In React useEffect hooks, avoid adding handler functions from custom hooks to dependency arrays if those handlers are recreated on every render, as this causes infinite re-renders. Handlers that are simple wrappers around store methods typically don't suffer from stale closure issues and don't need to be in the dependency array.","mono","coderabbit-ui/src/hooks/useOnboardingRedirect.ts","7519","","aquibbaig","September 29th 2025, 11:36:52 am","September 29th 2025, 11:36:52 am" +"Always trace the complete token flow through middleware before suggesting auth-related changes. Check what format downstream consumers (like providers) actually expect - they may need decrypted tokens from req.authorization rather than the original encrypted Bearer headers.","mono","coderabbitHandler/src/routes/extension/extensionProductTier.ts","7594","","ankitjena","September 29th 2025, 11:57:59 am","September 29th 2025, 11:57:59 am" +"For automated tool version updates in the mono repository, the preferred schedule is Monday morning before East Coast staff wakes up (around 5-6 AM Eastern time). The current cron ""0 10 * * 1"" (10:00 UTC) achieves this timing.","mono",".github/workflows/update-tool-versions.yml","7599","","alexcoderabbitai","September 29th 2025, 12:01:35 pm","September 29th 2025, 12:01:35 pm" +"In the OnboardingV2 flow, the parent component's handleTriggerReview is designed for UI animation timing only. The actual review mutation is called by the GitHubRepoAndPrStep child component, which then calls the parent's onTriggerReview callback for progress animation. Completion detection and navigation is handled by useOnboardingRedirect hook.","mono","coderabbit-ui/src/pages/OnboardingV2/OnboardingV2.tsx","7519","","aquibbaig","September 29th 2025, 1:44:15 pm","September 29th 2025, 1:44:15 pm" +"For Azure DevOps in this codebase, there is no self-hosted option available, so provider and provider_user_id combination is sufficient for unique subscriber identification without needing host_url in the lookup query.","mono","coderabbitHandler/src/routes/extension/extensionProductTier.ts","7594","","ankitjena","September 29th 2025, 2:36:38 pm","September 29th 2025, 2:36:38 pm" +"In the codebase, exact string matching for HTML tags like `
` is preferred over regex-based matching with attributes. The team generally avoids using tag attributes in their HTML tags.","mono","pr-reviewer-saas/src/utils/comment-cleaning.ts","7523","","ccassion","September 29th 2025, 3:56:01 pm","September 29th 2025, 3:56:01 pm" +"The CLI application (@coderabbitai/cli) does not require dd-trace initialization at startup, unlike the backend services. The dd-trace dependency may be present but does not need early loading or automatic instrumentation.","mono","apps/cli/package.json","7592","","recrsn","September 29th 2025, 11:25:19 pm","September 29th 2025, 11:25:19 pm" +"For Google CloudRun deployments in this repository, datadog/serverless-init ENTRYPOINT is the correct pattern because CloudRun is a serverless environment where standalone DogStatsD agents cannot run. The serverless-init wrapper forwards metrics/traces directly to Datadog's intake API.","mono","apps/db-api-server/Dockerfile","7592","","recrsn","September 29th 2025, 11:27:36 pm","September 29th 2025, 11:27:36 pm" +"In TypeScript projects using dd-trace for Datadog metrics, dogstatsd method calls (increment, histogram, distribution, gauge) are no-op when the Datadog Agent is unavailable and do not throw exceptions, so runtime guards or try-catch blocks are unnecessary.","mono","packages/common/src/observability/datadog-metrics.ts","7592","","recrsn","September 30th 2025, 12:02:54 am","September 30th 2025, 12:02:54 am" +"The dd-trace library (DataDog tracer) is designed to be resilient and does not throw errors when the Datadog Agent is unavailable or unreachable. It handles missing agent connections gracefully internally, so explicit null checks or try-catch blocks around tracer.dogstatsd calls are unnecessary.","mono","apps/token-service/Dockerfile","7592","","recrsn","September 30th 2025, 12:07:32 am","September 30th 2025, 12:07:32 am" +"In vscode-extension/webview/package.json, packages like @coderabbitai/coderabbit-handler and @coderabbitai/pr-reviewer-saas are included in bundleDependencies even without direct imports in vscode-extension/webview/src/ because they are needed for the webview build process. Don't flag these as unused.","mono","vscode-extension/webview/package.json","7626","","ankitjena","September 30th 2025, 6:19:53 am","September 30th 2025, 6:19:53 am" +"In the mono repository, when @coderabbitai/pr-reviewer-saas package doesn't export routers through its package.json exports field, use the direct path import: `@coderabbitai/pr-reviewer-saas/dist/routers/index.js` with `""resolution-mode"": ""import""`. This is the correct approach for accessing non-exported modules from workspace packages.","mono","vscode-extension/src/typings/routers.ts","7626","","ankitjena","September 30th 2025, 6:21:20 am","September 30th 2025, 6:21:20 am" +"In GitLab client's `makeCloneCommand`, the `--branch` flag was intentionally removed from the initial clone command to follow the GitHub client pattern. The clone is performed without checking out a specific branch, and then separate `fetch` and `checkout` commands handle branch selection with fallback support for merge request refs.","mono","pr-reviewer-saas/src/event-client/gitlab-client.ts","7632","","ganeshpatro321","September 30th 2025, 8:46:31 am","September 30th 2025, 8:46:31 am" \ No newline at end of file