Files
meshtastic-web/apps/web/README.md
T
Ben MeadorsandGitHub bbe9a0d5cd feat(protobufs): sync to firmware-current and consume workspace package (#1097)
* feat(protobufs): sync to firmware-current and consume workspace package

Sync the vendored .proto sources to firmware-current (v2.7.25+48), regenerate the v2 TS bindings, and consume the workspace @meshtastic/protobufs (workspace:*) in place of the stale JSR 2.7.20 — finishing the monorepo migration (core was already workspace:*).

Includes the one required breaking-change fix: admin nodedb_reset changed int32 to bool, so resetNodes() now sends value: true.

* build(protobufs): vendor generated bindings for workspace consumers

The package is consumed via workspace:* — its exports point at the TS source, which imports ./dist/meshtastic/*_pb.ts — so the generated output must exist at build time. CI builds web/core with no codegen step and the runners have no buf CLI, so the bindings are vendored here (kept gitignored; lint/format skip them). Regenerate with: pnpm --filter @meshtastic/protobufs gen

* fix(protobufs): clean script removes the actual generated output dir

buf writes bindings to packages/ts/dist, but clean was removing a non-existent root dist — so it never cleaned stale output. Addresses Copilot review feedback.

* refactor: move web app packages/web -> apps/web

Aligns the web app with the apps/web layout (matching the Vercel web-test Root Directory and the SDK-migration direction). Pure directory move plus root config: pnpm-workspace (adds apps/*), vitest projects, root tsconfig reference, and the pr/release-web/nightly workflows. vercel.json moved with the app. Build + 36 validation tests green.

* feat: config fields, module pages, key verification, telemetry capture

Incorporates the firmware-current feature work onto the protobuf foundation: new config fields (Display message bubbles; LoRa fem_lna_mode + serial_hal_only; Telemetry air_quality_screen_enabled); 4 new ModuleConfig pages (TrafficManagement, StatusMessage, TAK, RemoteHardware); the manual Key Verification flow (sendKeyVerification + ClientNotificationDialog stages + Verify Key button); live telemetry capture (nodeDB addDeviceMetrics) and admin hardening (toggleMutedNode, graceful PortNum default); plus the sdk-preview ConfigEditor demo and store/config tests. Build + lint + format + 131 tests green.

* chore: drop #1062 (unsaved-change-detection) to match upstream revert

#1062 was merged to main by accident (per @danditomaso) and is being reverted. Reverse-applied its diff here via 3-way so #1097 stays consistent with where main is headed, while keeping the feature changes layered on the same files (deviceStore/changeRegistry). Build + 131 tests + lint + format green.

* fix(nodes): clean up SNR display in node table and map popup

SNR is a ratio measured in dB, not dBm (which is absolute power); the
node table and map popup both mislabeled it and crammed three values
together: '0dBm/50%/50raw'. The trailing '%/raw' pair was the same
heuristic ((snr+10)*5) shown twice — once clamped, once not.

Render SNR in dB rounded to one decimal, color-coded by a 0-100%
signal-quality heuristic (green/yellow/red), with the quality percentage
as a muted secondary. Drop the redundant raw value. Adds unit.db; this
matches the existing SNRTooltip, which already renders dB.
2026-06-15 13:23:28 -05:00

5.2 KiB
Raw Permalink Blame History

Meshtastic Web

CI CLA assistant Fiscal Contributors Vercel

Overview

Official Meshtastic web interface, that can be hosted or served from a node

Hosted version

Stats

Alt

Self-host

The client can be self hosted using the precompiled container images with an OCI compatible runtime such as Docker or Podman. The base image used is Nginx 1.27

# With Docker
docker run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web

#With Podman
podman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web

Release Schedule

Our release process follows these guidelines:

  • Versioning: We use Semantic Versioning (Major.Minor.Patch).
  • Stable Releases: Published around the beginning of each month (e.g., v2.6.1).
  • Pre-releases: A pre-release is typically issued mid-month for testing and early adoption.
  • Nightly Builds: An experimental Docker image containing the latest cutting-edge features and fixes is automatically built nightly from the main branch.

Nightly Builds

# With Docker
docker run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web:nightly
#With Podman
podman run -d -p 8080:8080 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web:nightly

Warning

  • Nightly builds represent the latest development state and may contain breaking changes
  • These builds undergo automated testing but may be less stable than tagged release versions
  • Not recommended for production environments unless you are actively testing new features
  • No guarantee of backward compatibility between nightly builds

Version Information

Each nightly build is tagged with:

  • The nightly tag for the latest build
  • A specific SHA for build reproducibility

Feedback

If you encounter any issues with nightly builds, please report them in our issues tracker. Your feedback helps improve the stability of future releases

Development & Building

You'll need to download the package manager used with this repo. You can install it by visiting pnpm.io and following the installation instructions listed on the home page.

Development

Install the dependencies.

cd packages/web &&
pnpm install

Start the development server:

pnpm run dev

Building and Packaging

Build the project:

pnpm run build

GZip the output:

pnpm run package

Why pnpm?

Meshtastic Web uses pnpm as its package manager for several compelling reasons:

  • Efficient Storage: pnpm uses content-addressable storage, avoiding duplication of packages across projects and saving significant disk space.
  • Fast Performance: Faster package installation compared to other package managers through symlinks and efficient dependency resolution.
  • Strict Dependency Management: Prevents access to unlisted dependencies, ensuring better project reliability and security.
  • Workspace Support: Excellent monorepo support with workspaces for managing multiple packages efficiently.
  • Reproducible Builds: Lockfile ensures consistent builds across all environments.

Contributing

We welcome contributions! Here’s how the deployment flow works for pull requests:

  • Preview Deployments:
    Every pull request automatically generates a preview deployment on Vercel. This allows you and reviewers to easily preview changes before merging.

  • Staging Environment (client-test):
    Once your PR is merged, your changes will be available on our staging site: client-test.meshtastic.org.
    This environment supports rapid feature iteration and testing without impacting the production site.

  • Production Releases:
    At regular intervals, stable and fully tested releases are promoted to our production site: client.meshtastic.org.
    This is the primary interface used by the public to connect with their Meshtastic nodes.

Please review our Contribution Guidelines before submitting a pull request. We appreciate your help in making the project better!