# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json # CodeRabbit config — see https://docs.coderabbit.ai/getting-started/yaml-configuration language: en-US reviews: # chill = fewer nitpicks. CI already gates detekt/spotless/tests, and the # maintainers are experienced — we want CodeRabbit for substance, not lint noise. profile: chill high_level_summary: true poem: false # Don't burn reviews on WIP. This repo opens lots of draft PRs; review on "ready". # Skip Renovate dependency updates — CI gates dependencies; we review for substance, not every bump. auto_review: enabled: true drafts: false ignore_usernames: - renovate - renovate[bot] # Workflow-authored PRs (changelog updates, scheduled firmware/hardware/ # translation bumps) — machine-generated content, nothing to review. - github-actions - github-actions[bot] ignore_title_keywords: - "chore: Scheduled updates" # Stop reviewing once a PR is closed. abort_on_close: true path_filters: # Generated / huge / non-source — don't review, just noise + token burn. - "!**/build/**" - "!**/*.png" - "!**/*.webp" - "!**/firmware_releases.json" - "!**/emoji-data.json" - "!**/flatpak-sources.json" # Crowdin-managed translations — owned upstream, not hand-edited here. - "!**/values-*/strings.xml" # Spec Kit scaffolding — vendored tooling, not hand-maintained here. - "!.specify/**" path_instructions: - path: "**/commonMain/**" instructions: > KMP common code. Flag any import of java.* or android.* — these break non-Android targets. Expect KMP equivalents instead (Okio, kotlinx Mutex/atomicfu, NumberFormatter.format() for floats). - path: "**/*.kt" instructions: > Flag leftover // ... existing code ... placeholders, and any logging of PII, location, or cryptographic keys. - path: "**/src/**/strings.xml" instructions: > New string resources must be alphabetically sorted (scripts/sort-strings.py). Flag out-of-order additions. - path: baselineprofile/ instructions: Keep baseline profile generation tied to the `google` flavor and connected devices/emulators, and commit the generated profile output to `androidApp/src/google/generated/baselineProfiles/baseline-prof.txt`. - path: docs/ instructions: Treat non-English locale folders as Crowdin-managed output; edit the English sources under `docs/en/` and register new pages through `feature/docs/` instead of hand-editing translated locale directories. - path: screenshot-tests/ instructions: When updating docs screenshots, keep `docs-screenshots-manifest.txt` and `docs-screenshot-aliases.properties` in sync with the generated files, and rerun `copyDocsScreenshots` after regenerating screenshots. - path: docs-screenshots/ instructions: Keep this module generate-only for documentation screenshots; do not add it to the CI validation gate that is reserved for `screenshot-tests`. - path: desktopApp/ instructions: Keep desktop release ProGuard rules aligned with `androidApp/proguard-rules.pro`, and preserve the desktop-specific runtime wiring needed for `Dispatchers.Main` on JVM. - path: androidApp/ instructions: Keep the Android app’s `MeshService` declaration and manifest wiring in sync with the implementation that lives in `core:service`. - path: core/service/ instructions: Keep `RadioControllerImpl` composed from its sub-controllers via interface delegation; admin sends are fire-and-forget, and any config mutation must go through `editSettings { }` transactions. - path: feature/docs/ instructions: Treat the Compose resources under `src/commonMain/composeResources/files/` as generated output from `/docs/en/**` and translated docs sync tasks; do not hand-edit those copied files. - path: feature/map/ instructions: Route map access through the injected `CompositionLocal` provider contracts; do not depend directly on Google Maps or osmdroid from feature code. - path: feature/car/ instructions: Run unit tests with `./gradlew :feature:car:testGoogleDebugUnitTest`, and keep Robolectric pinned to SDK 36 for this module. # CI is the source of truth for detekt + spotless (Zero Lint Tolerance gate), # so disable detekt here to avoid duplicate comments. Keep the security/CI/shell # scanners CI doesn't run inline. tools: detekt: enabled: false gitleaks: enabled: true shellcheck: enabled: true actionlint: enabled: true # Auto-generated docstrings/tests/autofix are noisy for a repo with strict # human-authored KDoc and KMP-aware tests; leave finishing touches off. finishing_touches: docstrings: enabled: false unit_tests: enabled: false # No KDoc-coverage mandate in this repo; the default warning-at-80% check # would nag every PR. pre_merge_checks: docstrings: mode: "off" knowledge_base: # Feed CodeRabbit the same guidance human/AI contributors follow, including # the repo-specific .skills/ modules and Copilot path instructions it # wouldn't pick up by default. code_guidelines: enabled: true filePatterns: - "AGENTS.md" - "CLAUDE.md" - ".skills/**/SKILL.md" - ".github/copilot-instructions.md" - ".github/instructions/*.instructions.md"