Files
Meshtastic-Android/.coderabbit.yaml
2026-07-09 16:41:34 -05:00

111 lines
5.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 apps `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"