copilot-swe-agent[bot]
4a475957aa
Merge branch '2.7.10' into swiftdata - resolve Channels.swift conflict (channel button removal)
...
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-18 23:56:24 +00:00
Garth Vander Houwen
3b6f7fdbee
Firmware pop up and channel button fixes
2026-04-18 16:52:22 -07:00
Garth Vander Houwen
a6e7a2a803
Channel display fix
2026-04-18 16:10:48 -07:00
copilot-swe-agent[bot]
209b51b7ee
Merge origin/main into 2.7.10: bug-report-analyzer fixes, deep-link docs, CarPlay README section
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/578f5736-a071-4a3d-86b2-9f6f0533ab98
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-18 22:29:25 +00:00
Garth Vander Houwen
ed9605a4c1
fix swiftdata branch broken by new pulls
2026-04-18 15:20:37 -07:00
copilot-swe-agent[bot]
497bed8884
Merge branch '2.7.10' into swiftdata - resolve conflicts with CarPlay, channels, and map content
...
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-18 18:04:59 +00:00
Copilot
a5c825aaf0
Complete user onboarding flow: background activity, firmware version enforcement, security nag, and Siri shortcuts ( #1654 )
...
* Initial plan
* Add Background Activity onboarding step, firmware version screens, and security nag
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/449fe2d6-dec9-4509-920e-e6196ca11d65
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Address code review feedback: use @ObservedObject for LocationsHandler, fix firmware label
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/449fe2d6-dec9-4509-920e-e6196ca11d65
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve readability of firmware version checks in Connect.swift
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/449fe2d6-dec9-4509-920e-e6196ca11d65
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add Siri onboarding step; fix @State→let in version sheets; fix .denied location flow
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/654a5abf-8005-4995-974a-5f1f95dfa68a
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Update protobufs package
* Additional onboarding cleanup
* Catalyst fixes
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
2026-04-18 10:50:06 -07:00
Garth Vander Houwen
6d14a23998
Cache map data better, fix delete all dm message crash
2026-04-18 09:28:33 -07:00
Garth Vander Houwen
4a83444c13
carplay cleanup
2026-04-18 09:12:43 -07:00
Garth Vander Houwen
a5a2679f3d
Carplay communications ( #1676 )
...
* Carplay communications app templates
* Carplay tests
* Translate intents so there are no warnings
* Document siri messaging commands
* Send messages from carplay
* Don't try and use live activity on mac
2026-04-17 21:58:13 -07:00
copilot-swe-agent[bot]
be8dae2c59
Merge origin/main into 2.7.10, drop tools deep-link from README
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/3d5a0995-0edb-42f9-9749-fa920e6886af
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-18 04:19:52 +00:00
Garth Vander Houwen
f4b68b1d97
Channel display fix ( #1674 )
...
* Add deep link documentation to README (#1655 )
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/df28c94e-7e3d-44fc-8264-6ae1b875fb23
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Channel display fix
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 21:19:07 -07:00
Garth Vander Houwen
1a94b32043
Merge remote-tracking branch 'refs/remotes/origin/2.7.10'
2026-04-17 21:18:00 -07:00
Garth Vander Houwen
cad644a2a6
Move tools to developer menu while being tested
2026-04-17 21:17:48 -07:00
copilot-swe-agent[bot]
f0179d326b
Merge origin/main into 2.7.10, resolving README.md conflict
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/ceb80b85-37e1-4096-81c4-a001cf97e808
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-18 03:18:30 +00:00
Garth Vander Houwen
1d6c20925d
Cleanup ble connections
2026-04-16 15:49:28 -07:00
Garth Vander Houwen
f78f6ed20e
Additional fixes
2026-04-16 15:32:51 -07:00
copilot-swe-agent[bot]
add5d3f9e5
Merge branch '2.7.10' into swiftdata - resolve conflicts
...
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-16 19:17:03 +00:00
Copilot
1ae2b4bfef
Implement SiriKit intents for CarPlay messaging ( #1664 )
...
* Add SiriKit intent handlers for CarPlay messaging (INSendMessageIntent, INSearchForMessagesIntent, INSetMessageAttributeIntent)
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/8ef2a78b-83ee-4d9f-82b9-17b766c96312
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Address code review: consolidate intent routing, support multiple recipients, improve error for long messages
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/8ef2a78b-83ee-4d9f-82b9-17b766c96312
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix unnecessary nil-coalescing in conversationIdentifier
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/8ef2a78b-83ee-4d9f-82b9-17b766c96312
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Restrict INSendMessageIntent to single recipient (channel or direct message, not both)
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/1798a03a-53b3-4a97-94e1-8281b552217a
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix Mac Catalyst build errors in SiriKit intent handlers
- SendMessageIntentHandler: guard `.noHandlesForValue` with
#if targetEnvironment(macCatalyst) since the reason enum is iOS-only
- IntentMessageConverters: use .text instead of .tapback; INMessageType.tapback
is unavailable on Mac Catalyst
- SearchForMessagesIntentHandler: replace .startDate/.endDate (iOS-only) with
.startDateComponents/.endDateComponents + Calendar.date(from:) which work
on all platforms
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/9b61aad5-652c-4330-83b3-2303f10e4f12
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add Siri authorization request at startup and NSSiriUsageDescription in Info.plist
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/be245ecb-2f0a-48d4-b931-4df889a6b6cc
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-16 12:12:14 -07:00
Copilot
27b59fbb72
Add GitHub Copilot instructions file ( #1665 )
...
* Add deep link documentation to README (#1655 )
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/df28c94e-7e3d-44fc-8264-6ae1b875fb23
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add .github/copilot-instructions.md based on README and code style
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/1bcebc04-12c7-4f0d-b52f-aee620fad0cd
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Update translations file, bump version
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add missing SwiftUI #Preview blocks across 65 views (#1649 )
* Add SwiftUI previews for simple helper views
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/a2a43e8c-24fd-443a-8a98-13b678770edd
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add previews for action buttons, ChannelForm, MetricsColumnDetail, and DeviceOnboarding
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/a2a43e8c-24fd-443a-8a98-13b678770edd
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add previews for config views, log views, AppLog, Firmware, AppData, and UserConfig
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/a2a43e8c-24fd-443a-8a98-13b678770edd
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add preview for PositionConfig
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/a2a43e8c-24fd-443a-8a98-13b678770edd
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix formatting bugs in #Preview blocks: restore missing .environmentObject/.environment modifiers and add proper tab indentation
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/7eeb7a54-7928-466f-8e39-b00d0012a09d
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Linting fixes
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Show which node created a waypoint and which last updated by (#1496 )
* Fixed some issues with waypoints and created a createdBy and lastUpdatedBy
* Fix suggestions
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* perf: Quick-win performance optimizations for node list and Core Data lookups (#1650 )
* feat: improve routing performance with split state, fetch batching, node cache, and debounce
- Split Router's single @Published navigationState into per-tab properties
to reduce spurious re-renders across unrelated views
- Add fetchBatchSize=50 and relationshipKeyPathsForPrefetching to node list
- Optimize in-body array re-sort from 2 filter passes to single pass
- Add in-memory node object ID cache on Router for O(1) lookups
- Add fetchLimit=1 to getNodeInfo for early termination
- Debounce rapid node selection changes with 100ms Task delay
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/9bfe91f2-8ed7-4d2c-bb2e-4ed3dfd3a16c
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Address code review: add debounce constant and thread-safety comment
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/9bfe91f2-8ed7-4d2c-bb2e-4ed3dfd3a16c
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Tak server improvements (#1603 )
* added read only mode cot to meshtastic parsing and warning to not enable on pub channel
* better icons
* fully fixed markers
* telemetry support
* Update Meshtastic/Helpers/TAK/TAKServerManager.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fixes
* fixes
* Resolve merge conflicts for PR #1603 (TAK server improvements) (#1645 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
* Fix merge conflicts
* Merge main into tak-server-improvements to resolve PR #1603 conflicts (#1646 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
* Merge main into tak-server-improvements to resolve PR #1603 conflicts (#1647 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Try and fix ios 17 memory leak
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix emojionlytextfield regression by @rcgv1
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Handle nil emoji
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Compass fixes
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Implement map legend overlay (#1653 )
* Add map legend feature (issue #924 )
Implement a map legend overlay accessible from both the mesh map and node
detail map views. The legend explains all visual map elements including:
- Online/offline node markers with pulsing animation
- Detection sensor nodes
- Waypoints
- Position precision circles
- Position history points and heading arrows
- Route start/end markers and route lines
- Convex hull mesh coverage outline
A new "map" button is added to the floating control buttons on both map
views, opening the legend as a sheet.
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/23f75e1e-549b-46a1-84c9-fb0a6375dcd9
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve legend descriptions for online/offline nodes
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/23f75e1e-549b-46a1-84c9-fb0a6375dcd9
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* map button glass and cleanup
* Update Meshtastic/Views/Nodes/Helpers/Map/MapLegend.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update incorect online timeframe
* Update Meshtastic/Views/Nodes/MeshMap.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* translation file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: Garth Vander Houwen <garth@meshtastic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix compass labels
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix compass ugly
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Update Meshtastic.xcodeproj/project.pbxproj
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Remove unnecessary attributes from WaypointEntity
Removed 'createdBy' and 'lastUpdatedBy' attributes from WaypointEntity.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Properly add new waypoint fields
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Message translation (#1656 )
* Add deep link documentation to README (#1655 )
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/df28c94e-7e3d-44fc-8264-6ae1b875fb23
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* message translation core data version to match 2.7.10
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* NFC Tag contact (#1600 )
* NFC Tag contact
* Add Tools.swift to Xcode project file - fix missing file reference causing build failure
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/e3299e28-9ec0-4a23-98bc-5fc032750b4a
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Apply reviewer feedback: Catalyst guard, NDEF entitlement, nil guard, localized string, capacity check, preview fix
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/b86f9b74-5ee1-4144-87e5-3e4b6479ac44
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Log tag NDEF capacity on query for debugging
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/b86f9b74-5ee1-4144-87e5-3e4b6479ac44
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix formatting error
* Linting fixes
---------
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix: Add @MainActor annotation to debounce Task in NodeList onChange handler
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/ec4c8629-8d84-4450-9df2-2818b06f9296
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix: revert NFC entitlement from NDEF back to TAG (#1657 )
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Update protobufs
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Update NFC Entitlement
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Remove NDEF
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Add TAK Config settings screen
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Moved some things around
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix visibility
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Gate NFC contact code behind @available(iOS 18, *) to fix App Store Connect build errors (#1659 )
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/6a66f55f-2b1f-458a-b44a-21882b7ba4f6
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Reduce duplicate nodes
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Initialize Spec Kit
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Constitution update and Package.resolved update
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix: address code review feedback - cache eviction, cache staleness, main actor, distance check
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f6a3d726-6379-4b09-9c81-b0362e6346d2
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix: wrap edit-mode WaypointForm content in VStack; add tools deep-link to README
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/70909d6e-9ed8-4fb2-9666-f1457ed203be
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Garth Vander Houwen <garth@meshtastic.com>
2026-04-16 12:11:53 -07:00
Garth Vander Houwen
b2c72ae166
initial swift data conversion
2026-04-16 12:10:00 -07:00
copilot-swe-agent[bot]
11db9f755e
fix: wrap edit-mode WaypointForm content in VStack; add tools deep-link to README
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/70909d6e-9ed8-4fb2-9666-f1457ed203be
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-16 05:50:03 +00:00
copilot-swe-agent[bot]
7a0f916a8a
fix: address code review feedback - cache eviction, cache staleness, main actor, distance check
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f6a3d726-6379-4b09-9c81-b0362e6346d2
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-16 05:40:07 +00:00
Garth Vander Houwen
183924d4dc
Constitution update and Package.resolved update
2026-04-15 20:51:09 -07:00
Garth Vander Houwen
a2392cb069
Initialize Spec Kit
2026-04-15 19:48:14 -07:00
Garth Vander Houwen
758887b103
Reduce duplicate nodes
2026-04-15 19:35:36 -07:00
Copilot
88bd99e3ea
Gate NFC contact code behind @available(iOS 18, *) to fix App Store Connect build errors ( #1659 )
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/6a66f55f-2b1f-458a-b44a-21882b7ba4f6
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-15 18:32:38 -07:00
Ben Meadors
af77d7a5a5
Merge pull request #1658 from meshtastic/tak_config
...
Add TAK Config settings screen
2026-04-08 13:41:36 -05:00
Ben Meadors
85f07608cb
Fix visibility
2026-04-08 13:26:57 -05:00
Ben Meadors
7964a6bab3
Moved some things around
2026-04-07 13:51:06 -05:00
Garth Vander Houwen
0dd29bee97
Remove NDEF
2026-04-07 08:33:40 -07:00
Ben Meadors
dffd540045
Add TAK Config settings screen
2026-04-07 08:58:24 -05:00
Garth Vander Houwen
eacd62b232
Update NFC Entitlement
2026-04-07 06:33:46 -07:00
Ben Meadors
64873e285e
Update protobufs
2026-04-07 06:05:50 -05:00
Copilot
352d338fd7
fix: revert NFC entitlement from NDEF back to TAG ( #1657 )
2026-04-06 18:04:22 -07:00
copilot-swe-agent[bot]
8a7f67e8ac
fix: Add @MainActor annotation to debounce Task in NodeList onChange handler
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/ec4c8629-8d84-4450-9df2-2818b06f9296
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-06 17:55:15 +00:00
Garth Vander Houwen
36c07ba685
NFC Tag contact ( #1600 )
...
* NFC Tag contact
* Add Tools.swift to Xcode project file - fix missing file reference causing build failure
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/e3299e28-9ec0-4a23-98bc-5fc032750b4a
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Apply reviewer feedback: Catalyst guard, NDEF entitlement, nil guard, localized string, capacity check, preview fix
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/b86f9b74-5ee1-4144-87e5-3e4b6479ac44
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Log tag NDEF capacity on query for debugging
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/b86f9b74-5ee1-4144-87e5-3e4b6479ac44
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix formatting error
* Linting fixes
---------
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-06 09:44:39 -07:00
Garth Vander Houwen
316fc48737
Message translation ( #1656 )
...
* Add deep link documentation to README (#1655 )
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/df28c94e-7e3d-44fc-8264-6ae1b875fb23
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* message translation core data version to match 2.7.10
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-05 21:38:10 -07:00
Garth Vander Houwen
ff7fbda1c7
Properly add new waypoint fields
2026-04-05 17:56:04 -07:00
Garth Vander Houwen
67946039bf
Remove unnecessary attributes from WaypointEntity
...
Removed 'createdBy' and 'lastUpdatedBy' attributes from WaypointEntity.
2026-04-05 17:19:31 -07:00
Garth Vander Houwen
1f9b4384f7
Update Meshtastic.xcodeproj/project.pbxproj
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-05 17:14:46 -07:00
Garth Vander Houwen
d493a244c8
Fix compass ugly
2026-04-05 16:34:38 -07:00
Garth Vander Houwen
7e4fb0a154
fix compass labels
2026-04-05 14:57:16 -07:00
Copilot
bac376edcb
Implement map legend overlay ( #1653 )
...
* Add map legend feature (issue #924 )
Implement a map legend overlay accessible from both the mesh map and node
detail map views. The legend explains all visual map elements including:
- Online/offline node markers with pulsing animation
- Detection sensor nodes
- Waypoints
- Position precision circles
- Position history points and heading arrows
- Route start/end markers and route lines
- Convex hull mesh coverage outline
A new "map" button is added to the floating control buttons on both map
views, opening the legend as a sheet.
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/23f75e1e-549b-46a1-84c9-fb0a6375dcd9
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve legend descriptions for online/offline nodes
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/23f75e1e-549b-46a1-84c9-fb0a6375dcd9
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* map button glass and cleanup
* Update Meshtastic/Views/Nodes/Helpers/Map/MapLegend.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update incorect online timeframe
* Update Meshtastic/Views/Nodes/MeshMap.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* translation file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: Garth Vander Houwen <garth@meshtastic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-05 14:40:54 -07:00
Garth Vander Houwen
21794d004b
Compass fixes
2026-04-05 10:14:25 -07:00
Garth Vander Houwen
8978fce157
Handle nil emoji
2026-04-05 09:08:27 -07:00
Garth Vander Houwen
4b847b6b08
Fix emojionlytextfield regression by @rcgv1
2026-04-05 08:43:44 -07:00
Garth Vander Houwen
d6b8c593a0
Try and fix ios 17 memory leak
2026-04-05 08:29:02 -07:00
Copilot
a4422b32cb
perf: Quick-win performance optimizations for node list and Core Data lookups ( #1650 )
...
* feat: improve routing performance with split state, fetch batching, node cache, and debounce
- Split Router's single @Published navigationState into per-tab properties
to reduce spurious re-renders across unrelated views
- Add fetchBatchSize=50 and relationshipKeyPathsForPrefetching to node list
- Optimize in-body array re-sort from 2 filter passes to single pass
- Add in-memory node object ID cache on Router for O(1) lookups
- Add fetchLimit=1 to getNodeInfo for early termination
- Debounce rapid node selection changes with 100ms Task delay
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/9bfe91f2-8ed7-4d2c-bb2e-4ed3dfd3a16c
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Address code review: add debounce constant and thread-safety comment
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/9bfe91f2-8ed7-4d2c-bb2e-4ed3dfd3a16c
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Tak server improvements (#1603 )
* added read only mode cot to meshtastic parsing and warning to not enable on pub channel
* better icons
* fully fixed markers
* telemetry support
* Update Meshtastic/Helpers/TAK/TAKServerManager.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fixes
* fixes
* Resolve merge conflicts for PR #1603 (TAK server improvements) (#1645 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
* Fix merge conflicts
* Merge main into tak-server-improvements to resolve PR #1603 conflicts (#1646 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
* Merge main into tak-server-improvements to resolve PR #1603 conflicts (#1647 )
* Delete Messages fix
* Bump version to 2.7.9
* Bump widgets version
* TAK Server channel index picker
Create a settings picker for the TAK Server's channel index. This allows users to specify TAK traffic to use the non-primary channel to help reduce channel congestion.
* Changed capitalization from 'environment' to 'Environment' for section header. (#1591 )
* Add Danish (da) translations — resolves merge conflicts from PR #1609 (#1612 )
* Initial plan
* Add Danish (da) translations from PR #1609
Resolves merge conflicts from PR #1609 by adding Danish translations to the
Localizable.xcstrings file. The PR adds Danish translation strings throughout
the app while preserving all existing translations for other languages.
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Migrate test project to Swift Testing and add connect view and router tests (#1643 )
* Migrate to Swift Testing and add connect view tests
- Convert RouterTests.swift from XCTest to Swift Testing (@Suite, @Test, #expect, #require)
- Create ConnectViewTests.swift with tests for connect view child types:
- Device struct (creation, signal strength, RSSI, description, codable)
- TransportType enum (cases, raw values, codable)
- ConnectionState enum (equality, codable)
- BLESignalStrength enum (raw values, init)
- TransportStatus enum (equality)
- NavigationState (defaults, tabs, sub-states)
- InvalidVersion view (creation with versions)
- ConnectedDevice view (connected/disconnected/MQTT states)
- CircleText view (default/custom sizes, emoji)
- BatteryCompact view (levels, nil, charging, plugged in)
- SignalStrengthIndicator view (dimensions, strength levels)
- Update Xcode project to include new test file
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/d7bb7a89-2105-4fcb-96bc-7ec794467c74
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Fix signal strength test boundary conditions
The getSignalStrength() method uses NSNumber.compare(.orderedDescending),
which is a strict greater-than check. Fix the boundary test cases:
- RSSI -65 is .normal (not .strong), since -65 is not > -65
- RSSI -85 is .weak (not .normal), since -85 is not > -85
- Add -64 → .strong and -84 → .normal as adjacent boundary tests
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/4fcbc01e-cbea-4d11-b2c0-e923c6730d69
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Improve and complete router tests with comprehensive coverage
Added tests for:
- Custom initial state
- Invalid scheme / unknown path handling (state unchanged)
- navigateToNodeDetail public method
- Messages edge cases: channelId only, userNum only, messageId only, non-numeric params
- Nodes with non-numeric nodenum
- Map with both nodenum+waypointId (nodeId priority), non-numeric params
- Parameterized settings test covering all 31 SettingsNavigationState cases
- State transitions: consecutive routes, invalid scheme preserves existing state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Apple/sessions/f69b7352-21aa-494c-8864-31fc0f4b21b8
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* Localizable update
* Merge translations file
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Fix merge conflicts in PR #1614 (Spanish translations) (#1644 )
* 20% of strings translated to spanish
* add more translations
* add rest of translations
* small fixes
---------
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
* fix typo in hop limit option description (#1631 )
O hop -> 0 hop
---------
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
Co-authored-by: Joel Pérez Izquierdo <joelperez91@gmail.com>
Co-authored-by: axunes <axunes@axunes.net>
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
Co-authored-by: Austin Hargis <25471876+austinhargis@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-04-04 18:51:00 -07:00
Benjamin Faershtein
04ef427ec8
Show which node created a waypoint and which last updated by ( #1496 )
...
* Fixed some issues with waypoints and created a createdBy and lastUpdatedBy
* Fix suggestions
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 18:10:45 -07:00