3.6 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
September 2026 — Navigation & Deep Links — Deep links route through Navigation 3's UriDeepLinkMatcher instead of a hand-rolled when block, and patterns are anchored, so an unmodelled trailing path no longer opens the family root.
September 2026 — Measurement & Formatting — NumberFormatter.format follows the OS locale; formatInvariant is the fixed-dot one for payloads another system parses.
September 2026 — Documentation Style — Section 11 of the Meshtastic design standards is now the style guide for docs/en/; this page keeps only the repository mechanics, the in-app renderer's admonition form, and the prose rules the standards leave open.
August 2026 — Documentation Style — New page: the house style guide for docs/en/ prose, with rule IDs, a project word list, and the reasoning behind each convention.
August 2026 — Map tile sources are one shared catalogue in feature/map (MapTileCatalogue, RasterTileSpec), so both flavors draw the same raster base maps and overlays from one definition.
August 2026 — Both maps draw an imported feature's own icon and drape a KMZ GroundOverlay image at its LatLonBox (rotation included) — MapLibre via an ImageSource quad, Google via GroundOverlayOptions (#3786).
August 2026 — Offline map-pack downloads are gated on offlineMapsSupported, since the MapLibre offline API compiles on Desktop but silently downloads nothing there.
August 2026 — New module feature/map-maplibre: the F-Droid flavor and Desktop now render every map surface (main map, node track, traceroute, discovery, inline mini-map) through maplibre-compose from one multiplatform module, and osmdroid is gone. The shared rules both renderers must agree on live in feature/map policy classes.