Files
Meshtastic-Android/docs/en/developer.md
James Rich 8346b18cc4 docs: veracity pass, screenshot enrichment, and screenshot pipeline split
Audit the user docs for accuracy against the code, enrich them with
component-level screenshots, and separate the doc-screenshot generation
path from the visual-regression gate so doc framing no longer churns test
baselines.

Veracity fixes (claims verified against code):
- connections: removed 3 screenshots that were from the unrelated mPWRD/nymea
  WiFi-provisioning app and rewrote the TCP/IP section to match the real
  Network transport flow (mDNS scan + manual IP:4403); replaced the BLE
  "scan" image (it was the wifi-provision splash) with the real device list.
- nodes: online window is 2h (not 15min); binary online/offline, no "away" tier.
- map: markers are identity-colored node chips, not online-status colors.
- node-metrics & signal-meter: signal quality is preset-relative SNR, not
  fixed thresholds.
- messages: max message length is 200 bytes (not 237/230).
- telemetry: CO2 bands aligned to Co2Severity (Good/Stuffy/Poor/Unsafe/Evacuate).
- translate: locale dirs use {lang}-r{REGION}.

New pages: Home Screen Widget, Help & In-App Docs (Chirpy on-device AI).

Screenshot enrichment + tighter framing: added IAQ scale, firmware verifying,
TAK local server, quick-chat dialog; cropped firmware states and connections
panes to component-level views instead of full-screen frames.

Pipeline split (new :docs-screenshots module, generate-only, not CI-gated):
holds doc-framed compositions so reframing a doc image never moves a regression
baseline; :screenshot-tests stays the gate. copyDocsScreenshots aggregates
both modules. Updated CI filter, governance advisories, dev docs, and the
testing-ci skill.

Translated docs re-sync from the English source via the scheduled Crowdin job.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 20:46:32 -05:00

3.5 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 spotlessApply to auto-format, then verify with spotlessCheck
  • Detekt passes — run ./gradlew detekt and fix all reported issues
  • All tests pass — run ./gradlew test allTests (both are needed: test covers Android-only modules, allTests covers KMP)
  • Screenshot tests pass — if you touched any Compose UI, run ./gradlew :screenshot-tests:validateDebugScreenshotTest and update reference images if needed
  • Protos are an external dependency — protobuf models come from the org.meshtastic:protobufs Maven artifact (pinned in gradle/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/user/. The UI & Docs Governance CI workflow will flag the PR if you didn't. Add the skip-docs-check label if it genuinely isn't needed
  • Previews updated — if you changed UI composables, update the corresponding *Previews.kt file and screenshot tests. The governance workflow will post an advisory. Add skip-preview-check to dismiss
  • Branch naming — branches must start with feat/, fix/, chore/, docs/, build/, ci/, refactor/, test/, or deps/

What's New for Developers

June 2026Architecture / 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 2026Testing — 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.

June 2026 — New feature modules: feature:discovery (mesh network discovery, #5275) and feature:car (Android Auto / Car App Library, google flavor only, #5633).

June 2026Testing — Added the :baselineprofile module (#5735): a Macrobenchmark cold-start journey generates a Baseline Profile for :androidApp to AOT-compile hot startup paths.

June 2026Persistence — FTS5 full-text message search (#5373): a PacketFts virtual table mirrors Packet.messageText, kept in sync by Room-managed triggers.

May 2026Measurement & Formatting — New page documenting the MetricFormatter API, locale-aware unit conversion patterns, and how to add new measurement types.

May 2026Testing — Compose Preview Screenshot Testing (CST) integrated: screenshot-tests/ module, @PreviewTest wrappers, CI validation, docs asset pipeline.