[PR #25] [MERGED] Add native local location capture and permission handling #25

Closed
opened 2026-10-25 16:00:21 +01:00 by jayanezj · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/jayanezj/traccar-client-macos/pull/25
Author: @jayanezj
Created: 10/25/2026
Status: ✅ Merged
Merged: 10/25/2026
Merged by: @jayanezj

Base: main ← Head: feature/4-core-location-identity


📝 Commits (1)

  • 3f35129 feat: add native local location capture (#4)

📊 Changes

18 files changed (+1030 additions, -38 deletions)

View changed files

📝 .github/workflows/ci.yml (+1 -1)
📝 README.md (+33 -10)
📝 TraccarClient.xcodeproj/project.pbxproj (+19 -4)
📝 TraccarClient/Application/TraccarClientApp.swift (+22 -4)
📝 TraccarClient/Configuration/ConfigurationModel.swift (+7 -7)
📝 TraccarClient/Configuration/ConfigurationPersistence.swift (+19 -1)
➕ TraccarClient/Interface/LocationStatusView.swift (+53 -0)
📝 TraccarClient/Interface/SettingsView.swift (+7 -3)
📝 TraccarClient/Interface/TrackingMenu.swift (+30 -4)
➕ TraccarClient/Location/CoreLocationProvider.swift (+158 -0)
➕ TraccarClient/Location/LocationModel.swift (+199 -0)
➕ TraccarClient/Location/LocationTypes.swift (+102 -0)
📝 TraccarClient/Resources/Info.plist (+2 -0)
➕ TraccarClientTests/LocationFixTests.swift (+47 -0)
➕ TraccarClientTests/LocationModelTests.swift (+326 -0)
📝 scripts/check-local.sh (+2 -2)
📝 scripts/test.sh (+2 -2)
📝 scripts/verify-build.sh (+1 -0)

📄 Description

Changes

Add explicit native Core Location capture to the menu-bar app. Continuous capture runs independently of windows, and a single capture has its own lifecycle. Permission, availability, original fix timestamp/accuracy and last-known fallback are visible in Location status. The app starts paused and requests permission only after an explicit capture action.

Use the native macOS privacy description and persisted accuracy preferences without requiring Keychain access for capture. Sending and SOS remain disabled; the complete tracking/queue lifecycle and activity log remain in #11 and #13.

Validation

  • Strict SwiftLint, Debug/Release builds and binary/signature checks passed locally with Apple Development and explicit CI ad hoc signing.
  • All 51 tests in four suites passed, including synthetic location, permission, stale callbacks, independent capture, fallback and persistence coverage.
  • Real-Mac checks passed for permission handling, capture while windows are closed/another app is foregrounded, pause, single capture, timestamp/accuracy, lock and sleep/wake.
  • Replacing build 1 with build 2 using the same certificate, Team, bundle identifier and designated requirement preserved location permission and Keychain access without renewed prompts. Certificate renewal continuity remains unverified.
  • No positions were sent to a receiver.

Final decisions and manual validation.

Closes #4


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/jayanezj/traccar-client-macos/pull/25 **Author:** [@jayanezj](https://github.com/jayanezj) **Created:** 10/25/2026 **Status:** ✅ Merged **Merged:** 10/25/2026 **Merged by:** [@jayanezj](https://github.com/jayanezj) **Base:** `main` ← **Head:** `feature/4-core-location-identity` --- ### 📝 Commits (1) - [`3f35129`](https://github.com/jayanezj/traccar-client-macos/commit/3f351296b8c7a75be0b5e05df64f28d9479b53b7) feat: add native local location capture (#4) ### 📊 Changes **18 files changed** (+1030 additions, -38 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+1 -1) 📝 `README.md` (+33 -10) 📝 `TraccarClient.xcodeproj/project.pbxproj` (+19 -4) 📝 `TraccarClient/Application/TraccarClientApp.swift` (+22 -4) 📝 `TraccarClient/Configuration/ConfigurationModel.swift` (+7 -7) 📝 `TraccarClient/Configuration/ConfigurationPersistence.swift` (+19 -1) ➕ `TraccarClient/Interface/LocationStatusView.swift` (+53 -0) 📝 `TraccarClient/Interface/SettingsView.swift` (+7 -3) 📝 `TraccarClient/Interface/TrackingMenu.swift` (+30 -4) ➕ `TraccarClient/Location/CoreLocationProvider.swift` (+158 -0) ➕ `TraccarClient/Location/LocationModel.swift` (+199 -0) ➕ `TraccarClient/Location/LocationTypes.swift` (+102 -0) 📝 `TraccarClient/Resources/Info.plist` (+2 -0) ➕ `TraccarClientTests/LocationFixTests.swift` (+47 -0) ➕ `TraccarClientTests/LocationModelTests.swift` (+326 -0) 📝 `scripts/check-local.sh` (+2 -2) 📝 `scripts/test.sh` (+2 -2) 📝 `scripts/verify-build.sh` (+1 -0) </details> ### 📄 Description ## Changes Add explicit native Core Location capture to the menu-bar app. Continuous capture runs independently of windows, and a single capture has its own lifecycle. Permission, availability, original fix timestamp/accuracy and last-known fallback are visible in Location status. The app starts paused and requests permission only after an explicit capture action. Use the native macOS privacy description and persisted accuracy preferences without requiring Keychain access for capture. Sending and SOS remain disabled; the complete tracking/queue lifecycle and activity log remain in #11 and #13. ## Validation - Strict SwiftLint, Debug/Release builds and binary/signature checks passed locally with Apple Development and explicit CI ad hoc signing. - All 51 tests in four suites passed, including synthetic location, permission, stale callbacks, independent capture, fallback and persistence coverage. - Real-Mac checks passed for permission handling, capture while windows are closed/another app is foregrounded, pause, single capture, timestamp/accuracy, lock and sleep/wake. - Replacing build 1 with build 2 using the same certificate, Team, bundle identifier and designated requirement preserved location permission and Keychain access without renewed prompts. Certificate renewal continuity remains unverified. - No positions were sent to a receiver. [Final decisions and manual validation](https://github.com/jayanezj/traccar-client-macos/issues/4#issuecomment-6399189792). Closes #4 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
jayanezj added this to the M2 - Native location and app identity milestone 2026-10-25 16:00:21 +01:00
jayanezj added the pull-request label 2026-10-25 16:00:21 +01:00
jayanezj changed title from [PR #25] Add native local location capture and permission handling to [PR #25] [MERGED] Add native local location capture and permission handling 2026-10-25 17:00:20 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jayanezj/traccar-client-macos#25