Apple iOS, iPadOS & macOS Clients For Meshtastic
Find a file
Mike Robbins 402cb836b5
NodeMap performance improvements for high # positions history (#1480)
* NodeMapContent: move Route Lines out of ForEach

* NodeMapContent: move Convex Hull out of ForEach

* NodeMapContent: Replace `position.nodePosition?` with `node`

* NodeMapContent: drop unnecessary LazyVStack in showNodeHistory

* NodeMapContent: hoist out nodeColorSwift

* Move lineCoords, loraCoords calculations within showRouteLines, showConvexHull respectively

* Hoist out repeated node.metadata?.positionFlags lookups / PositionFlags creation

* NodeMapContent: remove unused @State

* NodeMapSwiftUI: add NodeMapContentEquatableWrapper and NodeMapContentSignature to prevent frequent NodeMapContent recomputation and infinite render loops

* NodeMapSwiftUI: disable animation during SwiftUI transactions

* NodeMapContent: hoist nodeBorderColor and set allowsHitTesting(false) on history point views

* NodeMapContent: prerenderHistoryPointCircle and prerenderHistoryPointArrow to avoid thousands of vector draw operations

* NodeMapContent: Shared coordinate list for Route Lines and Convex Hull

* NodeMapContent.prerenderHistoryPointArrow: add .frame(width: 16, height: 16)
2025-10-30 14:32:27 -07:00
.github us5 2025-07-30 13:53:46 -05:00
ci_scripts update prebuild paths 2025-02-07 09:20:51 -08:00
Meshtastic NodeMap performance improvements for high # positions history (#1480) 2025-10-30 14:32:27 -07:00
Meshtastic.xcodeproj Keep list of previous manual connections (#1484) 2025-10-28 06:18:17 -07:00
Meshtastic.xcworkspace 2.7.4 Working Changes (#1415) 2025-10-05 17:51:18 -07:00
MeshtasticProtobufs 2.7.4 Working Changes (#1415) 2025-10-05 17:51:18 -07:00
MeshtasticTests Transports Interface to Support TCP for all Platforms and Serial on Mac (#1341) 2025-08-27 08:09:02 -07:00
protobufs@c1e31a9655 2.7.4 Working Changes (#1415) 2025-10-05 17:51:18 -07:00
scripts Transports Interface to Support TCP for all Platforms and Serial on Mac (#1341) 2025-08-27 08:09:02 -07:00
Settings.bundle Add german translations (#1383) 2025-09-11 18:49:47 -07:00
Widgets Transports Interface to Support TCP for all Platforms and Serial on Mac (#1341) 2025-08-27 08:09:02 -07:00
.gitignore Update .gitignore 2025-03-28 14:02:41 -07:00
.gitmodules Add back submodule 2024-05-01 19:55:39 -07:00
.swiftlint-precommit.yml Transports Interface to Support TCP for all Platforms and Serial on Mac (#1341) 2025-08-27 08:09:02 -07:00
.swiftlint.yml Transports Interface to Support TCP for all Platforms and Serial on Mac (#1341) 2025-08-27 08:09:02 -07:00
CONTRIBUTING.md Update references to GitLab to GitHub instead 2025-03-22 15:29:26 -04:00
LICENSE Create LICENSE 2022-01-24 04:53:59 -08:00
Localizable.xcstrings Git rid of extra environment variable 2025-10-28 14:34:39 -07:00
meshtastic-1080x1080.png Update readme 2022-11-19 11:12:40 -08:00
README.md Improve formatting of Getting Started section in README 2025-03-22 15:29:26 -04:00
RELEASING.md Adding documentation describing how the project is managed, and adding a few scripts to assist with this 2024-07-09 19:01:32 -05:00

Meshtastic Apple Clients

Overview

SwiftUI client applications for iOS, iPadOS and macOS.

Getting Started

This project always uses the latest release version of XCode.

  1. Clone the repo.
    git clone git@github.com:meshtastic/Meshtastic-Apple.git
    
  2. Open the local directory.
    cd Meshtastic-Apple
    
  3. Set up git hooks to automatically lint the project when you commit changes.
    ./scripts/setup-hooks.sh
    
  4. Open Meshtastic.xcworkspace
    open Meshtastic.xcworkspace
    
  5. Build and run the Meshtastic target.

Technical Standards

Supported Operating Systems

The last two major operating system versions are supported on iOS, iPadOS and macOS.

Code Standards

  • Use SwiftUI
  • Use SFSymbols for icons
  • Use Core Data for persistence

Updating Protobufs:

  1. run
./scripts/gen_protos.sh
  1. Build, test, and commit the changes.

Release Process

For more information on how a new release of Meshtastic is managed, please refer to RELEASING.md

License

This project is licensed under the GPL v3. See the LICENSE file for details.