Kamil DzieniszewskiandGitHub 6a7be99a6a feat: add fixed position coordinate picker (#909)
* 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)
2025-11-27 15:40:57 -05:00
2025-08-31 16:04:34 -04:00
2025-11-13 12:37:11 -05:00
2025-07-07 11:49:18 -04:00
2025-10-31 14:37:34 -04:00
2025-07-10 12:28:23 -04:00
2025-08-31 16:04:34 -04:00

Meshtastic Web Monorepo

CI CI CLA assistant Fiscal Contributors Vercel

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 Alt

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

  1. Clone the repository:
    git clone https://github.com/meshtastic/meshtastic-web.git
    cd meshtastic-web
    
  2. Install dependencies for all packages:
    pnpm install
    
    This command installs all necessary dependencies for all packages within the monorepo.

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

Star history

Star History Chart

Contributors

S
Description
Meshtastic web client (mirror of https://github.com/meshtastic/web)
Readme GPL-3.0
12 MiB
Languages
TypeScript 98.5%
CSS 0.6%
JavaScript 0.5%
Python 0.3%