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.
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# Contributing to Meshtastic Web
|
||||
|
||||
Thank you for your interest in contributing to **Meshtastic Web**! 🎉
|
||||
We welcome all contributions—whether it’s fixing a typo, improving documentation, adding new features, or reporting bugs. This document outlines how to get started and the conventions we follow.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Code of Conduct
|
||||
We follow the [Meshtastic Code of Conduct](https://meshtastic.org/docs/legal/conduct/).
|
||||
Please make sure you are familiar with it before contributing.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Getting Started
|
||||
Before making changes, please take some time to explore the repository and its monorepo structure.
|
||||
Understanding how the packages are organized will make it much easier to contribute effectively.
|
||||
|
||||
[Meshtastic Web](https://github.com/meshtastic/web/)
|
||||
|
||||
### Prerequisites
|
||||
- [Node.js](https://nodejs.org/) (v22 or later)
|
||||
- [pnpm](https://pnpm.io/) (v10.14.x or later)
|
||||
- Git
|
||||
|
||||
### Installation
|
||||
Clone the repo and install dependencies:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/meshtastic/web.git meshtastic-web
|
||||
cd meshtastic-web
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Development
|
||||
Start the development server:
|
||||
|
||||
```bash
|
||||
pnpm --filter @meshtastic/web dev
|
||||
```
|
||||
|
||||
Once running, the site will be available at:
|
||||
👉 **http://localhost:3000**
|
||||
|
||||
---
|
||||
|
||||
## 🗂 Repository Structure
|
||||
Meshtastic Web uses a **monorepo** setup managed with **pnpm workspaces**:
|
||||
|
||||
```
|
||||
/packages
|
||||
├─ web # React frontend
|
||||
├─ core # Shared types & logic
|
||||
├─ transport-* # Transport layer packages
|
||||
└─ ...other packages
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Contribution Workflow
|
||||
|
||||
1. **Fork the repo** and create your branch from `main`.
|
||||
|
||||
### Branch Naming
|
||||
- Use [Conventional Commit](https://www.conventionalcommits.org/) style for your branch names:
|
||||
```
|
||||
feat/add-project-filter
|
||||
fix/storage-service
|
||||
chore/update-ci-cache
|
||||
```
|
||||
|
||||
2. **Make your changes locally** and verify that the app runs as expected at `http://localhost:3000`.
|
||||
|
||||
3. **Commit your changes** with a descriptive commit message that follows the [Conventional Commits](https://www.conventionalcommits.org/) style.
|
||||
|
||||
4. **Open a Pull Request (PR)** from your fork's branch to the main repository's `main` branch on GitHub:
|
||||
- Clearly describe the problem and solution.
|
||||
- Reference related issues (e.g., `Fixes #123`).
|
||||
- Keep PRs focused on a single feature or fix.
|
||||
- Complete all fields in the PR template.
|
||||
- Tag a **Meshtastic Web developer** in the PR for review.
|
||||
|
||||
5. **CI/CD**:
|
||||
- Our GitHub Actions workflows handle builds, linting, and packaging automatically.
|
||||
- All checks must pass before merge.
|
||||
|
||||
---
|
||||
|
||||
## 🌍 Internationalization (i18n)
|
||||
|
||||
Meshtastic Web supports multiple languages. If your changes introduce **new user-facing strings**:
|
||||
|
||||
- Add them to the **`en.json`** file.
|
||||
- Do **not** hardcode English strings directly in components.
|
||||
- This ensures they can be translated into other languages.
|
||||
|
||||
🔗 See these guides for more details:
|
||||
- [i18n Developer Guide](https://github.com/meshtastic/web/blob/main/packages/web/CONTRIBUTING_I18N_DEVELOPER_GUIDE.md)
|
||||
- [Translation Contribution Guide](https://github.com/meshtastic/web/blob/main/packages/web/CONTRIBUTING_TRANSLATIONS.md)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing
|
||||
Tests are written with [Vitest](https://vitest.dev/).
|
||||
|
||||
Run all tests locally with:
|
||||
|
||||
```bash
|
||||
pnpm --filter @meshtastic/web test
|
||||
```
|
||||
|
||||
Please include tests for new features and bug fixes whenever possible.
|
||||
|
||||
---
|
||||
|
||||
## 📝 Commit Messages
|
||||
We use **Conventional Commits**:
|
||||
|
||||
- `feat:` – a new feature
|
||||
- `fix:` – a bug fix
|
||||
- `docs:` – documentation changes
|
||||
- `chore:` – maintenance, dependencies, build scripts
|
||||
- `refactor:` – code restructuring without feature changes
|
||||
- `test:` – adding or updating tests
|
||||
- `ci:` – CI/CD changes
|
||||
|
||||
Example:
|
||||
```
|
||||
feat: add toast notification system
|
||||
fix: correct caching issue in storage service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Tips for Contributors
|
||||
- Keep PRs **small, focused, and atomic**.
|
||||
- Discuss larger changes with the team on [Discord](https://discord.gg/meshtastic) before starting work.
|
||||
- If unsure, open a draft PR for early feedback.
|
||||
|
||||
---
|
||||
|
||||
## 🙌 Community
|
||||
Contributors are the heart of Meshtastic ❤️.
|
||||
Join the conversation:
|
||||
- [Discord](https://discord.gg/meshtastic)
|
||||
- [GitHub Discussions](https://github.com/meshtastic/web/discussions)
|
||||
|
||||
---
|
||||
|
||||
## 📜 License
|
||||
By contributing, you agree that your contributions will be licensed under the [GPL-3.0-only License](../../LICENSE).
|
||||
Reference in New Issue
Block a user