* chore: remove unused logo SVG files * feat: add interactive fixed position picker with map interface - Created new FixedPositionPicker component with clickable map for setting device coordinates - Added form field type for fixed position picker that appears when fixedPosition toggle is enabled - Implemented position request functionality to retrieve current device location * feat: display altitude unit based on user's display settings - Added dynamic altitude unit (Meters/Feet) that respects the user's imperial/metric display preference - Updated altitude field description to show the appropriate unit instead of hardcoded "Meters" * refactor: replace any type with MapLayerMouseEvent in map click handler * refactor: improve accessibility and code quality in FixedPositionPicker - Replace hardcoded IDs with useId() hook for proper accessibility - Use Number.isNaN() instead of isNaN() for more reliable type checking - Add radix parameter to parseInt() and remove unnecessary fragment wrapper * refactor: simplify fixed position picker integration - Removed dedicated FixedPositionPicker form field type in favor of toggle's additionalContent prop - Moved FixedPositionPicker to render conditionally within toggle field instead of as separate dynamic field - Streamlined form field types by eliminating FixedPositionPickerFieldProps * style: format code with consistent line breaks and import ordering * refactor: simplify fixed position picker container styling * feat: disable fixed position toggle when GPS is enabled * refactor: use ComponentRef instead of ElementRef in Switch component * refactor: replace interactive map picker with inline coordinate fields for fixed position - Removed FixedPositionPicker component with map interface - Added latitude, longitude, and altitude fields directly to position form - Moved coordinate validation into PositionValidationSchema with proper min/max bounds - Updated translation strings to include coordinate ranges and improved altitude description - Coordinates now sent via setFixedPosition admin message on form submit when fixedPosition is enabled * refactor: simplify toggle field by removing additionalContent prop and unused field spreading - Removed additionalContent prop and its JSDoc documentation from ToggleFieldProps - Removed rendering of additionalContent below toggle switch - Cleaned up Controller render function by removing unused rest spread operator - Renamed field destructuring to controllerField for clarity * refactor: improve fixed position handling and add position broadcast request - Restructure onSubmit to save config before sending admin message - Add position broadcast request after setting fixed position to immediately update display - Add comprehensive debug logging throughout submission flow - Extract coordinate exclusion logic earlier in submission process for clarity - Add 1 second delay before requesting position broadcast to allow fixed position processing * feat: add max length constraint to latitude and longitude fields - Set fieldLength.max to 10 for both latitude and longitude inputs - Prevents excessive decimal precision while maintaining 7 decimal places (±1.1cm accuracy)
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
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