* 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.
Meshtastic Web Monorepo
Overview
This monorepo consolidates the official Meshtastic web interface and its supporting JavaScript libraries. It aims to provide a unified development experience for interacting with Meshtastic devices.
Note
You can find the main Meshtastic documentation at https://meshtastic.org/docs/introduction/.
Projects within this Monorepo (packages/)
All projects are located within the packages/ directory:
packages/web(Meshtastic Web Client): The official web interface, designed to be hosted or served directly from a Meshtastic node.packages/core: Core functionality for Meshtastic JS.packages/transport-node: TCP Transport for the NodeJS runtime.packages/transport-node-serial: NodeJS Serial Transport for the NodeJS runtime.packages/transport-deno: TCP Transport for the Deno runtime.packages/transport-http: HTTP Transport.packages/transport-web-bluetooth: Web Bluetooth Transport.packages/transport-web-serial: Web Serial Transport.packages/protobufs: Git submodule containing Meshtastic’s shared protobuf definitions, used to generate and publish the JSR protobuf package.
All Meshtastic JS packages (core and transports) are published both to
JSR. NPM
Repository activity
| Project | Repobeats |
|---|---|
| Meshtastic Web |
Tech Stack
This monorepo leverages the following technologies:
- Runtime: pnpm / Deno
- Web Client: React.js
- Styling: Tailwind CSS
- Bundling: Vite
- Language: TypeScript
- Testing: Vitest, React Testing Library
Getting Started
Prerequisites
You'll need to have pnpm installed to work with this monorepo. Follow the installation instructions on their home page.
Development Setup
- Clone the repository:
git clone https://github.com/meshtastic/meshtastic-web.git cd meshtastic-web - Install dependencies for all packages:
This command installs all necessary dependencies for all packages within the monorepo.
pnpm install - Install the Buf CLI
Required for building
packages/protobufshttps://buf.build/docs/cli/installation/
Running Projects
Meshtastic Web Client
Please refer to the Meshtastic Web README for setup and usage.
Feedback
If you encounter any issues, please report them in our issues tracker. Your feedback helps improve the stability of future releases