Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.0 KiB
title, layout, nav_order, has_children
| title | layout | nav_order | has_children |
|---|---|---|---|
| Developer Guide | default | 2 | true |
Developer Guide
Technical documentation for contributing to the Meshtastic Android and Desktop app.
Before You Open a PR
Things that trip up first-time contributors — check these before requesting review:
- Formatting passes — run
./gradlew spotlessApplyto auto-format, then verify withspotlessCheck - Detekt passes — run
./gradlew detektand fix all reported issues - All tests pass — run
./gradlew test allTests(both are needed:testcovers Android-only modules,allTestscovers KMP) - Screenshot tests pass — if you touched any Compose UI, run
./gradlew :screenshot-tests:validateDebugScreenshotTestand update reference images if needed - Protos are an external dependency — protobuf models come from the
org.meshtastic:protobufsMaven artifact (pinned ingradle/libs.versions.toml); change protos upstream and bump the version, never edit generated code locally - Docs updated — if you changed user-visible UI, update the corresponding page under
docs/en/user/ - Previews updated — if you changed UI composables, update the corresponding
*Previews.ktfile and the screenshot-test baselines - Branch naming — branches must start with
feat/,fix/,chore/,docs/,build/,ci/,refactor/,test/, ordeps/
What's New for Developers
August 2026 — Android Auto removed from all build variants (#6779). feature/car is gone — the module, its Car App Library dependencies, the automotive_app_desc.xml manifest entry and the google flavor's FlavorModule registration.
August 2026 — Testing — CI gained a fourth runner tier: ubuntu-slim (#6674, #6677) now carries the lightweight jobs. It is single-CPU, unprivileged, x64-only and capped at 15 minutes, so anything needing sudo, Docker or a full-history clone stays on ubuntu-24.04-arm. Picking rules are in .github/instructions/ci-workflows.instructions.md.
August 2026 — Flatpak sources are generated inside each architecture's own offline build (#6919) rather than committed, and the flatpak-sources plugin resolves platform dependencies transitively (0.2.x), so the hand-tracked entries are gone.
July 2026 — Test Builds & Obtainium — New page, replacing the root obtainium-test-builds.md. Distributable Obtainium configurations now live in obtainium/ (importable export, one-tap link generator, config-site submission).
July 2026 — Map layer stack (MapLayer.kt, MapLayersManager, GeoJSON/KML import, Site Planner) extracted from the Google flavor into shared androidApp/src/main source (#6148) — F-Droid now renders imported overlays via a new OSMdroid-based renderer, so both flavors compile one implementation.
July 2026 — Persistence — Local Mesh Discovery sessions and cached msh.to device links now persist to Room (DiscoverySessionEntity, DiscoveryPresetResultEntity, DiscoveredNodeEntity, DeviceLinkEntity).
June 2026 — Architecture / Codebase — Protos migrated from the core/proto git submodule to the org.meshtastic:protobufs Maven artifact; there is no longer a local proto module to build or sync.
June 2026 — AIDL/IMeshService removed (#5586). The mesh service is now in-process only, driven entirely through RadioController — no cross-process binder, no aidl stubs.
June 2026 — Testing — Split the screenshot pipeline: the new generate-only :docs-screenshots module holds doc-framed compositions, while :screenshot-tests stays the CI visual-regression gate — so reframing a doc image no longer churns a test baseline.