mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-07-10 21:36:00 -04:00
111 lines
5.3 KiB
YAML
111 lines
5.3 KiB
YAML
# 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"
|